mail-notification-5.4.dfsg.1/0000755000175000001440000000000011015426636015657 5ustar evilynuxusersmail-notification-5.4.dfsg.1/po/0000755000175000001440000000000011015313030016254 5ustar evilynuxusersmail-notification-5.4.dfsg.1/po/sr.po0000644000175000001440000033274711005111363017264 0ustar evilynuxusers# Serbian translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Filip Miletic , 2004-2008. # # Both Serbian Cyrillic and Serbian Latin files should # be available. # msgid "" msgstr "" "Project-Id-Version: mail-notification 5.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-28 10:07+0100\n" "PO-Revision-Date: 2008-04-27 16:51+0200\n" "Last-Translator: Филип Милетић \n" "Language-Team: Serbian (sr) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: ../data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "Подеси дојаву приспећа поште" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:296 #: ../src/mn-main.c:103 ../src/mn-main.c:424 ../src/mn-main.c:445 #: ../src/mn-main.c:496 msgid "Mail Notification" msgstr "Дојава поште" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Обавести када стигне нова пошта" #: ../data/mail-notification.schemas.in.in.h:1 msgid "Always display an icon" msgstr "Увек приказуј сличицу" #: ../data/mail-notification.schemas.in.in.h:2 msgid "Blink on errors" msgstr "Трепери ако дође до грешке" #: ../data/mail-notification.schemas.in.in.h:3 msgid "Click action" msgstr "Дејство при притиску" #: ../data/mail-notification.schemas.in.in.h:4 msgid "Display a message count in the status icon" msgstr "Приказуј број порука у статусној сличици" #: ../data/mail-notification.schemas.in.in.h:5 msgid "Display seen mail" msgstr "Прикажи прегледане поруке" #: ../data/mail-notification.schemas.in.in.h:6 msgid "Enable message popups" msgstr "Дозволи искачуће прозоре" #: ../data/mail-notification.schemas.in.in.h:7 msgid "Expire message popups" msgstr "Важност искачућих прозора истиче" #: ../data/mail-notification.schemas.in.in.h:8 msgid "Fallback character sets" msgstr "Резервни скуп знакова" #: ../data/mail-notification.schemas.in.in.h:9 msgid "Fingerprints of trusted X509 certificates" msgstr "Отисци проверених X509 сертификата" #: ../data/mail-notification.schemas.in.in.h:10 msgid "Height of properties dialog" msgstr "Висина прозора са поставкама" #: ../data/mail-notification.schemas.in.in.h:11 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "number of seconds to wait before expiring message popups." msgstr "Ако је подешавање /apps/mail-notification/popups/expiration/enabled постављено на „true?, ово представља време које треба да протекне пре него што искачући прозор нестане." #: ../data/mail-notification.schemas.in.in.h:12 msgid "Mail changed command" msgstr "Команда при промени поште" #: ../data/mail-notification.schemas.in.in.h:13 msgid "Mail read command" msgstr "Команда за читање поште" #: ../data/mail-notification.schemas.in.in.h:14 msgid "Maximum number of messages in the tooltip mail summary" msgstr "Највећи број порука у приказу сажетака порука" #: ../data/mail-notification.schemas.in.in.h:15 msgid "Maximum number of simultaneous popups" msgstr "Највећи број истовремено отворених обавештења" #: ../data/mail-notification.schemas.in.in.h:16 msgid "Message popups actions" msgstr "Дејства у искачућим порукама" #: ../data/mail-notification.schemas.in.in.h:17 msgid "Message popups position" msgstr "Место искачућег прозора са порукама" #: ../data/mail-notification.schemas.in.in.h:18 msgid "New mail command" msgstr "Изврши када пошта стигне" #: ../data/mail-notification.schemas.in.in.h:19 msgid "New mail sound" msgstr "Звук при новој пошти" #: ../data/mail-notification.schemas.in.in.h:20 msgid "Play a sound when new mail arrives" msgstr "Покрени команду када стигне нова пошта" #: ../data/mail-notification.schemas.in.in.h:21 msgid "Play sound command" msgstr "Команда за пуштање звука" #: ../data/mail-notification.schemas.in.in.h:22 msgid "Run a command when all mail is read" msgstr "Покрени команду када је сва пошта прочитана" #: ../data/mail-notification.schemas.in.in.h:23 msgid "Run a command when new mail arrives" msgstr "Покрени команду када стигне нова пошта" #: ../data/mail-notification.schemas.in.in.h:24 msgid "Run a command when the message list changes" msgstr "Покрени команду када се списак порука промени" #: ../data/mail-notification.schemas.in.in.h:25 msgid "Seconds to wait before expiring message popups" msgstr "" "Број секунди који треба да протекне пре затварања искачућег прозора са " "порукама" #: ../data/mail-notification.schemas.in.in.h:26 msgid "" "The action to perform when the icon is clicked. Must be \"launch-mail-reader" "\", \"open-latest-message\", \"consider-new-mail-as-read\" or \"update-mail-" "status\"." msgstr "" "Наредба која се извршава при притиску на сличицу. Могу да буду: „прикажи-" "прозор-са-поставкама?, „покрени-читач-поште?, „отвори-последњу-поруку? или " "„освежи-статус-поште?." #: ../data/mail-notification.schemas.in.in.h:27 msgid "The command to run when all mail is read." msgstr "Команда коју треба покренути када је сва пошта прочитана." #: ../data/mail-notification.schemas.in.in.h:28 msgid "The command to run when new mail arrives." msgstr "Покрени ову команду када стигне нова пошта." #: ../data/mail-notification.schemas.in.in.h:29 msgid "The command to run when the message list changes." msgstr "Команда која се покреће када се промени списак порука." #: ../data/mail-notification.schemas.in.in.h:31 #, no-c-format msgid "" "The command to use to play a sound file. The string %file will be " "substituted with the filename of the sound to play." msgstr "" "Команда која се користи за пуштање звука. Низ %file биће замењен именом " "датотеке коју треба пустити." #: ../data/mail-notification.schemas.in.in.h:32 msgid "The height of the properties dialog in pixels." msgstr "Висина прозора са поставкама изражена у тачкама." #: ../data/mail-notification.schemas.in.in.h:33 msgid "" "The list of character sets to attempt conversion from when uncompliant 8-bit " "data is encountered in message headers. The first character set allowing a " "successful conversion will be used. The special name \"user\" will be " "replaced with the character set of the user's locale. Note that Mail " "Notification must be restarted for changes to take effect." msgstr "Списак скупова знакова за које ће бити покушана конверзија ако се у заглављу поруке затекну знаци који нису сагласни са тренутно изабраним скупом знакова. Први скуп знакова који дозвољава успешну конверзију ће бити коришћен. Посебно име „user? биће замењено скупом знакова из корисниковог локалитета. Да би ова измена почела да важи морате поново да покренете дојаву поште." #: ../data/mail-notification.schemas.in.in.h:34 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" "Списак проверених SSL/TLS сервера (рачунар:порт) који немају X509 сертификат." #: ../data/mail-notification.schemas.in.in.h:35 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "Списак проверених X509 сертификата, представљених MD5 отиском." #: ../data/mail-notification.schemas.in.in.h:36 msgid "The maximum number of messages to display in the tooltip mail summary." msgstr "Највећи број порука када се приказује сажетак порука." #: ../data/mail-notification.schemas.in.in.h:37 msgid "" "The maximum number of popups to display simultaneously. If this limit is " "exceeded, only the most recent messages will be displayed. If the /apps/mail-" "notification/popups/position key is set to \"attached\", this limit will be " "ignored and only one popup will be allowed." msgstr "" "Највећи број прозора који ће истовремено бити отворени. Ако се премаши ова " "граница, биће приказане само најскорије поруке. Ако је кључ /apps/mail-" "notification/popups/position постављен на „attached?, ова граница биће " "занемарена и биће дозвољен приказ само једног прозора." #: ../data/mail-notification.schemas.in.in.h:38 msgid "" "The ordered list of actions to include in the message popups. Each element " "must be \"open\", \"mark-as-read\", \"mark-as-spam\" or \"delete\"." msgstr "" "Уређени списак радњи које ће бити укључене у искачуће прозоре. Елементи " "морају да буду једни од „open?, „mark-as-read?, „mark-as-spam? или \"delete" "\"." #: ../data/mail-notification.schemas.in.in.h:39 msgid "The position of the message popups. Must be \"attached\" or \"free\"." msgstr "" "Место искачућег прозора са порукама. Може бити „закачен? или „слободан?." #: ../data/mail-notification.schemas.in.in.h:40 msgid "The sound file to play when new mail arrives." msgstr "Пусти овај звук када стигне нова пошта." #: ../data/mail-notification.schemas.in.in.h:41 msgid "" "The type of mail summary to display in the icon's tooltip. Must be \"standard" "\", \"compact\" or \"none\"." msgstr "" "Врста сажетка поште који се приказује у облачићу. Може бити „обичан?, " "„кратак? или „ниједан?." #: ../data/mail-notification.schemas.in.in.h:42 msgid "The width of the properties dialog in pixels." msgstr "Ширина прозора са поставкама изражена у тачкама." #: ../data/mail-notification.schemas.in.in.h:43 msgid "Tooltip mail summary" msgstr "Облачић са сажетком порука" #: ../data/mail-notification.schemas.in.in.h:44 msgid "Trusted servers list" msgstr "Списак проверених сервера" #: ../data/mail-notification.schemas.in.in.h:45 msgid "Whether the status icon should blink on errors or not." msgstr "Да ли сличица треба да трепери ако дође до грешке или не." #: ../data/mail-notification.schemas.in.in.h:46 msgid "Whether to display a message count in the status icon or not." msgstr "Да ли треба приказати број порука у облачићу статусне сличице или не." #: ../data/mail-notification.schemas.in.in.h:47 msgid "Whether to display an icon when there is no new mail or not." msgstr "Да ли се приказује сличица када нема нове поште." #: ../data/mail-notification.schemas.in.in.h:48 msgid "" "Whether to display mail which is still marked as unread but has been seen or " "not." msgstr "" "Да ли треба приказати пошту која је још увек означена као непрочитана али " "није прегледана." #: ../data/mail-notification.schemas.in.in.h:49 msgid "Whether to enable message popups or not." msgstr "Да ли се користе искачући прозори са порукама или не." #: ../data/mail-notification.schemas.in.in.h:50 msgid "" "Whether to expire message popups or not. Must be \"default\", \"false\" or " "\"true\"." msgstr "" "Да ли искачући прозори истичу или не. Мора бити „default?, „false? или " "„true?." #: ../data/mail-notification.schemas.in.in.h:51 msgid "Whether to play a sound when new mail arrives or not." msgstr "Да ли треба пустити звук када стигне нова пошта или не." #: ../data/mail-notification.schemas.in.in.h:52 msgid "Whether to run a command when all mail is read or not." msgstr "" "Да ли треба или не треба покренути неку команду када је сва пошта прочитана." #: ../data/mail-notification.schemas.in.in.h:53 msgid "Whether to run a command when new mail arrives or not." msgstr "Да ли треба покренути неку команду када стигне нова пошта." #: ../data/mail-notification.schemas.in.in.h:54 msgid "Whether to run a command when the message list changes or not." msgstr "" "Да ли треба покренути неку команду када се списак порука промени или не." #: ../data/mail-notification.schemas.in.in.h:55 msgid "Width of properties dialog" msgstr "Ширина прозора са поставкама" #: ../src/eggtrayicon.c:133 msgid "Orientation" msgstr "Оријентација" #: ../src/eggtrayicon.c:134 msgid "The orientation of the tray." msgstr "Оријентација обавештајне зоне." #. translators: header capitalization #: ../src/mn-about-dialog.gob:47 msgid "A Mail Notification Icon" msgstr "Сличица за дојаву приспећа поште" #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:55 msgid "translator-credits" msgstr "Филип Милетић " #: ../src/mn-auth-combo-box.gob:98 #: ../src/mn-autodetect-mailbox-properties.gob:106 msgid "Autodetect" msgstr "А_утодетекција" #. translators: header capitalization #: ../src/mn-authenticated-mailbox-properties.gob:56 msgid "Account" msgstr "Налог" #: ../src/mn-authenticated-mailbox-properties.gob:59 msgid "_Username:" msgstr "_Кор.име:" #: ../src/mn-authenticated-mailbox-properties.gob:63 msgid "_Password:" msgstr "_Лозинка:" #: ../src/mn-authenticated-mailbox-properties.gob:140 msgid "Saving password to keyring..." msgstr "Чување лозинке у привеску..." #: ../src/mn-authenticated-mailbox-properties.gob:185 msgid "Retrieving password from keyring..." msgstr "Узимање лозинке из привеска..." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:306 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "password you have entered is invalid.\n" "\n" "Please re-enter your password." msgstr "" "Дојава поште није могла да се пријави на %s сандучета %s, највероватније " "зато што унета лозинка није исправна.\n" "\n" "Молим унесите поново лозинку." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:308 #, c-format msgid "Enter your password for %s mailbox %s." msgstr "Унесите лозинку за %s сандуче %s." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: ../src/mn-authenticated-mailbox.gob:381 msgid "Authentication Required" msgstr "Потребна је пријава" #: ../src/mn-authenticated-mailbox.gob:463 msgid "Unable to save the mailbox password" msgstr "Није могуће сачувати лозинку сандучића" #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:465 #, c-format msgid "The password of %s mailbox %s could not be saved to the keyring." msgstr "Лозинка за %s сандуче %s није могла бити сачувана у привеску." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:119 #: ../src/mn-system-vfs-mailbox-properties.gob:57 msgid "Location" msgstr "Место" #: ../src/mn-autodetect-mailbox-properties.gob:121 msgid "_Location:" msgstr "_Место:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:129 msgid "_Browse..." msgstr "_Прегледај..." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:169 msgid "Select a File or Folder" msgstr "Изаберите датотеку или фасциклу" #: ../src/mn-base-mbox-mailbox-backend.gob:346 #, c-format msgid "unable to open mailbox: %s" msgstr "није могуће отворити сандуче: %s" #: ../src/mn-client-session.c:177 #, c-format msgid "resolving %s" msgstr "проналазим %s" #: ../src/mn-client-session.c:193 #, c-format msgid "unable to resolve %s: %s" msgstr "Није могуће пронаћи %s: %s" #: ../src/mn-client-session.c:234 #, c-format msgid "network address #%i" msgstr "мрежна адреса #%i" #: ../src/mn-client-session.c:237 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "мрежна адреса #%i се не може пребацити у текстуални облик: %s" #: ../src/mn-client-session.c:248 #, c-format msgid "%s: unsupported address family" msgstr "%s: ова врста адресе није подржана" #: ../src/mn-client-session.c:255 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: није могуће направити утичницу: %s" #: ../src/mn-client-session.c:259 #, c-format msgid "connecting to %s (%s) port %i" msgstr "повезујем се са %s (%s) порт %i" #: ../src/mn-client-session.c:262 #, c-format msgid "unable to connect: %s" msgstr "није могуће повезати се са: %s" #: ../src/mn-client-session.c:267 msgid "connected successfully" msgstr "повезивање је успело" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:281 #, c-format msgid "unable to connect to %s" msgstr "није могуће повезати се са %s" #: ../src/mn-client-session.c:333 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "одговор \"%s\" није исправан у тренутно важећем контексту" #: ../src/mn-client-session.c:362 #, c-format msgid "unable to parse response \"%s\"" msgstr "није могуће обрадити одговор \"%s\"" #: ../src/mn-client-session.c:626 msgid "server name not found in certificate" msgstr "име сервера није пронађено у сертификату" #: ../src/mn-client-session.c:631 #, c-format msgid "" "user-provided server name \"%s\" does not match certificate-provided server " "name \"%s\"" msgstr "" "име сервера које је задао корисник („%s?) се не поклапа са именом сервера " "које стоји у сертификату („%s?)" #: ../src/mn-client-session.c:645 #, c-format msgid "\"%s\", " msgstr "„%s?, " #: ../src/mn-client-session.c:647 ../src/mn-client-session.c:1582 #: ../src/mn-yahoo-mailbox.gob:218 #, c-format msgid "\"%s\"" msgstr "„%s?" #: ../src/mn-client-session.c:650 #, c-format msgid "" "user-provided server name \"%s\" matches none of the certificate-provided " "server names %s" msgstr "" "име сервера које је задао корисник („%s?) не поклапа се ни са једним од " "имена сервера која стоје у сертификату %s" #: ../src/mn-client-session.c:740 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "није могуће покренути OpenSSL библиотеку: %s" #: ../src/mn-client-session.c:748 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "није могуће направити SSL/TLS објекат: %s" #: ../src/mn-client-session.c:754 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "није могуће поставити SSL/TLS опис за датотеку: %s" #: ../src/mn-client-session.c:761 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "није могуће обавити SSL/TLS контакт: %s" #: ../src/mn-client-session.c:767 msgid "untrusted server" msgstr "непроверен сервер" #: ../src/mn-client-session.c:771 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "SSL/TLS слој је покренут (%s, %s %i-бит)" #: ../src/mn-client-session.c:819 ../src/mn-client-session.c:826 #, c-format msgid "unable to read from server: %s" msgstr "Није могуће читање са сервера: %s" #: ../src/mn-client-session.c:824 msgid "unable to read from server: EOF" msgstr "Није могуће читање са сервера: EOF" #: ../src/mn-client-session.c:836 #, c-format msgid "unable to decode data using SASL: %s" msgstr "Не могу се декодовати подаци путем SASL: %s" #: ../src/mn-client-session.c:980 #, c-format msgid "unable to encode data using SASL: %s" msgstr "није могуће кодирати податке уз помоћ SASL: %s" #: ../src/mn-client-session.c:1009 ../src/mn-client-session.c:1016 #, c-format msgid "unable to write to server: %s" msgstr "није могућ упис на сервер: %s" #: ../src/mn-client-session.c:1014 msgid "unable to write to server: EOF" msgstr "није могућ упис на сервер: EOF" #: ../src/mn-client-session.c:1043 ../src/mn-pop3-mailbox.gob:448 #, c-format msgid "unable to encode Base64: %s" msgstr "није могуће кодирати Base64: %s" #: ../src/mn-client-session.c:1220 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "не може се покренути SASL библиотека: %s" #: ../src/mn-client-session.c:1232 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "не може да се добави локална адреса утичнице: %s" #: ../src/mn-client-session.c:1238 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "не може да се добави удаљена адреса утичнице: %s" #: ../src/mn-client-session.c:1272 #, c-format msgid "unable to set SASL security properties: %s" msgstr "није могуће поставити SASL сигурносне поставке: %s" #: ../src/mn-client-session.c:1296 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "не може се покренути SASL пријава: SASL тражи податке које немамо" #: ../src/mn-client-session.c:1315 #, c-format msgid "unable to start SASL authentication: %s" msgstr "не може се покренути SASL пријава: %s" #: ../src/mn-client-session.c:1319 #, c-format msgid "unable to create a SASL connection: %s" msgstr "није могуће успоставити SASL везу: %s" #: ../src/mn-client-session.c:1366 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "SASL је тражио нама непознате податке, обустављам SASL пријаву" #: ../src/mn-client-session.c:1383 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, обустављам SASL пријаву" #. compliance error #: ../src/mn-client-session.c:1388 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "није могуће декодовати Base64 улаз са сервера: %s" #: ../src/mn-client-session.c:1424 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "SASL сигурносни слој нивоа снаге %i је успостављен" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1429 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "не могу да прочитам поставку SASL_MAXOUTBUF: %s" #: ../src/mn-client-session.c:1435 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "упозорење: не могу да прочитам поставку SASL_SSF: %s" #: ../src/mn-client-session.c:1583 msgid "unknown server error" msgstr "непозната грешка на серверу" #: ../src/mn-compact-message-view.gob:39 msgid "Mailbox" msgstr "Сандуче" #: ../src/mn-compact-message-view.gob:40 msgid "From" msgstr "Од" #: ../src/mn-compact-message-view.gob:41 msgid "Subject" msgstr "Тема" #: ../src/mn-compact-message-view.gob:42 msgid "Sent" msgstr "Послато" #: ../src/mn-conf.c:249 #, c-format msgid "cannot find default value of configuration key \"%s\"" msgstr "није могуће пронаћи подразумевану вредност за подешавајући кључ „%s?" #: ../src/mn-conf.c:254 msgid "" "The default configuration has not been installed properly. Please check your " "Mail Notification installation." msgstr "" "Изворно подешавање није исправно инсталирано. Молимо да проверите " "инсталацију Дојаве поште." #: ../src/mn-conf.c:291 msgid "A directory creation error has occurred" msgstr "Дошло је до грешке при прављењу директоријума" #: ../src/mn-conf.c:292 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "Није могуће направити директоријум ?%s?: %s." #: ../src/mn-conf.c:361 #, c-format msgid "recursively unsetting %s" msgstr "рекурзивно поништавам %s" #: ../src/mn-conf.c:365 msgid "syncing the GConf database" msgstr "усклађујем GConf базу података" #: ../src/mn-conf.c:368 msgid "completed" msgstr "урађено" #: ../src/mn-custom-vfs-mailbox.gob:72 msgid "invalid location" msgstr "неважеће место" #: ../src/mn-evolution-folder-tree-client.gob:269 msgid "" "Mail Notification can not contact Evolution. Make sure that Evolution is " "running and that the Evolution Jean-Yves Lefort's Mail Notification plugin " "is loaded." msgstr "" "Дојава поште не може да се повеже са Еволуцијом. Покрените Еволуцију и " "укључите додатак Жан-Ива Лефорта (Jean-Yves Lefort) за повезивање Еволуције " "са Дојавом поште." #. translators: header capitalization #: ../src/mn-evolution-mailbox-properties.gob:71 #: ../src/mn-webmail-mailbox-properties.gob:92 msgid "Folder" msgstr "Фасцикла" #: ../src/mn-evolution-mailbox.gob:225 msgid "unable to contact Evolution" msgstr "није могуће повезати се са Еволуцијом" #: ../src/mn-evolution-plugin.c:151 msgid "A fatal error has occurred in the Evolution Mail Notification plugin" msgstr "Дошло је до кобне грешке у додатку програму за дојаву поште за везу са програмом еволуција." #: ../src/mn-evolution-plugin.c:152 ../src/mn-main.c:250 msgid "The connection to the D-Bus session bus was lost." msgstr "Веза са сесијом д-буса је прекинута." #: ../src/mn-evolution-plugin.c:175 ../src/mn-evolution-plugin.c:188 #: ../src/mn-evolution-plugin.c:226 msgid "Unable to initialize the Mail Notification plugin" msgstr "Није могуће укључити додатак за дојаву поште" #: ../src/mn-evolution-plugin.c:176 ../src/mn-main.c:270 #, c-format msgid "Unable to connect to the D-Bus session bus: %s." msgstr "није могуће прикључити се на сесију д-буса : %s" #: ../src/mn-evolution-plugin.c:227 #, c-format msgid "Unable to register the Mail Notification Evolution D-Bus server: %s." msgstr "Није могуће пријавити сервер за дојаву поште у еволуцији: %s." #: ../src/mn-evolution-server.gob:152 #, c-format msgid "folder not found" msgstr "фасцикла није нађена" #: ../src/mn-evolution-server.gob:329 #, c-format msgid "message not found" msgstr "порука није нађена" #. #. * translators: GTK+ has the same message used in the same #. * context; please use the GTK+ translation for consistency #. #: ../src/mn-file-chooser-button.gob:179 msgid "(None)" msgstr "(Ниједна)" #. translators: header capitalization #: ../src/mn-gmail-mailbox-properties.gob:105 msgid "Gmail Label" msgstr "Гмејл (Gmail)" #: ../src/mn-gmail-mailbox-properties.gob:107 msgid "_Restrict to this label:" msgstr "_Ограничи на ову ознаку:" #: ../src/mn-gmail-mailbox.gob:154 msgid "invalid feed location" msgstr "место довода није исправно наведено" #: ../src/mn-gmail-mailbox.gob:175 #, c-format msgid "retrieving feed from %s" msgstr "преузимање извора са %s" #: ../src/mn-gmail-mailbox.gob:182 #, c-format msgid "unable to retrieve feed: %s" msgstr "није могуће пронаћи довод: %s" #: ../src/mn-gmail-mailbox.gob:191 #, c-format msgid "feed retrieved successfully (%i byte)" msgid_plural "feed retrieved successfully (%i bytes)" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../src/mn-gmail-mailbox.gob:203 ../src/mn-gmail-mailbox.gob:254 msgid "unable to parse feed" msgstr "није могуће обрадити довод" #: ../src/mn-gmime-stream-vfs.gob:48 #: ../src/mn-sylpheed-mailbox-backend.gob:209 #, c-format msgid "unable to read %s: %s" msgstr "Није могуће прочитати %s: %s" #: ../src/mn-gmime-stream-vfs.gob:50 ../src/mn-webmail-mailbox.gob:141 #, c-format msgid "unable to write to %s: %s" msgstr "није могућ упис на %s: %s" #: ../src/mn-gmime-stream-vfs.gob:52 #, c-format msgid "unable to seek in %s: %s" msgstr "Није могуће пронаћи у %s: %s" #: ../src/mn-gmime-stream-vfs.gob:54 #, c-format msgid "unable to tell position of %s: %s" msgstr "није могуће сазнати положај за %s: %s" #: ../src/mn-gmime-stream-vfs.gob:56 ../src/mn-mh-mailbox-backend.gob:206 #: ../src/mn-webmail-mailbox.gob:147 #, c-format msgid "unable to close %s: %s" msgstr "није могуће затворити %s: %s" #: ../src/mn-hotmail-mailbox.gob:286 ../src/mn-imap-mailbox.gob:1680 #: ../src/mn-pop3-mailbox.gob:1165 msgid "authentication failed" msgstr "пријава није успела" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:109 msgid "IMAP Mailbox" msgstr "ИМАП сандуче" #: ../src/mn-imap-mailbox-properties.gob:111 #: ../src/mn-webmail-mailbox-properties.gob:94 msgid "In_box" msgstr "До_лазно" #: ../src/mn-imap-mailbox-properties.gob:116 #: ../src/mn-webmail-mailbox-properties.gob:99 #: ../ui/mailbox-properties-dialog.glade.h:10 msgid "_Other:" msgstr "_Остало:" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:129 msgid "Use the IDLE Extension" msgstr "Користи продужетак IDLE" #: ../src/mn-imap-mailbox-properties.gob:133 msgid "IMAP connection tab|_Never" msgstr "_Никад" #: ../src/mn-imap-mailbox-properties.gob:134 msgid "A_utodetect" msgstr "А_утодетекција" #: ../src/mn-imap-mailbox-properties.gob:135 msgid "Al_ways" msgstr "_Увек" #: ../src/mn-imap-mailbox.gob:384 msgid "server did not send capabilities" msgstr "сервер није обавестио о својим могућностима" #: ../src/mn-imap-mailbox.gob:551 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "сервер је дојавио LOGINDISABLED, LOGIN пријавa неће бити коришћена" #: ../src/mn-imap-mailbox.gob:552 msgid "unable to login" msgstr "пријава није могућа" #: ../src/mn-imap-mailbox.gob:1063 msgid "" "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, " "logging out" msgstr "" "„Користи IDLE проширење“ је постављено на „никад“ у поставкама сандучића, " "одјављујем се" #: ../src/mn-imap-mailbox.gob:1074 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "удаљени сервер користи %s, не користим IDLE продужетак" #: ../src/mn-imap-mailbox.gob:1079 #, c-format msgid "" "the remote server runs %s, the IDLE extension might not function properly" msgstr "удаљени сервер користи %s, IDLE проширење можда неће исправно радити" #: ../src/mn-imap-mailbox.gob:1088 msgid "the remote server does not support the IDLE extension, logging out" msgstr "удаљени сервер не подржава IDLE проширење, одјављујем се" #: ../src/mn-imap-mailbox.gob:1590 ../src/mn-pop3-mailbox.gob:309 msgid "server does not support in-band SSL/TLS" msgstr "сервер не подржава заштиту путем SSL/TLS" #: ../src/mn-imap-mailbox.gob:1614 ../src/mn-pop3-mailbox.gob:1080 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" "изабран је механизам за пријаву који користи SASL али подршка за SASL није " "уграђена у програм" #: ../src/mn-imap-mailbox.gob:1624 ../src/mn-pop3-mailbox.gob:1100 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "непознат механизам за пријаву \"%s\"" #: ../src/mn-imap-mailbox.gob:1656 ../src/mn-pop3-mailbox.gob:1136 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "искључујем механизам „%s“ и покушавам SASL пријаву" #: ../src/mn-imap-mailbox.gob:1668 msgid "falling back to IMAP LOGIN authentication" msgstr "повратак на IMAP LOGIN пријаву" #: ../src/mn-imap-mailbox.gob:1724 ../src/mn-pop3-mailbox.gob:744 #, c-format msgid "cannot retrieve %i message" msgid_plural "cannot retrieve %i messages" msgstr[0] "" msgstr[1] "" msgstr[2] "" #. translators: header capitalization #: ../src/mn-mail-icon.gob:86 msgid "_Mail Reader" msgstr "_Читач поште" #. translators: header capitalization #: ../src/mn-mail-icon.gob:88 msgid "_Open Latest Message" msgstr "_Отвори последњу поруку" #. translators: header capitalization #: ../src/mn-mail-icon.gob:93 msgid "_Consider New Mail as Read" msgstr "_Сматрај да је нова пошта прочитана" #. translators: header capitalization #: ../src/mn-mail-icon.gob:95 ../src/mn-mailbox-view.gob:312 msgid "_Update" msgstr "_Освежи" #. translators: header capitalization #: ../src/mn-mail-icon.gob:106 msgid "R_emove From Notification Area" msgstr "_Уклони са обавештајне зоне" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:106 #, c-format msgid "%s Properties" msgstr "Поставке за %s" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:210 msgid "Add a Mailbox" msgstr "Додај сандуче" #: ../src/mn-mailbox-properties-dialog.gob:585 msgid "_Default:" msgstr "_Изворно:" #: ../src/mn-mailbox-properties-dialog.gob:587 #: ../ui/mailbox-properties-dialog.glade.h:9 msgid "_Default" msgstr "И_зворно" #: ../src/mn-mailbox-properties-dialog.gob:614 msgid "D_efault:" msgstr "Из_ворно:" #: ../src/mn-mailbox-properties-dialog.gob:618 #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "D_efault" msgstr "Изв_орно:" #: ../src/mn-mailbox-view.gob:249 msgid "A paste error has occurred" msgstr "Дошло је до грешке приликом налепљивања" #: ../src/mn-mailbox-view.gob:571 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "необрађено %s сандуче (%s)" #: ../src/mn-mailbox-view.gob:575 #, c-format msgid "%s mailbox" msgstr "%s сандуче" #: ../src/mn-mailbox-view.gob:586 msgid "detecting mailbox type..." msgstr "препознајем врсту сандучета..." #: ../src/mn-mailbox.gob:559 #, c-format msgid "\"type\" attribute missing" msgstr "недостаје атрибут „врста“" #: ../src/mn-mailbox.gob:566 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "непозната врста сандучета „%s“" #: ../src/mn-mailbox.gob:965 #, c-format msgid "property \"%s\" has no value" msgstr "особина „%s“ нема постављену вредност" #: ../src/mn-mailbox.gob:1044 ../src/mn-mailbox.gob:1062 #: ../src/mn-shell.gob:624 #, c-format msgid "%s: %s" msgstr "%s: %s" #: ../src/mn-mailboxes.gob:248 msgid "An error has occurred while importing old mailboxes" msgstr "Дошло је до грешке приликом увожења старих сандучића" #: ../src/mn-mailboxes.gob:303 msgid "Unable to load the mailboxes configuration" msgstr "Није могуће увести подешавања сандучића" #: ../src/mn-mailboxes.gob:350 #, c-format msgid "Unable to parse the XML document." msgstr "није могуће обрадити XML документ." #: ../src/mn-mailboxes.gob:357 #, c-format msgid "The root element is missing." msgstr "Недостаје корени елемент." #: ../src/mn-mailboxes.gob:363 #, c-format msgid "The root element \"%s\" is invalid." msgstr "Корени елемент „%s“ је неважећи." #: ../src/mn-mailboxes.gob:385 #, c-format msgid "On line %i: %s." msgstr "У линији %i: %s." #: ../src/mn-mailboxes.gob:390 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "У линији %i: непознати елемент „%s“." #: ../src/mn-mailboxes.gob:399 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "Дошло је до грешке приликом учитавања подешавања сандучића" msgstr[1] "Дошло је до грешака приликом учитавања подешавања сандучића" msgstr[2] "Дошло је до грешака приликом учитавања подешавања сандучића" #: ../src/mn-mailboxes.gob:424 msgid "Unable to save the mailboxes configuration" msgstr "Није могуће сачувати подешавања сандучића" #: ../src/mn-mailboxes.gob:469 ../src/mn-vfs.c:233 #, c-format msgid "Unable to remove %s: %s." msgstr "Није могуће уклонити %s: %s" #: ../src/mn-mailboxes.gob:477 #, c-format msgid "Unable to create %s: %s." msgstr "Није могуће направити %s: %s" #: ../src/mn-mailboxes.gob:484 #, c-format msgid "Unable to open %s for writing: %s." msgstr "Није могуће отворити %s за упис: %s" #: ../src/mn-mailboxes.gob:491 #, c-format msgid "Unable to write the XML document." msgstr "Није могуће записати XML документ." #: ../src/mn-mailboxes.gob:497 #, c-format msgid "Unable to close %s: %s." msgstr "Није могуће затворити %s: %s" #: ../src/mn-mailboxes.gob:507 ../src/mn-mailboxes.gob:514 ../src/mn-vfs.c:251 #: ../src/mn-vfs.c:259 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "Није могуће преименовати %s у %s: %s" #. non fatal #: ../src/mn-mailboxes.gob:520 ../src/mn-vfs.c:269 #, c-format msgid "unable to delete %s: %s" msgstr "није могуће обрисати %s: %s" #: ../src/mn-mailboxes.gob:550 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "Сандуче %s има %i нову поруку" msgstr[1] "Сандуче %s има %i нове поруке" msgstr[2] "Сандуче %s има %i нових порука" #: ../src/mn-mailboxes.gob:576 #, c-format msgid "%s reported an error: %s" msgstr "%s је дојавио грешку: %s" #: ../src/mn-maildir-mailbox-backend.gob:127 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "није могуће отворити фасциклу „%s?: %s" #: ../src/mn-maildir-mailbox-backend.gob:219 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "није могуће затворити фасциклу „%s?: %s" #: ../src/mn-maildir-mailbox-backend.gob:222 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "грешка при читању фасцикле „%s?: %s" #: ../src/mn-maildir-mailbox-backend.gob:253 #: ../src/mn-mh-mailbox-backend.gob:200 #: ../src/mn-sylpheed-mailbox-backend.gob:311 #, c-format msgid "cannot read %i message" msgid_plural "cannot read %i messages" msgstr[0] "нечитљива је %i порука" msgstr[1] "нечитљиве су %i поруке" msgstr[2] "нечитљиво је %i порука" #: ../src/mn-maildir-message.gob:159 msgid "Delete message?" msgstr "Уклањање поруке?" #: ../src/mn-maildir-message.gob:225 msgid "The message cannot be moved to the trash. Permanently delete it?" msgstr "Порука не може да се премести у смеће. Да ли да је за стално обришем?" #: ../src/mn-maildir-message.gob:250 #, c-format msgid "" "The message could not be moved to the trash (%s). Permanently delete it?" msgstr "" "Порука не може да се премести у смеће (%s). Да ли да је за стално обришем?" #: ../src/mn-main.c:72 msgid "yes" msgstr "да" #: ../src/mn-main.c:72 msgid "no" msgstr "не" #: ../src/mn-main.c:103 #, c-format msgid "%s version %s\n" msgstr "%s издање %s\n" #: ../src/mn-main.c:108 #, c-format msgid "Mailbox backends:\n" msgstr "Подржани сандучићи:\n" #: ../src/mn-main.c:113 #, c-format msgid "IMAP and POP3 features:\n" msgstr "Могућности за POP3 и IMAP:\n" #: ../src/mn-main.c:200 #, c-format msgid "Unable to contact the running Mail Notification instance: %s." msgstr "Није могуће прикључити се на тренутно покренуту дојаву поште: %s." #: ../src/mn-main.c:240 #, c-format msgid "%s option ignored since Mail Notification is not already running" msgstr "Опција %s је занемарена јер Дојава поште још увек није покренута" #: ../src/mn-main.c:334 msgid "Show version information" msgstr "Прикажи податке о издању" #: ../src/mn-main.c:343 msgid "Enable informational output" msgstr "Дозволи речитији излаз" #: ../src/mn-main.c:352 msgid "Display the properties dialog" msgstr "Прикажи прозор са поставкама" #: ../src/mn-main.c:361 msgid "Display the about dialog" msgstr "Прикажи податке о програму" #: ../src/mn-main.c:370 msgid "Consider new mail as read" msgstr "Сматрај да је нова пошта прочитана" #: ../src/mn-main.c:379 msgid "Update the mail status" msgstr "Освежи податке о пошти" #: ../src/mn-main.c:388 msgid "Print a XML mail summary" msgstr "Испиши сажетак порука у XML формату" #: ../src/mn-main.c:397 msgid "Unset obsolete GConf configuration" msgstr "Поништи застарела GConf подешавања" #: ../src/mn-main.c:406 msgid "Quit Mail Notification" msgstr "Угаси дојаву поште" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: ../src/mn-main.c:432 msgid "multi-threading is not available" msgstr "вишенитни рад није подржан" #: ../src/mn-main.c:473 msgid "Mail Notification is not running" msgstr "Програм за дојаву поште није покренут." #: ../src/mn-main.c:485 msgid "Unable to initialize the GnomeVFS library." msgstr "Није могуће покренути библиотеку GnomeVFS." #: ../src/mn-main.c:498 msgid "An initialization error has occurred in Mail Notification" msgstr "Дошло је до грешке при покретању програма за дојаву поште" #: ../src/mn-main.c:499 msgid "" "Unable to initialize the notification library. Message popups will not be " "displayed." msgstr "" "Библиотека за дојаву не може да се покрене. Искачући прозори са порукама " "неће бити приказивани." #: ../src/mn-main.c:544 msgid "quitting Mail Notification" msgstr "Гасим дојаву поште" #: ../src/mn-main.c:563 msgid "considering new mail as read" msgstr "нова пошта се сматра прочитаном" #: ../src/mn-main.c:568 msgid "updating the mail status" msgstr "Проверавам пошту" #: ../src/mn-main.c:585 msgid "Mail Notification is already running" msgstr "Програм за дојаву поште је већ покренут." #: ../src/mn-message-mime.c:173 #, c-format msgid "unable to parse MIME message" msgstr "није могуће обрадити MIME поруку" #. translators: header capitalization #: ../src/mn-message.gob:97 msgid "Open" msgstr "Отвори" #: ../src/mn-message.gob:98 msgid "Unable to open message" msgstr "Није могуће отворити поруку" #. translators: header capitalization #: ../src/mn-message.gob:107 msgid "Mark as Read" msgstr "Означи као прочитано" #: ../src/mn-message.gob:108 msgid "Unable to mark message as read" msgstr "Није могуће поруку означити као прочитану" #. translators: header capitalization #: ../src/mn-message.gob:117 msgid "Mark as Spam" msgstr "Означи као непожељно" #: ../src/mn-message.gob:118 ../src/mn-message.gob:128 msgid "Unable to mark message as spam" msgstr "Није могуће означити поруку као нежељену" #. translators: header capitalization #: ../src/mn-message.gob:127 msgid "Delete" msgstr "Уклони" #: ../src/mn-message.gob:336 ../src/mn-sound-player.gob:133 #: ../src/mn-sound-player.gob:169 ../src/mn-util.c:1577 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "Није могуће извршити „%s?: %s." #: ../src/mn-mh-mailbox-backend.gob:209 #, c-format msgid "error while reading %s: %s" msgstr "грешка при читању %s: %s" #: ../src/mn-mh-mailbox-backend.gob:223 ../src/mn-webmail-mailbox.gob:276 #, c-format msgid "unable to open %s: %s" msgstr "није могуће отворити %s: %s" #: ../src/mn-pi-mailbox-properties.gob:73 msgid "_Standard" msgstr "_Стандард" #: ../src/mn-pi-mailbox-properties.gob:74 msgid "In-_band SSL/TLS" msgstr "Угра_ђени SSL/TLS" #: ../src/mn-pi-mailbox-properties.gob:75 msgid "SSL/TLS on s_eparate port" msgstr "SSL/TLS на _посебном порту" #: ../src/mn-pi-mailbox-properties.gob:79 msgid "_Server:" msgstr "_Сервер:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:99 msgid "Connection Type" msgstr "Врста везе" #: ../src/mn-pi-mailbox-properties.gob:146 msgid "Port:" msgstr "Порт:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:173 msgid "Authentication" msgstr "Пријава" #: ../src/mn-pi-mailbox-properties.gob:177 msgid "_Mechanism:" msgstr "_Механизам:" #: ../src/mn-pi-mailbox-properties.gob:211 msgid "Connection" msgstr "Веза" #: ../src/mn-pi-mailbox.gob:147 msgid "SSL/TLS support has not been compiled in" msgstr "Подршка за SSL/TLS није уграђена" #: ../src/mn-pi-mailbox.gob:305 msgid "missing certificate" msgstr "недостаје сертификат" #: ../src/mn-pi-mailbox.gob:339 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "Програм за дојаву приспећа поште не може да провери \"%s\" (%s). То може да " "значи да неко пресреће вашу преписку како би дошао до ваших поверљивих " "података.\n" "\n" "На сервер се треба повезивати само ако сте сигурни да се заиста повезујете " "са \"%s\". Ако одлучите да се повежете на сервер, ова порука неће поново " "бити приказана." #: ../src/mn-pi-mailbox.gob:353 #, c-format msgid "Certificate fingerprint: %s." msgstr "Отисак сертификата: %s." #: ../src/mn-pi-mailbox.gob:360 msgid "Connect to untrusted server?" msgstr "Да ли да се повежем на непроверени сервер?" #: ../src/mn-pop3-mailbox.gob:359 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "параметри за могућност LOGIN-DELAY нису исправно постављени" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:500 msgid "" "SASL authentication with initial client response failed, retrying without " "initial client response" msgstr "" "SASL аутентификација са почетним клијентским одговором није успела, " "покушавам поново без почетног клијентског одговора" #: ../src/mn-pop3-mailbox.gob:920 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "тражен је застој при пријави, паузирам %i секунду" msgstr[1] "тражен је застој при пријави, паузирам %i секундe" msgstr[2] "тражен је застој при пријави, паузирам %i секунди" #: ../src/mn-pop3-mailbox.gob:1092 msgid "server does not support APOP authentication" msgstr "сервер не подржава пријаву коришћењем механизма APOP" #: ../src/mn-pop3-mailbox.gob:1148 msgid "falling back to APOP authentication" msgstr "прелазим на APOP пријаву" #: ../src/mn-pop3-mailbox.gob:1153 msgid "falling back to USER/PASS authentication" msgstr "прелазим на пријаву помоћу имена и лозинке" #: ../src/mn-popup.gob:45 ../src/mn-standard-message-view.gob:39 msgid "Mailbox:" msgstr "Сандуче:" #: ../src/mn-popup.gob:46 ../src/mn-standard-message-view.gob:40 msgid "From:" msgstr "Шаље:" #: ../src/mn-popup.gob:47 ../src/mn-standard-message-view.gob:41 msgid "Subject:" msgstr "Тема:" #: ../src/mn-popup.gob:96 #, c-format msgid "configuration key %s: there is no action named \"%s\"" msgstr "кључ за подешавања %s: не постоји дејство које се зове „%s?" #: ../src/mn-popup.gob:176 #, c-format msgid "unable to show popup: %s" msgstr "није могуће приказати искачући прозор: %s" #: ../src/mn-popup.gob:194 #, c-format msgid "unable to close popup: %s" msgstr "није могуће затворити искачући прозор: %s" #. we set the summary here because libnotify requires it #. translators: header capitalization #: ../src/mn-popup.gob:205 msgid "New Message" msgstr "Нова порука" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:114 ../ui/properties-dialog.glade.h:18 msgid "Mail Notification Properties" msgstr "Поставке за дојаву поште" #: ../src/mn-properties-dialog.gob:232 msgid "No mailbox selected." msgstr "Ниједно сандуче није изабрано." #: ../src/mn-properties-dialog.gob:237 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "Изабрано %i сандуче" msgstr[1] "Изабрана %i сандучета" msgstr[2] "Изабрано %i сандучета" #: ../src/mn-server.gob:136 #, c-format msgid "Unable to register the Mail Notification D-Bus server: %s." msgstr "Није могуће укључити дојавин сервер за д-бус: %s." #: ../src/mn-shell.gob:290 #, c-format msgid "received %s signal, exiting" msgstr "примљен је сигнал %s, крај рада" #: ../src/mn-shell.gob:430 msgid "No mail reader is configured" msgstr "Читач поште није подешен" #: ../src/mn-shell.gob:431 msgid "" "You can configure a mail reader by choosing System → Preferences → " "Preferred Applications." msgstr "" "Можете да подесите читач поште избором Систем → Поставке → Омиљени " "програми." #: ../src/mn-shell.gob:443 ../src/mn-shell.gob:449 ../src/mn-shell.gob:794 msgid "Unable to open the latest message" msgstr "Није могуће отворити последњу поруку" #: ../src/mn-shell.gob:444 #, c-format msgid "Messages of mailbox \"%s\" cannot be opened." msgstr "Поруке из сандучета „%s? не могу да се отворе." #: ../src/mn-shell.gob:450 ../src/mn-shell.gob:714 msgid "You have no new mail." msgstr "Нема нових порука." #: ../src/mn-shell.gob:605 #, c-format msgid "%s (%i)" msgstr "%s (%i)" #. translators: header capitalization #: ../src/mn-shell.gob:610 msgid "Mailboxes Having New Mail" msgstr "Сандучићи са новом поштом" #. translators: header capitalization #: ../src/mn-shell.gob:629 msgid "Errors" msgstr "Грешке" #. translators: header capitalization #: ../src/mn-shell.gob:649 msgid "Mail Summary" msgstr "Сажетак порука" #: ../src/mn-shell.gob:689 #, c-format msgid "%i message is not displayed" msgid_plural "%i messages are not displayed" msgstr[0] "%i порука није приказана" msgstr[1] "%i поруке нису приказане" msgstr[2] "%i порука није приказано" #: ../src/mn-sound-file-chooser-dialog.gob:48 msgid "Select a File" msgstr "Изаберите датотеку" #: ../src/mn-sound-file-chooser-dialog.gob:58 msgid "All files" msgstr "Све датотеке" #: ../src/mn-sound-file-chooser-dialog.gob:63 msgid "Audio files" msgstr "Звучне датотеке" #: ../src/mn-sound-player.gob:120 msgid "Unable to play sound" msgstr "Није могуће пустити звук" #: ../src/mn-sound-player.gob:122 ../src/mn-util.c:1576 msgid "A command error has occurred in Mail Notification" msgstr "Дошло је до грешке у командама" #: ../src/mn-ssl.c:191 msgid "unknown SSL/TLS error" msgstr "непозната грешка са ССЛ/ТЛС" #: ../src/mn-standard-message-view.gob:45 msgid "Sent:" msgstr "Послато:" #: ../src/mn-sylpheed-mailbox-backend.gob:229 #, c-format msgid "unable to open folder: %s" msgstr "није могуће отворити фасциклу: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:317 #, c-format msgid "unable to close folder: %s" msgstr "није могуће затворити фасциклу: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:320 #, c-format msgid "error while reading folder: %s" msgstr "грешка при читању фасциклу: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:368 #, c-format msgid "unable to set encoding: %s" msgstr "није могуће поставити кодирање: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:443 #, c-format msgid "unexpected end of file" msgstr "неочекивани крај датотеке" #: ../src/mn-sylpheed-mailbox-backend.gob:483 #, c-format msgid "incompatible file version \"%i\"" msgstr "издање датотеке није сагласно „%i“" #: ../src/mn-sylpheed-message.gob:69 #, c-format msgid "Unable to read %s: %s." msgstr "Није могуће прочитати %s: %s." #: ../src/mn-system-vfs-mailbox-properties.gob:38 #: ../src/mn-system-vfs-mailbox-properties.gob:46 #: ../src/mn-system-vfs-mailbox.gob:44 msgid "System mailbox" msgstr "Системско сандуче" #: ../src/mn-system-vfs-mailbox-properties.gob:73 #, c-format msgid "Your system mailbox is %s." msgstr "Ваше системско сандуче је %s." #: ../src/mn-system-vfs-mailbox-properties.gob:80 msgid "" "The location of your system mailbox could not be detected. Check the MAIL " "environment variable." msgstr "Место системског сандучета није пронађено. Проверите променљиву MAIL." #: ../src/mn-system-vfs-mailbox.gob:71 msgid "system mailbox not found" msgstr "системско сандуче није пронађено" #: ../src/mn-test-mailbox.gob:38 msgid "Test mailbox" msgstr "Пробно сандуче" #: ../src/mn-test-mailbox.gob:57 #, c-format msgid "Test message #%i" msgstr "Текст поруке #%i" #. translators: header capitalization #: ../src/mn-test-mailbox.gob:63 msgid "Mail Notification Properties Dialog" msgstr "Дијалог за поставке Дојаве поште" #: ../src/mn-util.c:525 ../src/mn-util.c:548 ../src/mn-util.c:568 #: ../src/mn-util.c:590 msgid "A drag and drop error has occurred" msgstr "Дошло је до грешке при превлачењу/пуштању" #: ../src/mn-util.c:526 msgid "An invalid location list has been received." msgstr "Примљен је неважећи списак места." #: ../src/mn-util.c:569 msgid "An invalid Mozilla location has been received." msgstr "Примљен је неважећи Мозилин списак места." #: ../src/mn-util.c:680 msgid "Unable to display help" msgstr "Није могуће приказати помоћ" #: ../src/mn-util.c:692 msgid "Unable to open link" msgstr "није могуће отворити везу" #: ../src/mn-util.c:883 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" msgid_plural "" "The following locations are invalid:\n" "\n" "%s" msgstr[0] "" "Следеће место је неважеће:\n" "\n" "%s" msgstr[1] "" "Следећа места су неважећа:\n" "\n" "%s" msgstr[2] "" "Следећа места су неважећа:\n" "\n" "%s" #: ../src/mn-util.c:899 msgid "A fatal error has occurred in Mail Notification" msgstr "Дошло је до кобне грешке у програму за дојаву поште" #: ../src/mn-util.c:979 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "пре %i секунду" msgstr[1] "пре %i секунде" msgstr[2] "пре %i секунди" #: ../src/mn-util.c:983 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "пре око %i минут" msgstr[1] "пре око %i минута" msgstr[2] "пре око %i минута" #: ../src/mn-util.c:988 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "пре око %i сат" msgstr[1] "пре око %i сата" msgstr[2] "пре око %i сати" #: ../src/mn-util.c:993 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "пре око %i дан" msgstr[1] "пре око %i дана" msgstr[2] "пре око %i дана" #: ../src/mn-util.c:998 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "пре око %i недељу" msgstr[1] "пре око %i недеље" msgstr[2] "пре око %i недеља" #: ../src/mn-util.c:1016 #, c-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i секунда" msgstr[1] "%i секунде" msgstr[2] "%i секунди" #: ../src/mn-util.c:1020 #, c-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i минут" msgstr[1] "%i минута" msgstr[2] "%i минута" #: ../src/mn-util.c:1025 #, c-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i сат" msgstr[1] "%i сата" msgstr[2] "%i сати" #: ../src/mn-util.c:1030 msgid "1 day" msgstr "1 дан" #: ../src/mn-util.c:1506 #, c-format msgid "unterminated substitution" msgstr "замена нема крај" #: ../src/mn-util.c:1545 #, c-format msgid "unknown substitution \"%s\"" msgstr "непозната замена „%s?" #: ../src/mn-util.c:1548 #, c-format msgid "empty substitution" msgstr "празна замена" #: ../src/mn-vfs-mailbox.gob:236 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "није могуће надгледати %s (%s), упити су активирани" #: ../src/mn-vfs-mailbox.gob:426 msgid "unknown mailbox format" msgstr "формат сандучета није препознат" #: ../src/mn-vfs-mailbox.gob:426 msgid "does not exist" msgstr "не постоји" #: ../src/mn-vfs.c:241 #, c-format msgid "Unable to write %s: %s." msgstr "Није могуће уписати %s: %s." #: ../src/mn-webmail-mailbox.gob:84 #, c-format msgid "unable to create a temporary file: %s" msgstr "Није могуће направити привремену датотеку: %s." #: ../src/mn-webmail-mailbox.gob:91 #, c-format msgid "unable to change the permissions of the temporary file: %s" msgstr "није могуће променити дозволе за привремену датотеку: %s" #: ../src/mn-webmail-mailbox.gob:135 #, c-format msgid "unable to set encoding of %s: %s" msgstr "није могуће поставити кодирање %s: %s" #: ../src/mn-webmail-mailbox.gob:192 msgid "configuration:" msgstr "подешавања:" #: ../src/mn-webmail-mailbox.gob:220 #, c-format msgid "running %s" msgstr "покрећем %s" #: ../src/mn-webmail-mailbox.gob:224 #, c-format msgid "cannot execute \"%s\": %s" msgstr "Није могуће извршити „%s?: %s." #: ../src/mn-webmail-mailbox.gob:229 msgid "standard output:" msgstr "стандардни излаз:" #: ../src/mn-webmail-mailbox.gob:230 msgid "standard error output:" msgstr "стандардни излаз за грешке:" #. translators: %s is a program name, as in "unknown fetchyahoo failure" #: ../src/mn-webmail-mailbox.gob:248 #, c-format msgid "unknown %s failure" msgstr "непозната грешка: %s" #: ../src/mn-xml.c:51 #, c-format msgid "" "property \"%s\": unable to transform string \"%s\" into a value of type \"%s" "\"" msgstr "особина „%s“: није могуће пребацити ниску „%s“ у вредност врсте „%s“" #: ../src/mn-yahoo-mailbox.gob:71 #, c-format msgid "unable to change the permissions of %s: %s" msgstr "није могуће променити права приступа за %s: %s" #: ../src/mn-yahoo-mailbox.gob:82 #, c-format msgid "unable to create %s: %s" msgstr "није могуће направити %s: %s" #: ../src/mn-yahoo-mailbox.gob:229 msgid "delay between mail checks too small" msgstr "пауза између провера поште је премала" #: ../ui/mailbox-properties-dialog.glade.h:1 msgid "Delay Between Mail Checks" msgstr "Размак између суседних провера поште" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:2 ../ui/properties-dialog.glade.h:6 msgid "General" msgstr "Опште" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox Name" msgstr "Име сандучета" #: ../ui/mailbox-properties-dialog.glade.h:5 msgid "Details" msgstr "Детаљи" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:6 #: ../ui/properties-dialog.glade.h:15 msgid "General" msgstr "Опште" #: ../ui/mailbox-properties-dialog.glade.h:7 msgid "Mailbox _type:" msgstr "_Врста сандучета:" #: ../ui/mailbox-properties-dialog.glade.h:8 msgid "O_ther:" msgstr "_Остало:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:2 msgid "Click Action" msgstr "Наредба за притисак" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:4 msgid "Expiration" msgstr "Истицање" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:8 msgid "Mailbox List" msgstr "Сандучићи" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:10 msgid "Position" msgstr "Место" #: ../ui/properties-dialog.glade.h:11 msgid "A_fter:" msgstr "_После:" #: ../ui/properties-dialog.glade.h:12 msgid "Co_nsider new mail as read" msgstr "С_матрај да је нова пошта прочитана" #: ../ui/properties-dialog.glade.h:13 msgid "De_sktop default" msgstr "_Изворно за радни простор" #: ../ui/properties-dialog.glade.h:16 msgid "In the p_opup stack" msgstr "У стогу _искачућих порука" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:20 msgid "Message Popups" msgstr "Искачуће поруке" #: ../ui/properties-dialog.glade.h:21 msgid "Play a _sound when new mail arrives:" msgstr "Пусти _звук када стигне нова пошта:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:23 msgid "Status Icon" msgstr "Статусна сличица" #: ../ui/properties-dialog.glade.h:24 msgid "_Attached to the status icon" msgstr "_Прикачене за статусну сличицу" #: ../ui/properties-dialog.glade.h:25 msgid "_Display test messages" msgstr "_Приказ порука за пример" #: ../ui/properties-dialog.glade.h:26 msgid "_Enable message popups" msgstr "_Дозволи искачуће прозоре" #: ../ui/properties-dialog.glade.h:27 msgid "_Launch the mail reader" msgstr "П_окрени читач поште" #: ../ui/properties-dialog.glade.h:28 msgid "_Open the latest message" msgstr "_Отвори последњу поруку" #: ../ui/properties-dialog.glade.h:29 msgid "_Update the mail status" msgstr "_Освежи податке о пошти" #: ../ui/properties-dialog.glade.h:30 msgid "message popups tab|_Never" msgstr "_Никад" #~ msgid "Mail Notification automation" #~ msgstr "Аутоматска дојава приспећа поште" #~ msgid "Mail Notification automation factory" #~ msgstr "Фабрика за дојаву приспећа поште" #~ msgid "Evolution folder tree control" #~ msgstr "Управљање стаблом фасцикли у програму Еволуција" #~ msgid "Evolution folder tree control factory" #~ msgstr "Фабрика за управљање стаблом фасцикли у програму Еволуција" #~ msgid "Mail Notification / Evolution glue" #~ msgstr "Сучеље за Дојаву поште и Еволуцију" #~ msgid "Mail Notification / Evolution glue factory" #~ msgstr "Фабрика за Дојаву поште и Еволуцију" #~ msgid "" #~ "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", " #~ "the amount of time to wait before expiring message popups (seconds part)." #~ msgstr "" #~ "Ако је подешавање /apps/mail-notification/popups/expiration/enabled " #~ "постављено на \"true\", време које треба да протекне пре него што " #~ "искачући прозор истекне (секунде)." #~ msgid "Minutes to wait before expiring message popups" #~ msgstr "" #~ "Број минута који треба да протекне пре затварања искачућег прозора са " #~ "поруком" #~ msgid "The currently selected URI" #~ msgstr "Тренутно изабран URI" #~ msgid "" #~ "Bonobo could not locate the %s server. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Бонобо није успео да пронађе %s сервер. Молим проверите инсталацију " #~ "Дојаве поште." #~ msgid "" #~ "Bonobo was unable to register the %s server. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Бонобо није успео да забележи %s сервер. Молим проверите инсталацију " #~ "Дојаве поште." #~ msgid "unable to fetch message" #~ msgstr "није могуће добавити поруку" #~ msgid "A Bonobo exception (%s) has occurred in %s()." #~ msgstr "Десио се Бонобов изузетак (%s) у %s()." #~ msgid "" #~ "Bonobo could not locate the automation object. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Бонобо није успео да пронађе објекат за аутоматизацију. Проверите " #~ "инсталацију програма за дојаву поште. (Прим. прев: услед грешке у " #~ "програму Бонобо у Гному 2.6, када инсталирате програм за обавештења, " #~ "треба да се одјавите и поново пријавите на систем да би све почело да " #~ "ради)" #~ msgid "" #~ "Bonobo could not locate the %s file. Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Бонобо није могао да пронађе датотеку %s. Молимо проверите подешавања " #~ "Дојаве поште." #~ msgid "Unknown" #~ msgstr "Непознато" #~ msgid "unknown error" #~ msgstr "непозната грешка" #~ msgid "Unable to delete message" #~ msgstr "Није могуће уклонити поруку" #~ msgid "file version missing" #~ msgstr "недостаје издање датотеке" #~ msgid "" #~ "Unable to load image \"%s\" (%s). Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Није могуће учитати слику „%s (%s). Молимо проверите инсталацију Дојаве " #~ "поште." #~ msgid "" #~ "Unable to load interface \"%s\". Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Није могуће учитати сучеље „%s?. Молимо проверите инсталацију Дојаве " #~ "поште." #~ msgid "" #~ "Widget \"%s\" not found in interface \"%s\". Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Компонента „%s? није пронађена у сучељу „%s?. Молимо проверите " #~ "инсталацију Дојаве поште." #~ msgid "Unable to open self as a module (%s)." #~ msgstr "није могуће отворити себе као модул (%s)." #~ msgid "" #~ "Signal handler \"%s\" not found. Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Обрађивач сигнала „%s? није пронађен. Молимо проверите инсталацију Дојаве " #~ "поште." #~ msgid "Unable to create a thread: %s." #~ msgstr "Није могуће покренути нит: %s." #~ msgid "unable to get current time: %s" #~ msgstr "није могуће добавити тренутно време: %s" #~ msgid "unknown date" #~ msgstr "непознат датум" #~ msgid "Mailbox _name:" #~ msgstr "_Име сандучета:" #~ msgid "_Delay between mail checks:" #~ msgstr "_Пауза између провера поште:" #~ msgid "_Use Default" #~ msgstr "_Користи изворно" #~ msgid "seconds" #~ msgstr "секунди" #~ msgid "Whether to display seen mail or not." #~ msgstr "Да ли треба приказивати прегледану пошту или не." #~ msgid "unable to close file: %s" #~ msgstr "није могуће затворити датотеку: %s" #~ msgid "_Never" #~ msgstr "Ни_кад" # FIXME: избаци латинични назив када буде време #~ msgid "Sylpheed features:\n" #~ msgstr "Особине Силфида (Sylpheed):\n" #~ msgid "Select _All" #~ msgstr "Изабери _све" #~ msgid "Co_nnect" #~ msgstr "_Повежи се" #~ msgid "error loading image: %s" #~ msgstr "грешка при учитавању слике: %s" #~ msgid "Commands" #~ msgstr "Наредбе" #~ msgid "Tooltip Mail Summary" #~ msgstr "Сажетак порука у облачићу" #~ msgid "When _new mail arrives:" #~ msgstr "Када _стигне нова пошта:" #~ msgid "When all mail has _been read:" #~ msgstr "Када је _сва пошта прочитана:" #~ msgid "_Always display" #~ msgstr "_Увек приказуј" #~ msgid "_Blink on errors" #~ msgstr "_Трепери при грешкама" #~ msgid "_Display seen mail" #~ msgstr "_Прикажи прегледане поруке" #~ msgid "_Display this dialog" #~ msgstr "При_кажи овај прозор" #~ msgid "icon tooltip's mail summary layout|Co_mpact" #~ msgstr "_Скраћен" #~ msgid "icon tooltip's mail summary layout|_Standard" #~ msgstr "_Обичан" #~ msgid "server did not send all the messages we requested" #~ msgstr "сервер није послао све тражене поруке" #~ msgid "server did not send search results" #~ msgstr "сервер није послао резултате претраге" #~ msgid "Automatically close the mail summary popup" #~ msgstr "Аутоматски затвори прозор са сажетком порука" #~ msgid "Mail summary popup contents font" #~ msgstr "Писмо које се користи за садржај прозора са сажетком порука" #~ msgid "Mail summary popup fonts aspect source" #~ msgstr "Извор за аспект за писмо у прозору за сажетак (???)" #~ msgid "Mail summary popup horizontal offset" #~ msgstr "Померај хоризонталних тачака за прозор са сажетком порука" #~ msgid "Mail summary popup title font" #~ msgstr "Писмо које се користи за наслов прозора са сажетком порука" #~ msgid "Mail summary popup vertical offset" #~ msgstr "Померај вертикалних тачака ѕа прозор са сажетком порука" #~ msgid "Only display recent mail in mail summary popup" #~ msgstr "Прикажи само скоро приспеле поруке у сажетку" #~ msgid "" #~ "The amount of time to wait before closing the mail summary popup (minutes " #~ "part)." #~ msgstr "Пауза пре затварања прозора са сажетком порука (минути)." #~ msgid "" #~ "The amount of time to wait before closing the mail summary popup (seconds " #~ "part)." #~ msgstr "Пауза пре затварања прозора са сажетком порука (секунде)." #~ msgid "The custom font to use for the contents of the mail summary popup." #~ msgstr "" #~ "Посебно писмо које се користи за испис садржаја прозора са сажетком " #~ "порука." #~ msgid "The custom font to use for the title of the mail summary popup." #~ msgstr "" #~ "Посебно писмо које се користи за испис наслова прозора са сажетком порука." #~ msgid "" #~ "The number of pixels to leave between the left or right side of the " #~ "screen and the mail summary popup." #~ msgstr "" #~ "Број тачака које треба оставити између леве, одн. десне стране екрана и " #~ "прозора са сажетком порука." #~ msgid "" #~ "The number of pixels to leave between the top or bottom side of the " #~ "screen and the mail summary popup." #~ msgstr "" #~ "Број тачака које треба оставити између врха, одн. дна екрана и прозора са " #~ "сажетком порука." #~ msgid "" #~ "The position of the mail summary popup. Must be \"top-left\", \"top-right" #~ "\", \"bottom-left\" or \"bottom-right\"." #~ msgstr "" #~ "Положај прозора са сажетком порука. Може бити: ?горе-лево?, ?горе-" #~ "десно?, ?доле-лево? или ?доле-десно?." #~ msgid "Whether to automatically close the mail summary popup or not." #~ msgstr "" #~ "Да ли треба или не треба аутоматски затворити прозор са сажетком поште." #~ msgid "" #~ "Whether to display the mail summary popup when new mail arrives or not." #~ msgstr "Да ли треба приказати сажетак порука када стигне нова пошта." #~ msgid "" #~ "Whether to hide previously displayed mail in the mail summary popup or " #~ "not." #~ msgstr "" #~ "Да ли из сажетка треба уклонити поруке које су се у њему већ пре појавиле." #~ msgid "Use the IDLE extension:" #~ msgstr "Користи IDLE продужетак:" #~ msgid "Mail Summary" #~ msgstr "Сажетак порука" #~ msgid "Mail Summary" #~ msgstr "Сажетак порука" #~ msgid "Close the mail summary popup" #~ msgstr "Затвори прозор са сажетком порука" #~ msgid "none" #~ msgstr "ниједно" #~ msgid "Ho_stname:" #~ msgstr "_Рачунар:" #~ msgid "Authent_ication mechanism:" #~ msgstr "_Начин пријаве:" #~ msgid "top left" #~ msgstr "горе-лево" #~ msgid "top right" #~ msgstr "горе-десно" #~ msgid "bottom left" #~ msgstr "доле-лево" #~ msgid "bottom right" #~ msgstr "доле-десно" #~ msgid "Use De_fault" #~ msgstr "_Кори�ти подразумевано" #~ msgid "Fonts" #~ msgstr "Писма" #~ msgid "Layout" #~ msgstr "Изглед" #~ msgid "Co_ntents:" #~ msgstr "_Садржај:" #~ msgid "Hide p_reviously displayed mail" #~ msgstr "Са_криј претходно приказане поруке" #~ msgid "Hori_zontal offset:" #~ msgstr "_Хоризонтални помак:" #~ msgid "Mail Summary Popup" #~ msgstr "Сажетак порука" #~ msgid "Use these _fonts:" #~ msgstr "Користи ова _писма:" #~ msgid "_Automatically close after:" #~ msgstr "_Аутоматски затвори после:" #~ msgid "_Display a Test Popup" #~ msgstr "Прикажи пробно прозорче" #~ msgid "_Position:" #~ msgstr "_Место:" #~ msgid "_Title:" #~ msgstr "_Наслов:" #~ msgid "_Use fonts from theme" #~ msgstr "Користи писма из _теме" #~ msgid "_Vertical offset:" #~ msgstr "_Вертикални помак:" #~ msgid "pixels" #~ msgstr "тачака" #~ msgid "popup's mail summary layout|Co_mpact" #~ msgstr "С_краћен" #~ msgid "popup's mail summary layout|_Standard" #~ msgstr "О_бичан" #~ msgid "Delay between mail checks (minutes part)." #~ msgstr "Размак између две провере (минути)" #~ msgid "Delay between mail checks (seconds part)." #~ msgstr "Размак између две провере (секунде)." #~ msgid "Display mail summary in tooltip" #~ msgstr "Прикажи сажетат порука у облачићу" #~ msgid "Do not show the immediate notification error dialog" #~ msgstr "Не показуј прозор са обавештењем о грешкама" #~ msgid "Height of edit toolbars dialog" #~ msgstr "Висина прозора за уређивање алатних трака" #~ msgid "Height of main window" #~ msgstr "Висина главног прозора" #~ msgid "Minutes between mail checks" #~ msgstr "Минута између две провере" #~ msgid "Seconds between mail checks" #~ msgstr "Секунди између две провере" #~ msgid "Set a mail reader" #~ msgstr "Изаберите читач поште" #~ msgid "The command to run to launch the mail reader." #~ msgstr "Команда којом се покреће читач поште" #~ msgid "The height of the edit toolbars dialog in pixels." #~ msgstr "Висина прозора за уређивање статусних трака, изражена у тачкама." #~ msgid "The height of the main window in pixels." #~ msgstr "Висина главног прозора изражена у тачкама." #~ msgid "" #~ "The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text" #~ "\", \"both\" or \"both-horiz\"." #~ msgstr "" #~ "Стил алатних трака. Може бити: ?подразумеван?, ?слике?, ?текст?, ?оба?, ?" #~ "оба-водоравно?." #~ msgid "The width of the edit toolbars dialog in pixels." #~ msgstr "Ширина прозора за уређивање статусних трака, изражена у тачкама." #~ msgid "The width of the main window in pixels." #~ msgstr "Ширина прозора главног прозора изражена у тачкама." #~ msgid "Toolbars style" #~ msgstr "Стил алатне траке" #~ msgid "View statusbar" #~ msgstr "Прикажи статусну траку" #~ msgid "View toolbars" #~ msgstr "Прикажи алатну траку" #~ msgid "Whether the statusbar should be visible or not." #~ msgstr "Да ли статусна линија треба да се види или не." #~ msgid "Whether the toolbars should be visible or not." #~ msgstr "Да ли алатне траке треба да се виде или не" #~ msgid "" #~ "Whether to prevent the immediate notification error dialog from being " #~ "displayed or not." #~ msgstr "Да ли треба или не треба спречити појаву прозора са описом грешака." #~ msgid "Width of edit toolbars dialog" #~ msgstr "Ширина прозора за уређивање статусних трака" #~ msgid "Width of main window" #~ msgstr "Ширина главног прозора" #~ msgid "New Mail" #~ msgstr "Нова пошта" #~ msgid "_Remove Toolbar" #~ msgstr "_Уклони алатну траку" #~ msgid "Separator" #~ msgstr "Граничник" #~ msgid "Main _Window" #~ msgstr "Главни _прозор" #~ msgid "Count messages" #~ msgstr "Преброј поруке" #~ msgid "_Mail" #~ msgstr "_Пошта" #~ msgid "_Edit" #~ msgstr "_Уреди" #~ msgid "_View" #~ msgstr "_Преглед" #~ msgid "_Help" #~ msgstr "П_омоћ" #~ msgid "Launch the mail reader" #~ msgstr "П_окрени читач поште" #~ msgid "_Close" #~ msgstr "_Затвори" #~ msgid "Close this window" #~ msgstr "Затвори овај прозор" #~ msgid "_Quit" #~ msgstr "_Крај" #~ msgid "_Toolbars" #~ msgstr "_Алатне траке" #~ msgid "Customize the toolbars" #~ msgstr "Уреди алатне траке" #~ msgid "_Preferences" #~ msgstr "_Поставке" #~ msgid "Toolbars Styl_e" #~ msgstr "Стил алатних _трака" #~ msgid "Customize the toolbars style" #~ msgstr "Прилагоди стил алатних трака" #~ msgid "_Contents" #~ msgstr "_Садржај" #~ msgid "Display help" #~ msgstr "Прикажи помоћ" #~ msgid "Display credits" #~ msgstr "Прикажи заслуге" #~ msgid "Show or hide the toolbars" #~ msgstr "Прикажи или уклони алатну траку" #~ msgid "_Statusbar" #~ msgstr "_Статусна трака" #~ msgid "Show or hide the statusbar" #~ msgstr "Прикажи или уклони статусну траку" #~ msgid "Set the toolbars style to the desktop default setting" #~ msgstr "Постави стилове трака на стил који важи у целом радном окружењу" #~ msgid "I_cons Only" #~ msgstr "Само _слике" #~ msgid "_Text Only" #~ msgstr "Само _текст" #~ msgid "Only display the toolbars text" #~ msgstr "Прика�и само текст у алатној траци" #~ msgid "Text Belo_w Icons" #~ msgstr "Текст _испод слика" #~ msgid "Display the toolbars text below the icons" #~ msgstr "Прикажи текст испод одговарајуће слике у алатној траци" #~ msgid "Text Be_side Icons" #~ msgstr "Текст _поред слика" #~ msgid "Display the toolbars text beside the icons" #~ msgstr "Прикажи текст поред одговарајуће слике у алатној траци" #~ msgid "unable to load menus.xml: %s" #~ msgstr "Није могуће прочитати menus.xml: %s" #~ msgid "unable to load toolbars.xml" #~ msgstr "није могуће учитати toolbars.xml: %s" #~ msgid "Compiled-in mailbox backends: " #~ msgstr "Уграђене могућности за сандучиће:" #~ msgid "List the compiled-in features" #~ msgstr "Испиши уграђене могућности" #~ msgid "Display the main window" #~ msgstr "Прикажи главни прозор" #~ msgid "You have new mail." #~ msgstr "Имате нову пошту." #~ msgid "Leave Fullscreen" #~ msgstr "Остави на целом екрану" #~ msgid "MAIL environment variable not defined" #~ msgstr "променљива MAIL није дефинисана" #~ msgid "widget \"%s\" not found in interface \"%s\"" #~ msgstr "елемент ?%s? није пронађен у сучељу ?%s?" #~ msgid "signal handler \"%s\" not found" #~ msgstr "обрађивач сигнала „%s“ није пронађен" #~ msgid "_Do not show this message again" #~ msgstr "_Не приказуј више ову поруку" #~ msgid "invalid signal specification \"%s\"" #~ msgstr "неважећа одредница за сигнал ?%s?" #~ msgid "unable to monitor mailbox contents (%s), poll mode activated" #~ msgstr "није могуће надгледати садржај сандучета (%s), упити су активирани" #~ msgid "" #~ "As a fallback, they will be checked every %i second (this delay is " #~ "configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked every %i seconds (this delay is " #~ "configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Пошто нема друге могућности, биће проверавани сваку %i секунду (ово " #~ "кашњење се може променити из прозора са поставкама)" #~ msgstr[1] "" #~ "Пошто нема друге могућности, биће проверавани сваке %i секунде (ово " #~ "кашњење се може променити из прозора са поставкама)" #~ msgstr[2] "" #~ "Пошто нема друге могућности, биће проверавани сваких %i секунди (ово " #~ "кашњење се може променити из прозора са поставкама)" #~ msgid "" #~ "As a fallback, they will be checked every %i minute (this delay is " #~ "configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked every %i minutes (this delay is " #~ "configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Пошто нема друге могућности, биће проверавани сваки %i минут (ово кашњење " #~ "се може променити из прозора са поставкама)" #~ msgstr[1] "" #~ "Пошто нема друге могућности, биће проверавани сваких %i минута (ово " #~ "кашњење се може променити из прозора са поставкама)" #~ msgstr[2] "" #~ "Пошто нема друге могућности, биће проверавани сваких %i минута (ово " #~ "кашњење се може променити из прозора са поставкама)" #~ msgid "" #~ "As a fallback, they will be checked approximately every %i minute (this " #~ "delay is configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked approximately every %i minutes (this " #~ "delay is configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Пошто нема друге могућности, биће проверавани на око %i минут (ово " #~ "кашњење се може променити из прозора са поставкама)" #~ msgstr[1] "" #~ "Пошто нема друге могућности, биће проверавани на око %i минута (ово " #~ "кашњење се може променити из прозора са поставкама)" #~ msgstr[2] "" #~ "Пошто нема друге могућности, биће проверавани на око %i минута (ово " #~ "кашњење се може променити из прозора са поставкама)" #~ msgid "A monitoring error has occurred" #~ msgstr "Дошло је до грешке при мотрењу" #~ msgid "" #~ "Mail Notification was unable to enable immediate notification for one or " #~ "more mailboxes. %s" #~ msgstr "" #~ "Није могуће наместити непосредну дојаву нове поште за један или више " #~ "сандучића. %s" #~ msgid "Edit Toolbars" #~ msgstr "Уреди алатне траке" #~ msgid "_Add a New Toolbar" #~ msgstr "_Додај нову алатну траку" #~ msgid "Dis_play mail summary in tooltip" #~ msgstr "Прикажи прозор са сажетком порука у облачићу" #~ msgid "Mailboxes" #~ msgstr "Сандучићи" #~ msgid "_Display the main window" #~ msgstr "_Прикажи главни прозор" #~ msgid "_Mail reader:" #~ msgstr "_Читач поште:" #~ msgid "_Start Mail Notification on GNOME login" #~ msgstr "Покрени _дојаву при пријави" #~ msgid "Has already been run" #~ msgstr "Већ је покренут" #~ msgid "Mailbox list" #~ msgstr "Списак сандучића" #~ msgid "The list of mailboxes to monitor." #~ msgstr "Списак сандучића који се прате." #~ msgid "Whether Mail Notification has already been run or not." #~ msgstr "Да ли је програм покретан пре или није." #~ msgid "" #~ "Drag an item onto the toolbars above to add it, from the toolbars in the " #~ "items table to remove it." #~ msgstr "" #~ "Превуците ставку на алатну траку како бисте је додали, или са алатне " #~ "траке у табелу, како бисте је уклонили." # The email of the translator goes here #~ msgid "Jean-Yves Lefort " #~ msgstr "Филип Милетић " #~ msgid "" #~ "Mail Notification requires a " #~ "password\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Дојава поште захтева да упишете " #~ "лозинку\n" #~ "\n" #~ "%s" #~ msgid "The URI of the mailbox" #~ msgstr "URI ознака поштанског сандучега" #~ msgid "Whether the image is blinking or not" #~ msgstr "Да ли слика трепери или не" #~ msgid "received non-ASCII data from server" #~ msgstr "сервер је послао знаке који не спадају у скуп АСКРИ" #~ msgid "" #~ "the server sent a SASL challenge, but there was a pending initial SASL " #~ "client response" #~ msgstr "" #~ "сервер је започео SASL разговор, али одговор од клијента стигао пре тога" #~ msgid "" #~ "the server did not send a SASL challenge, but there was no pending " #~ "initial SASL client response" #~ msgstr "" #~ "сервер није послао SASL разговор, али није било ни одговора од клијента." #~ msgid "Your Gmail username" #~ msgstr "Ваш налог на сервису Gmail" #~ msgid "" #~ "Your Gmail password (if left blank, you will be prompted for the password " #~ "when needed)" #~ msgstr "" #~ "Ваша лозинка на сервису Gmail (ако не упишете лозинку, програм ће Вас " #~ "замолити да је унесете када то буде потребно)" #~ msgid "libsoup has not been compiled with SSL/TLS support" #~ msgstr "libsoup није изграђен са подршком за SSL/TLS" #~ msgid "unable to parse URI \"%s\"" #~ msgstr "није могуће обрадити URI \"%s\"" #~ msgid "received non-UTF-8 data from server" #~ msgstr "сервер је послао знаке који не спадају у скуп УТФ-8" #~ msgid "unable to transfer data: %s" #~ msgstr "не могу да преузмем податке: %s" #~ msgid "logging in" #~ msgstr "пријава у току" #~ msgid "login failed" #~ msgstr "пријава није успела" #~ msgid "searching for unread mail" #~ msgstr "тражим нову пошту" #~ msgid "unable to initialize the ICU library" #~ msgstr "не може се покренути ICU библиотека" #~ msgid "unable to parse Gmail data" #~ msgstr "не могу да обрадим податке са сервиса Gmail" #~ msgid "unable to open calendar: %s" #~ msgstr "није могуће отворити календар: %s" #~ msgid "unable to get calendar time: %s" #~ msgstr "није могуће добавити време из календара: %s" #~ msgid "U_se idle mode if possible" #~ msgstr "К_ористи време доколице, ако је могуће" #~ msgid "The hostname or IP address of the IMAP server" #~ msgstr "Име или IP број IMAP сервера" #~ msgid "Your username on the IMAP server" #~ msgstr "Ваше име на IMAP серверу" #~ msgid "" #~ "Your password on the IMAP server (if left blank, you will be prompted for " #~ "the password when needed)" #~ msgstr "" #~ "Ваша лозинка на IMAP серверу (ако не упишете лозинку, програм ће Вас " #~ "замолити да је унесете када то буде потребно)" #~ msgid "The port number of the IMAP server" #~ msgstr "Број порта на IMAP серверу" #~ msgid "If possible, whether to use idle mode or not" #~ msgstr "Да ли треба користити време доколице или не" #~ msgid "The marked up text to show in the type combo box" #~ msgstr "Означени текст који се појављује у ознаци типа" #~ msgid "Size group" #~ msgstr "Величина групе" #~ msgid "A GtkSizeGroup for aligning control labels" #~ msgstr "GtkSizeGroup за уравнање контролних ознака" #~ msgid "Complete" #~ msgstr "Готово" #~ msgid "Whether the properties are completely filled or not" #~ msgstr "Да ли су поставке сасвим попуњене или не" #~ msgid "Format" #~ msgstr "Формат" #~ msgid "The mailbox is already in the list." #~ msgstr "Сандуче је већ у списку." #~ msgid "The mailbox URI" #~ msgstr "URI ознака за сандуче" #~ msgid "The mailbox human-readable name" #~ msgstr "Име сандучета" #~ msgid "Whether the mailbox has to be polled or not" #~ msgstr "Да ли се ово сандуче ручно проверава или не" #~ msgid "The list of new and unread MNMessage objects" #~ msgstr "Списак нових и непрочитаних MNMessage објеката" #~ msgid "The mailbox error, if any" #~ msgstr "Грешка у приступу сандучету, ако постоји" #~ msgid "unable to enable immediate notification: %s" #~ msgstr "Није могуће наместити непосредну дојаву нове поште: %s" #~ msgid "Whether one or more of the mailboxes has to be polled" #~ msgstr "" #~ "Показује да ли постоји бар једно сандуче које мора да се учестало " #~ "проверава" #~ msgid "%s is unsupported: %s" #~ msgstr "%s није подржан: %s" #~ msgid "Gmail timestamps" #~ msgstr "ГМАИЛ временски печат" #~ msgid "Report the mail status" #~ msgstr "Провери пошту" #~ msgid "" #~ "Bonobo could not locate the GNOME_MailNotification_Automation.server " #~ "file. Please check your Mail Notification installation." #~ msgstr "" #~ "Бонобо није успео да пронађе објекат за аутоматизацију. Проверите " #~ "инсталацију програма за дојаву поште. (Прим. прев: услед грешке у " #~ "програму Бонобо у Гному 2.6, када инсталирате програм за обавештења, " #~ "треба да се одјавите и поново пријавите на систем да би све почело да " #~ "ради)" #~ msgid "error while reading .mh_sequences: %s" #~ msgstr "грешка при читању датотеке .mh_sequences: %s" #~ msgid "unable to open .mh_sequences: %s" #~ msgstr "није могуће отворити датотеку .mh_sequences: %s" #~ msgid "detecting" #~ msgstr "истражујем" #~ msgid "The hostname or IP address of the POP3 server" #~ msgstr "Име или IP број POP3 сервера" #~ msgid "Your username on the POP3 server" #~ msgstr "Ваше име на POP3 серверу" #~ msgid "" #~ "Your password on the POP3 server (if left blank, you will be prompted for " #~ "the password when needed)" #~ msgstr "" #~ "Ваша лозинка на POP3 серверу (ако не упишете лозинку, програм ће Вас " #~ "замолити да је унесете када то буде потребно)" #~ msgid "The port number of the POP3 server" #~ msgstr "Број порта на POP3 серверу" #~ msgid "Unsupported Mailboxes" #~ msgstr "Неподржани сандучићи" #~ msgid "unable to parse proxy URI \"%s\"" #~ msgstr "није могуће обрадити заступнички URI ?%s?" #~ msgid "The reason why the mailbox is unsupported" #~ msgstr "Разлог зашто сандуче није подржано" #~ msgid "unsupported" #~ msgstr "није подржано" #~ msgid "received an invalid Mozilla URL" #~ msgstr "примљен је неисправан Мозилин URL" #~ msgid "The amount of time to wait before closing the mail summary popup" #~ msgstr "Пауза пре затварања прозора са сажетком порука" #~ msgid "The amount of time to wait between mail checks" #~ msgstr "Пауза између две узастопне провере" #~ msgid "The command to run to launch the mail reader" #~ msgstr "Наредба за покретање читача поште" #~ msgid "The command to run when all mail is read" #~ msgstr "Наредба која се покреће када је сва пошта прочитана" #~ msgid "The command to run when new mail arrives" #~ msgstr "Наредба која се покреће када стиже нова пошта" #~ msgid "" #~ "The number of pixels to leave between the left or right side of the " #~ "screen and the mail summary popup" #~ msgstr "" #~ "Број тачака које треба оставити између леве, одн. десне стране екрана и " #~ "прозора са сажетком порука" #~ msgid "" #~ "The number of pixels to leave between the top or bottom side of the " #~ "screen and the mail summary popup" #~ msgstr "" #~ "Број тачака које треба оставити између врха, одн. дна екрана и прозора са " #~ "сажетком порука" #~ msgid "Whether the status icon should blink on errors or not" #~ msgstr "Да ли статусна сличица трепери при грешкама или не" #~ msgid "Whether to automatically close the mail summary popup or not" #~ msgstr "" #~ "Да ли треба или не треба аутоматски затворити прозор са сажетком порука" #~ msgid "" #~ "Whether to display the mail summary in the status icon tooltip or not" #~ msgstr "Да ли треба или не треба приказивати сажетак порука у облачићу" #~ msgid "" #~ "Whether to display the mail summary popup when new mail arrives or not" #~ msgstr "" #~ "Да ли треба или не треба приказивати сажетак порука када стигне нова пошта" #~ msgid "Whether to run a command when all mail is read or not" #~ msgstr "Да ли се покреће или не покреће команда када је сва пошта прочитана" #~ msgid "Whether to run a command when new mail arrives or not" #~ msgstr "Да ли се покреће команда када стигне пошта или не" #~ msgid "Whether to set a mail reader or not" #~ msgstr "Да ли треба поставити читач поште" #~ msgid "" #~ "Whether to start Mail Notification when you log into your GNOME session " #~ "or not" #~ msgstr "Да ли покренути дојаву поште када се пријавите на систем" #~ msgid "" #~ "First startup\n" #~ "\n" #~ "Mail Notification has been loaded successfully.\n" #~ "\n" #~ "Since this is the first time you run Mail Notification, you need to " #~ "configure it.\n" #~ "\n" #~ "Note: this message will not be shown anymore. To configure Mail " #~ "Notification again, choose Applications → " #~ "Desktop PreferencesMail Notification (or on some systems Applications → Preferences → More Preferences → Mail Notification)." #~ msgstr "" #~ "Прво покретање\n" #~ "\n" #~ "Програм за дојаву поште је успешно покренут.\n" #~ "\n" #~ "Пошто сте програм за дојаву поште први пут покренули, вероватно желите и " #~ "да га подесите.\n" #~ "\n" #~ "Пажња: ова порука се убудуће неће приказивати. Да бисте подесили дојаву " #~ "поште, изаберите ставку Програми Програми → " #~ "Поставке окружењаДојава поште (или на неким системима Програми → Поставке → Још поставки → Дојава поште)." #~ msgid "_Configure Mail Notification" #~ msgstr "_Подеси дојаву поште" #~ msgid "Use a custom font for the contents of the mail summary popup" #~ msgstr "Користи посебно писмо за садржај прозора са сажетком порука" #~ msgid "Use a custom font for the title of the mail summary popup" #~ msgstr "Користи посебно писмо за наслов прозора са сажетком порука" #~ msgid "" #~ "Whether to use a custom font for the contents of the mail summary popup " #~ "or not." #~ msgstr "" #~ "Да ли треба или не треба користити посебно писмо за садржај прозора са " #~ "сажетком поште." #~ msgid "" #~ "Whether to use a custom font for the title of the mail summary popup or " #~ "not." #~ msgstr "" #~ "Да ли треба или не треба кориситити посебно писмо за наслов прозора са " #~ "сажетком поште." #~ msgid "server did not send status" #~ msgstr "сервер није послао статус" #~ msgid "_Launch Mail Reader" #~ msgstr "_Покрени читач поште" #~ msgid "Whether the mailbox has new mail or not" #~ msgstr "Да ли у сандучету стоји нова пошта или не" #~ msgid "%s has no new mail" #~ msgstr "Сандуче %s нема нову пошту" #~ msgid "Display the mail summary dialog" #~ msgstr "Прикажи прозор са сажетком порука" #~ msgid "error while reading mailbox: %s" #~ msgstr "грешка при читању сандучета: %s" #~ msgid "_Mail Summary" #~ msgstr "_Сажетак порука" #~ msgid "*" #~ msgstr "*" #~ msgid " " #~ msgstr " " #~ msgid "" #~ "Whether to use a custom font for the contents of the mail summary popup " #~ "or not" #~ msgstr "" #~ "Да ли треба или не треба користити посебно писмо за садржај прозора са " #~ "сажетком порука" #~ msgid "" #~ "Whether to use a custom font for the title of the mail summary popup or " #~ "not" #~ msgstr "" #~ "Да ли треба или не треба користити посебно писмо за наслов прозора са " #~ "сажетком порука" #~ msgid "The following mailbox reported an error:\n" #~ msgid_plural "The following mailboxes reported an error:\n" #~ msgstr[0] "Ово сандуче има грешку:\n" #~ msgstr[1] "Ови сандучићи имају грешку:\n" #~ msgstr[2] "Ови сандучићи имају грешку:\n" #~ msgid "The following mailbox is unsupported:\n" #~ msgid_plural "The following mailboxes are unsupported:\n" #~ msgstr[0] "Ово сандуче није подржано:\n" #~ msgstr[1] "Ови сандучићи нису подржани:\n" #~ msgstr[2] "Ови сандучићи нису подржани:\n" #~ msgid "Run a command when the icon is double-clicked" #~ msgstr "Изврши команду при двоструком клику на икону" #~ msgid "The command to run when the icon is double-clicked." #~ msgstr "Покрени ову команду при двоструком клику на икону." #~ msgid "Whether to run a command when the icon is double-clicked or not." #~ msgstr "" #~ "Да ли треба покренути неку команду када при двоструком клику на икону." #~ msgid "Your Gmail password" #~ msgstr "Ваша лозинка на сервису Gmail" #~ msgid "successfully logged in" #~ msgstr "пријава је успела" #~ msgid "Your password on the IMAP server" #~ msgstr "Ваша лозинка на IMAP серверу" #~ msgid "_Run %s" #~ msgstr "_Покрени %s" #~ msgid "_Run Default Action" #~ msgstr "П_окрени подразумевано" #~ msgid "Your password on the POP3 server" #~ msgstr "Ваша лозинка на POP3 серверу" #~ msgid "Unable to execute double-clicked command: %s." #~ msgstr "Није могуће извршити команду на двоструки клик: %s." #~ msgid "Unable to execute new mail command: %s." #~ msgstr "Није могуће извршити команду за нову пошту: %s." #~ msgid "The command to run when the icon is double-clicked" #~ msgstr "Наредба која се покреће при двоструком клику" #~ msgid "When double-click_ed:" #~ msgstr "При _двоструком клику:" #~ msgid "Whether to run a command when the icon is double-clicked or not" #~ msgstr "Да ли се покреће команда при двоструком клику или не" mail-notification-5.4.dfsg.1/po/POTFILES.in0000644000175000001440000000404010761260714020050 0ustar evilynuxusers[encoding: UTF-8] data/mail-notification-properties.desktop.in data/mail-notification.desktop.in data/mail-notification.schemas.in.in src/eggtrayicon.c src/eggtrayicon.h src/mn-about-dialog.gob src/mn-auth-combo-box.gob src/mn-authenticated-mailbox-properties.gob src/mn-authenticated-mailbox.gob src/mn-autodetect-mailbox-properties.gob src/mn-base-mbox-mailbox-backend.gob src/mn-client-session.c src/mn-client-session.h src/mn-compact-message-view.gob src/mn-conf.c src/mn-conf.h src/mn-custom-vfs-mailbox.gob src/mn-evolution-folder-tree-client.gob src/mn-evolution-mailbox-properties.gob src/mn-evolution-mailbox.gob src/mn-evolution-plugin.c src/mn-evolution-server.gob src/mn-file-chooser-button.gob src/mn-gmail-mailbox-properties.gob src/mn-gmail-mailbox.gob src/mn-gmime-stream-vfs.gob src/mn-hotmail-mailbox.gob src/mn-imap-mailbox-properties.gob src/mn-imap-mailbox.gob src/mn-mail-icon.gob src/mn-mailbox-properties-dialog.gob src/mn-mailbox-view.gob src/mn-mailbox.gob src/mn-mailboxes.gob src/mn-maildir-mailbox-backend.gob src/mn-maildir-message.gob src/mn-main.c src/mn-mbox-mailbox-backend.gob src/mn-md5.c src/mn-md5.h src/mn-message-mime.c src/mn-message-mime.h src/mn-message-view.gob src/mn-message.gob src/mn-mh-mailbox-backend.gob src/mn-pi-mailbox-properties.gob src/mn-pi-mailbox.gob src/mn-pop3-mailbox-properties.gob src/mn-pop3-mailbox.gob src/mn-popup.gob src/mn-properties-dialog.gob src/mn-sasl.c src/mn-sasl.h src/mn-server.gob src/mn-shell.gob src/mn-sound-file-chooser-dialog.gob src/mn-sound-player.gob src/mn-ssl.c src/mn-ssl.h src/mn-standard-message-view.gob src/mn-stock.c src/mn-stock.h src/mn-sylpheed-mailbox-backend.gob src/mn-sylpheed-message.gob src/mn-system-vfs-mailbox-properties.gob src/mn-system-vfs-mailbox.gob src/mn-test-mailbox.gob src/mn-tooltips.gob src/mn-util.c src/mn-util.h src/mn-vfs-mailbox-backend.gob src/mn-vfs-mailbox.gob src/mn-vfs.c src/mn-vfs.h src/mn-webmail-mailbox-properties.gob src/mn-webmail-mailbox.gob src/mn-xml.c src/mn-yahoo-mailbox.gob ui/mailbox-properties-dialog.glade ui/properties-dialog.glade mail-notification-5.4.dfsg.1/po/bg.po0000644000175000001440000010771610737450706017246 0ustar evilynuxusers# Bulgarian translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Vladimir "Kaladan" Petkov , 2004. # msgid "" msgstr "" "Project-Id-Version: gnome in bulgarian 0.6.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-09-09 01:43+0200\n" "PO-Revision-Date: 2006-05-13 06:09+0200\n" "Last-Translator: Vladimir \"Kaladan\" Petkov \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;" #: data/GNOME_MailNotification_Automation.server.in.in.h:1 msgid "Mail Notification automation" msgstr "Автоматизиране на известяването за поща" #: data/GNOME_MailNotification_Automation.server.in.in.h:2 msgid "Mail Notification automation factory" msgstr "Фабрика за автоматизирането на известяването за поща" #: data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "Настройване на известяването за поща" #: data/mail-notification-properties.desktop.in.h:2 #: data/mail-notification.desktop.in.h:2 #: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:38 #: src/mn-mail-icon.gob:160 src/mn-main.c:221 msgid "Mail Notification" msgstr "Известяване за поща" #: data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Ще бъдете известяван за пристигането на нова поща" #: data/mail-notification.schemas.in.h:1 msgid "Blink on errors" msgstr "Мигане при грешки" #: data/mail-notification.schemas.in.h:2 msgid "Delay between mail checks (minutes part)." msgstr "Период между проверката за поща (минути)." #: data/mail-notification.schemas.in.h:3 msgid "Delay between mail checks (seconds part)." msgstr "Период между проверките за поща (секунди)." #: data/mail-notification.schemas.in.h:4 msgid "Double-clicked command" msgstr "Команда при двойна натискане" #: data/mail-notification.schemas.in.h:5 msgid "Fingerprints of trusted X509 certificates" msgstr "Пръстови отпечатъци на проверени X509 сертификати" #: data/mail-notification.schemas.in.h:6 msgid "Has already been run" msgstr "Вече е стартиран" #: data/mail-notification.schemas.in.h:7 msgid "Height of properties dialog" msgstr "Височина на диалоговия прозорец за настройките" #: data/mail-notification.schemas.in.h:8 msgid "Mailboxes list" msgstr "Списък на пощенските кутии" #: data/mail-notification.schemas.in.h:9 msgid "Minutes between mail checks" msgstr "Минути между проверките" #: data/mail-notification.schemas.in.h:10 msgid "New mail command" msgstr "Нова команда за поща" #: data/mail-notification.schemas.in.h:11 msgid "Run a command when new mail arrives" msgstr "Стартиране на команда при пристигането на нова поща" #: data/mail-notification.schemas.in.h:12 msgid "Run a command when the icon is double-clicked" msgstr "Стартиране на команда при двойно натискане на иконата" #: data/mail-notification.schemas.in.h:13 msgid "Seconds between mail checks" msgstr "Секунди между проверките за поща" #: data/mail-notification.schemas.in.h:14 msgid "The command to run when new mail arrives." msgstr "Командата, която да се стартира при пристигането на нова поща." #: data/mail-notification.schemas.in.h:15 msgid "The command to run when the icon is double-clicked." msgstr "Командата, която да се стартира при двойно натискане на иконата - писмо." #: data/mail-notification.schemas.in.h:16 msgid "The height of the properties dialog in pixels." msgstr "Височината в пиксели на диалоговия прозорец за настройките." #: data/mail-notification.schemas.in.h:17 msgid "The list of mailboxes to monitor." msgstr "Списъкът на пощенските кутии за следене." #: data/mail-notification.schemas.in.h:18 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" #: data/mail-notification.schemas.in.h:19 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "" "Списъкът на проверените сертификати тип X509, представени от техните пръстови отпечатъци в MD5 формат." #: data/mail-notification.schemas.in.h:20 msgid "The width of the properties dialog in pixels." msgstr "Ширината на диалоговия прозорец за настройките в пиксели." #: data/mail-notification.schemas.in.h:21 msgid "Trusted servers list" msgstr "Списък на проверените сървъри" #: data/mail-notification.schemas.in.h:22 msgid "Whether Mail Notification has already been run or not." msgstr "Дали известяването за поща вече е стартирано или не." #: data/mail-notification.schemas.in.h:23 msgid "Whether the status icon should blink on errors or not." msgstr "Дали иконата за състоянието да мига при грешки или не" #: data/mail-notification.schemas.in.h:24 msgid "Whether to run a command when new mail arrives or not." msgstr "Дали да се стартира команда при пристигането на нова поща или не" #: data/mail-notification.schemas.in.h:25 msgid "Whether to run a command when the icon is double-clicked or not." msgstr "Дали да се стартира команда при натискането на иконата-писмо или не" #: data/mail-notification.schemas.in.h:26 msgid "Width of properties dialog" msgstr "Ширина на диалоговия прозорец за настройките" #: data/mail-notification.soundlist.in.h:2 msgid "New Mail" msgstr "Нова поща" #: src/eggtrayicon.c:109 msgid "Orientation" msgstr "Ориентация" #: src/eggtrayicon.c:110 msgid "The orientation of the tray." msgstr "" #: src/mn-about-dialog.gob:41 msgid "A Mail Notification Icon" msgstr "Уведомяване за поща" #: src/mn-about-dialog.gob:44 msgid "Jean-Yves Lefort " msgstr "Vladimir Petkov " #: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35 msgid "autodetect" msgstr "автоматично засичане" #: src/mn-autodetect-mailbox-properties.gob:66 msgid "_Location:" msgstr "_Местоположение:" #: src/mn-autodetect-mailbox-properties.gob:72 msgid "_Browse..." msgstr "_Разглеждане..." #: src/mn-autodetect-mailbox-properties.gob:79 msgid "The URI of the mailbox" msgstr "Адресът на пощенската кутия" #: src/mn-autodetect-mailbox-properties.gob:116 msgid "Select a File or Folder" msgstr "Избор на файл или папка" #: src/mn-blinking-image.gob:30 msgid "Whether the image is blinking or not" msgstr "Дали изображението да мига или не" #: src/mn-client-session.c:196 src/mn-client-session.c:203 #, c-format msgid "unable to read from server: %s" msgstr "неуспех при четенето от сървър: %s" #: src/mn-client-session.c:201 msgid "unable to read from server: EOF" msgstr "неуспех при четенето от сървър: EOF" #: src/mn-client-session.c:213 #, c-format msgid "unable to decode data using SASL: %s" msgstr "" #: src/mn-client-session.c:284 #, c-format msgid "resolving %s" msgstr "търсене на %s" #: src/mn-client-session.c:294 #, c-format msgid "unable to resolve %s: %s" msgstr "неуспех при намирането на %s: %s" #: src/mn-client-session.c:331 #, c-format msgid "%s: unsupported address family" msgstr "" #: src/mn-client-session.c:338 #, c-format msgid "%s: unable to create socket: %s" msgstr "" #: src/mn-client-session.c:342 #, c-format msgid "connecting to %s (%s) port %i" msgstr "свързване с %s (%s) порт %i" #: src/mn-client-session.c:345 #, c-format msgid "unable to connect: %s" msgstr "неуспех при свързването: %s" #: src/mn-client-session.c:350 msgid "connected successfully" msgstr "успешно свързване" #. if reached, we couldn't find a working address #: src/mn-client-session.c:356 #, c-format msgid "unable to connect to %s" msgstr "неуспех при свързването с %s" #: src/mn-client-session.c:372 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "" #: src/mn-client-session.c:380 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "" #: src/mn-client-session.c:386 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "" #: src/mn-client-session.c:392 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "" #: src/mn-client-session.c:398 msgid "untrusted server" msgstr "непроверен сървър" #: src/mn-client-session.c:402 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "" #: src/mn-client-session.c:449 #, c-format msgid "%s, fingerprint: %s" msgstr "%s, пръстов отпечатък: %s" #: src/mn-client-session.c:478 msgid "missing certificate" msgstr "липсващ сертификат" #: src/mn-client-session.c:504 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" #: src/mn-client-session.c:521 msgid "Connect to untrusted server?" msgstr "Свързване с непроверен сървър?" #: src/mn-client-session.c:526 msgid "Co_nnect" msgstr "Свъ_рзване" #: src/mn-client-session.c:584 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "" #: src/mn-client-session.c:610 #, c-format msgid "unable to parse response \"%s\"" msgstr "неуспех при преглед на отговор \"%s\"" #: src/mn-client-session.c:657 #, c-format msgid "unable to encode data using SASL: %s" msgstr "" #: src/mn-client-session.c:688 src/mn-client-session.c:695 #, c-format msgid "unable to write to server: %s" msgstr "неуспех при записването на сървър: %s" #: src/mn-client-session.c:693 msgid "unable to write to server: EOF" msgstr "неуспех при записването на сървър: EOF" #: src/mn-client-session.c:725 #, c-format msgid "unable to encode Base64: %s" msgstr "" #: src/mn-client-session.c:828 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "" #: src/mn-client-session.c:837 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "" #: src/mn-client-session.c:843 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "" #: src/mn-client-session.c:877 #, c-format msgid "warning: unable to set SASL security properties: %s" msgstr "" #: src/mn-client-session.c:916 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "" #: src/mn-client-session.c:920 #, c-format msgid "unable to start SASL authentication: %s" msgstr "" #: src/mn-client-session.c:924 #, c-format msgid "unable to create a SASL connection: %s" msgstr "" #: src/mn-client-session.c:974 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "" #: src/mn-client-session.c:978 #, c-format msgid "%s, aborting SASL authentication" msgstr "" #. compliance error #: src/mn-client-session.c:983 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "" #: src/mn-client-session.c:986 msgid "" "the server sent a SASL challenge, but there was a pending initial SASL " "client response" msgstr "" #: src/mn-client-session.c:1000 msgid "" "the server did not send a SASL challenge, but there was no pending initial " "SASL client response" msgstr "" #: src/mn-client-session.c:1023 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: src/mn-client-session.c:1028 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "" #: src/mn-client-session.c:1034 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "" #: src/mn-conf.c:109 #, c-format msgid "recursively unsetting %s" msgstr "" #: src/mn-conf.c:113 msgid "syncing the GConf database" msgstr "синхронизиране на базата данни на GConf" #: src/mn-conf.c:116 msgid "completed" msgstr "завършено" #: src/mn-gmail-mailbox-properties.gob:77 msgid "Your Gmail username" msgstr "Вашето Gmail потребителско име" #: src/mn-gmail-mailbox-properties.gob:78 msgid "Your Gmail password" msgstr "Вашата парола в Gmail" #: src/mn-gmail-mailbox.gob:220 msgid "logging in" msgstr "влизане" #: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279 #: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418 #, c-format msgid "unable to transfer data: %s" msgstr "неуспех при пренасянето на данни: %s" #: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299 #: src/mn-gmail-mailbox.gob:334 msgid "login failed" msgstr "влизането е неуспешно" #: src/mn-gmail-mailbox.gob:328 msgid "successfully logged in" msgstr "успешно влязъл в" #: src/mn-gmail-mailbox.gob:406 msgid "searching for unread mail" msgstr "търсене за непрочетена поща" #: src/mn-gmail-mailbox.gob:427 msgid "unable to parse Gmail data" msgstr "неуспех при прегледа на данни от Gmail" #: src/mn-imap-mailbox-properties.gob:92 msgid "Mailbox:" msgstr "Пощенска кутия:" #: src/mn-imap-mailbox-properties.gob:96 msgid "in_box" msgstr "ку_тия" #: src/mn-imap-mailbox-properties.gob:107 msgid "oth_er:" msgstr "др_уги" #: src/mn-imap-mailbox-properties.gob:122 msgid "The hostname or IP address of the IMAP server" msgstr "Хостът или IP адресът на IMAP сървъра" #: src/mn-imap-mailbox-properties.gob:123 msgid "Your username on the IMAP server" msgstr "Потребителското ви име за IMAP сървъра" #: src/mn-imap-mailbox-properties.gob:124 msgid "Your password on the IMAP server" msgstr "Паролата ви за IMAP сървъра" #: src/mn-imap-mailbox-properties.gob:125 #: src/mn-imap-mailbox-properties.gob:126 msgid "The port number of the IMAP server" msgstr "Номера на порта на IMAP сървъра" #: src/mn-imap-mailbox-properties.gob:127 msgid "The mailbox name" msgstr "Име на пощенската кутия" #: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125 msgid "SSL/TLS support has not been compiled in" msgstr "" #: src/mn-imap-mailbox.gob:179 msgid "server did not send capabilities" msgstr "" #: src/mn-imap-mailbox.gob:292 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "" #: src/mn-imap-mailbox.gob:293 msgid "unable to login" msgstr "неуспех при влизането" #. compliance error #: src/mn-imap-mailbox.gob:361 msgid "server did not send status" msgstr "сървърът не изпраща състоянието" #: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744 msgid "unknown server error" msgstr "неизвестна грешка в сървъра" #: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210 msgid "server does not support in-band SSL/TLS" msgstr "" #: src/mn-imap-mailbox.gob:675 src/mn-pop3-mailbox.gob:674 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" #: src/mn-imap-mailbox.gob:683 src/mn-pop3-mailbox.gob:686 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "неизвестен механизъм за идентификация \"%s\"" #: src/mn-imap-mailbox.gob:701 msgid "falling back to IMAP LOGIN authentication" msgstr "" #: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720 msgid "authentication failed" msgstr "неуспешна идентификация" #: src/mn-mail-icon.gob:81 msgid "_Update" msgstr "_Актуализиране" #: src/mn-mail-icon.gob:87 msgid "R_emove From Notification Area" msgstr "Пре_махване от зоната за известяване" #: src/mn-mail-icon.gob:172 #, c-format msgid "_Run %s" msgstr "_Стартиране %s" #: src/mn-mail-icon.gob:173 msgid "_Run Default Action" msgstr "_Стартиране на стандартното действие" #: src/mn-mailbox-properties-dialog.c:109 msgid "Add a Mailbox" msgstr "Добавяне на пощенска кутия" #: src/mn-mailbox-properties-dialog.c:331 #, c-format msgid "%s Properties" msgstr "%s Настройки" #: src/mn-mailbox-properties-util.c:77 msgid "_Username:" msgstr "_Име:" #: src/mn-mailbox-properties-util.c:87 msgid "_Password:" msgstr "_Парола:" #: src/mn-mailbox-properties-util.c:154 msgid "Connection type:" msgstr "Тип на връзката:" #: src/mn-mailbox-properties-util.c:161 msgid "Port:" msgstr "Порт:" #: src/mn-mailbox-properties-util.c:189 msgid "_Authentication mechanism:" msgstr "Механизъм за _идентификация:" #: src/mn-mailbox-properties.c:63 msgid "Label" msgstr "Етикет" #: src/mn-mailbox-properties.c:64 msgid "The marked up text to show in the type combo box" msgstr "" #: src/mn-mailbox-properties.c:69 msgid "Size group" msgstr "Размер на групата" #: src/mn-mailbox-properties.c:70 msgid "A GtkSizeGroup for aligning control labels" msgstr "" #: src/mn-mailbox-properties.c:75 msgid "Complete" msgstr "Завършено" #: src/mn-mailbox-properties.c:76 msgid "Whether the properties are completely filled or not" msgstr "" #: src/mn-mailbox-view.gob:254 msgid "Mailbox" msgstr "Пощенска кутия" #: src/mn-mailbox-view.gob:268 msgid "Format" msgstr "Формат" #: src/mn-mailbox-view.gob:543 msgid "Unable to add mailbox" msgstr "Неуспех при добавянето на пощенската кутия" #: src/mn-mailbox-view.gob:543 msgid "The mailbox is already in the list." msgstr "Пощенската кутия е вече в списъка." #: src/mn-mailbox.gob:122 msgid "The mailbox URI" msgstr "Адресът на пощенската кутия" #: src/mn-mailbox.gob:133 msgid "The mailbox human-readable name" msgstr "Името на пощенската кутия във формат разбираем от хора" #: src/mn-mailbox.gob:137 msgid "Whether the mailbox has to be manually checked or not" msgstr "" #: src/mn-mailbox.gob:142 msgid "Whether the mailbox has new mail or not" msgstr "" #: src/mn-mailbox.gob:147 msgid "The mailbox error, if any" msgstr "Грешката в пощенската кутия, ако има" #: src/mn-mailbox.gob:251 msgid "does not exist" msgstr "не съществува" #: src/mn-mailbox.gob:287 msgid "unknown format" msgstr "непознат формат" #: src/mn-mailbox.gob:355 #, c-format msgid "unable to monitor %s: %s" msgstr "неуспех при следенето %s: %s" #: src/mn-mailbox.gob:369 #, c-format msgid "" "As a fallback, they will be checked every %i second (this delay is " "configurable from the Properties Dialog)." "As a fallback, they will be checked every %i seconds (this delay is " "configurable from the Properties Dialog)." msgstr "" #: src/mn-mailbox.gob:380 #, c-format msgid "" "As a fallback, they will be checked every %i minute (this delay is " "configurable from the Properties Dialog)." "As a fallback, they will be checked every %i minutes (this delay is " "configurable from the Properties Dialog)." msgstr "" #: src/mn-mailbox.gob:391 #, c-format msgid "" "As a fallback, they will be checked approximately every %i minute (this " "delay is configurable from the Properties Dialog)." "As a fallback, they will be checked approximately every %i minutes (this " "delay is configurable from the Properties Dialog)." msgstr "" #: src/mn-mailbox.gob:405 msgid "A monitoring error has occurred" msgstr "Получи се грешка при наблюдението" #: src/mn-mailbox.gob:406 #, c-format msgid "" "Mail Notification was unable to enable immediate notification for one or " "more mailboxes. %s" msgstr "" "Известяването за поща не можа да разреши моменталното известяване за една или повече пощенски кутии. %s" #: src/mn-mailboxes.gob:143 #, c-format msgid "%s is unsupported: %s" msgstr "%s е неподдържан: %s" #: src/mn-mailboxes.gob:170 #, c-format msgid "%s has new mail" msgstr "%s има поща" #: src/mn-mailboxes.gob:170 #, c-format msgid "%s has no new mail" msgstr "%s няма нова поща" #: src/mn-mailboxes.gob:186 #, c-format msgid "%s reported an error: %s" msgstr "%s докладва за грешка: %s" #: src/mn-maildir-mailbox.gob:109 #, c-format msgid "unable to open folder \"new\": %s" msgstr "неуспех при отварянето на папка \"нови\": %s" #: src/mn-maildir-mailbox.gob:137 #, c-format msgid "unable to close folder \"new\": %s" msgstr "неуспех при отварянето на папка \"нови\": %s" #: src/mn-maildir-mailbox.gob:140 #, c-format msgid "error while reading folder \"new\": %s" msgstr "грешка при четенето на папката \"нови\": %s" #: src/mn-main.c:85 #, c-format msgid "Compiled-in mailbox backends: %s\n" msgstr "" #: src/mn-main.c:103 #, c-format msgid "Compiled-in features: %s\n" msgstr "Компилирани възможности: %s\n" #: src/mn-main.c:133 msgid "Enable informational output" msgstr "Разрешаване на информационния изход" #: src/mn-main.c:142 msgid "List compiled-in features and exit" msgstr "Изписване на компилираните възможности и излизане" #: src/mn-main.c:151 msgid "Display the properties dialog" msgstr "Показване на диалоговия прозорец с настройките" #: src/mn-main.c:160 msgid "Display the about dialog" msgstr "Изобразяване на диалоговия прозорец с информацията" #: src/mn-main.c:169 msgid "Update the mail status" msgstr "Актуализиране състоянието на пощата" #: src/mn-main.c:178 msgid "Report the mail status" msgstr "Докладване за състоянието на пощата" #: src/mn-main.c:187 msgid "Unset obsolete GConf configuration and exit" msgstr "Премахване на остарелите настройки в GConf и излизане" #. #. * We can't use mn_error_dialog() because gtk_init() has not been #. * called yet. #. #: src/mn-main.c:213 msgid "multi-threading is not available" msgstr "много-нишки не е налично" #: src/mn-main.c:258 msgid "" "Bonobo could not locate the automation object. Please check your Mail " "Notification installation." msgstr "" #: src/mn-main.c:263 msgid "Unable to initialize the GnomeVFS library." msgstr "Неуспех при инициализирането на библиотеката GnomeVFS." #: src/mn-main.c:285 msgid "updating the mail status" msgstr "актуализиране състоянието на пощата" #: src/mn-main.c:301 msgid "Mail Notification is already running" msgstr "Известяването за поща вече е стартирано" #: src/mn-main.c:308 msgid "" "Bonobo could not locate the GNOME_MailNotification_Automation.server file. " "Please check your Mail Notification installation." msgstr "" #: src/mn-main.c:312 msgid "" "Bonobo was unable to register the automation server. Please check your Mail " "Notification installation." msgstr "" "Bonobo не успя да регистрира сървъра за автоматизация. Моля, проверете инсталацията на известяването за поща." #: src/mn-mbox-mailbox.gob:171 #, c-format msgid "error while reading mailbox: %s" msgstr "грешка при четенето на пощенската кутия: %s" #: src/mn-mbox-mailbox.gob:179 #, c-format msgid "unable to open mailbox: %s" msgstr "грешка при отварянето на пощенската кутия: %s" #: src/mn-mh-mailbox.gob:122 #, c-format msgid "error while reading .mh_sequences: %s" msgstr "грешка при четенето на .mh_sequences: %s" #: src/mn-mh-mailbox.gob:130 #, c-format msgid "unable to open .mh_sequences: %s" msgstr "неуспех при отварянето на .mh_sequences: %s" #: src/mn-pending-mailbox.gob:33 msgid "detecting" msgstr "засичане" #: src/mn-pi-mailbox-properties.gob:74 msgid "_Hostname:" msgstr "_Хост:" #: src/mn-pi-mailbox-properties.gob:92 msgid "_Details" msgstr "_Подробности" #: src/mn-pi-mailbox-properties.gob:104 msgid "sta_ndard" msgstr "стан_дартно" #: src/mn-pi-mailbox-properties.gob:114 msgid "_in-band SSL/TLS" msgstr "_in-band SSL/TLS" #: src/mn-pi-mailbox-properties.gob:124 msgid "SSL/TLS on sepa_rate port" msgstr "SSL/TLS на отделен по_рт" #: src/mn-pop3-mailbox-properties.gob:84 msgid "The hostname or IP address of the POP3 server" msgstr "Хостът или IP адресът на POP3 сървъра" #: src/mn-pop3-mailbox-properties.gob:85 msgid "Your username on the POP3 server" msgstr "Потребителското име в POP3 сървъра" #: src/mn-pop3-mailbox-properties.gob:86 msgid "Your password on the POP3 server" msgstr "Паролата ви в POP3 сървъра" #: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88 msgid "The port number of the POP3 server" msgstr "Номера на порта на POP3 сървъра" #: src/mn-pop3-mailbox.gob:256 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "" #: src/mn-pop3-mailbox.gob:523 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgstr "" #: src/mn-pop3-mailbox.gob:682 msgid "server does not support APOP authentication" msgstr "Сървърът не поддържа идентификация тип APOP" #: src/mn-pop3-mailbox.gob:710 msgid "falling back to APOP authentication" msgstr "" #: src/mn-pop3-mailbox.gob:715 msgid "falling back to USER/PASS authentication" msgstr "" #: src/mn-properties.c:151 msgid "No mailbox selected." msgstr "Няма избрана кутия." #: src/mn-properties.c:156 #, c-format msgid "%i mailbox selected." msgstr "%i избрана кутия." #: src/mn-shell.gob:204 msgid "A command error has occurred" msgstr "След изпълнението на командата се получи грешка" #: src/mn-shell.gob:205 #, c-format msgid "Unable to execute double-clicked command: %s." msgstr "Неуспех при стартирането на командата: %s." #: src/mn-shell.gob:292 msgid "The following mailbox has new mail:\n" msgstr "Следната пощенска кутия има нова поща:\n" #: src/mn-shell.gob:296 msgid "You have no new mail." msgstr "Нямата нова поща." #: src/mn-shell.gob:299 msgid "The following mailbox reported an error:\n" msgstr "Следната пощенска кутия докладва за грешка:\n" #: src/mn-shell.gob:304 msgid "The following mailbox is unsupported:\n" msgstr "Следните пощенски кутии не се поддържат:\n" #: src/mn-shell.gob:320 msgid "You have new mail." msgstr "Имате поща." #: src/mn-shell.gob:330 msgid "A command error has occurred in Mail Notification" msgstr "Грешка с командите се получи в известяването за поща" #: src/mn-shell.gob:331 #, c-format msgid "Unable to execute new mail command: %s." msgstr "Неуспех при стартирането на нова пощенска команда: %s." #: src/mn-ssl.c:79 msgid "unknown SSL/TLS error" msgstr "неизвестна SSL/TLS грешка" #: src/mn-stock.c:28 msgid "Select _All" msgstr "Избор на _всички" #: src/mn-sylpheed-mailbox.gob:93 #, c-format msgid "unable to open folder: %s" msgstr "неуспех при отварянето на папката: %s" #: src/mn-sylpheed-mailbox.gob:127 #, c-format msgid "unable to close folder: %s" msgstr "неуспех при затварянето на папката: %s" #: src/mn-sylpheed-mailbox.gob:130 #, c-format msgid "error while reading folder: %s" msgstr "грешка при четенето на папката: %s" #: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391 msgid "System Mailbox" msgstr "Системна кутия" #: src/mn-system-mailbox-properties.gob:55 #, c-format msgid "Your system mailbox (%s) will be used." msgstr "Системната ви пощенска кутия (%s) ще бъде използвана." #: src/mn-system-mailbox-properties.gob:62 msgid "" "The location of your system mailbox could not be detected. Please set the " "MAIL environment variable." msgstr "" "Местоположението на Вашата системна пощенска кутия не може да бъде засечено. Моля, настройте променливата MAIL environment." #: src/mn-unsupported-mailbox.gob:31 msgid "The reason why the mailbox is unsupported" msgstr "Причината защо пощенската кутия е неподдържана" #: src/mn-unsupported-mailbox.gob:38 msgid "unsupported" msgstr "не е поддържан" #: src/mn-util.c:199 #, c-format msgid "error loading image: %s" msgstr "грешка при зареждането на изображение: %s" #: src/mn-util.c:237 #, c-format msgid "widget %s not found in interface %s" msgstr "уиджета %s не е намерен в интерфейса %s" #: src/mn-util.c:355 msgid "received an invalid URI list" msgstr "получен е некоректен списък с адреси" #: src/mn-util.c:391 msgid "received an invalid Mozilla URL" msgstr "получен е некоректен Mozilla адрес" #: src/mn-util.c:484 msgid "Unable to display help" msgstr "Неуспех при показването на помощта" #: src/mn-util.c:498 #, c-format msgid "Unable to create a thread: %s." msgstr "Неуспех при създаването на нишка: %s." #: src/mn-util.c:701 msgid "A fatal error has occurred in Mail Notification" msgstr "Получи се сериозна грешка в известяването за поща" #: ui/mailbox-properties.glade.h:1 msgid "_Mailbox type:" msgstr "_Тип на пощенската кутия:" #: ui/properties.glade.h:1 msgid " " msgstr " " #: ui/properties.glade.h:2 msgid "*" msgstr "*" #: ui/properties.glade.h:3 msgid "Commands" msgstr "Команди" #: ui/properties.glade.h:4 msgid "General" msgstr "Основни" #: ui/properties.glade.h:5 msgid "Mailboxes" msgstr "Пощенски кутии" #: ui/properties.glade.h:6 msgid "Mail Notification Properties" msgstr "Настройки на известяването за поща" #: ui/properties.glade.h:7 msgid "The amount of time to wait between mail checks" msgstr "Времевият интервал за изчакване между проверките за нова поща" #: ui/properties.glade.h:8 msgid "The command to run when new mail arrives" msgstr "Командата, която да се изпълни при пристигането на нова поща" #: ui/properties.glade.h:9 msgid "The command to run when the icon is double-clicked" msgstr "Командата, която да се стартира когато иконата-писмо се натисне два пъти" #: ui/properties.glade.h:10 msgid "When _new mail arrives:" msgstr "При пристигане на _нова поща:" #: ui/properties.glade.h:11 msgid "When double-click_ed:" msgstr "При _двойно натискане:" #: ui/properties.glade.h:12 msgid "Whether the status icon should blink on errors or not" msgstr "Дали иконата за състоянието да започне да мига при грешки или не" #: ui/properties.glade.h:13 msgid "Whether to run a command when new mail arrives or not" msgstr "Дали да се стартира команда при пристигането на нова поща или не" #: ui/properties.glade.h:14 msgid "Whether to run a command when the icon is double-clicked or not" msgstr "Дали да се стартира команда при двойно натискане на иконата или не" #: ui/properties.glade.h:15 msgid "" "Whether to start Mail Notification when you log into your GNOME session or " "not" msgstr "" "Дали да се стартира известяването за поща, когато влизате в GNOME или не" #: ui/properties.glade.h:16 msgid "_Blink on errors" msgstr "_Мигане при грешки" #: ui/properties.glade.h:17 msgid "_Delay between mail checks:" msgstr "_Време между проверките за поща:" #: ui/properties.glade.h:18 msgid "_Start Mail Notification on GNOME login" msgstr "_Стартиране на известяването за поща при влизане в GNOME" #: ui/properties.glade.h:19 msgid "minutes" msgstr "минути" #: ui/properties.glade.h:20 msgid "seconds" msgstr "секунди" #: ui/welcome.glade.h:1 msgid "" "First startup\n" "\n" "Mail Notification has been loaded successfully.\n" "\n" "Since this is the first time you run Mail Notification, you might want to " "configure it.\n" "\n" "Note: this message will not be shown anymore. To configure Mail Notification " "again, choose ApplicationsDesktop PreferencesMail Notification (or on some systems Applications → Preferences → " "More Preferences → Mail Notification)." msgstr "" "Първо стартиране\n" "\n" "Известяването за поща беше стартирано успешно.\n" "\n" "След като стартирате за първи път известяването за поща то " "сигурно желаете да го настроите.\n" "\n" "Бележка: няма да видите това съобщение отново. За да настроите " "известяването за поща отново, то изберете ПрограмиНастройки на средатаИзвестяване за поща (или при някои системи Програми → Настройки → Допълнителни настройки → Известяване за поща)." #: ui/welcome.glade.h:8 msgid "_Configure Mail Notification" msgstr "_Настройки на известяването за поща" #: ui/welcome.glade.h:9 msgid "_Skip configuration" msgstr "_Пропускане на настройването" mail-notification-5.4.dfsg.1/po/cs.po0000644000175000001440000020035411005110635017232 0ustar evilynuxusers# Czech translation for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Pav Lucistnik , 2005-2006. # msgid "" msgstr "" "Project-Id-Version: mail-notification 4.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-06-19 08:41+0200\n" "PO-Revision-Date: 2008-04-27 16:45+0200\n" "Last-Translator: Pav Lucistnik \n" "Language-Team: Pav Lucistnik \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: ../data/GNOME_MailNotification.server.in.in.h:1 msgid "Mail Notification automation" msgstr "Upozornění na poštu automation" #: ../data/GNOME_MailNotification.server.in.in.h:2 msgid "Mail Notification automation factory" msgstr "Upozornění na poštu automation factory" #: ../data/GNOME_MailNotification_Evolution.server.in.h:1 msgid "Evolution folder tree control" msgstr "Strom složek Evolution control" #: ../data/GNOME_MailNotification_Evolution.server.in.h:2 msgid "Evolution folder tree control factory" msgstr "Strom složek Evolution control factory" #: ../data/GNOME_MailNotification_Evolution.server.in.h:3 msgid "Mail Notification / Evolution glue" msgstr "Upozornění na poštu / Evolution glue" #: ../data/GNOME_MailNotification_Evolution.server.in.h:4 msgid "Mail Notification / Evolution glue factory" msgstr "Upozornění na poštu / Evolution glue factory" #: ../data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "Nastavit upozornění na poštu" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:234 #: ../src/mn-main.c:143 ../src/mn-main.c:350 ../src/mn-main.c:371 #: ../src/mn-main.c:445 msgid "Mail Notification" msgstr "Upozornění na poštu" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Upozorňovat když přijde nová pošta" #: ../data/mail-notification.schemas.in.in.h:1 msgid "Always display an icon" msgstr "Vždy zobrazovat ikonu" #: ../data/mail-notification.schemas.in.in.h:2 msgid "Blink on errors" msgstr "Blikat při chybě" #: ../data/mail-notification.schemas.in.in.h:3 msgid "Click action" msgstr "Akce při kliknutí" #: ../data/mail-notification.schemas.in.in.h:4 msgid "Display seen mail" msgstr "Zobrazit přečtenou poštu" #: ../data/mail-notification.schemas.in.in.h:5 msgid "Enable message popups" msgstr "Povolit plovoucí okna zpráv" #: ../data/mail-notification.schemas.in.in.h:6 msgid "Expire message popups" msgstr "Zavírat plovoucí okna zpráv" #: ../data/mail-notification.schemas.in.in.h:7 msgid "Fingerprints of trusted X509 certificates" msgstr "Obtisky důvěryhodných X509 certifikátů" #: ../data/mail-notification.schemas.in.in.h:8 msgid "Height of properties dialog" msgstr "Výška dialogu nastavení" #: ../data/mail-notification.schemas.in.in.h:9 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "amount of time to wait before expiring message popups (minutes part)." msgstr "" "Pokud /apps/mail-notification/popups/expiration/enabled má hodnotu \"true\", " "čas po jakém je plovoucí okno zavřeno (minuty)." #: ../data/mail-notification.schemas.in.in.h:10 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "amount of time to wait before expiring message popups (seconds part)." msgstr "" "Pokud /apps/mail-notification/popups/expiration/enabled má hodnotu \"true\", " "čas po jakém je plovoucí okno zavřeno (sekundy)." #: ../data/mail-notification.schemas.in.in.h:11 msgid "Mail changed command" msgstr "Příkaz při změně pošty" #: ../data/mail-notification.schemas.in.in.h:12 msgid "Mail read command" msgstr "Příkaz po přečtění pošty" #: ../data/mail-notification.schemas.in.in.h:13 msgid "Message popups actions" msgstr "Akce plovoucích oken zpráv" #: ../data/mail-notification.schemas.in.in.h:14 msgid "Message popups position" msgstr "Pozice plovoucích oken zpráv" #: ../data/mail-notification.schemas.in.in.h:15 msgid "Minutes to wait before expiring message popups" msgstr "Minuty před zavřením plovoucích oken zpráv" #: ../data/mail-notification.schemas.in.in.h:16 msgid "New mail command" msgstr "Příkaz při nové poště" #: ../data/mail-notification.schemas.in.in.h:17 msgid "Run a command when all mail is read" msgstr "Spustit příkaz při přečtení veškeré pošty" #: ../data/mail-notification.schemas.in.in.h:18 msgid "Run a command when new mail arrives" msgstr "Spustit příkaz při příchodu nové pošty" #: ../data/mail-notification.schemas.in.in.h:19 msgid "Run a command when the message list changes" msgstr "Spustit příkaz při změně obsahu poštovní schránky" #: ../data/mail-notification.schemas.in.in.h:20 msgid "Seconds to wait before expiring message popups" msgstr "Sekundy před zavřením plovoucích oken zpráv" #: ../data/mail-notification.schemas.in.in.h:21 msgid "" "The action to perform when the icon is clicked. Must be \"display-properties-" "dialog\", \"launch-mail-reader\", \"open-latest-message\" or \"update-mail-" "status\"." msgstr "" "Kterou akci vykonat při kliknutí na ikonu. Musí být \"display-properties-" "dialog\", \"launch-mail-reader\", \"open-latest-message\" nebo \"update-mail-" "status\"." #: ../data/mail-notification.schemas.in.in.h:22 msgid "The command to run when all mail is read." msgstr "Příkaz spouštěný po přečtení veškeré pošty." #: ../data/mail-notification.schemas.in.in.h:23 msgid "The command to run when new mail arrives." msgstr "Příkaz spouštěný když dorazí nová pošta." #: ../data/mail-notification.schemas.in.in.h:24 msgid "The command to run when the message list changes." msgstr "Příkaz spouštěný při změně obsahu poštovní schránky." #: ../data/mail-notification.schemas.in.in.h:25 msgid "The height of the properties dialog in pixels." msgstr "Výška dialogu nastavení v pixelech." #: ../data/mail-notification.schemas.in.in.h:26 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" "Seznam důvěryhodných SSL/TLS serverů (jméno počítače:port), kterým chybí " "X509 certifikát." #: ../data/mail-notification.schemas.in.in.h:27 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "" "Seznam důvěryhodných X509 certifikátů, reprezentovaných jejími MD5 obtisky." #: ../data/mail-notification.schemas.in.in.h:28 msgid "" "The ordered list of actions to include in the message popups. Each element " "must be \"open\", \"mark-as-read\", \"mark-as-spam\" or \"delete\"." msgstr "" "Seznam akcí pro zobrazení v plovoucím okně zprávy. Prvky mohou být \"open\", " "\"mark-as-read\", \"mark-as-spam\" a \"delete\"." #: ../data/mail-notification.schemas.in.in.h:29 msgid "The position of the message popups. Must be \"attached\" or \"free\"." msgstr "Umístění plovoucích oken zpráv. Musí být \"attached\" nebo \"free\"." #: ../data/mail-notification.schemas.in.in.h:30 msgid "" "The type of mail summary to display in the icon's tooltip. Must be \"standard" "\", \"compact\" or \"none\"." msgstr "" "Který druh souhrnu pošty zobrazit v tooltipu ikony. Musí být \"standard" "\" (standardní)\", \"compact\" (kompaktní) nebo \"none\" (žádný)." #: ../data/mail-notification.schemas.in.in.h:31 msgid "The width of the properties dialog in pixels." msgstr "Šířka dialogu nastavení v pixelech." #: ../data/mail-notification.schemas.in.in.h:32 msgid "Tooltip mail summary" msgstr "Souhrn pošty v tooltipu" #: ../data/mail-notification.schemas.in.in.h:33 msgid "Trusted servers list" msgstr "Seznam důvěryhodných serverů" #: ../data/mail-notification.schemas.in.in.h:34 msgid "Whether the status icon should blink on errors or not." msgstr "Jestli má stavová ikona blikat při chybě nebo ne." #: ../data/mail-notification.schemas.in.in.h:35 msgid "Whether to display an icon when there is no new mail or not." msgstr "Jestli zobrazit ikonu, i když není žádná nová pošta, nebo ne." #: ../data/mail-notification.schemas.in.in.h:36 msgid "Whether to display seen mail or not." msgstr "Jestli zobrazit přečtenou poštu nebo ne." #: ../data/mail-notification.schemas.in.in.h:37 msgid "Whether to enable message popups or not." msgstr "Jestli automaticky zavírat plovoucí okna zpráv nebo ne." #: ../data/mail-notification.schemas.in.in.h:38 msgid "" "Whether to expire message popups or not. Must be \"default\", \"false\" or " "\"true\"." msgstr "" "Jestli automaticky zavírat plovoucí okna zpráv nebo ne. Musí být \"default" "\", \"false\" nebo \"true\"." #: ../data/mail-notification.schemas.in.in.h:39 msgid "Whether to run a command when all mail is read or not." msgstr "Jestli spouštět příkaz po přečtení veškeré pošty nebo ne." #: ../data/mail-notification.schemas.in.in.h:40 msgid "Whether to run a command when new mail arrives or not." msgstr "Jestli spouštět příkaz při doručení nové pošty nebo ne." #: ../data/mail-notification.schemas.in.in.h:41 msgid "Whether to run a command when the message list changes or not." msgstr "Jestli spouštět příkaz při změně obsahu poštovní schránky nebo ne." #: ../data/mail-notification.schemas.in.in.h:42 msgid "Width of properties dialog" msgstr "Šířka dialogu nastavení" #: ../src/eggtrayicon.c:132 msgid "Orientation" msgstr "Orientace" #: ../src/eggtrayicon.c:133 msgid "The orientation of the tray." msgstr "Orientace oznamovací oblasti." #. translators: header capitalization #: ../src/mn-about-dialog.gob:50 msgid "A Mail Notification Icon" msgstr "Ikona Upozornění na poštu" #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:58 msgid "translator-credits" msgstr "Pav Lučištník <pav@FreeBSD.org>" #: ../src/mn-auth-combo-box.gob:101 #: ../src/mn-autodetect-mailbox-properties.gob:110 msgid "Autodetect" msgstr "Autodetekovat" #. translators: header capitalization #: ../src/mn-authenticated-mailbox-properties.gob:50 msgid "Account" msgstr "Účet" #: ../src/mn-authenticated-mailbox-properties.gob:53 msgid "_Username:" msgstr "_Jméno uživatele:" #: ../src/mn-authenticated-mailbox-properties.gob:57 msgid "_Password:" msgstr "_Heslo:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:124 #: ../src/mn-system-vfs-mailbox-properties.gob:60 msgid "Location" msgstr "Umístění" #: ../src/mn-autodetect-mailbox-properties.gob:126 msgid "_Location:" msgstr "_Umístění:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:134 msgid "_Browse..." msgstr "_Procházet..." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:176 msgid "Select a File or Folder" msgstr "Zvolte soubor nebo složku" #: ../src/mn-base-mbox-mailbox-backend.gob:345 #, c-format msgid "unable to close file: %s" msgstr "nemohu zavřít soubor: %s" #: ../src/mn-base-mbox-mailbox-backend.gob:359 #, c-format msgid "unable to open mailbox: %s" msgstr "nemohu otevřít soubor: %s" #: ../src/mn-client-session.c:257 #, c-format msgid "resolving %s" msgstr "hledám %s" #: ../src/mn-client-session.c:273 #, c-format msgid "unable to resolve %s: %s" msgstr "nemohu nalézt %s: %s" #: ../src/mn-client-session.c:314 #, c-format msgid "network address #%i" msgstr "síťová adresa #%i" #: ../src/mn-client-session.c:317 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "nemohu převést síťovou adresu #%i do textové podoby: %s" #: ../src/mn-client-session.c:328 #, c-format msgid "%s: unsupported address family" msgstr "%s: nepodporovaná adresní rodina" #: ../src/mn-client-session.c:335 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: nemohu vytvořit soket: %s" #: ../src/mn-client-session.c:339 #, c-format msgid "connecting to %s (%s) port %i" msgstr "připojování k %s (%s) port %i" #: ../src/mn-client-session.c:342 #, c-format msgid "unable to connect: %s" msgstr "nemohu se připojit: %s" #: ../src/mn-client-session.c:347 msgid "connected successfully" msgstr "úspěšně připojen" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:361 #, c-format msgid "unable to connect to %s" msgstr "nemohu se připojit k %s" #: ../src/mn-client-session.c:388 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "nemohu inicializovat knihovnu OpenSSL: %s" #: ../src/mn-client-session.c:396 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "nemohu vytvořit SSL/TLS objekt: %s" #: ../src/mn-client-session.c:402 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "nemohu nastavit SSL/TLS deskriptor souboru: %s" #: ../src/mn-client-session.c:408 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "nemohu provést SSL/TLS handshake: %s" #: ../src/mn-client-session.c:414 msgid "untrusted server" msgstr "nedůvěryhodný server" #: ../src/mn-client-session.c:418 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "SSL/TLS vrstva je nyní aktivní (%s, %s %i bitů)" #: ../src/mn-client-session.c:589 msgid "server name not found in certificate" msgstr "certifikát neobsahuje jméno serveru" #: ../src/mn-client-session.c:594 #, c-format msgid "" "user-provided server name \"%s\" does not match certificate-provided server " "name \"%s\"" msgstr "" "jméno serveru \"%s\" zadané uživatelem neodpovídá jménu serveru \"%s\" z certifikátu" #: ../src/mn-client-session.c:612 #, c-format msgid "" "user-provided server name \"%s\" matches none of the certificate-provided " "server names %s" msgstr "" "jméno serveru \"%s\" zadané uživatele neodpovídá žádnému ze jmen uvedených " "v certifikátu: %s" #: ../src/mn-client-session.c:688 msgid "missing certificate" msgstr "chybí certifikát" #: ../src/mn-client-session.c:717 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "\"%s\" (%s) není důvěryhodný. Je možné, že někdo zachycuje komunikaci za " "účelem získání důvěrných údajů.\n" "\n" "Neměl byste se připojovat k serveru, pokud si nejste jistý, že jste " "připojen k \"%s\". Pokud zvolíte připojení k serveru, tato zpráva již " "nebude znovu zobrazena." #: ../src/mn-client-session.c:731 #, c-format msgid "Certificate fingerprint: %s." msgstr "Obtisk certifikátu: %s." #: ../src/mn-client-session.c:738 msgid "Connect to untrusted server?" msgstr "Připojit k nedůvěryhodnému serveru?" #: ../src/mn-client-session.c:803 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "odezva \"%s\" není platná v aktuálním kontextu" #: ../src/mn-client-session.c:832 #, c-format msgid "unable to parse response \"%s\"" msgstr "nemohu zpracovat odezvu \"%s\"" #: ../src/mn-client-session.c:882 ../src/mn-client-session.c:889 #, c-format msgid "unable to read from server: %s" msgstr "nemohu číst ze serveru: %s" #: ../src/mn-client-session.c:887 msgid "unable to read from server: EOF" msgstr "nemohu část ze serveru: EOF" #: ../src/mn-client-session.c:899 #, c-format msgid "unable to decode data using SASL: %s" msgstr "nemohu dešifrovat data pomoci SASL: %s" #: ../src/mn-client-session.c:1044 #, c-format msgid "unable to encode data using SASL: %s" msgstr "nemohu zašifrovat data pomoci SASL: %s" #: ../src/mn-client-session.c:1075 ../src/mn-client-session.c:1082 #, c-format msgid "unable to write to server: %s" msgstr "nemohu zapsat na server: %s" #: ../src/mn-client-session.c:1080 msgid "unable to write to server: EOF" msgstr "nemohu zapsat na server: EOF" #: ../src/mn-client-session.c:1111 ../src/mn-pop3-mailbox.gob:434 #, c-format msgid "unable to encode Base64: %s" msgstr "nemohu převést do Base64: %s" #: ../src/mn-client-session.c:1288 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "nemohu inicializovat knihovnu SASL: %s" #: ../src/mn-client-session.c:1300 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "nemohu získat místní adresu soketu: %s" #: ../src/mn-client-session.c:1306 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "nemohu získat vzdálenou adresu soketu: %s" #: ../src/mn-client-session.c:1340 #, c-format msgid "unable to set SASL security properties: %s" msgstr "nemohu nastavit zabezpečení SASL: %s" #: ../src/mn-client-session.c:1364 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "nemohu zahájit ověření SASL: SASL se zeptal na něco, co neznáme" #: ../src/mn-client-session.c:1383 #, c-format msgid "unable to start SASL authentication: %s" msgstr "nemohu zahájit ověření SASL: %s" #: ../src/mn-client-session.c:1387 #, c-format msgid "unable to create a SASL connection: %s" msgstr "nemohu vytvořit SASL spojení: %s" #: ../src/mn-client-session.c:1434 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "SASL se zeptal na něco, co neznáme, přerušuji ověření SASL" #: ../src/mn-client-session.c:1451 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, přerušuji ověření SASL" #. compliance error #: ../src/mn-client-session.c:1456 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "nemohu zpracovat Base64 údaje od serveru: %s" #: ../src/mn-client-session.c:1492 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "bezpečnostní vrstva SASL o bezpečnostním faktoru %i je nyní aktivní" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1497 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "nelze získat vlastnost SASL_MAXOUTBUF: %s" #: ../src/mn-client-session.c:1503 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "varování: nelze získat vlastnost SASL_SSF: %s" #: ../src/mn-client-session.c:1662 msgid "unknown server error" msgstr "neznámá chyba serveru" #: ../src/mn-compact-message-view.gob:46 msgid "Mailbox" msgstr "Schránka" #: ../src/mn-compact-message-view.gob:47 msgid "From" msgstr "Od" #: ../src/mn-compact-message-view.gob:48 msgid "Subject" msgstr "Předmět" #: ../src/mn-compact-message-view.gob:49 msgid "Sent" msgstr "Odesláno" #: ../src/mn-conf.c:282 msgid "A directory creation error has occurred" msgstr "Chyba při vytváření adresáře" #: ../src/mn-conf.c:283 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "Nemohu vytvořit adresář \"%s\": %s." #: ../src/mn-conf.c:407 #, c-format msgid "recursively unsetting %s" msgstr "rekurzivně odnastavuji %s" #: ../src/mn-conf.c:411 msgid "syncing the GConf database" msgstr "synchronizuji GConf databázi" #: ../src/mn-conf.c:414 msgid "completed" msgstr "dokončeno" #: ../src/mn-custom-vfs-mailbox.gob:77 msgid "invalid location" msgstr "neplatné umístění" #: ../src/mn-evolution-folder-tree-control.gob:69 msgid "The currently selected URI" msgstr "Vybrané URI" #. translators: header capitalization #: ../src/mn-evolution-mailbox-properties.gob:79 msgid "Folder" msgstr "Složka" #: ../src/mn-evolution-mailbox-properties.gob:204 msgid "" "Mail Notification can not contact Evolution. Make sure that Evolution is " "running and that the Evolution Jean-Yves Lefort's Mail Notification plugin " "is loaded." msgstr "" "Nemohu se spojit s Evolution. Ujistěte se, že Evolution běží a že Evolution " "Jean-Yves Lefortův Mail Notification plugin je aktivní." #: ../src/mn-evolution-mailbox.gob:78 msgid "folder not found" msgstr "složka nenalezena" #: ../src/mn-evolution-mailbox.gob:79 msgid "message not found" msgstr "zpráva nenalezena" #: ../src/mn-evolution-mailbox.gob:220 msgid "unable to contact Evolution" msgstr "nemohu se spojit s Evolution" #: ../src/mn-evolution-plugin.c:102 ../src/mn-evolution-plugin.c:106 msgid "Unable to activate the Mail Notification plugin" msgstr "Nemohu aktivovat Mail Notification plugin" #: ../src/mn-evolution-plugin.c:102 #, c-format msgid "" "Bonobo could not locate the %s server. Please check your Mail Notification " "installation." msgstr "" "Bonobo nemohlo nalézt server %s. Prosím zkontrolujte instalaci Upozornění na " "poštu." #: ../src/mn-evolution-plugin.c:106 ../src/mn-main.c:523 #, c-format msgid "" "Bonobo was unable to register the %s server. Please check your Mail " "Notification installation." msgstr "" "Bonobo nemohlo zaregistrovat server %s. Prosím zkontrolujte instalaci " "Upozornění na poštu." #: ../src/mn-gmail-mailbox.gob:104 msgid "invalid feed location" msgstr "neplatné umístění zdroje" #: ../src/mn-gmail-mailbox.gob:118 #, c-format msgid "retrieving feed from %s" msgstr "získávám zdroj z %s" #: ../src/mn-gmail-mailbox.gob:125 #, c-format msgid "unable to retrieve feed: %s" msgstr "nemohu získat zdroj: %s" #: ../src/mn-gmail-mailbox.gob:140 ../src/mn-gmail-mailbox.gob:191 msgid "unable to parse feed" msgstr "nemohu zpracovat zdroj" #: ../src/mn-gmime-stream-vfs.gob:51 #: ../src/mn-sylpheed-mailbox-backend.gob:209 #, c-format msgid "unable to read %s: %s" msgstr "nemohu číst %s: %s" #: ../src/mn-gmime-stream-vfs.gob:53 #, c-format msgid "unable to write to %s: %s" msgstr "nemohu zapsat do %s: %s" #: ../src/mn-gmime-stream-vfs.gob:55 #, c-format msgid "unable to seek in %s: %s" msgstr "nemohu posouvat v %s: %s" #: ../src/mn-gmime-stream-vfs.gob:57 #, c-format msgid "unable to tell position of %s: %s" msgstr "nemohu určit pozici v %s: %s" #: ../src/mn-gmime-stream-vfs.gob:59 ../src/mn-mh-mailbox-backend.gob:174 #, c-format msgid "unable to close %s: %s" msgstr "nemohu zavřít %s: %s" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:118 msgid "IMAP Mailbox" msgstr "IMAP schránka" #: ../src/mn-imap-mailbox-properties.gob:120 msgid "In_box" msgstr "In_box" #: ../src/mn-imap-mailbox-properties.gob:125 msgid "_Other:" msgstr "_Jiná:" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:138 msgid "Use the IDLE Extension" msgstr "Použít rozšíření IDLE" #: ../src/mn-imap-mailbox-properties.gob:142 #: ../ui/properties-dialog.glade.h:35 msgid "_Never" msgstr "_Nikdy" #: ../src/mn-imap-mailbox-properties.gob:143 msgid "A_utodetect" msgstr "_Autodetekovat" #: ../src/mn-imap-mailbox-properties.gob:144 msgid "Al_ways" msgstr "_Vždy" #: ../src/mn-imap-mailbox.gob:381 msgid "server did not send capabilities" msgstr "server neposlal capability" #: ../src/mn-imap-mailbox.gob:548 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "server ohlásil LOGINDISABLED, nepoužívám LOGIN přihlášení" #: ../src/mn-imap-mailbox.gob:549 msgid "unable to login" msgstr "nemohu se přihlásit" #: ../src/mn-imap-mailbox.gob:822 msgid "unable to fetch message" msgstr "nemohu stáhnout zprávu" #: ../src/mn-imap-mailbox.gob:838 msgid "" "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, " "logging out" msgstr "" "\"Použít rozšíření IDLE\" nastaveno na \"never\" ve vlastnostech schránky, " "odpojuji se" #: ../src/mn-imap-mailbox.gob:849 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "vzdálený server běží %s, nepoužívám rozšíření IDLE" #: ../src/mn-imap-mailbox.gob:854 #, c-format msgid "" "the remote server runs %s, the IDLE extension might not function properly" msgstr "vzdálený server běží %s, rozšíření IDLE nemusí pracovat správně" #: ../src/mn-imap-mailbox.gob:863 msgid "the remote server does not support the IDLE extension, logging out" msgstr "vzdálený server nepodporuje rozšíření IDLE, odpojuji se" #: ../src/mn-imap-mailbox.gob:1368 ../src/mn-pop3-mailbox.gob:297 msgid "server does not support in-band SSL/TLS" msgstr "server nepodporuje in-band SSL/TLS" #: ../src/mn-imap-mailbox.gob:1392 ../src/mn-pop3-mailbox.gob:956 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" "přihlašovací mechanismus SASL byl vybrán, ale podpora SASL nebyla " "zkompilována " #: ../src/mn-imap-mailbox.gob:1402 ../src/mn-pop3-mailbox.gob:976 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "neznámý přihlašovací mechanismus \"%s\"" #: ../src/mn-imap-mailbox.gob:1434 ../src/mn-pop3-mailbox.gob:1012 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "zakazuji mechanismus \"%s\" a zkouším znovu přihlášení SASL" #: ../src/mn-imap-mailbox.gob:1446 msgid "falling back to IMAP LOGIN authentication" msgstr "zkouším přihlášení IMAP LOGIN" #: ../src/mn-imap-mailbox.gob:1458 ../src/mn-pop3-mailbox.gob:1041 msgid "authentication failed" msgstr "přihlášení selhalo" #. translators: header capitalization #: ../src/mn-mail-icon.gob:93 msgid "_Mail Reader" msgstr "_Poštovní program" #. translators: header capitalization #: ../src/mn-mail-icon.gob:95 msgid "_Open Latest Message" msgstr "_Otevřít poslední zprávu" #. translators: header capitalization #: ../src/mn-mail-icon.gob:97 ../src/mn-mailbox-view.gob:314 msgid "_Update" msgstr "_Aktualizovat" #. translators: header capitalization #: ../src/mn-mail-icon.gob:104 msgid "R_emove From Notification Area" msgstr "_Odstranit z oznamovací oblasti" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:95 #, c-format msgid "%s Properties" msgstr "Vlastnosti %s" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:244 msgid "Add a Mailbox" msgstr "Přidat schránku" #: ../src/mn-mailbox-view.gob:250 msgid "A paste error has occurred" msgstr "Chyba při vložení" #: ../src/mn-mailbox-view.gob:566 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "nezpracovaná %s schránka (%s)" #: ../src/mn-mailbox-view.gob:571 #, c-format msgid "%s mailbox" msgstr "%s schránka" #: ../src/mn-mailbox-view.gob:586 msgid "detecting mailbox type..." msgstr "detekuji typ schránky..." #: ../src/mn-mailbox.gob:507 msgid "\"type\" attribute missing" msgstr "atribut \"type\" chybí" #: ../src/mn-mailbox.gob:514 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "neznámý typ schránky \"%s\"" #: ../src/mn-mailbox.gob:910 #, c-format msgid "property \"%s\" has no value" msgstr "vlastnost \"%s\" nemá žádnou hodnotu" #: ../src/mn-mailboxes.gob:241 msgid "An error has occurred while importing old mailboxes" msgstr "Při importování starých schránek nastala chyba" #: ../src/mn-mailboxes.gob:267 msgid "Unable to load the mailboxes configuration" msgstr "Nemohu načíst nastavení schránek" #: ../src/mn-mailboxes.gob:313 msgid "Unable to parse the XML document." msgstr "Nemohu zpracovat XML dokument." #: ../src/mn-mailboxes.gob:320 msgid "The root element is missing." msgstr "Kořenový elemtn chybí." #: ../src/mn-mailboxes.gob:326 #, c-format msgid "The root element \"%s\" is invalid." msgstr "Kořenový element \"%s\" je neplatný." #: ../src/mn-mailboxes.gob:349 #, c-format msgid "On line %i: %s." msgstr "Na řádku %i: %s." #: ../src/mn-mailboxes.gob:354 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "Na řádku %i: neznámý element \"%s\"." #: ../src/mn-mailboxes.gob:363 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "Při načítání nastavení schránek nastala chyba" msgstr[1] "Při načítání nastavení schránek nastaly chyby" msgstr[2] "Při načítání nastavení schránek nastaly chyby" #: ../src/mn-mailboxes.gob:388 msgid "Unable to save the mailboxes configuration" msgstr "Nemohu uložit nastavení schránek" #: ../src/mn-mailboxes.gob:430 ../src/mn-vfs.c:240 #, c-format msgid "Unable to remove %s: %s." msgstr "Nemohu odstranit %s: %s." #: ../src/mn-mailboxes.gob:438 #, c-format msgid "Unable to create %s: %s." msgstr "Nemohu vytvořit %s: %s." #: ../src/mn-mailboxes.gob:445 #, c-format msgid "Unable to open %s for writing: %s." msgstr "Nemohu otevřít %s pro zápis: %s." #: ../src/mn-mailboxes.gob:452 msgid "Unable to write the XML document." msgstr "Nemohu zapsat XML dokument." #: ../src/mn-mailboxes.gob:458 #, c-format msgid "Unable to close %s: %s." msgstr "Nemohu zavřít %s: %s." #: ../src/mn-mailboxes.gob:468 ../src/mn-mailboxes.gob:475 ../src/mn-vfs.c:258 #: ../src/mn-vfs.c:266 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "Nemohu přejmenovat %s na %s: %s." #. non fatal #: ../src/mn-mailboxes.gob:481 ../src/mn-vfs.c:276 #, c-format msgid "unable to delete %s: %s" msgstr "nemohu smazat %s: %s" #: ../src/mn-mailboxes.gob:511 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "%s má %i novou zprávu" msgstr[1] "%s má %i nové zprávy" msgstr[2] "%s má %i nových zpráv" #: ../src/mn-mailboxes.gob:537 #, c-format msgid "%s reported an error: %s" msgstr "%s hlásí chybu: %s" #: ../src/mn-maildir-mailbox-backend.gob:129 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "nemohu otevřít služku \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:178 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "nemohu zavřít složku \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:181 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "chyba během čtení složky \"%s\": %s" #: ../src/mn-main.c:110 msgid "yes" msgstr "ano" #: ../src/mn-main.c:110 msgid "no" msgstr "ne" #: ../src/mn-main.c:143 #, c-format msgid "%s version %s\n" msgstr "%s verze %s\n" #: ../src/mn-main.c:148 msgid "Mailbox backends:\n" msgstr "Backendy poštovních schránek:\n" #: ../src/mn-main.c:153 msgid "POP3 and IMAP features:\n" msgstr "Funkce POP3 a IMAP:\n" #: ../src/mn-main.c:158 msgid "Sylpheed features:\n" msgstr "Funkce Sylpheed:\n" #: ../src/mn-main.c:206 #, c-format msgid "A Bonobo exception (%s) has occurred in %s()." msgstr "Bonobo vyjímka (%s) nastala v %s()." #: ../src/mn-main.c:248 #, c-format msgid "%s option ignored since Mail Notification is not already running" msgstr "Volba %s ignorována, protože Upozornění na poštu neběží" #: ../src/mn-main.c:268 msgid "Show version information" msgstr "Zobrazit informace o verzi" #: ../src/mn-main.c:277 msgid "Enable informational output" msgstr "Povolit informační výstup" #: ../src/mn-main.c:286 msgid "Display the properties dialog" msgstr "Zobrazit dialog nastavení" #: ../src/mn-main.c:295 msgid "Display the about dialog" msgstr "Zobrazit dialog O aplikaci" #: ../src/mn-main.c:304 msgid "Update the mail status" msgstr "Aktualizovat stav pošty" #: ../src/mn-main.c:313 msgid "Print a XML mail summary" msgstr "Zobrazit souhrn pošty v XML" #: ../src/mn-main.c:322 msgid "Unset obsolete GConf configuration" msgstr "Odnastavit zastaralé nastavení GConf" #: ../src/mn-main.c:331 msgid "Quit Mail Notification" msgstr "Ukončit Upozornění na poštu" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: ../src/mn-main.c:358 msgid "multi-threading is not available" msgstr "vlákna nejsou k dispozici" #: ../src/mn-main.c:412 msgid "" "Bonobo could not locate the automation object. Please check your Mail " "Notification installation." msgstr "" "Bonobo nemůže nalézt automation objekt. Prosím zkontrolujte instalaci " "Upozornění na poštu." #: ../src/mn-main.c:418 msgid "quitting Mail Notification" msgstr "ukončuji Upozornění na poštu" #: ../src/mn-main.c:422 msgid "Mail Notification is not running" msgstr "Upozornění na poštu neběží" #: ../src/mn-main.c:437 msgid "Unable to initialize the GnomeVFS library." msgstr "Nemohu inicializovat knihovnu GnomeVFS." #: ../src/mn-main.c:447 msgid "An initialization error has occurred in Mail Notification" msgstr "V Upozornění na poštu nastala chyba při spouštění" #: ../src/mn-main.c:448 msgid "" "Unable to initialize the notification library. Message popups will not be " "displayed." msgstr "" "Nepodařilo se spustit upozorňovací knihovnu. Plovoucí okna zpráv nebudou " "zobrazována." #: ../src/mn-main.c:486 msgid "updating the mail status" msgstr "aktualizuji stav pošty" #: ../src/mn-main.c:502 msgid "Mail Notification is already running" msgstr "Upozornění na poštu již běží" #: ../src/mn-main.c:519 #, c-format msgid "" "Bonobo could not locate the %s file. Please check your Mail Notification " "installation." msgstr "" "Bonobo nemohlo najít soubor %s. Prosím zkontrolujte instalaci Upozornění na " "poštu." #: ../src/mn-message-mime.c:193 msgid "unable to parse MIME message" msgstr "nemohu zpracovat MIME zprávu" #: ../src/mn-message.gob:145 msgid "Unknown" msgstr "Neznámý" #: ../src/mn-message.gob:208 msgid "unterminated substitution" msgstr "neukončené nahrazení" #: ../src/mn-message.gob:247 #, c-format msgid "unknown substitution \"%s\"" msgstr "neznámé nahrazení \"%s\"" #: ../src/mn-message.gob:250 msgid "empty substitution" msgstr "prázdné nahrazení" #: ../src/mn-message.gob:313 ../src/mn-util.c:1427 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "Nemohu spustit \"%s\": %s." #: ../src/mn-mh-mailbox-backend.gob:177 #, c-format msgid "error while reading %s: %s" msgstr "chyba při čtení %s: %s" #: ../src/mn-mh-mailbox-backend.gob:190 #, c-format msgid "unable to open %s: %s" msgstr "nemohu otevřít %s: %s" #: ../src/mn-pi-mailbox-properties.gob:70 msgid "_Standard" msgstr "_Běžný" #: ../src/mn-pi-mailbox-properties.gob:71 msgid "In-_band SSL/TLS" msgstr "SS_L/TLS" #: ../src/mn-pi-mailbox-properties.gob:72 msgid "SSL/TLS on s_eparate port" msgstr "SSL/TLS _na samostatném portu" #: ../src/mn-pi-mailbox-properties.gob:76 msgid "_Server:" msgstr "_Server:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:96 msgid "Connection Type" msgstr "Typ spojení" #: ../src/mn-pi-mailbox-properties.gob:140 msgid "Port:" msgstr "Port:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:167 msgid "Authentication" msgstr "Autentizace" #: ../src/mn-pi-mailbox-properties.gob:171 msgid "_Mechanism:" msgstr "_Mechanismus:" #: ../src/mn-pi-mailbox-properties.gob:205 msgid "Connection" msgstr "Spojení" #: ../src/mn-pi-mailbox.gob:154 msgid "SSL/TLS support has not been compiled in" msgstr "Podpora SSL/TLS není zahrnuta v této kompilaci" #: ../src/mn-pi-mailbox.gob:320 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "credentials you have entered are invalid.\n" "\n" "Please re-enter your credentials." msgstr "" "Upozornění na poštu se nemohlo přihlásit do %s schránky %s, pravděpodobně " "protože přihlašovací údaje, které jste zadal, nejsou platné.\n" "\n" "Prosím zadejte znovu přihlašovací údaje." #: ../src/mn-pi-mailbox.gob:321 #, c-format msgid "Enter your credentials for %s mailbox %s." msgstr "Zadejte přihlašovací údaje pro %s schránku %s." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: ../src/mn-pi-mailbox.gob:364 msgid "Authentication Required" msgstr "Vyžadována autentizace" #: ../src/mn-pop3-mailbox.gob:345 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "nesmyslné hodnoty pro LOGIN-DELAY capabilitu" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:486 msgid "" "SASL authentication with initial client response failed, retrying without " "initial client response" msgstr "" "Přihlášení SASL s úvodní odezvou klienta selhalo, zkouším bez úvodní odezvy " "klienta" #: ../src/mn-pop3-mailbox.gob:703 msgid "unknown error" msgstr "neznámá chyba" #: ../src/mn-pop3-mailbox.gob:798 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "respektuji LOGIN-DELAY, čekám %i sekundu" msgstr[1] "respektuji LOGIN-DELAY, čekám %i sekundy" msgstr[2] "respektuji LOGIN-DELAY, čekám %i sekund" #: ../src/mn-pop3-mailbox.gob:968 msgid "server does not support APOP authentication" msgstr "server nepodporuje přihlášení APOP" #: ../src/mn-pop3-mailbox.gob:1024 msgid "falling back to APOP authentication" msgstr "zkouším přihlášení APOP" #: ../src/mn-pop3-mailbox.gob:1029 msgid "falling back to USER/PASS authentication" msgstr "zkouším přihlášení USER/PASS" #: ../src/mn-popup.gob:60 ../src/mn-standard-message-view.gob:63 msgid "Mailbox:" msgstr "Schránka:" #: ../src/mn-popup.gob:62 ../src/mn-standard-message-view.gob:65 msgid "Unreadable message:" msgstr "Nečitelná zpráva:" #: ../src/mn-popup.gob:65 ../src/mn-standard-message-view.gob:68 msgid "From:" msgstr "Od:" #: ../src/mn-popup.gob:66 ../src/mn-standard-message-view.gob:69 msgid "Subject:" msgstr "Předmět:" #: ../src/mn-popup.gob:128 #, c-format msgid "configuration key %s: there is no action named `%s'" msgstr "konfigurační klíč %s: akce `%s' neexistuje" #. translators: header capitalization #: ../src/mn-popup.gob:141 msgid "Open" msgstr "Otevřít" #. translators: header capitalization #: ../src/mn-popup.gob:154 msgid "Mark as Read" msgstr "Označit jako přečtené" #. translators: header capitalization #: ../src/mn-popup.gob:167 msgid "Mark as Spam" msgstr "Označit jako nevyžádané" #. translators: header capitalization #: ../src/mn-popup.gob:180 msgid "Delete" msgstr "Smazat" #: ../src/mn-popup.gob:196 msgid "Unable to open message" msgstr "Nemohu opevřít zprávu" #: ../src/mn-popup.gob:213 msgid "Unable to mark message as read" msgstr "Nemohu označit zprávu jako přečtenou" #: ../src/mn-popup.gob:230 msgid "Unable to mark message as spam" msgstr "Nemohu označit zprávu jako nevyžádanou" #: ../src/mn-popup.gob:247 msgid "Unable to delete message" msgstr "Nemohu smazat zprávu" #: ../src/mn-popup.gob:306 #, c-format msgid "unable to show popup: %s" msgstr "nemohu zobrazit plovoucí okno: %s" #: ../src/mn-popup.gob:323 #, c-format msgid "unable to close popup: %s" msgstr "nemohu zavřít plovoucí okno: %s" #. we set the summary here because libnotify requires it #. translators: header capitalization #: ../src/mn-popup.gob:334 msgid "New Message" msgstr "Nová zpráva" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:131 ../ui/properties-dialog.glade.h:20 msgid "Mail Notification Properties" msgstr "Vlastnosti Upozornění na poštu" #. translators: "test" is an adjective, not a verb #: ../src/mn-properties-dialog.gob:136 msgid "_Test messages" msgstr "Ukázkové zprávy" #: ../src/mn-properties-dialog.gob:276 msgid "No mailbox selected." msgstr "Není vybrána žádná schránka." #: ../src/mn-properties-dialog.gob:281 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "Vybrána %i schránka." msgstr[1] "Vybrány %i schránky." msgstr[2] "Vybráno %i schránek." #: ../src/mn-shell.gob:224 msgid "No mail reader is configured" msgstr "Program pro čtení pošty není nastaven" #: ../src/mn-shell.gob:225 msgid "" "You can configure a mail reader by choosing System → Preferences → " "Preferred Applications." msgstr "" "Progam pro čtení pošty nastavíte v Systém → Nastavení → Preferované " "aplikace." #: ../src/mn-shell.gob:236 ../src/mn-shell.gob:242 ../src/mn-shell.gob:534 msgid "Unable to open the latest message" msgstr "Nemohu otevřít poslední zprávu" #: ../src/mn-shell.gob:237 #, c-format msgid "Messages of mailbox \"%s\" cannot be opened." msgstr "Nemohu otevřít zprávy ve schránce \"%s\"." #: ../src/mn-shell.gob:243 ../src/mn-shell.gob:462 msgid "You have no new mail." msgstr "Nemáte žádnou novou poštu." #. translators: header capitalization #: ../src/mn-shell.gob:398 msgid "Mailboxes Having New Mail" msgstr "Schránky s novou poštou" #. translators: header capitalization #: ../src/mn-shell.gob:417 msgid "Errors" msgstr "Chyby" #. translators: header capitalization #: ../src/mn-shell.gob:433 msgid "Mail Summary" msgstr "Souhrn pošty" #: ../src/mn-ssl.c:159 msgid "unknown SSL/TLS error" msgstr "neznámá SSL/TLS chyba" #: ../src/mn-standard-message-view.gob:73 msgid "Sent:" msgstr "Odesláno:" #. translators: header capitalization #: ../src/mn-stock.c:30 msgid "Select _All" msgstr "Vybrat _vše" #. translators: header capitalization #: ../src/mn-stock.c:32 msgid "Co_nnect" msgstr "_Připojit" #: ../src/mn-sylpheed-mailbox-backend.gob:227 #, c-format msgid "unable to open folder: %s" msgstr "nemohu otevřít složku: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:277 #, c-format msgid "unable to close folder: %s" msgstr "nemohu zavřít složku: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:280 #, c-format msgid "error while reading folder: %s" msgstr "chyba při čtení složky: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:424 msgid "unexpected end of file" msgstr "neočekávaný konec souboru" #: ../src/mn-sylpheed-mailbox-backend.gob:437 #, c-format msgid "incompatible file version \"%i\"" msgstr "nekompatibilní verze souboru \"%i\"" #: ../src/mn-sylpheed-mailbox-backend.gob:440 msgid "file version missing" msgstr "chybí verze souboru" #: ../src/mn-sylpheed-mailbox-backend.gob:498 #, c-format msgid "Unable to read %s: %s." msgstr "Nemohu číst %s: %s." #: ../src/mn-system-vfs-mailbox-properties.gob:41 #: ../src/mn-system-vfs-mailbox-properties.gob:49 #: ../src/mn-system-vfs-mailbox.gob:46 msgid "System mailbox" msgstr "Systémová schránka" #: ../src/mn-system-vfs-mailbox-properties.gob:76 #, c-format msgid "Your system mailbox is %s." msgstr "Vaše systémová schránka je %s." #: ../src/mn-system-vfs-mailbox-properties.gob:83 msgid "" "The location of your system mailbox could not be detected. Check the MAIL " "environment variable." msgstr "" "Umístění systémovés chránky nemohlo být určeno. Zkontrolujte proměnnou " "prostředí MAIL." #: ../src/mn-system-vfs-mailbox.gob:73 msgid "system mailbox not found" msgstr "systémová schránka nebyla nalezena" #: ../src/mn-test-mailbox.gob:40 msgid "Test mailbox" msgstr "Ukázková schránka" #: ../src/mn-test-mailbox.gob:59 #, c-format msgid "Test message #%i" msgstr "Ukázková zpráva #%i" #. translators: header capitalization #: ../src/mn-test-mailbox.gob:65 msgid "Mail Notification Properties Dialog" msgstr "Dialog nastavení Upozornění na poštu" #: ../src/mn-util.c:351 #, c-format msgid "error loading image: %s" msgstr "nemohu načíst obrázek: %s" #: ../src/mn-util.c:367 #, c-format msgid "" "Unable to load interface \"%s\". Please check your Mail Notification " "installation." msgstr "" "Nelze načíst rozhraní \"%s\". Prosím zkontrolujte instalaci Upozornění na " "poštu." #: ../src/mn-util.c:382 #, c-format msgid "" "Widget \"%s\" not found in interface \"%s\". Please check your Mail " "Notification installation." msgstr "" "Widget \"%s\" nebyl nalezen v rozhraní \"%s\". Prosím zkontrolujte instalaci " "Upozornění na poštu." #: ../src/mn-util.c:451 #, c-format msgid "Unable to open self as a module (%s)." msgstr "Nemohu otevřít sebe jako modul (%s)." #: ../src/mn-util.c:456 #, c-format msgid "" "Signal handler \"%s\" not found. Please check your Mail Notification " "installation." msgstr "" "Singal handler \"%s\" nebyl nalezen. Prosím zkontrolujte instalaci " "Upozornění na poštu." #: ../src/mn-util.c:607 ../src/mn-util.c:630 ../src/mn-util.c:650 #: ../src/mn-util.c:672 msgid "A drag and drop error has occurred" msgstr "Nastala chyba přetažení" #: ../src/mn-util.c:608 msgid "An invalid location list has been received." msgstr "Obdržen neplatný seznam umístění." #: ../src/mn-util.c:651 msgid "An invalid Mozilla location has been received." msgstr "Obdrženo neplatné umístění programu Mozilla." #: ../src/mn-util.c:727 msgid "Unable to display help" msgstr "Nemohu zobrazit nápovědu" #: ../src/mn-util.c:739 msgid "Unable to open link" msgstr "Nemohu otevřít odkaz" #: ../src/mn-util.c:753 #, c-format msgid "Unable to create a thread: %s." msgstr "Nemohu vytvořit vlákno: %s." #: ../src/mn-util.c:930 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" msgid_plural "" "The following locations are invalid:\n" "\n" "%s" msgstr[0] "" "Následující umístění je neplatné:\n" "\n" "%s" msgstr[1] "" "Následující umístění jsou neplatná:\n" "\n" "%s" msgstr[2] "" "Následující umístění jsou neplatná:\n" "\n" "%s" #: ../src/mn-util.c:946 msgid "A fatal error has occurred in Mail Notification" msgstr "Nastala fatální chyba" #: ../src/mn-util.c:990 #, c-format msgid "unable to get current time: %s" msgstr "nemohu získat aktuální čas: %s" #: ../src/mn-util.c:1359 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "před %i sekundou" msgstr[1] "před %i sekundami" msgstr[2] "před %i sekundami" #: ../src/mn-util.c:1363 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "před %i minutou" msgstr[1] "před %i minutami" msgstr[2] "před %i minutami" #: ../src/mn-util.c:1368 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "před %i hodinou" msgstr[1] "před %i hodinami" msgstr[2] "před %i hodinami" #: ../src/mn-util.c:1373 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "před %i dnem" msgstr[1] "před %i dny" msgstr[2] "před %i dny" #: ../src/mn-util.c:1378 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "před %i týdnem" msgstr[1] "před %i týdny" msgstr[2] "před %i týdny" #: ../src/mn-util.c:1391 msgid "unknown date" msgstr "neznámé datum" #: ../src/mn-util.c:1426 msgid "A command error has occurred in Mail Notification" msgstr "Nastala chyba při spouštění příkazu" #: ../src/mn-vfs-mailbox.gob:249 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "nemohu sledovat %s (%s), poll režim aktivován" #: ../src/mn-vfs-mailbox.gob:421 msgid "unknown mailbox format" msgstr "neznámý formát schránky" #: ../src/mn-vfs-mailbox.gob:421 msgid "does not exist" msgstr "neexistuje" #: ../src/mn-vfs.c:248 #, c-format msgid "Unable to write %s: %s." msgstr "Nemohu zapsat %s: %s." #: ../src/mn-xml.c:54 #, c-format msgid "" "property \"%s\": unable to transform string \"%s\" into a value of type \"%s" "\"" msgstr "vlastnost \"%s\": nemohu převést řetězec \"%s\" do hodnoty typu \"%s\"" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:8 msgid "General" msgstr "Všeobecné" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:2 #: ../ui/properties-dialog.glade.h:17 msgid "General" msgstr "Všeobecné" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox _name:" msgstr "_Jméno schránky:" #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "Mailbox _type:" msgstr "_Typ schránky:" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:6 msgid "Us_e Default" msgstr "_Použít výchozí" #: ../ui/mailbox-properties-dialog.glade.h:7 msgid "_Delay between mail checks:" msgstr "_Interval mezi kontrolami pošty:" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:9 msgid "_Use Default" msgstr "_Použít výchozí" #: ../ui/mailbox-properties-dialog.glade.h:10 #: ../ui/properties-dialog.glade.h:41 msgid "minutes" msgstr "minut" #: ../ui/mailbox-properties-dialog.glade.h:11 #: ../ui/properties-dialog.glade.h:42 msgid "seconds" msgstr "sekund" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:2 msgid "Click Action" msgstr "Kliknutí" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:4 msgid "Commands" msgstr "Příkazy" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:6 msgid "Expiration" msgstr "Zavření" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:10 msgid "Mailbox List" msgstr "Seznam schránek" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:12 msgid "Position" msgstr "Umístění" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:14 msgid "Tooltip Mail Summary" msgstr "Souhrn pošty v tooltipu" #: ../ui/properties-dialog.glade.h:15 msgid "A_fter:" msgstr "_Po:" #: ../ui/properties-dialog.glade.h:18 msgid "In the p_opup stack" msgstr "V rámci plovoucích oken" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:22 msgid "Message Popups" msgstr "Plovoucí okna zpráv" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:24 msgid "Status Icon" msgstr "Stavová ikona" #: ../ui/properties-dialog.glade.h:25 msgid "When _new mail arrives:" msgstr "Když _dorazí nová pošta:" #: ../ui/properties-dialog.glade.h:26 msgid "When all mail has _been read:" msgstr "Když veškerá pošta _byla přečtena:" #: ../ui/properties-dialog.glade.h:27 msgid "_Always display" msgstr "_Vždy zobrazit" #: ../ui/properties-dialog.glade.h:28 msgid "_Attached to the status icon" msgstr "Připojeno ke stavové ikoně" #: ../ui/properties-dialog.glade.h:29 msgid "_Blink on errors" msgstr "_Blikat při chybě" #: ../ui/properties-dialog.glade.h:30 msgid "_Desktop default" msgstr "_Výchozí nastavení prostředí" #: ../ui/properties-dialog.glade.h:31 msgid "_Display seen mail" msgstr "Zobrazit přečtenou poštu" #: ../ui/properties-dialog.glade.h:32 msgid "_Display this dialog" msgstr "Zobrazit tento dialog" #: ../ui/properties-dialog.glade.h:33 msgid "_Enable message popups" msgstr "Zapnout plovoucí okna zpráv" #: ../ui/properties-dialog.glade.h:34 msgid "_Launch the mail reader" msgstr "Sp_ustit poštovní program" #: ../ui/properties-dialog.glade.h:36 msgid "_None" msgstr "Žádný" #: ../ui/properties-dialog.glade.h:37 msgid "_Open the latest message" msgstr "_Otevřít poslední zprávu" #: ../ui/properties-dialog.glade.h:38 msgid "_Update the mail status" msgstr "_Aktualizovat stav pošty" #: ../ui/properties-dialog.glade.h:39 msgid "icon tooltip's mail summary layout|Co_mpact" msgstr "_Kompaktní" #: ../ui/properties-dialog.glade.h:40 msgid "icon tooltip's mail summary layout|_Standard" msgstr "_Standardní" #~ msgid "server did not send all the messages we requested" #~ msgstr "server neposlal všechny zprávy, které jsme vyžádali" #~ msgid "server did not send search results" #~ msgstr "server neposlal výsledky hledání" #~ msgid "Automatically close the mail summary popup" #~ msgstr "Automaticky zavírat vyskakovací souhrn pošty" #~ msgid "Mail summary popup contents font" #~ msgstr "Písmo vyskakovacího souhrnu pošty" #~ msgid "Mail summary popup fonts aspect source" #~ msgstr "Zdroj vzhledu písma vyskakovacího souhrnu pošty" #~ msgid "Mail summary popup horizontal offset" #~ msgstr "Vodorovné odsazení vyskakovacího souhrnu pošty" #~ msgid "Mail summary popup title font" #~ msgstr "Písmo titulku vyskakovacího souhrnu pošty" #~ msgid "Mail summary popup vertical offset" #~ msgstr "Svislé odsazení vyskakovacího souhrnu pošty" #~ msgid "Only display recent mail in mail summary popup" #~ msgstr "Zobrazit pouze nedávnou poštu ve vyskakovacím souhrnu pošty" #~ msgid "" #~ "The amount of time to wait before closing the mail summary popup (minutes " #~ "part)." #~ msgstr "" #~ "Jak dlouho čekat před zavřením vyskakovacího souhrnu pošty (minutová " #~ "část)." #~ msgid "" #~ "The amount of time to wait before closing the mail summary popup (seconds " #~ "part)." #~ msgstr "" #~ "Jak dlouho čekat před zavřením vyskakovacího souhrnu pošty (sekundová " #~ "část)." #~ msgid "The custom font to use for the contents of the mail summary popup." #~ msgstr "Vlastní písmo pro obsah vyskakovacího souhrnu pošty." #~ msgid "The custom font to use for the title of the mail summary popup." #~ msgstr "Vlastní písmo pro titulek vyskakovacího souhrnu pošty." #~ msgid "" #~ "The number of pixels to leave between the left or right side of the " #~ "screen and the mail summary popup." #~ msgstr "" #~ "Počet pixelů vynechaných mezi levým nebo pravým okrajem obrazovky a " #~ "vyskakovacím souhrnem pošty." #~ msgid "" #~ "The number of pixels to leave between the top or bottom side of the " #~ "screen and the mail summary popup." #~ msgstr "" #~ "Počet pixelů vynechaných mezi horním nebo spodním okrajem obrazovky a " #~ "vyskakovacím souhrnem pošty." #~ msgid "" #~ "The position of the mail summary popup. Must be \"top-left\", \"top-right" #~ "\", \"bottom-left\" or \"bottom-right\"." #~ msgstr "" #~ "Umístění vyskakovacího souhrnu pošty. Musí být \"top-left\" (vlevo " #~ "nahoře), \"top-right\" (vpravo nahoře), \"bottom-left\" (vlevo dole), " #~ "\"bottom-right\" (vpravo dole)." #~ msgid "" #~ "Whether to display the mail summary popup when new mail arrives or not." #~ msgstr "" #~ "Jestli zobrazit vyskakovací souhrn pošty když dorazí nová pošta nebo ne." #~ msgid "" #~ "Whether to hide previously displayed mail in the mail summary popup or " #~ "not." #~ msgstr "" #~ "Jestli skrýt dříve zobrazenou poštu ve vyskakovacím souhrnu pošty nebo ne." #~ msgid "autodetect" #~ msgstr "autodetekovat" #~ msgid "Use the IDLE extension:" #~ msgstr "Použít rozšíření IDLE:" #~ msgid "Mail Summary" #~ msgstr "Souhrn pošty" #~ msgid "Mail Summary" #~ msgstr "Souhrn pošty" #~ msgid "Close the mail summary popup" #~ msgstr "Zavřít vyskakovací souhrn pošty" #~ msgid "none" #~ msgstr "žádná" #~ msgid "Ho_stname:" #~ msgstr "_Jméno počítače:" #~ msgid "_Details" #~ msgstr "_Detaily" #~ msgid "Authent_ication mechanism:" #~ msgstr "_Přihlašovací mechanismus:" #~ msgid "top left" #~ msgstr "vlevo nahoře" #~ msgid "top right" #~ msgstr "vpravo nahoře" #~ msgid "bottom left" #~ msgstr "vlevo dole" #~ msgid "bottom right" #~ msgstr "vpravo dole" #~ msgid "Fonts" #~ msgstr "Písma" #~ msgid "Layout" #~ msgstr "Rozložení" #~ msgid "Co_ntents:" #~ msgstr "_Obsah:" #~ msgid "Hide p_reviously displayed mail" #~ msgstr "Skrýt _dříve zobrazenou poštu" #~ msgid "Hori_zontal offset:" #~ msgstr "_Horizontální odsazení:" #~ msgid "Mail Summary Popup" #~ msgstr "Vyskakovací souhrn pošty" #~ msgid "Use these _fonts:" #~ msgstr "Použít _tato písma:" #~ msgid "_Automatically close after:" #~ msgstr "_Automaticky zavřít po:" #~ msgid "_Display a Test Popup" #~ msgstr "Zo_brazit ukázku" #~ msgid "_Position:" #~ msgstr "_Umístění:" #~ msgid "_Title:" #~ msgstr "_Titulek:" #~ msgid "_Use fonts from theme" #~ msgstr "P_oužít písma z tématu" #~ msgid "_Vertical offset:" #~ msgstr "_Vertikální odsazení:" #~ msgid "pixels" #~ msgstr "pixelů" #~ msgid "popup's mail summary layout|Co_mpact" #~ msgstr "rozložení vyskakovacího souhrnu pošty|_Kompaktní" #~ msgid "popup's mail summary layout|_Standard" #~ msgstr "rozložení vyskakovacího souhrnu pošty|_Standardní" #~ msgid "Delay between mail checks (minutes part)." #~ msgstr "Interval mezi kontrolami pošty (minuty)." #~ msgid "Delay between mail checks (seconds part)." #~ msgstr "Interval mezi kontrolami pošty (sekundy)." #~ msgid "Display mail summary in tooltip" #~ msgstr "Zobrazit souhrn pošty v tooltipu" #~ msgid "Do not show the immediate notification error dialog" #~ msgstr "Nezobrazovat okamžitě chybový dialog" #~ msgid "Height of edit toolbars dialog" #~ msgstr "Výška dialogu pro úpravu lišty nástrojů" #~ msgid "Height of main window" #~ msgstr "Výška hlavního okna" #~ msgid "Minutes between mail checks" #~ msgstr "Minuty mezi kontrolami pošty" #~ msgid "Seconds between mail checks" #~ msgstr "Sekundy mezi kontrolami pošty" #~ msgid "Set a mail reader" #~ msgstr "Nastavit poštovní program" #~ msgid "The command to run to launch the mail reader." #~ msgstr "Příkaz pro spuštění poštovního programu." #~ msgid "The height of the edit toolbars dialog in pixels." #~ msgstr "Výška dialogu pro úpravu lišty nástrojů v pixelech." #~ msgid "The height of the main window in pixels." #~ msgstr "Výška hlavního okna v pixelech." #~ msgid "" #~ "The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text" #~ "\", \"both\" or \"both-horiz\"." #~ msgstr "" #~ "Vzhled lišty nástrojů. Musí být \"desktop-default\", \"icons\", \"text\", " #~ "\"both\" nebo \"both=horiz\"." #~ msgid "The width of the edit toolbars dialog in pixels." #~ msgstr "Šířka dialogu pro úpravu lišty nástrojů v pixelech." #~ msgid "The width of the main window in pixels." #~ msgstr "Šířka hlavního okna v pixelech." #~ msgid "Toolbars style" #~ msgstr "Vzhled lišty nástrojů" #~ msgid "View statusbar" #~ msgstr "Zobrazit statovou lištu" #~ msgid "View toolbars" #~ msgstr "Zobrazit lišty nástrojů" #~ msgid "Whether the statusbar should be visible or not." #~ msgstr "Jestli má být statová lišta viditelná nebo ne." #~ msgid "Whether the toolbars should be visible or not." #~ msgstr "Jestli mají být lišty nástrojů viditelné nebo ne." #~ msgid "" #~ "Whether to display the mail summary in the status icon tooltip or not." #~ msgstr "Jestli zobrazit souhrn pošty v tooltipu statové ikony nebo ne." #~ msgid "" #~ "Whether to prevent the immediate notification error dialog from being " #~ "displayed or not." #~ msgstr "Jestli zabránit chybovému dialogu v zobrazování nebo ne." #~ msgid "Width of edit toolbars dialog" #~ msgstr "Šířka dialogu pro úpravu lišt nástrojů" #~ msgid "Width of main window" #~ msgstr "Šířka hlavního okna" #~ msgid "New Mail" #~ msgstr "Nová pošta" #~ msgid "_Remove Toolbar" #~ msgstr "_Odstranit lištu nástrojů" #~ msgid "Separator" #~ msgstr "Oddělovač" #~ msgid "Main _Window" #~ msgstr "_Hlavní okno" #~ msgid "Help messages" #~ msgstr "Zprávy s nápovědou" #~ msgid "Count messages" #~ msgstr "Zprávy o počtu" #~ msgid "_Mail" #~ msgstr "_Pošta" #~ msgid "_Edit" #~ msgstr "_Upravit" #~ msgid "_View" #~ msgstr "_Zobrazit" #~ msgid "_Help" #~ msgstr "_Nápověda" #~ msgid "Launch the mail reader" #~ msgstr "Spustit poštovní program" #~ msgid "_Close" #~ msgstr "_Zavřít" #~ msgid "Close this window" #~ msgstr "Zavřít toto okno" #~ msgid "_Quit" #~ msgstr "_Ukončit" #~ msgid "_Toolbars" #~ msgstr "_Lišty nástrojů" #~ msgid "Customize the toolbars" #~ msgstr "Upravit lišty nástrojů" #~ msgid "_Preferences" #~ msgstr "_Nastavení" #~ msgid "Toolbars Styl_e" #~ msgstr "_Vzhled lišt nástrojů" #~ msgid "Customize the toolbars style" #~ msgstr "Upravit vzhled lišt nástrojů" #~ msgid "_Contents" #~ msgstr "_Obsah" #~ msgid "Display help" #~ msgstr "Zobrazit nápovědu" #~ msgid "Display credits" #~ msgstr "Kredity" #~ msgid "Show or hide the toolbars" #~ msgstr "Zobrazit nebo skrýt lišty nástrojů" #~ msgid "_Statusbar" #~ msgstr "_Statová lišta" #~ msgid "Show or hide the statusbar" #~ msgstr "Zobrazit nebo skrýt statovou lištu" #~ msgid "Set the toolbars style to the desktop default setting" #~ msgstr "" #~ "Nastaví vzhled lišt nástrojů do výchozího nastavení prostřední GNOME" #~ msgid "I_cons Only" #~ msgstr "Pouze _ikony" #~ msgid "_Text Only" #~ msgstr "Pouze _text" #~ msgid "Only display the toolbars text" #~ msgstr "Zobrazit pouze textové popisy v lištách nástrojů" #~ msgid "Text Belo_w Icons" #~ msgstr "T_ext pod ikonami" #~ msgid "Display the toolbars text below the icons" #~ msgstr "Zobrazit lišty nástrojů s texty pod ikonami" #~ msgid "Text Be_side Icons" #~ msgstr "Text _vedle ikon" #~ msgid "Display the toolbars text beside the icons" #~ msgstr "Zobrazit lišty nástrojů s texty vedle ikon" #~ msgid "unable to load menus.xml: %s" #~ msgstr "nemohu načíst menus.xml: %s" #~ msgid "unable to load toolbars.xml" #~ msgstr "nemohu načíst toolbars.xml" #~ msgid "Compiled-in mailbox backends: " #~ msgstr "Podporované typy schránek v této kompilaci: " #~ msgid "List the compiled-in features" #~ msgstr "Vypsat funkce zahrnuté v této kompilaci" #~ msgid "Display the main window" #~ msgstr "Zobrazit hlavní okno" #~ msgid "You have new mail." #~ msgstr "Máte novou poštu." #~ msgid "Leave Fullscreen" #~ msgstr "Opustit celoobrazovkové zobrazení" #~ msgid "MAIL environment variable not defined" #~ msgstr "Proměnná prostředí MAIL není definována" #~ msgid "widget \"%s\" not found in interface \"%s\"" #~ msgstr "widget \"%s\" nebyl nalezen v rozhraní \"%s\"" #~ msgid "signal handler \"%s\" not found" #~ msgstr "signal handler \"%s\" nebyl nalezen" #~ msgid "_Do not show this message again" #~ msgstr "_Příště nezobrazit tuto zprávu" #~ msgid "invalid signal specification \"%s\"" #~ msgstr "neplatná specifikace signálu \"%s\"" #~ msgid "unable to monitor mailbox contents (%s), poll mode activated" #~ msgstr "nemohu sledovat obsah schránky (%s), poll režim aktivován" #~ msgid "" #~ "As a fallback, they will be checked every %i second (this delay is " #~ "configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked every %i seconds (this delay is " #~ "configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Kontrola proběhne každou %i sekundu (tento interval je nastavitelný v " #~ "dialogu Nastavení)." #~ msgstr[1] "" #~ "Kontrola proběhne každé %i sekundy (tento interval je nastavitelný v " #~ "dialogu Nastavení)." #~ msgstr[2] "" #~ "Kontrola proběhne každých %i sekund (tento interval je nastavitelný v " #~ "dialogu Nastavení)." #~ msgid "" #~ "As a fallback, they will be checked every %i minute (this delay is " #~ "configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked every %i minutes (this delay is " #~ "configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Kontrola proběhne každou %i minutu (tento interval je nastavitelný v " #~ "dialogu Nastavení)." #~ msgstr[1] "" #~ "Kontrola proběhne každé %i minuty (tento interval je nastavitelný v " #~ "dialogu Nastavení)." #~ msgstr[2] "" #~ "Kontrola proběhne každých %i minut (tento interval je nastavitelný v " #~ "dialogu Nastavení)." #~ msgid "" #~ "As a fallback, they will be checked approximately every %i minute (this " #~ "delay is configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked approximately every %i minutes (this " #~ "delay is configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Kontrola proběhne přibližně každou %i minutu (tento interval je " #~ "nastavitelný v dialogu Nastavení)." #~ msgstr[1] "" #~ "Kontrola proběhne přibližně každé %i minuty (tento interval je " #~ "nastavitelný v dialogu Nastavení)." #~ msgstr[2] "" #~ "Kontrola proběhne přibližně každých %i minut (tento interval je " #~ "nastavitelný v dialogu Nastavení)." #~ msgid "A monitoring error has occurred" #~ msgstr "Nastala chyba sledování" #~ msgid "" #~ "Mail Notification was unable to enable immediate notification for one or " #~ "more mailboxes. %s" #~ msgstr "" #~ "Nemohu zapnout okamžité upozorňování pro jednu nebo více schránek. %s" #~ msgid "Edit Toolbars" #~ msgstr "Upravit lišty nástrojů" #~ msgid "_Add a New Toolbar" #~ msgstr "_Přidat novou lištu nástrojů" #~ msgid "Dis_play mail summary in tooltip" #~ msgstr "Z_obrazovat souhrn pošty v tooltipu" #~ msgid "Mailboxes" #~ msgstr "Schránky" #~ msgid "_Display the main window" #~ msgstr "Zobrazit _hlavní okno" #~ msgid "_Mail reader:" #~ msgstr "_Poštovní program:" #~ msgid "_Start Mail Notification on GNOME login" #~ msgstr "_Spustit Upozornění na poštu při spuštění GNOME" mail-notification-5.4.dfsg.1/po/pt_BR.po0000644000175000001440000014600010737450750017650 0ustar evilynuxusers# Brazilian Portuguese translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Claudio André , 2006. # msgid "" msgstr "" "Project-Id-Version: mail-notification 4.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-11-28 13:34-0200\n" "PO-Revision-Date: 2007-01-17 16:02+0100\n" "Last-Translator: Claudio André \n" "Language-Team: Claudio André \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n>1;" #: ../data/GNOME_MailNotification.server.in.in.h:1 msgid "Mail Notification automation" msgstr "Automação de Notificação de Correio" #: ../data/GNOME_MailNotification.server.in.in.h:2 msgid "Mail Notification automation factory" msgstr "Fábrica da Automação de Notificação de Correio" #: ../data/GNOME_MailNotification_Evolution.server.in.h:1 msgid "Evolution folder tree control" msgstr "Controle Evolution \"hierarquia de pastas\"" #: ../data/GNOME_MailNotification_Evolution.server.in.h:2 msgid "Evolution folder tree control factory" msgstr "Fábrica de controle Evolution \"hierarquia de pastas\"" #: ../data/GNOME_MailNotification_Evolution.server.in.h:3 msgid "Mail Notification / Evolution glue" msgstr "Ligação Notificação de Correio / Evolution" #: ../data/GNOME_MailNotification_Evolution.server.in.h:4 msgid "Mail Notification / Evolution glue factory" msgstr "Fábrica de ligação Notificação de Correio / Evolution" #: ../data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "Configurar Notificação de Correio" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:234 #: ../src/mn-main.c:142 ../src/mn-main.c:348 ../src/mn-main.c:364 #: ../src/mn-main.c:440 msgid "Mail Notification" msgstr "Notificação de Correio" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Notificar quando novas mensagens chegarem" #: ../data/mail-notification.schemas.in.in.h:1 msgid "Always display an icon" msgstr "Sempre mostrar um ícone" #: ../data/mail-notification.schemas.in.in.h:2 msgid "Blink on errors" msgstr "Se ocorrerem erros, piscar ícone de status" #: ../data/mail-notification.schemas.in.in.h:3 msgid "Click action" msgstr "Ação no clique" #: ../data/mail-notification.schemas.in.in.h:4 msgid "Display seen mail" msgstr "Mostrar mensagens lidas" #: ../data/mail-notification.schemas.in.in.h:5 msgid "Enable message popups" msgstr "Ativar janela de notificação" #: ../data/mail-notification.schemas.in.in.h:6 msgid "Expire message popups" msgstr "Janela de mensagem de expiração" #: ../data/mail-notification.schemas.in.in.h:7 msgid "Fingerprints of trusted X509 certificates" msgstr "Assinaturas de certificados x509 de confiança" #: ../data/mail-notification.schemas.in.in.h:8 msgid "Height of properties dialog" msgstr "Altura do diálogo de propriedades" #: ../data/mail-notification.schemas.in.in.h:9 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "amount of time to wait before expiring message popups (minutes part)." msgstr "Se /apps/mail-notification/popups/expiration/enabled estiver·ajustado·para·\"true\", a·quantidade·de·tempo·que·deve·esperar·antes·de·expirar·a·janela·de·notificação·de·mensagens·(minutos)." #: ../data/mail-notification.schemas.in.in.h:10 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "amount of time to wait before expiring message popups (seconds part)." msgstr "Se·/apps/mail-notification/popups/expiration/enabled·estiver ajustado para \"true\",·a quantidade de tempo que deve esperar antes de expirar a janela de notificação de mensagens (segundos)." #: ../data/mail-notification.schemas.in.in.h:11 msgid "Mail changed command" msgstr "Comando de email alterado" #: ../data/mail-notification.schemas.in.in.h:12 msgid "Mail read command" msgstr "Comando de leitura do correio" #: ../data/mail-notification.schemas.in.in.h:13 msgid "Message popups position" msgstr "Posição da janela de notificação" #: ../data/mail-notification.schemas.in.in.h:14 msgid "Minutes to wait before expiring message popups" msgstr "Minutos a aguardar antes de expirar a janela de resumo do correio" #: ../data/mail-notification.schemas.in.in.h:15 msgid "New mail command" msgstr "Comando de nova mensagem" #: ../data/mail-notification.schemas.in.in.h:16 msgid "Run a command when all mail is read" msgstr "Executar um comando quando todas mensagens forem lidas" #: ../data/mail-notification.schemas.in.in.h:17 msgid "Run a command when new mail arrives" msgstr "Executar um comando quando nova mensagem chega" #: ../data/mail-notification.schemas.in.in.h:18 msgid "Run a command when the message list changes" msgstr "Executar um comando quando a lista de mensagens se altera" #: ../data/mail-notification.schemas.in.in.h:19 msgid "Seconds to wait before expiring message popups" msgstr "Segundos·a·aguardar·antes·de·expirar·a·janela·de·resumo·do·correio" #: ../data/mail-notification.schemas.in.in.h:20 msgid "" "The action to perform when the icon is clicked. Must be \"display-properties-" "dialog\", \"launch-mail-reader\", \"open-latest-message\" or \"update-mail-" "status\"." msgstr "" "A ação a executar quando o ícone recebe clique deve ser: \"display-properties-" "dialog\",·\"launch-mail-reader\",·\"open-latest-message\"·ou·\"update-mail-" "status\"" #: ../data/mail-notification.schemas.in.in.h:21 msgid "The command to run when all mail is read." msgstr "O comando a executar quando todas mensagens forem lidas." #: ../data/mail-notification.schemas.in.in.h:22 msgid "The command to run when new mail arrives." msgstr "O comando a executar quando novas mensagens chegam." #: ../data/mail-notification.schemas.in.in.h:23 msgid "The command to run when the message list changes." msgstr "O comando a executar quando a lista de mensagens se altera." #: ../data/mail-notification.schemas.in.in.h:24 msgid "The height of the properties dialog in pixels." msgstr "Altura do diálogo de propriedades em pixels." #: ../data/mail-notification.schemas.in.in.h:25 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" "Lista de servidores SSL/TLS de confiança (hostname:port) que não possuem um " "certificado X509." #: ../data/mail-notification.schemas.in.in.h:26 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "" "Lista de certificados X509 de confiança, representados por suas assinaturas " "MD5." #: ../data/mail-notification.schemas.in.in.h:27 msgid "The position of the message popups. Must be \"attached\" or \"free\"." msgstr "A posição da janela de resumo de correio deve ser \"attached\" ou \"free\"." #: ../data/mail-notification.schemas.in.in.h:28 msgid "" "The type of mail summary to display in the icon's tooltip. Must be \"standard" "\", \"compact\" or \"none\"." msgstr "O tipo de resumo de correios a apresentar numa dica deve ser \"stantard\", \"compact\" ou \"none\"." #: ../data/mail-notification.schemas.in.in.h:29 msgid "The width of the properties dialog in pixels." msgstr "A largura do diálogo de propriedades em pixels." #: ../data/mail-notification.schemas.in.in.h:30 msgid "Tooltip mail summary" msgstr "Janela de resumo de correio" #: ../data/mail-notification.schemas.in.in.h:31 msgid "Trusted servers list" msgstr "Lista dos servidores de confiança" #: ../data/mail-notification.schemas.in.in.h:32 msgid "Whether the status icon should blink on errors or not." msgstr "Se o ícone de status deve piscar ou não em caso de erro." #: ../data/mail-notification.schemas.in.in.h:33 msgid "Whether to display an icon when there is no new mail or not." msgstr "Se mostra ou não um ícone quando não existem novas mensagens." #: ../data/mail-notification.schemas.in.in.h:34 msgid "Whether to display seen mail or not." msgstr "Se deve mostrar ou não email já lido." #: ../data/mail-notification.schemas.in.in.h:35 msgid "Whether to enable message popups or not." msgstr "Se deve habilitar ou não a janela de resumo de correio." #: ../data/mail-notification.schemas.in.in.h:36 msgid "" "Whether to expire message popups or not. Must be \"default\", \"false\" or " "\"true\"." msgstr "Se a janela de notificação de mensagens deve expirar ou não. Deve ser \"default\", \"false\" ou \"true\"." #: ../data/mail-notification.schemas.in.in.h:37 msgid "Whether to run a command when all mail is read or not." msgstr "Se executa ou não um comando quando todas as mensagens forem lidas." #: ../data/mail-notification.schemas.in.in.h:38 msgid "Whether to run a command when new mail arrives or not." msgstr "Se executa ou não um comando quando novas mensagens chegam." #: ../data/mail-notification.schemas.in.in.h:39 msgid "Whether to run a command when the message list changes or not." msgstr "Se executa ou não um comando quando a lista de mensagens se altera." #: ../data/mail-notification.schemas.in.in.h:40 msgid "Width of properties dialog" msgstr "Largura do diálogo de propriedades" #: ../src/eggtrayicon.c:132 msgid "Orientation" msgstr "Orientação" #: ../src/eggtrayicon.c:133 msgid "The orientation of the tray." msgstr "Orientação da barra." #. translators: header capitalization #: ../src/mn-about-dialog.gob:50 msgid "A Mail Notification Icon" msgstr "Ícone da Notificação de Correio" #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:58 msgid "translator-credits" msgstr "Claudio André " #: ../src/mn-auth-combo-box.gob:104 #: ../src/mn-autodetect-mailbox-properties.gob:110 msgid "Autodetect" msgstr "Autodetectar" #. translators: header capitalization #: ../src/mn-authenticated-mailbox-properties.gob:50 msgid "Account" msgstr "Conta" #: ../src/mn-authenticated-mailbox-properties.gob:53 msgid "_Username:" msgstr "No_me do usuário:" #: ../src/mn-authenticated-mailbox-properties.gob:57 msgid "_Password:" msgstr "_Senha:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:124 #: ../src/mn-system-vfs-mailbox-properties.gob:60 msgid "Location" msgstr "Endereço" #: ../src/mn-autodetect-mailbox-properties.gob:126 msgid "_Location:" msgstr "_Localização:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:134 msgid "_Browse..." msgstr "_Navegar..." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:176 msgid "Select a File or Folder" msgstr "Selecione um arquivo ou pasta" #: ../src/mn-base-mbox-mailbox-backend.gob:345 #, c-format msgid "unable to close file: %s" msgstr "impossível fechar o arquivo: %s" #: ../src/mn-base-mbox-mailbox-backend.gob:359 #, c-format msgid "unable to open mailbox: %s" msgstr "impossível abrir caixa de correio: %s" #: ../src/mn-client-session.c:248 #, c-format msgid "resolving %s" msgstr "resolvendo %s" #: ../src/mn-client-session.c:264 #, c-format msgid "unable to resolve %s: %s" msgstr "impossível resolver %s: %s" #: ../src/mn-client-session.c:305 #, c-format msgid "network address #%i" msgstr "endereço de rede·#%i" #: ../src/mn-client-session.c:308 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "impossível converter o endereço de rede #%i para a forma textual: %s" #: ../src/mn-client-session.c:319 #, c-format msgid "%s: unsupported address family" msgstr "%s: família de endereços não suportada" #: ../src/mn-client-session.c:326 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: impossível criar socket: %s" #: ../src/mn-client-session.c:330 #, c-format msgid "connecting to %s (%s) port %i" msgstr "conectando a %s (%s) porta %i" #: ../src/mn-client-session.c:333 #, c-format msgid "unable to connect: %s" msgstr "impossível se conectar: %s" #: ../src/mn-client-session.c:338 msgid "connected successfully" msgstr "conectado com sucesso" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:352 #, c-format msgid "unable to connect to %s" msgstr "impossível se conectar a %s" #: ../src/mn-client-session.c:379 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "impossível inicializar a biblioteca OpenSSL: %s" #: ../src/mn-client-session.c:387 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "impossível criar um objeto SSL/TLS: %s" #: ../src/mn-client-session.c:393 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "impossível especificar um descritor de arquivo SSL/TLS: %s" #: ../src/mn-client-session.c:399 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "impossível concluir negociação de conexão SSL/TLS: %s" #: ../src/mn-client-session.c:405 msgid "untrusted server" msgstr "servidor não confiável" #: ../src/mn-client-session.c:409 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "uma camada SSL/TLS está ativa agora (%s, %s %i-bit)" #: ../src/mn-client-session.c:456 #, c-format msgid "%s, fingerprint: %s" msgstr "%s, assinatura digital: %s" #: ../src/mn-client-session.c:485 msgid "missing certificate" msgstr "certificado não encontrado" #: ../src/mn-client-session.c:511 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "Notificação de Correio não foi capaz de determinar a autenticidade de \"%s" "\" (%s). É possível que alguém esteja monitorando sua comunicação para obter " "seus dados confidenciais.\n" "\n" "Você deve apenas conectar-se ao servidor se tiver certeza que está conectado " "a \"%s\". Se você escolher se conectar ao servidor, esta mensagem não será " "mostrada novamente." #: ../src/mn-client-session.c:526 msgid "Connect to untrusted server?" msgstr "Conectar a um servidor não confiável ?" #: ../src/mn-client-session.c:591 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "resposta \"%s\" não é válida no atual contexto" #: ../src/mn-client-session.c:620 #, c-format msgid "unable to parse response \"%s\"" msgstr "impossível interpretar a resposta \"%s\"" #: ../src/mn-client-session.c:670 ../src/mn-client-session.c:677 #, c-format msgid "unable to read from server: %s" msgstr "impossível ler do servidor: %s" #: ../src/mn-client-session.c:675 msgid "unable to read from server: EOF" msgstr "impossível ler do servidor: EOF" #: ../src/mn-client-session.c:687 #, c-format msgid "unable to decode data using SASL: %s" msgstr "impossível decodificar os dados usando SASL: %s" #: ../src/mn-client-session.c:832 #, c-format msgid "unable to encode data using SASL: %s" msgstr "impossível codificar os dados usando SASL: %s" #: ../src/mn-client-session.c:863 ../src/mn-client-session.c:870 #, c-format msgid "unable to write to server: %s" msgstr "impossível gravar dados no servidor: %s" #: ../src/mn-client-session.c:868 msgid "unable to write to server: EOF" msgstr "impossível gravar dados no servidor: EOF" #: ../src/mn-client-session.c:899 ../src/mn-pop3-mailbox.gob:434 #, c-format msgid "unable to encode Base64: %s" msgstr "impossível codificar em Base64: %s" #: ../src/mn-client-session.c:1076 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "impossível inicializar a biblioteca SASL: %s" #: ../src/mn-client-session.c:1088 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "impossível obter endereço local de um socket: %s" #: ../src/mn-client-session.c:1094 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "impossível obter endereço remoto de um socket: %s" #: ../src/mn-client-session.c:1128 #, c-format msgid "unable to set SASL security properties: %s" msgstr "impossível especificar as propriedades de segurança SASL: %s" #: ../src/mn-client-session.c:1152 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "impossível iniciar autenticação SASL: SASL solicitou algo desconhecido" #: ../src/mn-client-session.c:1171 #, c-format msgid "unable to start SASL authentication: %s" msgstr "impossível iniciar autenticação SASL: %s" #: ../src/mn-client-session.c:1175 #, c-format msgid "unable to create a SASL connection: %s" msgstr "impossível criar uma conexão SASL: %s" #: ../src/mn-client-session.c:1222 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "SASL solicitou algo desconhecido, abortando autenticação SASL" #: ../src/mn-client-session.c:1239 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, abortando autenticação SASL" #. compliance error #: ../src/mn-client-session.c:1244 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "impossível decodificar entrada Base64 do servidor: %s" #: ../src/mn-client-session.c:1280 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "uma camada SASL com fator de força %i está ativa agora" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1285 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "impossível obter a propriedade SASL_MAXOUTBUF: %s" #: ../src/mn-client-session.c:1291 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "aviso: impossível obter a propriedade SASL_SSF: %s" #: ../src/mn-client-session.c:1450 msgid "unknown server error" msgstr "erro de servidor desconhecido" #: ../src/mn-compact-message-view.gob:46 msgid "Mailbox" msgstr "Conta de Correio" #: ../src/mn-compact-message-view.gob:47 msgid "From" msgstr "De" #: ../src/mn-compact-message-view.gob:48 msgid "Subject" msgstr "Assunto" #: ../src/mn-compact-message-view.gob:49 msgid "Sent" msgstr "Enviado" #: ../src/mn-conf.c:281 msgid "A directory creation error has occurred" msgstr "Um erro de criação de diretório ocorreu" #: ../src/mn-conf.c:282 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "Impossível criar o diretório \"%s\": %s." #: ../src/mn-conf.c:406 #, c-format msgid "recursively unsetting %s" msgstr "suprimindo recursivamente %s" #: ../src/mn-conf.c:410 msgid "syncing the GConf database" msgstr "sincronizando banco de dados do GConf" #: ../src/mn-conf.c:413 msgid "completed" msgstr "concluído" #: ../src/mn-custom-vfs-mailbox.gob:77 msgid "invalid location" msgstr "localização inválida" #: mn-evolution-folder-tree-control.gob:69 msgid "The currently selected URI" msgstr "A URI atualmente selecionada" #. translators: header capitalization #: ../src/mn-evolution-mailbox-properties.gob:79 msgid "Folder" msgstr "Pasta" #: ../src/mn-evolution-mailbox-properties.gob:204 msgid "" "Mail Notification can not contact Evolution. Make sure that Evolution is " "running and that the Evolution Mail Notification plugin is loaded." msgstr "" "Notificação de Correio não pode contactar Evolution. Certifique-se que " "Evolution está executando e que o plugin Notifficação de Correio Evolution " "está carregado." #: ../src/mn-evolution-mailbox.gob:78 msgid "folder not found" msgstr "pasta não encontrada" #: ../src/mn-evolution-mailbox.gob:79 msgid "message not found" msgstr "mensagem não encontrada" #: ../src/mn-evolution-mailbox.gob:220 msgid "unable to contact Evolution" msgstr "impossível contactar Evolution" #: ../src/mn-evolution-plugin.c:102 ../src/mn-evolution-plugin.c:106 msgid "Unable to activate the Mail Notification plugin" msgstr "Impossível ativar o plugin Notificação de Correio" #: ../src/mn-evolution-plugin.c:102 #, c-format msgid "" "Bonobo could not locate the %s server. Please check your Mail Notification " "installation." msgstr "" "Bonobo não pôde localizar o servidor %s. Por favor, verifique sua instalação " "de Notificação de Correio." #: ../src/mn-evolution-plugin.c:106 ../src/mn-main.c:518 #, c-format msgid "" "Bonobo was unable to register the %s server. Please check your Mail " "Notification installation." msgstr "" "Bonobo·não·pôde·registrar o·servidor·%s.·Por·favor," "·verifique·sua·instalação·de·Notificação·de·Correio." #: ../src/mn-gmail-mailbox.gob:104 msgid "invalid feed location" msgstr "localização de alimentação inválida" #: ../src/mn-gmail-mailbox.gob:118 #, c-format msgid "retrieving feed from %s" msgstr "recebendo alimentação de %s" #: ../src/mn-gmail-mailbox.gob:125 #, c-format msgid "unable to retrieve feed: %s" msgstr "impossível obter a alimentação: %s" #: ../src/mn-gmail-mailbox.gob:140 ../src/mn-gmail-mailbox.gob:191 msgid "unable to parse feed" msgstr "impossível interpretar a alimentação" #: ../src/mn-gmime-stream-vfs.gob:51 #: ../src/mn-sylpheed-mailbox-backend.gob:209 #, c-format msgid "unable to read %s: %s" msgstr "impossível ler %s: %s" #: ../src/mn-gmime-stream-vfs.gob:53 #, c-format msgid "unable to write to %s: %s" msgstr "impossível escrever para %s: %s" #: ../src/mn-gmime-stream-vfs.gob:55 #, c-format msgid "unable to seek in %s: %s" msgstr "impossível pesquisar em %s: %s" #: ../src/mn-gmime-stream-vfs.gob:57 #, c-format msgid "unable to tell position of %s: %s" msgstr "impossível determinar a posição de %s: %s" #: ../src/mn-gmime-stream-vfs.gob:59 ../src/mn-mh-mailbox-backend.gob:167 #, c-format msgid "unable to close %s: %s" msgstr "impossível fechar %s: %s" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:118 msgid "IMAP Mailbox" msgstr "Caixa de Correio IMAP" #: ../src/mn-imap-mailbox-properties.gob:120 msgid "In_box" msgstr "_Caixa de entrada" #: ../src/mn-imap-mailbox-properties.gob:125 msgid "_Other:" msgstr "_Outro:" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:138 msgid "Use the IDLE Extension" msgstr "Utilizar a Extensão IDLE" #: ../src/mn-imap-mailbox-properties.gob:142 #: ../ui/properties-dialog.glade.h:35 msgid "_Never" msgstr "_Nunca" #: ../src/mn-imap-mailbox-properties.gob:143 msgid "A_utodetect" msgstr "Au_todetectar" #: ../src/mn-imap-mailbox-properties.gob:144 msgid "Al_ways" msgstr "S_empre" #: ../src/mn-imap-mailbox.gob:385 msgid "server did not send capabilities" msgstr "servidor não enviou suas capacidades" #: ../src/mn-imap-mailbox.gob:552 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "servidor anunciou LOGINDISABLED, não usando a autenticação LOGIN" #: ../src/mn-imap-mailbox.gob:553 msgid "unable to login" msgstr "impossível iniciar uma sessão" #. compliance error #: ../src/mn-imap-mailbox.gob:753 msgid "server did not send all the messages we requested" msgstr "servidor não enviou todas as mensagens solicitadas" #: ../src/mn-imap-mailbox.gob:823 msgid "unable to fetch message" msgstr "impossível obter a mensagem" #: ../src/mn-imap-mailbox.gob:848 msgid "" "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, " "logging out" msgstr "" "Nas propriedades da conta, ajuste \"Usar a extensão IDLE\" para o valor " "\"nunca\". Fechando a sessão." #: ../src/mn-imap-mailbox.gob:859 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "o servidor remoto utiliza %s, não utilizando a extensão IDLE" #: ../src/mn-imap-mailbox.gob:864 #, c-format msgid "" "the remote server runs %s, the IDLE extension might not function properly" msgstr "" "o servidor remoto utiliza %s, a extensão IDLE pode não funcionar corretamente" #: ../src/mn-imap-mailbox.gob:873 msgid "the remote server does not support the IDLE extension, logging out" msgstr "o servidor remoto não suporta a extensão IDLE, fechando a sessão" #: ../src/mn-imap-mailbox.gob:1378 ../src/mn-pop3-mailbox.gob:297 msgid "server does not support in-band SSL/TLS" msgstr "servidor não suporta o modo SSL/TLS interno" #: ../src/mn-imap-mailbox.gob:1402 ../src/mn-pop3-mailbox.gob:954 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" "o mecanismo de autenticação SASL foi selecionado, mas o suporte a SASLnão " "foi compilado" #: ../src/mn-imap-mailbox.gob:1412 ../src/mn-pop3-mailbox.gob:974 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "mecanismo de autenticação desconhecido \"%s\"" #: ../src/mn-imap-mailbox.gob:1444 ../src/mn-pop3-mailbox.gob:1010 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "desativando mecanismo \"%s\" e retornando a autenticação SASL" #: ../src/mn-imap-mailbox.gob:1456 msgid "falling back to IMAP LOGIN authentication" msgstr "retornando para autenticação IMAP LOGIN" #: ../src/mn-imap-mailbox.gob:1468 ../src/mn-pop3-mailbox.gob:1039 msgid "authentication failed" msgstr "autenticação falhou" #. success; caller must switch state itself #. compliance error #: ../src/mn-imap-mailbox.gob:1529 msgid "server did not send search results" msgstr "servidor não enviou os resultados da busca" #. translators: header capitalization #: ../src/mn-mail-icon.gob:93 msgid "_Mail Reader" msgstr "_Leitor de Correio" #. translators: header capitalization #: ../src/mn-mail-icon.gob:95 msgid "_Open Latest Message" msgstr "_Abrir a Última Mensagem" #. translators: header capitalization #: ../src/mn-mail-icon.gob:97 ../src/mn-mailbox-view.gob:314 msgid "_Update" msgstr "_Atualizar" #. translators: header capitalization #: ../src/mn-mail-icon.gob:104 msgid "R_emove From Notification Area" msgstr "R_emover da área de notificação" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:95 #, c-format msgid "%s Properties" msgstr "Propriedades de %s" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:244 msgid "Add a Mailbox" msgstr "Adicionar uma Conta de Correio" #: ../src/mn-mailbox-view.gob:250 msgid "A paste error has occurred" msgstr "Ocorreu um erro ao colar" #: ../src/mn-mailbox-view.gob:566 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "não tratado %s conta de correio (%s)" #: ../src/mn-mailbox-view.gob:571 #, c-format msgid "%s mailbox" msgstr "Conta %s" #: ../src/mn-mailbox-view.gob:586 msgid "detecting mailbox type..." msgstr "detectando o tipo da conta de correio..." #: ../src/mn-mailbox.gob:504 msgid "\"type\" attribute missing" msgstr "atributo \"type\" inexistente" #: ../src/mn-mailbox.gob:511 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "tipo de conta de correio desconhecido \"%s\"" #: ../src/mn-mailbox.gob:907 #, c-format msgid "property \"%s\" has no value" msgstr "propriedade \"%s\" não possui um valor" #: ../src/mn-mailboxes.gob:241 msgid "An error has occurred while importing old mailboxes" msgstr "Ocorreu um erro ao importar as contas de correio antigas" #: ../src/mn-mailboxes.gob:267 msgid "Unable to load the mailboxes configuration" msgstr "Impossível carregar a configuração das contas de correio" #: ../src/mn-mailboxes.gob:313 msgid "Unable to parse the XML document." msgstr "Impossível interpretar o documento XML." #: ../src/mn-mailboxes.gob:320 msgid "The root element is missing." msgstr "O elemento raiz está faltando." #: ../src/mn-mailboxes.gob:326 #, c-format msgid "The root element \"%s\" is invalid." msgstr "O elemento raiz \"%s\" é inválido." #: ../src/mn-mailboxes.gob:349 #, c-format msgid "On line %i: %s." msgstr "Na linha %i: %s." #: ../src/mn-mailboxes.gob:354 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "Na linha %i: elemento desconhecido \"%s\"." #: ../src/mn-mailboxes.gob:363 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "Um erro ocorreu ao carregar a configuração das contas de correio" msgstr[1] "Erros ocorreram ao carregar a configuração das contas de correio" #: ../src/mn-mailboxes.gob:388 msgid "Unable to save the mailboxes configuration" msgstr "Impossível salvar configuração das contas de correio" #: ../src/mn-mailboxes.gob:430 ../src/mn-vfs.c:240 #, c-format msgid "Unable to remove %s: %s." msgstr "Não foi possível remover %s: %s." #: ../src/mn-mailboxes.gob:438 #, c-format msgid "Unable to create %s: %s." msgstr "Não foi possível criar %s: %s." #: ../src/mn-mailboxes.gob:445 #, c-format msgid "Unable to open %s for writing: %s." msgstr "Não foi possível abrir %s para escrita: %s." #: ../src/mn-mailboxes.gob:452 msgid "Unable to write the XML document." msgstr "Impossível salvar o documento XML." #: ../src/mn-mailboxes.gob:458 #, c-format msgid "Unable to close %s: %s." msgstr "Não foi possível fechar %s: %s." #: ../src/mn-mailboxes.gob:468 ../src/mn-mailboxes.gob:475 ../src/mn-vfs.c:258 #: ../src/mn-vfs.c:266 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "Não foi possível renomear %s para %s: %s." #. non fatal #: ../src/mn-mailboxes.gob:481 ../src/mn-vfs.c:276 #, c-format msgid "unable to delete %s: %s" msgstr "impossível excluir %s: %s" #: ../src/mn-mailboxes.gob:511 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "%s tem %i nova mensagem" msgstr[1] "%s tem %i novas mensagens" #: ../src/mn-mailboxes.gob:537 #, c-format msgid "%s reported an error: %s" msgstr "%s reportou um erro: %s" #: ../src/mn-maildir-mailbox-backend.gob:129 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "não foi possível abrir a pasta \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:178 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "não foi possível fechar a pasta \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:181 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "erro ao ler pasta \"%s\":·%s" #: ../src/mn-main.c:109 msgid "yes" msgstr "sim" #: ../src/mn-main.c:109 msgid "no" msgstr "não" #: ../src/mn-main.c:142 #, c-format msgid "%s version %s\n" msgstr "%s versão %s\n" #: ../src/mn-main.c:147 msgid "Mailbox backends:\n" msgstr "Backends de caixa de correio:\n" #: ../src/mn-main.c:152 msgid "POP3 and IMAP features:\n" msgstr "Funcionalidades POP3 e IMAP:\n" #: ../src/mn-main.c:157 msgid "Sylpheed features:\n" msgstr "Recursos Sylpheed:\n" #: ../src/mn-main.c:205 #, c-format msgid "A Bonobo exception (%s) has occurred in %s()." msgstr "Uma exceção Bonobo·(%s)·ocorreu em %s()." #: ../src/mn-main.c:247 #, c-format msgid "%s option ignored since Mail Notification is not already running" msgstr "Opção %s ignorada já que Notificação de Correio já está executando" #: ../src/mn-main.c:267 msgid "Show version information" msgstr "Mostrar informações da versão" #: ../src/mn-main.c:276 msgid "Enable informational output" msgstr "Ativar informações" #: ../src/mn-main.c:285 msgid "Display the properties dialog" msgstr "Mostrar o diálogo de propriedades" #: ../src/mn-main.c:294 msgid "Display the about dialog" msgstr "Mostrar o diálogo sobre" #: ../src/mn-main.c:303 msgid "Update the mail status" msgstr "Atualizar status do correio" #: ../src/mn-main.c:312 msgid "Print a XML mail summary" msgstr "Imprimir um resumo do correio em XML" #: ../src/mn-main.c:321 msgid "Unset obsolete GConf configuration" msgstr "Suprimir configuração GConf obsoleta" #: ../src/mn-main.c:330 msgid "Quit Mail Notification" msgstr "Sair de Notificação de Correio" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: ../src/mn-main.c:356 msgid "multi-threading is not available" msgstr "multi-threading não está disponível" #: ../src/mn-main.c:407 msgid "" "Bonobo could not locate the automation object. Please check your Mail " "Notification installation." msgstr "" "Bonobo não pôde localizar o objeto de automação. Por·favor," "·verifique·sua·instalação·de·Notificação·de·Correio." #: ../src/mn-main.c:413 msgid "quitting Mail Notification" msgstr "saindo de Notificação de Correio" #: ../src/mn-main.c:417 msgid "Mail Notification is not running" msgstr "Notificação de Correio não está executando" #: ../src/mn-main.c:432 msgid "Unable to initialize the GnomeVFS library." msgstr "Impossível inicializar a biblioteca GnomeVFS." #: ../src/mn-main.c:442 msgid "An initialization error has occurred in Mail Notification" msgstr "Um erro de inicialização ocorreu em Notificação de Correio" #: ../src/mn-main.c:443 msgid "" "Unable to initialize the notification library. Message popups will not be " "displayed." msgstr "Não foi possível inicializar a biblioteca de notificação. Janelas de notificação não serão mostradas " #: ../src/mn-main.c:481 msgid "updating the mail status" msgstr "atualizando status do correio" #: ../src/mn-main.c:497 msgid "Mail Notification is already running" msgstr "Notificação de Correio já está executando" #: ../src/mn-main.c:514 #, c-format msgid "" "Bonobo could not locate the %s file. Please check your Mail Notification " "installation." msgstr "" "Bonobo·não·pôde·localizar o arquivo %s.·Por·favor," "·verifique·sua·instalação·de·Notificação·de·Correio." #: ../src/mn-message-mime.c:168 msgid "unable to parse MIME message" msgstr "impossível interpretar mensagem MIME" #: ../src/mn-message.gob:144 msgid "Unknown" msgstr "Desconhecido" #: ../src/mn-message.gob:207 msgid "unterminated substitution" msgstr "substituição não concluída" #: ../src/mn-message.gob:246 #, c-format msgid "unknown substitution \"%s\"" msgstr "substituição desconhecida \"%s\"" #: ../src/mn-message.gob:249 msgid "empty substitution" msgstr "substituição vazia" #: ../src/mn-message.gob:312 ../src/mn-util.c:1372 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "Impossível executar \"%s\": %s" #: ../src/mn-mh-mailbox-backend.gob:170 #, c-format msgid "error while reading %s: %s" msgstr "erro durante a leitura %s: %s" #: ../src/mn-mh-mailbox-backend.gob:183 #, c-format msgid "unable to open %s: %s" msgstr "impossível abrir %s: %s" #: ../src/mn-pi-mailbox-properties.gob:70 msgid "_Standard" msgstr "Pad_rão" #: ../src/mn-pi-mailbox-properties.gob:71 msgid "In-_band SSL/TLS" msgstr "SSL/TLS _interno" #: ../src/mn-pi-mailbox-properties.gob:72 msgid "SSL/TLS on s_eparate port" msgstr "SSL/TLS em porta s_eparada" #: ../src/mn-pi-mailbox-properties.gob:76 msgid "_Server:" msgstr "_Servidor:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:96 msgid "Connection Type" msgstr "Tipo de Conexão" #: ../src/mn-pi-mailbox-properties.gob:140 msgid "Port:" msgstr "Porta:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:167 msgid "Authentication" msgstr "Autenticação" #: ../src/mn-pi-mailbox-properties.gob:171 msgid "_Mechanism:" msgstr "_Mecanismo:" #: ../src/mn-pi-mailbox-properties.gob:205 msgid "Connection" msgstr "Conexão" #: ../src/mn-pi-mailbox.gob:153 msgid "SSL/TLS support has not been compiled in" msgstr "o suporte a SSL/TLS não foi compilado" #: ../src/mn-pi-mailbox.gob:319 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "credentials you have entered are invalid.\n" "\n" "Please re-enter your credentials." msgstr "" "Notificação de Correio não foi capaz de autenticar %s conta %s, " "possivelmente suas credenciais não são válidas.\n" "\n" "Por favor, verifique seus dados de autenticação." #: ../src/mn-pi-mailbox.gob:320 #, c-format msgid "Enter your credentials for %s mailbox %s." msgstr "Informe seus dados de autenticação para %s conta %s." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: ../src/mn-pi-mailbox.gob:363 msgid "Authentication Required" msgstr "Autenticação requerida" #: ../src/mn-pop3-mailbox.gob:345 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "argumentos inválidos para a funcionalidade LOGIN-DELAY" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:486 msgid "" "SASL authentication with initial client response failed, retrying without " "initial client response" msgstr "" "Autenticação SASL com cliente inicial retornou erro, tentando novamente sem " "resposta inicial do cliente" #: ../src/mn-pop3-mailbox.gob:703 msgid "unknown error" msgstr "erro desconhecido" #: ../src/mn-pop3-mailbox.gob:798 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "atendendo ao LOGIN-DELAY, aguardando por %i segundo" msgstr[1] "atendendo ao LOGIN-DELAY, aguardando por %i segundos" #: ../src/mn-pop3-mailbox.gob:966 msgid "server does not support APOP authentication" msgstr "servidor não suporta autenticação APOP" #: ../src/mn-pop3-mailbox.gob:1022 msgid "falling back to APOP authentication" msgstr "retornando para autenticação APOP" #: ../src/mn-pop3-mailbox.gob:1027 msgid "falling back to USER/PASS authentication" msgstr "retornando para autenticação USER/PASS" #: ../src/mn-popup.gob:52 ../src/mn-standard-message-view.gob:63 msgid "Mailbox:" msgstr "Conta de correio:" #: ../src/mn-popup.gob:54 ../src/mn-standard-message-view.gob:65 msgid "Unreadable message:" msgstr "Mensagem ilegível:" #: ../src/mn-popup.gob:57 ../src/mn-standard-message-view.gob:68 msgid "From:" msgstr "De:" #: ../src/mn-popup.gob:58 ../src/mn-standard-message-view.gob:69 msgid "Subject:" msgstr "Assunto:" #. translators: header capitalization #: ../src/mn-popup.gob:79 msgid "Open" msgstr "Abrir" #. translators: header capitalization #: ../src/mn-popup.gob:87 msgid "Mark as Read" msgstr "Marcar como lida" #. translators: header capitalization #: ../src/mn-popup.gob:95 msgid "Mark as Spam" msgstr "Marcar como Spam" #: ../src/mn-popup.gob:117 msgid "Unable to open message" msgstr "Não foi possível abrir a mensagem" #: ../src/mn-popup.gob:134 msgid "Unable to mark message as read" msgstr "Não foi possível marcar a mensagem como lida" #: ../src/mn-popup.gob:151 msgid "Unable to mark message as spam" msgstr "Não foi possível marcar a mensagem como spam" #: ../src/mn-popup.gob:210 #, c-format msgid "unable to show popup: %s" msgstr "não foi possível mostrar a janela: %s" #: ../src/mn-popup.gob:227 #, c-format msgid "unable to close popup: %s" msgstr "não foi possível fechar a janela: %s" #. we set the summary here because libnotify requires it #. translators: header capitalization #: ../src/mn-popup.gob:238 msgid "New Message" msgstr "Nova Mensagem" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:131 ../ui/properties-dialog.glade.h:20 msgid "Mail Notification Properties" msgstr "Propriedades de Notificação de Correio" #. translators: "test" is an adjective, not a verb #: ../src/mn-properties-dialog.gob:136 msgid "_Test messages" msgstr "Mensagem de _Teste" #: ../src/mn-properties-dialog.gob:276 msgid "No mailbox selected." msgstr "Nenhuma conta de correio selecionada." #: ../src/mn-properties-dialog.gob:281 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "%i conta de correio selecionada." msgstr[1] "%i contas de correio selecionadas." #: ../src/mn-shell.gob:224 msgid "No mail reader is configured" msgstr "Nenhum leitor de email foi configurado" #: ../src/mn-shell.gob:225 msgid "" "You can configure a mail reader by choosing System → Preferences → " "Preferred Applications." msgstr "Você pode configurar um leitor de email selecionando ·Sistema·→·Preferências·→·" "Aplicações Preferenciais." #: ../src/mn-shell.gob:236 ../src/mn-shell.gob:242 ../src/mn-shell.gob:534 msgid "Unable to open the latest message" msgstr "Não foi possível abrir a última mensagem" #: ../src/mn-shell.gob:237 #, c-format msgid "Messages of mailbox \"%s\" cannot be opened." msgstr "Mensagem da caixa postal \"%s\" não podem ser abertas." #: ../src/mn-shell.gob:243 ../src/mn-shell.gob:462 msgid "You have no new mail." msgstr "Você não tem novas mensagens." #. translators: header capitalization #: ../src/mn-shell.gob:398 msgid "Mailboxes Having New Mail" msgstr "Contas de Correio que possuem novas mensagens" #. translators: header capitalization #: ../src/mn-shell.gob:417 msgid "Errors" msgstr "Erros" #. translators: header capitalization #: ../src/mn-shell.gob:433 msgid "Mail Summary" msgstr "Resumo do Correio" #: ../src/mn-ssl.c:77 msgid "unknown SSL/TLS error" msgstr "erro SSL/TLS desconhecido" #: ../src/mn-standard-message-view.gob:73 msgid "Sent:" msgstr "Enviado:" #. translators: header capitalization #: ../src/mn-stock.c:30 msgid "Select _All" msgstr "Selecionar _Todos" #. translators: header capitalization #. translators: header capitalization #: ../src/mn-stock.c:33 msgid "Co_nnect" msgstr "Co_nectar" #: ../src/mn-sylpheed-mailbox-backend.gob:227 #, c-format msgid "unable to open folder: %s" msgstr "impossível abrir pasta: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:277 #, c-format msgid "unable to close folder: %s" msgstr "impossível fechar pasta: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:280 #, c-format msgid "error while reading folder: %s" msgstr "erro ao ler pasta: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:424 msgid "unexpected end of file" msgstr "fim de arquivo inesperado" #: ../src/mn-sylpheed-mailbox-backend.gob:437 #, c-format msgid "incompatible file version \"%i\"" msgstr "versão do arquivo incompatível \"%i\" " #: ../src/mn-sylpheed-mailbox-backend.gob:440 msgid "file version missing" msgstr "versão do arquivo inexistente" #: ../src/mn-sylpheed-mailbox-backend.gob:498 #, c-format msgid "Unable to read %s: %s." msgstr "Não foi possível copiar %s: %s." #: ../src/mn-system-vfs-mailbox-properties.gob:41 #: ../src/mn-system-vfs-mailbox-properties.gob:49 #: ../src/mn-system-vfs-mailbox.gob:46 msgid "System mailbox" msgstr "Conta de correio de sistema" #: ../src/mn-system-vfs-mailbox-properties.gob:76 #, c-format msgid "Your system mailbox is %s." msgstr "Sua conta de correio de sistema é %s." #: ../src/mn-system-vfs-mailbox-properties.gob:83 msgid "" "The location of your system mailbox could not be detected. Check the MAIL " "environment variable." msgstr "" "A localização de sua caixa de correio de sistema não pode ser detectada. " "Verificar a variável de ambiente MAIL." #: ../src/mn-system-vfs-mailbox.gob:73 msgid "system mailbox not found" msgstr "Caixa de correio de sistema não encontrada" #: ../src/mn-test-mailbox.gob:40 msgid "Test mailbox" msgstr "Caixa de correio de teste" #: ../src/mn-test-mailbox.gob:59 #, c-format msgid "Test message #%i" msgstr "Mensagem teste %i" #. translators: header capitalization #: ../src/mn-test-mailbox.gob:65 msgid "Mail Notification Properties Dialog" msgstr "Diálogo de propriedades de Notificação de Correio" #: ../src/mn-util.c:350 #, c-format msgid "error loading image: %s" msgstr "erro ao carregar imagem: %s" #: ../src/mn-util.c:366 #, c-format msgid "" "Unable to load interface \"%s\". Please check your Mail Notification " "installation." msgstr "" "Não foi possível carregar a interface \"%s\".·Por·favor," "·verifique·sua·instalação·de·Notificação·de·Correio." #: ../src/mn-util.c:381 #, c-format msgid "" "Widget \"%s\" not found in interface \"%s\". Please check your Mail " "Notification installation." msgstr "" "Widget \"%s\" não encontrado na interface \"%s\". Por·favor,·verifique·sua·instalação·" "de·Notificação·de·Correio." #: ../src/mn-util.c:450 #, c-format msgid "Unable to open self as a module (%s)." msgstr "Não foi possível abrir a si mesmo como um modulo (%s)." #: ../src/mn-util.c:455 #, c-format msgid "" "Signal handler \"%s\" not found. Please check your Mail Notification " "installation." msgstr "" "O manipulador de sinal %s não foi encontrado.·Por·favor," "·verifique·sua·instalação·de·Notificação·de·Correio." #: ../src/mn-util.c:606 ../src/mn-util.c:629 ../src/mn-util.c:649 #: ../src/mn-util.c:671 msgid "A drag and drop error has occurred" msgstr "Ocorreu um erro ao arrastar e colar" #: ../src/mn-util.c:607 msgid "An invalid location list has been received." msgstr "Uma lista inválida de endereços foi recebida." #: ../src/mn-util.c:650 msgid "An invalid Mozilla location has been received." msgstr "Um endereço Mozilla não válido foi recebido." #: ../src/mn-util.c:726 msgid "Unable to display help" msgstr "Impossível mostrar a ajuda" #: ../src/mn-util.c:738 msgid "Unable to open link" msgstr "Impossível abrir o link" #: ../src/mn-util.c:752 #, c-format msgid "Unable to create a thread: %s." msgstr "Impossível criar uma thread: %s." #: ../src/mn-util.c:929 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" "The following locations are invalid:\n" "\n" "%s" msgstr "" "O endereço abaixo é inválido:\n" "\n" "%s" "Os endereços abaixo são inválidos:\n" "\n" "%s" #: ../src/mn-util.c:945 msgid "A fatal error has occurred in Mail Notification" msgstr "Um erro fatal ocorreu em Notificação de Correio" #: ../src/mn-util.c:989 #, c-format msgid "unable to get current time: %s" msgstr "impossível obter a hora corrente: %s" #: ../src/mn-util.c:1304 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "%i segundo atrás" msgstr[1] "%i segundos atrás" #: ../src/mn-util.c:1308 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "aproximadamente %i minuto atrás" msgstr[1] "aproximadamente %i minutos atrás" #: ../src/mn-util.c:1313 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "aproximadamente %i hora atrás" msgstr[1] "aproximadamente %i horas atrás" #: ../src/mn-util.c:1318 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "aproximadamente %i dia atrás" msgstr[1] "aproximadamente %i dias atrás" #: ../src/mn-util.c:1323 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "aproximadamente %i semana atrás" msgstr[1] "aproximadamente %i semanas atrás" #: ../src/mn-util.c:1336 msgid "unknown date" msgstr "data desconhecida" #: ../src/mn-util.c:1371 msgid "A command error has occurred in Mail Notification" msgstr "Um erro de comando ocorreu em Notificação de Correio" #: ../src/mn-vfs-mailbox.gob:228 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "" "não foi possível monitorar %s·(%s), modo verificação ativado" #: ../src/mn-vfs-mailbox.gob:392 msgid "unknown mailbox format" msgstr "formato de conta de correio não conhecido" #: ../src/mn-vfs-mailbox.gob:392 msgid "does not exist" msgstr "não existe" #: ../src/mn-vfs.c:248 #, c-format msgid "Unable to write %s: %s." msgstr "Não foi possível escrever %s: %s" #: ../src/mn-xml.c:54 #, c-format msgid "" "property \"%s\": unable to transform string \"%s\" into a value of type \"%s" "\"" msgstr "" "propriedade \"%s\": impossível converter texto \"%s\" em um valor do tipo \"%" "s\"" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:8 msgid "General" msgstr "Geral" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:2 #: ../ui/properties-dialog.glade.h:17 msgid "General" msgstr "Geral" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox _name:" msgstr "N_ome da conta de correio:" #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "Mailbox _type:" msgstr "_Tipo de conta de correio:" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:6 msgid "Us_e Default" msgstr "Us_ar o Padrão" #: ../ui/mailbox-properties-dialog.glade.h:7 msgid "_Delay between mail checks:" msgstr "_Intervalo entre verificações no correio:" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:9 msgid "_Use Default" msgstr "_Usar·o·Padrão" #: ../ui/mailbox-properties-dialog.glade.h:10 #: ../ui/properties-dialog.glade.h:41 msgid "minutes" msgstr "minutos" #: ../ui/mailbox-properties-dialog.glade.h:11 #: ../ui/properties-dialog.glade.h:42 msgid "seconds" msgstr "segundos" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:2 msgid "Click Action" msgstr "Ação no clique" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:4 msgid "Commands" msgstr "Comandos" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:6 msgid "Expiration" msgstr "Expiração" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:10 msgid "Mailbox List" msgstr "Contas de Correio" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:12 msgid "Position" msgstr "Posição" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:14 msgid "Tooltip Mail Summary" msgstr "Janela de Resumo do Correio" #: ../ui/properties-dialog.glade.h:15 msgid "A_fter:" msgstr "_Após:" #: ../ui/properties-dialog.glade.h:18 msgid "In the p_opup stack" msgstr "Na pilha da _janela" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:22 msgid "Message Popups" msgstr "Resumo do Correio" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:24 msgid "Status Icon" msgstr "Ícone de estado" #: ../ui/properties-dialog.glade.h:25 msgid "When _new mail arrives:" msgstr "Quando _nova mensagem chegar:" #: ../ui/properties-dialog.glade.h:26 msgid "When all mail has _been read:" msgstr "Quando _todas mensagens forem lidas:" #: ../ui/properties-dialog.glade.h:27 msgid "_Always display" msgstr "_Mostrar sempre" #: ../ui/properties-dialog.glade.h:28 msgid "_Attached to the status icon" msgstr "_Anexado ao ícone de status" #: ../ui/properties-dialog.glade.h:29 msgid "_Blink on errors" msgstr "_Se ocorrerem erros, piscar ícone de status" #: ../ui/properties-dialog.glade.h:30 msgid "_Desktop default" msgstr "Área de _trabalho padrão" #: ../ui/properties-dialog.glade.h:31 msgid "_Display seen mail" msgstr "Mostrar mensagens _lidas" #: ../ui/properties-dialog.glade.h:32 msgid "_Display this dialog" msgstr "_Mostrar este diálogo" #: ../ui/properties-dialog.glade.h:33 msgid "_Enable message popups" msgstr "_Ativar a janela de resumo de correio" #: ../ui/properties-dialog.glade.h:34 msgid "_Launch the mail reader" msgstr "Abrir o leitor de _correio" #: ../ui/properties-dialog.glade.h:36 msgid "_None" msgstr "_Nenhum" #: ../ui/properties-dialog.glade.h:37 msgid "_Open the latest message" msgstr "_Abrir a última mensagem" #: ../ui/properties-dialog.glade.h:38 msgid "_Update the mail status" msgstr "_Atualizar status do correio" #: ../ui/properties-dialog.glade.h:39 msgid "icon tooltip's mail summary layout|Co_mpact" msgstr "Co_mpacto" #: ../ui/properties-dialog.glade.h:40 msgid "icon tooltip's mail summary layout|_Standard" msgstr "_Padrão" mail-notification-5.4.dfsg.1/po/ru.po0000644000175000001440000003211710737450763017277 0ustar evilynuxusers# Russian translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Dan Korostelev , 2004. # msgid "" msgstr "" "Project-Id-Version: mail-notification 0.5.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-07-18 01:21+0200\n" "PO-Revision-Date: 2004-07-21 21:58+0200\n" "Last-Translator: Dan Korostelev \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "" "Иконка в области уведомления панели, уведомляющая о приходе новой почты." #: data/mail-notification.desktop.in.h:2 src/mn-main.c:112 src/mn-ui.c:250 msgid "Mail Notification" msgstr "Иконка входящих сообщений" #: data/mail-notification.schemas.in.h:1 msgid "Clicked command" msgstr "" #: data/mail-notification.schemas.in.h:2 msgid "Delay between mail checks (minutes part)." msgstr "" #: data/mail-notification.schemas.in.h:3 msgid "Delay between mail checks (seconds part)." msgstr "" #: data/mail-notification.schemas.in.h:4 msgid "Height of preferences dialog" msgstr "" #: data/mail-notification.schemas.in.h:5 msgid "Mailboxes list" msgstr "" #: data/mail-notification.schemas.in.h:6 msgid "Minutes between mail checks" msgstr "" #: data/mail-notification.schemas.in.h:7 msgid "New mail command" msgstr "" #: data/mail-notification.schemas.in.h:8 #, fuzzy msgid "Run a command when new mail arrives" msgstr "" "Иконка в области уведомления панели, уведомляющая о приходе новой почты." #: data/mail-notification.schemas.in.h:9 msgid "Run a command when the icon is clicked" msgstr "" #: data/mail-notification.schemas.in.h:10 msgid "Seconds between mail checks" msgstr "" #: data/mail-notification.schemas.in.h:11 #, fuzzy msgid "The command to run when new mail arrives." msgstr "" "Иконка в области уведомления панели, уведомляющая о приходе новой почты." #: data/mail-notification.schemas.in.h:12 msgid "The command to run when the icon is clicked." msgstr "" #: data/mail-notification.schemas.in.h:13 msgid "The height of the preferences dialog in pixels." msgstr "" #: data/mail-notification.schemas.in.h:14 msgid "The list of mailboxes to monitor." msgstr "" #: data/mail-notification.schemas.in.h:15 msgid "The width of the preferences dialog in pixels." msgstr "" #: data/mail-notification.schemas.in.h:16 #, fuzzy msgid "Whether to run a command when new mail arrives or not." msgstr "" "Иконка в области уведомления панели, уведомляющая о приходе новой почты." #: data/mail-notification.schemas.in.h:17 msgid "Whether to run a command when the icon is clicked or not." msgstr "" #: data/mail-notification.schemas.in.h:18 msgid "Width of preferences dialog" msgstr "" #: src/eggtrayicon.c:109 msgid "Orientation" msgstr "" #: src/eggtrayicon.c:110 msgid "The orientation of the tray." msgstr "" #: src/mn-gmail-mailbox.c:165 src/mn-pop3-mailbox.c:177 msgid "unable to parse URI" msgstr "" #: src/mn-gmail-mailbox.c:261 #, c-format msgid "logging into Gmail as user %s" msgstr "" #: src/mn-gmail-mailbox.c:277 src/mn-gmail-mailbox.c:356 #, c-format msgid "unable to transfer data: %s" msgstr "" #: src/mn-gmail-mailbox.c:283 #, c-format msgid "successfully logged into Gmail as user %s" msgstr "" #: src/mn-gmail-mailbox.c:288 msgid "login failed" msgstr "" #: src/mn-gmail-mailbox.c:341 #, c-format msgid "searching for unread mail in %s" msgstr "" #: src/mn-gmail-mailbox.c:363 msgid "unable to parse Gmail data" msgstr "" #: src/mn-mail-icon.c:130 msgid "You have no new mail" msgstr "" #: src/mn-mailbox-properties-dialog.c:131 msgid "Add a Mailbox" msgstr "" #: src/mn-mailbox-properties-dialog.c:285 #, c-format msgid "%s Properties" msgstr "" #: src/mn-mailbox-properties-dialog.c:450 msgid "Select a File or Folder" msgstr "" #: src/mn-mailbox.c:199 msgid "URI" msgstr "" #: src/mn-mailbox.c:200 msgid "The mailbox URI" msgstr "" #: src/mn-mailbox.c:206 msgid "Name" msgstr "" #: src/mn-mailbox.c:207 msgid "The mailbox human-readable name" msgstr "" #: src/mn-mailbox.c:213 msgid "Automatic" msgstr "" #: src/mn-mailbox.c:214 msgid "Whether the mailbox has to be manually checked or not" msgstr "" #: src/mn-mailbox.c:220 msgid "Has new" msgstr "" #: src/mn-mailbox.c:221 msgid "Whether the mailbox has new mail or not" msgstr "" #: src/mn-mailbox.c:227 msgid "Error" msgstr "" #: src/mn-mailbox.c:228 msgid "The mailbox error if any" msgstr "" #: src/mn-mailbox.c:254 #, c-format msgid "unable to cancel monitoring of %s: %s" msgstr "" #: src/mn-mailbox.c:443 msgid "does not exist" msgstr "" #: src/mn-mailbox.c:460 msgid "unknown format" msgstr "" #: src/mn-mailbox.c:553 #, c-format msgid "unable to monitor %s: %s" msgstr "" #: src/mn-mailbox.c:567 #, c-format msgid "" "As a fallback, they will be checked every %i second (this delay is " "configurable from the Preferences Dialog)." msgid_plural "" "As a fallback, they will be checked every %i seconds (this delay is " "configurable from the Preferences Dialog)." msgstr[0] "" msgstr[1] "" #: src/mn-mailbox.c:578 #, c-format msgid "" "As a fallback, they will be checked every %i minute (this delay is " "configurable from the Preferences Dialog)." msgid_plural "" "As a fallback, they will be checked every %i minutes (this delay is " "configurable from the Preferences Dialog)." msgstr[0] "" msgstr[1] "" #: src/mn-mailbox.c:589 #, c-format msgid "" "As a fallback, they will be checked approximately every %i minute (this " "delay is configurable from the Preferences Dialog)." msgid_plural "" "As a fallback, they will be checked approximately every %i minutes (this " "delay is configurable from the Preferences Dialog)." msgstr[0] "" msgstr[1] "" #: src/mn-mailbox.c:603 msgid "A monitoring error has occurred." msgstr "" #: src/mn-mailbox.c:604 #, c-format msgid "" "Mail Notification was unable to enable automatic notification for one or " "more mailboxes. %s" msgstr "" #: src/mn-mailboxes.c:133 #, c-format msgid "%s has new mail" msgstr "" #: src/mn-mailboxes.c:133 #, c-format msgid "%s has no new mail" msgstr "" #: src/mn-mailboxes.c:143 #, c-format msgid "%s reported an error: %s" msgstr "" #: src/mn-maildir-mailbox.c:226 src/mn-sylpheed-mailbox.c:209 #, c-format msgid "error while reading folder: %s" msgstr "" #: src/mn-main.c:49 msgid "Compiled in handlers:\n" msgstr "" #: src/mn-main.c:83 msgid "Enable informational output" msgstr "" #: src/mn-main.c:92 msgid "List compiled-in handlers and exit" msgstr "" #: src/mn-main.c:124 msgid "unable to initialize GnomeVFS" msgstr "" #: src/mn-mbox-mailbox.c:339 #, c-format msgid "unable to get mailbox information: %s" msgstr "" #: src/mn-mbox-mailbox.c:364 #, c-format msgid "unable to open mailbox: %s" msgstr "" #: src/mn-mbox-mailbox.c:401 #, c-format msgid "error while reading mailbox: %s" msgstr "" #: src/mn-mbox-mailbox.c:417 #, c-format msgid "unable to close mailbox: %s" msgstr "" #: src/mn-mh-mailbox.c:185 #, c-format msgid "unable to open .mh_sequences: %s" msgstr "" #: src/mn-mh-mailbox.c:215 #, c-format msgid "error while reading .mh_sequences: %s" msgstr "" #: src/mn-mh-mailbox.c:231 #, c-format msgid "unable to close .mh_sequences: %s" msgstr "" #: src/mn-pending-mailbox.c:64 msgid "detecting..." msgstr "" #: src/mn-pop3-mailbox.c:202 #, c-format msgid "connecting to POP3 server %s:%i" msgstr "" #: src/mn-pop3-mailbox.c:222 #, c-format msgid "successfully connected to %s:%i" msgstr "" #: src/mn-pop3-mailbox.c:231 msgid "unable to resolve hostname" msgstr "" #: src/mn-pop3-mailbox.c:235 msgid "unable to connect to server" msgstr "" #: src/mn-pop3-mailbox.c:239 msgid "unknown error" msgstr "" #: src/mn-pop3-mailbox.c:270 #, c-format msgid "unable to write to server: %s" msgstr "" #: src/mn-pop3-mailbox.c:329 #, c-format msgid "invalid STAT reply \"%s\"" msgstr "" #: src/mn-pop3-mailbox.c:367 src/mn-pop3-mailbox.c:378 #, c-format msgid "invalid POP3 reply \"%s\"" msgstr "" #: src/mn-pop3-mailbox.c:387 msgid "connection unexpectedly closed" msgstr "" #: src/mn-pop3-mailbox.c:393 #, c-format msgid "unable to read from server: %s" msgstr "" #: src/mn-preferences.c:195 msgid "Mailbox" msgstr "" #: src/mn-preferences.c:209 msgid "Format" msgstr "" #: src/mn-preferences.c:361 msgid "No mailbox selected." msgstr "" #: src/mn-preferences.c:366 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "" msgstr[1] "" #: src/mn-preferences.c:423 msgid "Unable to add mailbox." msgstr "" #: src/mn-preferences.c:423 msgid "The mailbox is already in the list." msgstr "" #: src/mn-ui.c:87 msgid "A command error has occurred." msgstr "" #: src/mn-ui.c:88 #, c-format msgid "Unable to execute clicked command: %s." msgstr "" #: src/mn-ui.c:179 msgid "The following mailbox has new mail:\n" msgid_plural "The following mailboxes have new mail:\n" msgstr[0] "" msgstr[1] "" #: src/mn-ui.c:186 msgid "You have no new mail." msgstr "" #: src/mn-ui.c:190 msgid "The following mailbox reported an error:\n" msgid_plural "The following mailboxes reported an error:\n" msgstr[0] "" msgstr[1] "" #: src/mn-ui.c:195 msgid "The following mailbox is unsupported:\n" msgid_plural "The following mailboxes are unsupported:\n" msgstr[0] "" msgstr[1] "" #: src/mn-ui.c:253 msgid "A Mail Notification Icon" msgstr "" #: src/mn-ui.c:256 msgid "Jean-Yves Lefort " msgstr "Dan Korostelev " #: src/mn-unsupported-mailbox.c:98 msgid "unsupported" msgstr "" #: src/mn-unsupported-mailbox.c:103 msgid "Reason" msgstr "" #: src/mn-unsupported-mailbox.c:104 msgid "The reason why the mailbox is unsupported" msgstr "" #: src/mn-util.c:110 #, c-format msgid "error loading image: %s" msgstr "" #: src/mn-util.c:148 #, c-format msgid "widget %s not found in interface %s" msgstr "" #: src/mn-util.c:255 msgid "received an invalid URI list" msgstr "" #: src/mn-util.c:291 msgid "received an invalid Mozilla URL" msgstr "" #: src/mn-util.c:383 msgid "Unable to display help." msgstr "" #: ui/mailbox-properties.glade.h:1 ui/preferences.glade.h:1 msgid " " msgstr "" #: ui/mailbox-properties.glade.h:2 ui/preferences.glade.h:2 msgid "*" msgstr "" #: ui/mailbox-properties.glade.h:3 msgid "P_assword:" msgstr "" #: ui/mailbox-properties.glade.h:4 msgid "P_ort:" msgstr "" #: ui/mailbox-properties.glade.h:5 msgid "The URI of the file or folder" msgstr "" #: ui/mailbox-properties.glade.h:6 msgid "The hostname or IP address of the POP3 server" msgstr "" #: ui/mailbox-properties.glade.h:7 msgid "The port number of the POP3 server" msgstr "" #: ui/mailbox-properties.glade.h:8 msgid "Us_ername:" msgstr "" #: ui/mailbox-properties.glade.h:9 msgid "Your Gmail password" msgstr "" #: ui/mailbox-properties.glade.h:10 msgid "Your Gmail username" msgstr "" #: ui/mailbox-properties.glade.h:11 msgid "Your password on the POP3 server" msgstr "" #: ui/mailbox-properties.glade.h:12 msgid "Your username on the POP3 server" msgstr "" #: ui/mailbox-properties.glade.h:13 msgid "_Browse..." msgstr "" #: ui/mailbox-properties.glade.h:14 msgid "_File or folder" msgstr "" #: ui/mailbox-properties.glade.h:15 msgid "_Gmail mailbox" msgstr "" #: ui/mailbox-properties.glade.h:16 msgid "_Hostname:" msgstr "" #: ui/mailbox-properties.glade.h:17 msgid "_Location:" msgstr "" #: ui/mailbox-properties.glade.h:18 msgid "_POP3 mailbox" msgstr "" #: ui/menu.glade.h:1 msgid "Show help" msgstr "" #: ui/menu.glade.h:2 msgid "Update the icon" msgstr "" #: ui/menu.glade.h:3 msgid "_Help" msgstr "" #: ui/menu.glade.h:4 msgid "_Update" msgstr "" #: ui/preferences.glade.h:3 msgid "Commands" msgstr "" #: ui/preferences.glade.h:4 msgid "General" msgstr "" #: ui/preferences.glade.h:5 msgid "Mailboxes" msgstr "" #: ui/preferences.glade.h:6 msgid "Mail Notification Preferences" msgstr "" #: ui/preferences.glade.h:7 msgid "The amount of time to wait between mail checks" msgstr "" #: ui/preferences.glade.h:8 msgid "The command to run when new mail arrives" msgstr "" #: ui/preferences.glade.h:9 msgid "The command to run when the icon is clicked" msgstr "" #: ui/preferences.glade.h:10 msgid "When _new mail arrives:" msgstr "" #: ui/preferences.glade.h:11 msgid "When click_ed:" msgstr "" #: ui/preferences.glade.h:12 msgid "Whether to run a command when new mail arrives or not" msgstr "" #: ui/preferences.glade.h:13 msgid "Whether to run a command when the icon is clicked or not" msgstr "" #: ui/preferences.glade.h:14 msgid "_Add" msgstr "" #: ui/preferences.glade.h:15 msgid "_Delay between mail checks:" msgstr "" #: ui/preferences.glade.h:16 msgid "_Remove" msgstr "" #: ui/preferences.glade.h:17 msgid "minutes" msgstr "" #: ui/preferences.glade.h:18 msgid "seconds" msgstr "" mail-notification-5.4.dfsg.1/po/pt.po0000644000175000001440000017103510737450773017300 0ustar evilynuxusers# Portuguese translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Duarte Henriques , 2004-2005. # msgid "" msgstr "" "Project-Id-Version: mail-notification 1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-02-27 15:47+0100\n" "PO-Revision-Date: 2005-03-01 02:19+0100\n" "Last-Translator: Duarte Henriques \n" "Language-Team: Duarte Henriques \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n>1;\n" #: data/GNOME_MailNotification_Automation.server.in.in.h:1 msgid "Mail Notification automation" msgstr "Automação da Notificação de Correio" #: data/GNOME_MailNotification_Automation.server.in.in.h:2 msgid "Mail Notification automation factory" msgstr "Fábrica de automação de Notificação de Correio" #: data/mail-notification-properties.desktop.in.h:1 src/mn-main-window.c:145 msgid "Configure Mail Notification" msgstr "Configurar Notificação de Correio" #: data/mail-notification-properties.desktop.in.h:2 #: data/mail-notification.desktop.in.h:2 #: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:39 #: src/mn-mail-icon.gob:224 src/mn-main.c:292 ui/main.glade.h:1 msgid "Mail Notification" msgstr "Notificação de Correio" #: data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Notificar quando chega novo correio" #: data/mail-notification.schemas.in.h:1 msgid "Automatically close the mail summary popup" msgstr "Fechar o popup de resumo de correio automaticamente" #: data/mail-notification.schemas.in.h:2 msgid "Blink on errors" msgstr "Piscar em erros" #: data/mail-notification.schemas.in.h:3 msgid "Delay between mail checks (minutes part)." msgstr "Intervalo entre verificações de correio (minutos)." #: data/mail-notification.schemas.in.h:4 msgid "Delay between mail checks (seconds part)." msgstr "Intervalo entre verificações de correio (segundos)." #: data/mail-notification.schemas.in.h:5 msgid "Display mail summary in tooltip" msgstr "Mostrar o resumo de correio numa dica" #: data/mail-notification.schemas.in.h:6 msgid "Do not show the immediate notification error dialog" msgstr "Não mostrar o diálogo de erro de notificação imediata" #: data/mail-notification.schemas.in.h:7 msgid "Double-click action" msgstr "Acção de duplo-clique" #: data/mail-notification.schemas.in.h:8 msgid "Enable mail summary popup" msgstr "Activar popup de resumo de correio" #: data/mail-notification.schemas.in.h:9 msgid "Fingerprints of trusted X509 certificates" msgstr "Impressões digitais de certificados x509 confiados" #: data/mail-notification.schemas.in.h:10 msgid "Has already been run" msgstr "Já foi executado" #: data/mail-notification.schemas.in.h:11 msgid "Height of edit toolbars dialog" msgstr "Altura do diálogo de edição de barras" #: data/mail-notification.schemas.in.h:12 msgid "Height of main window" msgstr "Altura da janela principal" #: data/mail-notification.schemas.in.h:13 msgid "Height of properties dialog" msgstr "Altura do diálogo de propriedades" #: data/mail-notification.schemas.in.h:14 msgid "Mail read command" msgstr "Comando de leitura de correio" #: data/mail-notification.schemas.in.h:15 msgid "Mail reader command" msgstr "Comando de leitor de correio" #: data/mail-notification.schemas.in.h:16 msgid "Mail summary popup contents font" msgstr "Fonte do conteúdo do popup de resumo de correio" #: data/mail-notification.schemas.in.h:17 msgid "Mail summary popup fonts aspect source" msgstr "Fonte do aspecto dasd fontes do popup de resumo de correio" #: data/mail-notification.schemas.in.h:18 msgid "Mail summary popup horizontal offset" msgstr "Intervalo horizontal do popup de resumo de correio" #: data/mail-notification.schemas.in.h:19 msgid "Mail summary popup position" msgstr "Posição do popup de resumo de correio" #: data/mail-notification.schemas.in.h:20 msgid "Mail summary popup title font" msgstr "Fonte do título do popup de resumo de correio" #: data/mail-notification.schemas.in.h:21 msgid "Mail summary popup vertical offset" msgstr "Intervalo vertical do popup de resumo de correio" #: data/mail-notification.schemas.in.h:22 msgid "Mailbox list" msgstr "Lista de Caixas de Correio" #: data/mail-notification.schemas.in.h:23 msgid "Minutes between mail checks" msgstr "Minutos entre verificações de correio" #: data/mail-notification.schemas.in.h:24 msgid "Minutes to wait before closing the mail summary popup" msgstr "Minutos a esperar antes de fechar o popup de resumo de correio" #: data/mail-notification.schemas.in.h:25 msgid "New mail command" msgstr "Novo comando de correio" #: data/mail-notification.schemas.in.h:26 msgid "Only display recent mail in mail summary popup" msgstr "Mostrar apenas o correio recente no popup de resumo de correio" #: data/mail-notification.schemas.in.h:27 msgid "Run a command when all mail is read" msgstr "Executar um comando quando todo o correio está lido" #: data/mail-notification.schemas.in.h:28 msgid "Run a command when new mail arrives" msgstr "Executar um comando quando chega novo correio" #: data/mail-notification.schemas.in.h:29 msgid "Seconds between mail checks" msgstr "Segundos entre verificações de correio" #: data/mail-notification.schemas.in.h:30 msgid "Seconds to wait before closing the mail summary popup" msgstr "Segundos a esperar antes de fechar o popup de resumo de correio" #: data/mail-notification.schemas.in.h:31 msgid "Set a mail reader" msgstr "Definir um leitor de correio" #: data/mail-notification.schemas.in.h:32 msgid "" "The action to perform when the icon is double-clicked. Must be \"display-" "main-window\", \"launch-mail-reader\" or \"update-mail-status\"." msgstr "" "A acção a efectuar quando se faz duplo-clique no ícone. Tem de ser " "\"display-main-window\", \"launch-mail-reader\" ou \"update-mail-status\"." #: data/mail-notification.schemas.in.h:33 msgid "" "The amount of time to wait before closing the mail summary popup (minutes " "part)." msgstr "" "A quantidade de tempo a esperar antes de fechar o popup de resumo de correio " "(parte dos minutos)." #: data/mail-notification.schemas.in.h:34 msgid "" "The amount of time to wait before closing the mail summary popup (seconds " "part)." msgstr "" "A quantidade de tempo a esperar antes de fechar o popup de resumo de correio " "(parte dos segundos)." #: data/mail-notification.schemas.in.h:35 msgid "" "The aspect source of the mail summary popup fonts. Must be \"theme\" or " "\"custom\"." msgstr "" "A fonte de aspecto das fontes do popup de resumo de correio. Tem de ser " "\"theme\" ou \"custom\"." #: data/mail-notification.schemas.in.h:36 msgid "The command to run to launch the mail reader." msgstr "O comando a executar para lançar o leitor de correio." #: data/mail-notification.schemas.in.h:37 msgid "The command to run when all mail is read." msgstr "O comando a executar quando todo o correio está lido." #: data/mail-notification.schemas.in.h:38 msgid "The command to run when new mail arrives." msgstr "O comando a executar quando chega novo correio." #: data/mail-notification.schemas.in.h:39 msgid "The custom font to use for the contents of the mail summary popup." msgstr "A fonte personalizada para o conteúdo do popup de resumo de correio." #: data/mail-notification.schemas.in.h:40 msgid "The custom font to use for the title of the mail summary popup." msgstr "A fonte personalizada para o título do popup de resumo de correio." #: data/mail-notification.schemas.in.h:41 msgid "The height of the edit toolbars dialog in pixels." msgstr "A altura em pixeis do diálogo de edição de barras." #: data/mail-notification.schemas.in.h:42 msgid "The height of the main window in pixels." msgstr "A altura em pixeis da janela principal." #: data/mail-notification.schemas.in.h:43 msgid "The height of the properties dialog in pixels." msgstr "A altura em pixeis do diálogo de propriedades." #: data/mail-notification.schemas.in.h:44 msgid "The list of mailboxes to monitor." msgstr "A lista de caixas de correio a monitorizar." #: data/mail-notification.schemas.in.h:45 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" "A lista de servidores SSL/TLS confiados (hostname:port) se faltar um " "certificado x509." #: data/mail-notification.schemas.in.h:46 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "" "A lista de certificados x509 confiados, representados pela sua fingerprint " "MD5." #: data/mail-notification.schemas.in.h:47 msgid "" "The number of pixels to leave between the left or right side of the screen " "and the mail summary popup." msgstr "" "O número de pixeis a deixar entre o extremo esquerdo ou direito do ecran e o " "popup de resumo de correio." #: data/mail-notification.schemas.in.h:48 msgid "" "The number of pixels to leave between the top or bottom side of the screen " "and the mail summary popup." msgstr "" "O número de pixeis a deixar entre o topo ou fundo do ecran e o popup de " "resumo de correio." #: data/mail-notification.schemas.in.h:49 msgid "" "The position of the mail summary popup. Must be \"top-left\", \"top-right\", " "\"bottom-left\" or \"bottom-right\"." msgstr "" "A posição do popup de resumo de correio. Tem de ser \"top-left\", \"top-right" "\", \"bottom-left\" ou \"bottom-right\"." #: data/mail-notification.schemas.in.h:50 msgid "" "The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text\", " "\"both\" or \"both-horiz\"." msgstr "" "O estilo das barras de ferramentas. Tem de ser \"desktop-default\", \"icons" "\", \"text\", \"both\" ou \"both-horiz\"." #: data/mail-notification.schemas.in.h:51 msgid "The width of the edit toolbars dialog in pixels." msgstr "A largura em pixeis do diálogo de edição de barras." #: data/mail-notification.schemas.in.h:52 msgid "The width of the main window in pixels." msgstr "A largura em pixeis da janela principal." #: data/mail-notification.schemas.in.h:53 msgid "The width of the properties dialog in pixels." msgstr "A largura em pixeis do diálogo de propriedades." #: data/mail-notification.schemas.in.h:54 msgid "Toolbars style" msgstr "Estilo das barras de ferramentas" #: data/mail-notification.schemas.in.h:55 msgid "Trusted servers list" msgstr "Lista de servidores confiados" #: data/mail-notification.schemas.in.h:56 msgid "View statusbar" msgstr "Ver barra de estado" #: data/mail-notification.schemas.in.h:57 msgid "View toolbars" msgstr "Ver barras de ferramentas" #: data/mail-notification.schemas.in.h:58 msgid "Whether Mail Notification has already been run or not." msgstr "Se a Notificação de Correio já foi executada ou não." #: data/mail-notification.schemas.in.h:59 msgid "Whether the status icon should blink on errors or not." msgstr "Se o ícone de estado deve piscar em erros ou não." #: data/mail-notification.schemas.in.h:60 msgid "Whether the statusbar should be visible or not." msgstr "Se a barra de estado deve estar visível ou não." #: data/mail-notification.schemas.in.h:61 msgid "Whether the toolbars should be visible or not." msgstr "Se as barras de ferramentas devem estar visíveis ou não." #: data/mail-notification.schemas.in.h:62 msgid "Whether to automatically close the mail summary popup or not." msgstr "" "Se o popup de resumo de correio deve ser automaticamente fechado ou não." #: data/mail-notification.schemas.in.h:63 msgid "Whether to display the mail summary in the status icon tooltip or not." msgstr "" "Se o resumo de correio deve ser mostrado na dica do ícone de estado ou não." #: data/mail-notification.schemas.in.h:64 msgid "Whether to display the mail summary popup when new mail arrives or not." msgstr "" "Se o popup de resumo de correio deve ser mostrado quando chega correio ou " "não." #: data/mail-notification.schemas.in.h:65 msgid "" "Whether to hide previously displayed mail in the mail summary popup or not." msgstr "" "Se o correio previamente mostrado deve ser escondido no popup de resumo de " "correio ou não." #: data/mail-notification.schemas.in.h:66 msgid "" "Whether to prevent the immediate notification error dialog from being " "displayed or not." msgstr "" "Se se evita o diálogo de erro de notificação imediata de ser mostrado ou não." #: data/mail-notification.schemas.in.h:67 msgid "Whether to run a command when all mail is read or not." msgstr "" "Se um comando deverá ser executado quando todo o correio é lido ou não." #: data/mail-notification.schemas.in.h:68 msgid "Whether to run a command when new mail arrives or not." msgstr "Se um comando deverá ser executado quando chega novo correio." #: data/mail-notification.schemas.in.h:69 msgid "Whether to set a mail reader or not." msgstr "Se um leitor de correio deve ser definido ou não." #: data/mail-notification.schemas.in.h:70 msgid "Width of edit toolbars dialog" msgstr "Largura do diálogo de edição de barras" #: data/mail-notification.schemas.in.h:71 msgid "Width of main window" msgstr "Largura da janela principal" #: data/mail-notification.schemas.in.h:72 msgid "Width of properties dialog" msgstr "Largura do diálogo de propriedades" #: data/mail-notification.soundlist.in.h:2 msgid "New Mail" msgstr "Novo Correio" #: src/egg-editable-toolbar.c:536 msgid "_Remove Toolbar" msgstr "_Remover Barra de Ferramentas" #: src/egg-toolbar-editor.c:558 msgid "Separator" msgstr "Separador" #: src/egg-toolbar-editor.c:588 msgid "" "Drag an item onto the toolbars above to add it, from the toolbars in the " "items table to remove it." msgstr "" "Arraste um item para as barras para o adicionar, das barras para a tabela " "de items para o remover" #: src/eggtrayicon.c:109 msgid "Orientation" msgstr "Orientação" #: src/eggtrayicon.c:110 msgid "The orientation of the tray." msgstr "A orientação do tabuleiro." #: src/mn-about-dialog.gob:42 msgid "A Mail Notification Icon" msgstr "Um Ícone de Notificação de Correio" #. translator: replace with your name and email #: src/mn-about-dialog.gob:46 msgid "Jean-Yves Lefort " msgstr "Duarte Henriques " #: src/mn-auth-combo-box.gob:102 src/mn-autodetect-mailbox-properties.gob:39 msgid "autodetect" msgstr "autodetectar" #: src/mn-authenticated-mailbox.gob:85 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "password you have entered is invalid.\n" "\n" "Please re-enter your password." msgstr "" "Notificação de correio foi incapaz de o ligar à caixa de correio %s, " "utilizador %s, possivelmente porque a senha que introduziu é inválida.\n" "\n" "Por favor re-insira a senha." #: src/mn-authenticated-mailbox.gob:86 #, c-format msgid "Enter your password for %s mailbox %s." msgstr "Digite a senha para a caixa de correio %s, utilizador %s." #: src/mn-authenticated-mailbox.gob:137 #, c-format msgid "" "Mail Notification requires a password\n" "\n" "%s" msgstr "" "Notificação de Correio precisa de uma " "senha\n" "\n" "%s" #: src/mn-autodetect-mailbox-properties.gob:70 msgid "_Location:" msgstr "_Localização:" #: src/mn-autodetect-mailbox-properties.gob:76 msgid "_Browse..." msgstr "_Procurar..." #: src/mn-autodetect-mailbox-properties.gob:81 msgid "The URI of the mailbox" msgstr "O URI da caixa de correio" #: src/mn-autodetect-mailbox-properties.gob:123 msgid "Select a File or Folder" msgstr "Escolha um Ficheiro ou Pasta" #: src/mn-blinking-image.gob:32 msgid "Whether the image is blinking or not" msgstr "Se a imagem pisca ou não" #: src/mn-client-session.c:220 #, c-format msgid "resolving %s" msgstr "resolvendo %s" #: src/mn-client-session.c:230 #, c-format msgid "unable to resolve %s: %s" msgstr "incapaz de resolver %s: %s" #: src/mn-client-session.c:267 #, c-format msgid "%s: unsupported address family" msgstr "%s: família de endereços não suportada" #: src/mn-client-session.c:274 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: incapaz de criar socket: %s" #: src/mn-client-session.c:278 #, c-format msgid "connecting to %s (%s) port %i" msgstr "ligando a %s (%s), porto %i" #: src/mn-client-session.c:281 #, c-format msgid "unable to connect: %s" msgstr "incapaz de ligar: %s" #: src/mn-client-session.c:286 msgid "connected successfully" msgstr "ligado com sucesso" #. if reached, we couldn't find a working address #: src/mn-client-session.c:292 #, c-format msgid "unable to connect to %s" msgstr "incapaz de ligar a %s" #: src/mn-client-session.c:308 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "incapaz de inicializar a biblioteca OpenSSL: %s" #: src/mn-client-session.c:316 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "incapaz de criar um objecto SSL/TLS: %s" #: src/mn-client-session.c:322 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "incapaz de definir o descritor de ficheiro SSL/TLS: %s" #: src/mn-client-session.c:328 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "incapaz de efectuar o handshake SSL/TLS: %s" #: src/mn-client-session.c:334 msgid "untrusted server" msgstr "servidor não é confiado" #: src/mn-client-session.c:338 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "está agora activa uma camada SSL/TLS (%s, %s %i-bit)" #: src/mn-client-session.c:385 #, c-format msgid "%s, fingerprint: %s" msgstr "%s, impressão digital: %s" #: src/mn-client-session.c:414 msgid "missing certificate" msgstr "falta o certificado" #: src/mn-client-session.c:440 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "Notificação de correio foi incapaz de confiar em \"%s\" (%s). É possível que " "alguém esteja a interceptar a comunicação para obter a sua informação " "confidencial.\n" "\n" "Deve apenas ligar-se ao servidor se tem a certeza que está ligado a \"%s\". " "Se escolher ligar-se ao servidor, esta mensagem não voltará a aparecer." #: src/mn-client-session.c:457 msgid "Connect to untrusted server?" msgstr "Ligar-se a servidor não confiado?" #: src/mn-client-session.c:462 msgid "Co_nnect" msgstr "_Ligar" #: src/mn-client-session.c:518 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "a resposta \"%s\" não é válida no contexto actual" #: src/mn-client-session.c:544 #, c-format msgid "unable to parse response \"%s\"" msgstr "incapaz de processar resposta \"%s\"" #: src/mn-client-session.c:592 src/mn-client-session.c:599 #, c-format msgid "unable to read from server: %s" msgstr "incapaz de ler do servidor: %s" #: src/mn-client-session.c:597 msgid "unable to read from server: EOF" msgstr "incapaz de ler do servidor: EOF" #: src/mn-client-session.c:609 #, c-format msgid "unable to decode data using SASL: %s" msgstr "incapaz de descodificar dados usando SASL: %s" #: src/mn-client-session.c:709 msgid "received non-ASCII data from server" msgstr "dados não-ASCII recebidos do servidor" #: src/mn-client-session.c:756 #, c-format msgid "unable to encode data using SASL: %s" msgstr "incapaz de encodificar dados usando SASL: %s" #: src/mn-client-session.c:787 src/mn-client-session.c:794 #, c-format msgid "unable to write to server: %s" msgstr "incapaz de escrever para o servidor: %s" #: src/mn-client-session.c:792 msgid "unable to write to server: EOF" msgstr "incapaz de escrever para o servidor: EOF" #: src/mn-client-session.c:824 #, c-format msgid "unable to encode Base64: %s" msgstr "incapaz de encodificar em Base64: %s" #: src/mn-client-session.c:935 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "incapaz de inicializar a biblioteca SASL: %s" #: src/mn-client-session.c:944 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "incapaz de obter o endereço local do socket: %s" #: src/mn-client-session.c:950 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "incapaz de obter endereço remoto do socket: %s" #: src/mn-client-session.c:984 #, c-format msgid "unable to set SASL security properties: %s" msgstr "incapaz de definir as propriedades de segurança SASL: %s" #: src/mn-client-session.c:1008 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "" "incapaz de iniciar a autenticação SASL: SASL perguntou algo que não sabíamos" #: src/mn-client-session.c:1027 #, c-format msgid "unable to start SASL authentication: %s" msgstr "incapaz de iniciar autenticação SASL: %s" #: src/mn-client-session.c:1031 #, c-format msgid "unable to create a SASL connection: %s" msgstr "incapaz de criar uma ligação SASL: %s" #: src/mn-client-session.c:1068 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "SASL perguntou algo que não sabíamos, abortando a autenticação SASL" #: src/mn-client-session.c:1085 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, abortando a autenticação SASL" #. compliance error #: src/mn-client-session.c:1090 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "incapaz de descodificar o input em Base64 do servidor: %s" #: src/mn-client-session.c:1093 msgid "" "the server sent a SASL challenge, but there was a pending initial SASL " "client response" msgstr "" "o servidor enviou um desafio SASL, mas havia uma resposta SASL inicial " "pendente do cliente" #: src/mn-client-session.c:1107 msgid "" "the server did not send a SASL challenge, but there was no pending initial " "SASL client response" msgstr "" "o servidor não enviou um desafio SASL, mas não havia uma resposta SASL " "inicial pendente do cliente" #: src/mn-client-session.c:1132 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "está agora activa uma camada de segurança SASL com factor de força %i" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: src/mn-client-session.c:1137 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "incapaz de obter a propriedade SASL_MAXOUTBUF: %s" #: src/mn-client-session.c:1143 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "aviso: incapaz de obter a propriedade SASL_SSF: %s" #: src/mn-conf.c:238 msgid "A directory creation error has occurred" msgstr "Ocorreu um erro de criação de directoria" #: src/mn-conf.c:239 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "Incapaz de criar directoria \"%s\": %s." #: src/mn-conf.c:313 #, c-format msgid "recursively unsetting %s" msgstr "apagando recursivamente %s" #: src/mn-conf.c:317 msgid "syncing the GConf database" msgstr "sincronizando a base de dados GConf" #: src/mn-conf.c:320 msgid "completed" msgstr "completo" #: src/mn-gmail-mailbox-properties.gob:76 msgid "Your Gmail username" msgstr "O seu nome de utilizador Gmail" #: src/mn-gmail-mailbox-properties.gob:77 msgid "" "Your Gmail password (if left blank, you will be prompted for the password " "when needed)" msgstr "" "A sua senha Gmail (se deixar em branco, a senha será pedida quando " "necessária)" #: src/mn-gmail-mailbox.gob:86 msgid "libsoup has not been compiled with SSL/TLS support" msgstr "libsoup não foi compilada com suporte SSL/TLS" #: src/mn-gmail-mailbox.gob:164 #, c-format msgid "unable to parse URI \"%s\"" msgstr "incapaz de processar URI \"%s\"" #: src/mn-gmail-mailbox.gob:217 msgid "received non-UTF-8 data from server" msgstr "dados não-UTF-8 recebidos do servidor" #: src/mn-gmail-mailbox.gob:224 #, c-format msgid "unable to transfer data: %s" msgstr "incapaz de transferir dados: %s" #: src/mn-gmail-mailbox.gob:345 msgid "logging in" msgstr "ligando-se" #: src/mn-gmail-mailbox.gob:423 msgid "login failed" msgstr "login falhou" #: src/mn-gmail-mailbox.gob:496 msgid "searching for unread mail" msgstr "a procurar correio não lido" #: src/mn-gmail-mailbox.gob:527 msgid "unable to initialize the ICU library" msgstr "incapaz de inicializar a biblioteca ICU" #: src/mn-gmail-mailbox.gob:554 msgid "unable to parse Gmail data" msgstr "incapaz de processar dados Gmail" #: src/mn-gmail-mailbox.gob:891 #, c-format msgid "unable to open calendar: %s" msgstr "incapaz de abrir calendário: %s" #: src/mn-gmail-mailbox.gob:899 #, c-format msgid "unable to set calendar time: %s" msgstr "incapaz de definir tempo de calendário: %s" #: src/mn-gmail-mailbox.gob:968 #, c-format msgid "unable to get calendar time: %s" msgstr "incapaz de obter tempo de calendário: %s" #: src/mn-gmime-stream-vfs.gob:49 #, c-format msgid "unable to read %s: %s" msgstr "incapaz de ler %s: %s" #: src/mn-gmime-stream-vfs.gob:51 #, c-format msgid "unable to write to %s: %s" msgstr "incapaz de escrever para %s: %s" #: src/mn-gmime-stream-vfs.gob:53 #, c-format msgid "unable to seek in %s: %s" msgstr "incapaz de procurar em %s: %s" #: src/mn-gmime-stream-vfs.gob:55 #, c-format msgid "unable to tell position of %s: %s" msgstr "incapaz de dizer a posição em %s: %s" #: src/mn-gmime-stream-vfs.gob:57 #, c-format msgid "unable to close %s: %s" msgstr "incapaz de fechar %s: %s" #: src/mn-imap-mailbox-properties.gob:95 msgid "Mailbox:" msgstr "Caixa de Correio:" #: src/mn-imap-mailbox-properties.gob:99 msgid "in_box" msgstr "caixa de _entrada" #: src/mn-imap-mailbox-properties.gob:110 msgid "oth_er:" msgstr "_outros" #: src/mn-imap-mailbox-properties.gob:122 msgid "U_se idle mode if possible" msgstr "U_sar modo inactivo se possível" #: src/mn-imap-mailbox-properties.gob:129 msgid "The hostname or IP address of the IMAP server" msgstr "O hostname ou endereço IP do servidor IMAP" #: src/mn-imap-mailbox-properties.gob:130 msgid "Your username on the IMAP server" msgstr "O seu nome de utilizador no servidor IMAP" #: src/mn-imap-mailbox-properties.gob:131 msgid "" "Your password on the IMAP server (if left blank, you will be prompted for " "the password when needed)" msgstr "" "A sua senha no servidor IMAP (se deixar em branco, a senha será pedida " "quando necessária)" #: src/mn-imap-mailbox-properties.gob:132 #: src/mn-imap-mailbox-properties.gob:133 msgid "The port number of the IMAP server" msgstr "O número do porto do servidor IMAP" #: src/mn-imap-mailbox-properties.gob:134 msgid "The mailbox name" msgstr "O nome da caixa de correio" #: src/mn-imap-mailbox-properties.gob:135 msgid "If possible, whether to use idle mode or not" msgstr "Se possível, usar modo inactivo ou não" #: src/mn-imap-mailbox.gob:156 src/mn-pop3-mailbox.gob:135 msgid "SSL/TLS support has not been compiled in" msgstr "suporte SSL/TLS não foi compilado" #: src/mn-imap-mailbox.gob:236 msgid "server did not send capabilities" msgstr "servidor não enviou habilidades" #: src/mn-imap-mailbox.gob:408 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "servidor anunciou LOGINDISABLED, não usando a autenticação LOGIN" #: src/mn-imap-mailbox.gob:409 msgid "unable to login" msgstr "incapaz de ligar" #. compliance error #: src/mn-imap-mailbox.gob:542 msgid "server did not send search results" msgstr "servidor não enviou resultados da procura" #. compliance error #: src/mn-imap-mailbox.gob:617 msgid "server did not send all the messages we requested" msgstr "servidor não enviou todas as mensagens pedidas" #: src/mn-imap-mailbox.gob:671 msgid "unable to fetch message" msgstr "incapaz de obter mensagem" #: src/mn-imap-mailbox.gob:999 src/mn-pop3-mailbox.gob:907 msgid "unknown server error" msgstr "erro de servidor desconhecido" #: src/mn-imap-mailbox.gob:1101 src/mn-pop3-mailbox.gob:219 msgid "server does not support in-band SSL/TLS" msgstr "servidor não suporta SSL/TLS in-band" #: src/mn-imap-mailbox.gob:1120 src/mn-pop3-mailbox.gob:817 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" "foi escolhido um mecanismo de autenticação SASL, mas o suporte SASL não foi " "compilado" #: src/mn-imap-mailbox.gob:1130 src/mn-pop3-mailbox.gob:837 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "mecanismo de autenticação desconhecido \"%s\"" #: src/mn-imap-mailbox.gob:1153 msgid "falling back to IMAP LOGIN authentication" msgstr "recorrendo à autenticação IMAP LOGIN" #: src/mn-imap-mailbox.gob:1165 src/mn-pop3-mailbox.gob:881 msgid "authentication failed" msgstr "autenticação falhou" #: src/mn-mail-icon.gob:91 msgid "Main _Window" msgstr "_Janela Principal" #: src/mn-mail-icon.gob:92 src/mn-main-window.c:101 msgid "_Mail Reader" msgstr "_Leitor de correio" #: src/mn-mail-icon.gob:93 src/mn-main-window.c:109 msgid "_Update" msgstr "_Actualizar" #: src/mn-mail-icon.gob:99 msgid "R_emove From Notification Area" msgstr "_Remover da área de notificação" #: src/mn-mailbox-properties-dialog.c:156 msgid "Add a Mailbox" msgstr "Acrescentar uma Caixa de Correio" #: src/mn-mailbox-properties-dialog.c:325 #, c-format msgid "%s Properties" msgstr "Propriedades de %s" #: src/mn-mailbox-properties-util.c:77 ui/authentication.glade.h:3 msgid "_Username:" msgstr "Nome de _Utilizador:" #: src/mn-mailbox-properties-util.c:87 ui/authentication.glade.h:2 msgid "_Password:" msgstr "_Senha:" #: src/mn-mailbox-properties-util.c:154 msgid "Connection type:" msgstr "Tipo de ligação:" #: src/mn-mailbox-properties-util.c:161 msgid "Port:" msgstr "Porto:" #: src/mn-mailbox-properties-util.c:189 msgid "_Authentication mechanism:" msgstr "Mecanismo de _Autenticação:" #: src/mn-mailbox-properties.c:63 msgid "Label" msgstr "Rótulo" #: src/mn-mailbox-properties.c:64 msgid "The marked up text to show in the type combo box" msgstr "O texto que aparece na combo box de tipo" #: src/mn-mailbox-properties.c:69 msgid "Size group" msgstr "Grupo de tamanho" #: src/mn-mailbox-properties.c:70 msgid "A GtkSizeGroup for aligning control labels" msgstr "Um GtkSizeGroup para alinhar rótulos de controlo" #: src/mn-mailbox-properties.c:75 msgid "Complete" msgstr "Completo" #: src/mn-mailbox-properties.c:76 msgid "Whether the properties are completely filled or not" msgstr "Se as propriedades estão completamente preenchidas" #: src/mn-mailbox-view.gob:271 src/mn-message-view.gob:312 msgid "Mailbox" msgstr "Caixa de Correio" #. format column #: src/mn-mailbox-view.gob:287 msgid "Format" msgstr "Formato" #: src/mn-mailbox-view.gob:577 msgid "Unable to add mailbox" msgstr "Incapaz de adicionar caixa de correio" #: src/mn-mailbox-view.gob:577 msgid "The mailbox is already in the list." msgstr "A caixa de correio já está na lista." #: src/mn-mailbox.gob:131 msgid "The mailbox URI" msgstr "O URI da caixa de correio" #: src/mn-mailbox.gob:142 msgid "The mailbox human-readable name" msgstr "O nome legível da caixa de correio" #: src/mn-mailbox.gob:146 msgid "Whether the mailbox has to be polled or not" msgstr "Se a caixa de correio tem de ser constantemente verificada ou não" #: src/mn-mailbox.gob:152 msgid "The list of new and unread MNMessage objects" msgstr "A lista de objectos MNMessage novos e não lidos" #: src/mn-mailbox.gob:206 msgid "The mailbox error, if any" msgstr "O erro da caixa de correio, se houver" #: src/mn-mailbox.gob:305 msgid "does not exist" msgstr "não existe" #: src/mn-mailbox.gob:337 msgid "unknown format" msgstr "formato desconhecido" #: src/mn-mailbox.gob:403 #, c-format msgid "unable to enable immediate notification: %s" msgstr "incapaz de activar notificação imediata: %s" #: src/mn-mailbox.gob:421 #, c-format msgid "" "As a fallback, they will be checked every %i second (this delay is " "configurable from the Properties Dialog)." msgid_plural "" "As a fallback, they will be checked every %i seconds (this delay is " "configurable from the Properties Dialog)." msgstr[0] "" "Como medida de recurso, serão verificadas a cada %i segundo (este atraso é " "configurável no Diálogo de Propriedades)." msgstr[1] "" "Como medida de recurso, serão verificadas a cada %i segundos (este atraso é " "configurável no Diálogo de Propriedades)." #: src/mn-mailbox.gob:432 #, c-format msgid "" "As a fallback, they will be checked every %i minute (this delay is " "configurable from the Properties Dialog)." msgid_plural "" "As a fallback, they will be checked every %i minutes (this delay is " "configurable from the Properties Dialog)." msgstr[0] "" "Como medida de recurso, serão verificadas a cada %i minuto (este atraso é " "configurável no Diálogo de Propriedades)." msgstr[1] "" "Como medida de recurso, serão verificadas a cada %i minutos (este atraso é " "configurável no Diálogo de Propriedades)." #: src/mn-mailbox.gob:443 #, c-format msgid "" "As a fallback, they will be checked approximately every %i minute (this " "delay is configurable from the Properties Dialog)." msgid_plural "" "As a fallback, they will be checked approximately every %i minutes (this " "delay is configurable from the Properties Dialog)." msgstr[0] "" "Como medida de recurso, serão verificadas aproximadamente cada %i minuto " "(este atraso é configurável no Diálogo de Propriedades)." msgstr[1] "" "Como medida de recurso, serão verificadas aproximadamente cada %i minutos " "(este atraso é configurável no Diálogo de Propriedades)." #: src/mn-mailbox.gob:459 msgid "A monitoring error has occurred" msgstr "Ocorreu um erro de monitorização" #: src/mn-mailbox.gob:460 #, c-format msgid "" "Mail Notification was unable to enable immediate notification for one or " "more mailboxes. %s" msgstr "" "A Notificação de Correio foi incapaz de activar notificação imediata para " "uma ou mais caixas de correio. %s" #: src/mn-mailboxes.gob:130 msgid "Whether one or more of the mailboxes has to be polled" msgstr "Se uma ou mais caixas de correio têm de ser manualmente verificadas" #: src/mn-mailboxes.gob:260 #, c-format msgid "%s is unsupported: %s" msgstr "%s não é suportado: %s" #: src/mn-mailboxes.gob:290 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "%s tem %i mensagem nova" msgstr[1] "%s tem %i mensagens novas" #: src/mn-mailboxes.gob:307 #, c-format msgid "%s reported an error: %s" msgstr "%s relatou um erro: %s" #: src/mn-maildir-mailbox.gob:112 #, c-format msgid "unable to open folder \"new\": %s" msgstr "incapaz de abrir pasta \"new\": %s" #: src/mn-maildir-mailbox.gob:141 #, c-format msgid "unable to close folder \"new\": %s" msgstr "incapaz de fechar pasta \"new\": %s" #: src/mn-maildir-mailbox.gob:144 #, c-format msgid "error while reading folder \"new\": %s" msgstr "erro ao ler pasta \"new\": %s" #. Toplevel #: src/mn-main-window.c:92 msgid "_Mail" msgstr "_Correio" #: src/mn-main-window.c:93 msgid "_Edit" msgstr "_Editar" #: src/mn-main-window.c:94 msgid "_View" msgstr "_Ver" #: src/mn-main-window.c:95 msgid "_Help" msgstr "_Ajuda" #: src/mn-main-window.c:103 msgid "Launch the mail reader" msgstr "Lançar o leitor de correio" #. Reload #: src/mn-main-window.c:111 src/mn-main.c:230 msgid "Update the mail status" msgstr "Actualizar o estado do correio" #: src/mn-main-window.c:117 msgid "_Close" msgstr "_Fechar" #: src/mn-main-window.c:119 msgid "Close this window" msgstr "Fechar esta janela" #: src/mn-main-window.c:125 msgid "_Quit" msgstr "_Sair" #: src/mn-main-window.c:127 src/mn-main.c:257 msgid "Quit Mail Notification" msgstr "Sair da Notificação de Correio" #: src/mn-main-window.c:135 src/mn-main-window.c:183 msgid "_Toolbars" msgstr "_Barras de Ferramentas" #: src/mn-main-window.c:137 msgid "Customize the toolbars" msgstr "Personalizar as barras" #: src/mn-main-window.c:143 msgid "_Preferences" msgstr "_Preferências" #: src/mn-main-window.c:153 msgid "Toolbars Styl_e" msgstr "_Estilo das Barras" #: src/mn-main-window.c:155 msgid "Customize the toolbars style" msgstr "Personalizar o estilo das barras" #: src/mn-main-window.c:163 msgid "_Contents" msgstr "_Conteúdo" #: src/mn-main-window.c:165 msgid "Display help" msgstr "Mostrar Ajuda" #: src/mn-main-window.c:171 msgid "_About" msgstr "_Sobre" #: src/mn-main-window.c:173 msgid "Display credits" msgstr "Mostrar créditos" #: src/mn-main-window.c:185 msgid "Show or hide the toolbars" msgstr "mostrar ou esconder as barras de ferramentas" #: src/mn-main-window.c:192 msgid "_Statusbar" msgstr "_Barra de estado" #: src/mn-main-window.c:194 msgid "Show or hide the statusbar" msgstr "Mostrar ou esconder a barra de estado" #: src/mn-main-window.c:205 msgid "_Desktop Default" msgstr "_Omissão do Ambiente" #: src/mn-main-window.c:207 msgid "Set the toolbars style to the desktop default setting" msgstr "Definir o estilo de barras de ferramentas para a definição por omissão do ambiente de trabalho" #: src/mn-main-window.c:213 msgid "I_cons Only" msgstr "Apenas Ì_cones" #: src/mn-main-window.c:215 msgid "Only display the toolbars icons" msgstr "Mostrar apenas ícones da barra de ferramentas" #: src/mn-main-window.c:221 msgid "_Text Only" msgstr "apenas _Texto" #: src/mn-main-window.c:223 msgid "Only display the toolbars text" msgstr "Mostrar apenas o testo da barra de ferramentas" #: src/mn-main-window.c:229 msgid "Text Belo_w Icons" msgstr "Texto _sob Icones" #: src/mn-main-window.c:231 msgid "Display the toolbars text below the icons" msgstr "Mostrar o texto das barras sob os ícones" #: src/mn-main-window.c:237 msgid "Text Be_side Icons" msgstr "Texto ao lado dos Icones" #: src/mn-main-window.c:239 msgid "Display the toolbars text beside the icons" msgstr "Mostrar o texto das barras de ferramentas ao lado dos ícones" #: src/mn-main-window.c:363 #, c-format msgid "unable to load menus.xml: %s" msgstr "incapaz de varregar menus.xml: %s" #: src/mn-main-window.c:397 msgid "Help messages" msgstr "Mensagens de Ajuda" #: src/mn-main-window.c:398 msgid "Count messages" msgstr "Mensagens de contagem" #: src/mn-main-window.c:502 #, c-format msgid "%i new message" msgid_plural "%i new messages" msgstr[0] "%i mensagem nova" msgstr[1] "%i mensagens novas" #: src/mn-main-window.c:539 msgid "unable to load toolbars.xml" msgstr "incapaz de carregar barras de ferramentas.xml" #: src/mn-main.c:99 #, c-format msgid "Compiled-in mailbox backends: %s\n" msgstr "Backends mailbox compilados: %s\n" #: src/mn-main.c:113 msgid "Gmail timestamps" msgstr "timestamps do Gmail" #: src/mn-main.c:116 #, c-format msgid "Compiled-in features: %s\n" msgstr "Características compiladas: %s\n" #: src/mn-main.c:176 msgid "Enable informational output" msgstr "Activar output informacional" #: src/mn-main.c:185 msgid "List the compiled-in features" msgstr "Listar características compiladas" #: src/mn-main.c:194 msgid "Display the main window" msgstr "Mostrar a janela principal" #: src/mn-main.c:203 msgid "Display the properties dialog" msgstr "Mostrar o diálogo de propriedades" #: src/mn-main.c:212 msgid "Display the about dialog" msgstr "Mostrar o diálogo Sobre" #: src/mn-main.c:221 msgid "Close the mail summary popup" msgstr "Fechar o popup de resumo de correio" #: src/mn-main.c:239 msgid "Report the mail status" msgstr "Relatar o estado do correio" #: src/mn-main.c:248 msgid "Unset obsolete GConf configuration" msgstr "Apagar configurações GConf obsoletas" #. #. * We can't use mn_error_dialog() because gtk_init() has not been #. * called yet. #. #: src/mn-main.c:284 msgid "multi-threading is not available" msgstr "multi-threading não está disponível" #: src/mn-main.c:338 msgid "" "Bonobo could not locate the automation object. Please check your Mail " "Notification installation." msgstr "" "Bonobo não conseguiu encontrar o objecto de automação. Por favor verifique a " "sua instalação de Notificação de Correio." #: src/mn-main.c:344 msgid "quitting Mail Notification" msgstr "saindo da Notificação de Correio" #: src/mn-main.c:348 msgid "Mail Notification is not running" msgstr "Notificação de Correio não está a ser executado" #: src/mn-main.c:355 msgid "Unable to initialize the GnomeVFS library." msgstr "Incapaz de inicializar a biblioteca GnomeVFS." #: src/mn-main.c:391 msgid "updating the mail status" msgstr "actualizando o estado do correio" #: src/mn-main.c:409 msgid "Mail Notification is already running" msgstr "Notificação de Correio já está a ser executado" #: src/mn-main.c:417 msgid "" "Bonobo could not locate the GNOME_MailNotification_Automation.server file. " "Please check your Mail Notification installation." msgstr "" "Bonobo não conseguiu encontrar o ficheiro GNOME_MailNotification_Automation." "server. Por favor verifique a sua instalação da Notificação de Correio." #: src/mn-main.c:421 msgid "" "Bonobo was unable to register the automation server. Please check your Mail " "Notification installation." msgstr "" "Bonobo foi incapaz de registar o servidor de automação. Por favor verifique " "a sua instalação da Notificação de Correio." #: src/mn-mbox-mailbox.gob:184 #, c-format msgid "unable to open mailbox: %s" msgstr "erro ao abrir a caixa de correio: %s" #: src/mn-message-mime.c:105 msgid "unable to parse MIME message" msgstr "incapaz de processar mensagem MIME" #: src/mn-message-view.gob:81 msgid "You have no new mail." msgstr "Não tem correio novo." #: src/mn-message-view.gob:321 msgid "Unreadable message" msgstr "Mensagem ilegível" #: src/mn-message-view.gob:329 msgid "From" msgstr "De" #: src/mn-message-view.gob:337 msgid "Subject" msgstr "Assunto" #: src/mn-message-view.gob:348 msgid "Sent" msgstr "Enviado" #: src/mn-message.gob:101 msgid "Unknown" msgstr "Desconhecido" #: src/mn-message.gob:126 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "%i segundo atrás" msgstr[1] "%i segundos atrás" #: src/mn-message.gob:130 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "há cerca de %i minuto atrás" msgstr[1] "há cerca de %i minutos atrás" #: src/mn-message.gob:135 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "há cerca de %i hora atrás" msgstr[1] "há cerca de %i horas atrás" #: src/mn-message.gob:140 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "há cerca de %i dia atrás" msgstr[1] "há cerca de %i dias atrás" #: src/mn-message.gob:145 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "há cerca de %i semana atrás" msgstr[1] "há cerca de %i semanas atrás" #: src/mn-mh-mailbox.gob:147 #, c-format msgid "error while reading .mh_sequences: %s" msgstr "erro ao ler .mh_sequences: %s" #: src/mn-mh-mailbox.gob:157 #, c-format msgid "unable to open .mh_sequences: %s" msgstr "erro ao abrir .mh_sequences: %s" #: src/mn-pending-mailbox.gob:35 msgid "detecting" msgstr "detectando" #: src/mn-pi-mailbox-properties.gob:75 msgid "_Hostname:" msgstr "_Hostname:" #: src/mn-pi-mailbox-properties.gob:93 msgid "_Details" msgstr "_Detalhes" #: src/mn-pi-mailbox-properties.gob:105 msgid "sta_ndard" msgstr "sta_ndard" #: src/mn-pi-mailbox-properties.gob:115 msgid "_in-band SSL/TLS" msgstr "SSL/TLS _in-band" #: src/mn-pi-mailbox-properties.gob:125 msgid "SSL/TLS on sepa_rate port" msgstr "SSL/TLS num porto sepa_rado" #: src/mn-pop3-mailbox-properties.gob:86 msgid "The hostname or IP address of the POP3 server" msgstr "O hostname ou endereço IP do servidor POP3" #: src/mn-pop3-mailbox-properties.gob:87 msgid "Your username on the POP3 server" msgstr "O seu nome de utilizador no servidor POP3" #: src/mn-pop3-mailbox-properties.gob:88 msgid "" "Your password on the POP3 server (if left blank, you will be prompted for " "the password when needed)" msgstr "" "A sua senha no servidor POP3 (se deixar em branco, a senha será pedida " "quando necessária)" #: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90 msgid "The port number of the POP3 server" msgstr "O número do porto do servidor POP3" #: src/mn-pop3-mailbox.gob:265 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "argumentos inválidos para a habilidade LOGIN-DELAY" #: src/mn-pop3-mailbox.gob:568 msgid "unknown error" msgstr "erro desconhecido" #: src/mn-pop3-mailbox.gob:655 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "honrando LOGIN-DELAY, dormindo por %i segundo" msgstr[1] "honrando LOGIN-DELAY, dormindo por %i segundos" #: src/mn-pop3-mailbox.gob:829 msgid "server does not support APOP authentication" msgstr "servidor não suporta autenticação APOP" #: src/mn-pop3-mailbox.gob:864 msgid "falling back to APOP authentication" msgstr "recorrendo a autenticação APOP" #: src/mn-pop3-mailbox.gob:869 msgid "falling back to USER/PASS authentication" msgstr "recorrendo a autenticação USER/PASS" #: src/mn-properties-dialog.c:218 msgid "top left" msgstr "topo esquerdo" #: src/mn-properties-dialog.c:219 msgid "top right" msgstr "topo direito" #: src/mn-properties-dialog.c:220 msgid "bottom left" msgstr "fundo esquerdo" #: src/mn-properties-dialog.c:221 msgid "bottom right" msgstr "fundo direito" #: src/mn-properties-dialog.c:323 msgid "No mailbox selected." msgstr "Nenhuma caixa de correio seleccionada." #: src/mn-properties-dialog.c:328 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "%i caixa de correio seleccionada." msgstr[1] "%i caixas de correio seleccionadas." #: src/mn-shell.gob:96 msgid "You have new mail." msgstr "Tem novo correio." #: src/mn-shell.gob:361 msgid "Mailboxes Having New Mail" msgstr "Caixas de Correio Com Novo Correio" #: src/mn-shell.gob:382 msgid "Errors" msgstr "Erros" #: src/mn-shell.gob:403 msgid "Unsupported Mailboxes" msgstr "Caixas de Correio Não Suportadas" #: src/mn-shell.gob:418 msgid "Mail Summary" msgstr "Resumo de Correio" #: src/mn-soup.c:140 #, c-format msgid "unable to parse proxy URI \"%s\"" msgstr "incapaz de processar URI de proxy \"%s\"" #: src/mn-ssl.c:79 msgid "unknown SSL/TLS error" msgstr "erro SSL/TLS desconhecido" #: src/mn-stock.c:28 msgid "Select _All" msgstr "Seleccionar _Todas" #: src/mn-stock.c:29 msgid "Leave Fullscreen" msgstr "Sair de Ecrã Inteiro" #: src/mn-sylpheed-mailbox.gob:113 #, c-format msgid "unable to open folder: %s" msgstr "incapaz de abrir pasta: %s" #: src/mn-sylpheed-mailbox.gob:147 #, c-format msgid "unable to close folder: %s" msgstr "incapaz de fechar pasta: %s" #: src/mn-sylpheed-mailbox.gob:150 #, c-format msgid "error while reading folder: %s" msgstr "erro ao ler pasta: %s" #: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:411 msgid "System Mailbox" msgstr "Caixa de Correio de Sistema" #: src/mn-system-mailbox-properties.gob:57 #, c-format msgid "Your system mailbox (%s) will be used." msgstr "" "Será usada a sua caixa de correio de sistema (%s)." #: src/mn-system-mailbox-properties.gob:64 msgid "" "The location of your system mailbox could not be detected. Please set the " "MAIL environment variable." msgstr "" "A localização da sua caixa de correi ode sistema não pode ser detectada. Por " "favor defina a variável de ambiente MAIL." #: src/mn-unsupported-mailbox.gob:33 msgid "The reason why the mailbox is unsupported" msgstr "A razão pela qual a caixa de correio não é suportada" #: src/mn-unsupported-mailbox.gob:40 msgid "unsupported" msgstr "não suportado" #: src/mn-util.c:245 #, c-format msgid "error loading image: %s" msgstr "erro ao carregar imagem: %s" #: src/mn-util.c:276 #, c-format msgid "widget \"%s\" not found in interface \"%s\"" msgstr "widget \"%s\" não foi encontrada na interface \"%s\"" #: src/mn-util.c:390 msgid "received an invalid URI list" msgstr "recebida uma lista de URIs inválida" #: src/mn-util.c:426 msgid "received an invalid Mozilla URL" msgstr "recebido um URL Mozilla inválido" #: src/mn-util.c:519 msgid "Unable to display help" msgstr "Incapaz de mostrar ajuda" #: src/mn-util.c:533 #, c-format msgid "Unable to create a thread: %s." msgstr "Incapaz de criar uma thread: %s." #: src/mn-util.c:626 msgid "_Do not show this message again" msgstr "_Não mostrar esta mensagem de novo" #: src/mn-util.c:710 msgid "A fatal error has occurred in Mail Notification" msgstr "Ocorreu um erro fatal na Notificação de Correio" #: src/mn-util.c:725 #, c-format msgid "unable to get current time: %s" msgstr "incapaz de obter tempo actual: %s" #: src/mn-util.c:787 #, c-format msgid "invalid signal specification \"%s\"" msgstr "especificação de sinal inválida \"%s\"" #: src/mn-util.c:826 msgid "A command error has occurred in Mail Notification" msgstr "Ocorreu um erro de comando na Notificação de Correio" #: src/mn-util.c:827 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "incapaz de executar \"%s\": %s." #: ui/authentication.glade.h:1 msgid "_Authenticate" msgstr "_Autenticar" #: ui/edit-toolbars.glade.h:1 msgid "Edit Toolbars" msgstr "Editar Barras de Ferramentas" #: ui/edit-toolbars.glade.h:2 msgid "_Add a New Toolbar" msgstr "_Adicionar Nova Barra" #: ui/edit-toolbars.glade.h:3 msgid "_Use Default" msgstr "_Usar Omissão" #: ui/mailbox-properties.glade.h:1 msgid "_Mailbox type:" msgstr "_Tipo de caixa de correio:" #: ui/properties.glade.h:1 msgid "Commands" msgstr "Comandos" #: ui/properties.glade.h:2 msgid "Double-click Action" msgstr "Acção de Duplo-Clique" #: ui/properties.glade.h:3 msgid "Fonts" msgstr "Fontes" #: ui/properties.glade.h:4 msgid "General" msgstr "Geral" #: ui/properties.glade.h:5 msgid "Mailbox List" msgstr "Lista de Caixas de Correio" #: ui/properties.glade.h:6 msgid "Position" msgstr "Posição" #: ui/properties.glade.h:7 msgid "Co_ntents:" msgstr "Co_nteúdos:" #: ui/properties.glade.h:8 msgid "Dis_play mail summary in tooltip" msgstr "_Mostrar o resumo de correio numa dica" #: ui/properties.glade.h:9 msgid "General" msgstr "Geral" #: ui/properties.glade.h:10 msgid "Hori_zontal offset:" msgstr "Intervalo Hori_zontal:" #: ui/properties.glade.h:11 msgid "Mail Notification Properties" msgstr "Propriedades de Notificação de Correio" #: ui/properties.glade.h:12 msgid "Mail Summary Popup" msgstr "Popup de Resumo de Correio" #: ui/properties.glade.h:13 msgid "Mailboxes" msgstr "Caixas de Correio" #: ui/properties.glade.h:14 msgid "Only display _recent mail" msgstr "Mostrar apenas correio _recente" #: ui/properties.glade.h:15 msgid "P_osition:" msgstr "_Posição:" #: ui/properties.glade.h:16 msgid "The amount of time to wait before closing the mail summary popup" msgstr "" "A quantidade de tempo a esperar antes de fechar o popup de resumo de correio" #: ui/properties.glade.h:17 msgid "The amount of time to wait between mail checks" msgstr "A quantidade de tempo a esperar entre verificações de correio" #: ui/properties.glade.h:18 msgid "The command to run to launch the mail reader" msgstr "O comando a executar para lançar o leitor de correio" #: ui/properties.glade.h:19 msgid "The command to run when all mail is read" msgstr "O comando a executar quando todo o correio está lido" #: ui/properties.glade.h:20 msgid "The command to run when new mail arrives" msgstr "O comando a executar quando chega novo correio" #: ui/properties.glade.h:21 msgid "" "The number of pixels to leave between the left or right side of the screen " "and the mail summary popup" msgstr "" "O número de pixeis a deixar entre o extremo esquerdo ou direito do ecran e o " "popup de resumo de correio" #: ui/properties.glade.h:22 msgid "" "The number of pixels to leave between the top or bottom side of the screen " "and the mail summary popup" msgstr "" "O número de pixeis a deixar entre o topo ou fundo do ecran e o popup de " "resumo de correio" #: ui/properties.glade.h:23 msgid "Use these _fonts:" msgstr "Usar estas _fontes:" #: ui/properties.glade.h:24 msgid "When _all mail is read:" msgstr "Quando _todo o correio está lido:" #: ui/properties.glade.h:25 msgid "When _new mail arrives:" msgstr "Quando chega _novo correio:" #: ui/properties.glade.h:26 msgid "Whether the status icon should blink on errors or not" msgstr "Se o ícone de estado deve piscar em erros ou não" #: ui/properties.glade.h:27 msgid "Whether to automatically close the mail summary popup or not" msgstr "" "Se o popup de resumo de correio deve ser automaticamente fechado ou não" #: ui/properties.glade.h:28 msgid "Whether to display the mail summary in the status icon tooltip or not" msgstr "" "Se o resumo de correio deve ser mostrado na dica do ícone de estado ou não" #: ui/properties.glade.h:29 msgid "Whether to display the mail summary popup when new mail arrives or not" msgstr "" "Se o popup de resumo de correio deve ser mostrado quando chega correio ou não" #: ui/properties.glade.h:30 msgid "Whether to hide previously displayed mail or not" msgstr "Se o correio mostrado previamente deve ser escondido ou não" #: ui/properties.glade.h:31 msgid "Whether to run a command when all mail is read or not" msgstr "Se deve ser executado um comando quando todo o correio está lido" #: ui/properties.glade.h:32 msgid "Whether to run a command when new mail arrives or not" msgstr "Se deve ser executado um comando quando chega novo correio" #: ui/properties.glade.h:33 msgid "Whether to set a mail reader or not" msgstr "Se deve ser definido um leitor de correio ou não" #: ui/properties.glade.h:34 msgid "" "Whether to start Mail Notification when you log into your GNOME session or " "not" msgstr "" "Se a Notificação de Correio deve ser iniciada quando faz se liga à sessão " "GNOME ou não" #: ui/properties.glade.h:35 msgid "_Automatically close after:" msgstr "Fechar _Automáticamente após:" #: ui/properties.glade.h:36 msgid "_Blink on errors" msgstr "_Piscar em erros" #: ui/properties.glade.h:37 msgid "_Delay between mail checks:" msgstr "_Intervalo entre verificações de correio:" #: ui/properties.glade.h:38 msgid "_Display the main window" msgstr "_Mostrar a janela principal" #: ui/properties.glade.h:39 msgid "_Enable mail summary popup" msgstr "_Activar popup de resumo de correio" #: ui/properties.glade.h:40 msgid "_Launch the mail reader" msgstr "_Lançar o leitor de correio" #: ui/properties.glade.h:41 msgid "_Mail reader:" msgstr "_Leitor de correio:" #: ui/properties.glade.h:42 msgid "_Start Mail Notification on GNOME login" msgstr "_Iniciar Notificação de Correio no login GNOME" #: ui/properties.glade.h:43 msgid "_Title:" msgstr "_Título:" #: ui/properties.glade.h:44 msgid "_Update the mail status" msgstr "_Actualizar o estado do correio" #: ui/properties.glade.h:45 msgid "_Use fonts from theme" msgstr "_Usar fontes do tema" #: ui/properties.glade.h:46 msgid "_Vertical offset:" msgstr "Intervalo _vertical:" #: ui/properties.glade.h:47 msgid "minutes" msgstr "minutos" #: ui/properties.glade.h:48 msgid "pixels" msgstr "pixeis" #: ui/properties.glade.h:49 msgid "seconds" msgstr "segundos" #: ui/summary-popup.glade.h:1 msgid "Mail Summary" msgstr "Resumo de Correio" #: ui/welcome.glade.h:1 msgid "" "First startup\n" "\n" "Mail Notification has been loaded successfully.\n" "\n" "Since this is the first time you run Mail Notification, you need to " "configure it.\n" "\n" "Note: this message will not be shown anymore. To configure Mail Notification " "again, choose ApplicationsDesktop PreferencesMail Notification (or on some systems Applications → Preferences → " "More Preferences → Mail Notification)." msgstr "" "Primeira Utilização\n" "\n" "A Notificação de Correio foi carregada com sucesso.\n" "\n" "Como esta é a primeira vez que executa a Notificação de Correio, precisa " "de a configurar.\n" "\n" "Nota: esta mensagem não será mostrada de novo. Para configurar a Notificação " "de Correio outra vez, escolha Aplicações → " "Preferências do Ambiente de TrabalhoNotificação de Correio (ou em alguns sistemas Aplicações → Preferências → Mais Preferências → Notificação " "de Correio)." #: ui/welcome.glade.h:8 msgid "_Configure Mail Notification" msgstr "_Configurar Notificação de Correio" #: ui/welcome.glade.h:9 msgid "_Skip configuration" msgstr "_Saltar configuração" #~ msgid "Use a custom font for the contents of the mail summary popup" #~ msgstr "" #~ "Usar uma fonte personalizada para o conteúdo do popup de resumo de correio" #~ msgid "Use a custom font for the title of the mail summary popup" #~ msgstr "" #~ "Usar uma fonte personalizada para o título do popup de resumo de correio" #~ msgid "" #~ "Whether to use a custom font for the contents of the mail summary popup " #~ "or not." #~ msgstr "" #~ "Se deve ser usada uma fonte personalizada para o conteúdo do popup de " #~ "resumo de correio ou não." #~ msgid "" #~ "Whether to use a custom font for the title of the mail summary popup or " #~ "not." #~ msgstr "" #~ "Se deve ser usada uma fonte personalizada para o título do popup de " #~ "resumo de correio ou não." #~ msgid "server did not send status" #~ msgstr "servidor não enviou estado" #~ msgid "_Launch Mail Reader" #~ msgstr "_Lançar Leitor de Correio" #~ msgid "Whether the mailbox has new mail or not" #~ msgstr "Se a caixa de correio tem novo correio" #~ msgid "%s has no new mail" #~ msgstr "%s não tem correio novo" #~ msgid "Display the mail summary dialog" #~ msgstr "Mostrar o diálogo de resumo de correio" #~ msgid "error while reading mailbox: %s" #~ msgstr "erro ao ler a caixa de correio: %s" #~ msgid "_Mail Summary" #~ msgstr "_Resumo de Correio" #~ msgid "*" #~ msgstr "*" #~ msgid " " #~ msgstr " " #~ msgid "" #~ "Whether to use a custom font for the contents of the mail summary popup " #~ "or not" #~ msgstr "" #~ "Se deve ser usada uma fonte personalizada para o conteúdo do popup de " #~ "resumo de correio ou não" #~ msgid "" #~ "Whether to use a custom font for the title of the mail summary popup or " #~ "not" #~ msgstr "" #~ "Se deve ser usada uma fonte personalizada para o título do popup de " #~ "resumo de correio ou não" #~ msgid "The following mailbox has new mail:\n" #~ msgid_plural "The following mailboxes have new mail:\n" #~ msgstr[0] "A seguinte caixa de correio tem novo correio:\n" #~ msgstr[1] "As seguintes caixas de correio têm novo correio:\n" #~ msgid "The following mailbox reported an error:\n" #~ msgid_plural "The following mailboxes reported an error:\n" #~ msgstr[0] "A seguinte caixa de correio relatou um erro:\n" #~ msgstr[1] "As seguintes caixas de correios relataram um erro:\n" #~ msgid "The following mailbox is unsupported:\n" #~ msgid_plural "The following mailboxes are unsupported:\n" #~ msgstr[0] "A seguinte caixa de correio não é suportada:\n" #~ msgstr[1] "As seguintes caixas de correio não são suportadas:\n" #~ msgid "Run a command when the icon is double-clicked" #~ msgstr "Executar um comando quando fizer duplo-clique no ícone" #~ msgid "The command to run when the icon is double-clicked." #~ msgstr "O comando a executar quando fizer duplo-clique no ícone." #~ msgid "Whether to run a command when the icon is double-clicked or not." #~ msgstr "" #~ "Se um comando deverá ser executado quando fizer duplo-clique no ícone." #~ msgid "Your Gmail password" #~ msgstr "A sua senha Gmail" #~ msgid "unable to parse Gmail URI" #~ msgstr "incapaz de processar URI Gmail" #~ msgid "successfully logged in" #~ msgstr "ligado com sucesso" #~ msgid "Your password on the IMAP server" #~ msgstr "A sua senha no servidor IMAP" #~ msgid "_Run %s" #~ msgstr "_Executar %s" #~ msgid "_Run Default Action" #~ msgstr "_Executar acção por omissão" #~ msgid "_SSL" #~ msgstr "_SSL" #~ msgid "Your password on the POP3 server" #~ msgstr "A sua senha no servidor POP3" #~ msgid "unable to parse POP3 URI" #~ msgstr "incapaz de processar URI POP3" #~ msgid "A command error has occurred" #~ msgstr "ocorreu um erro de comando" #~ msgid "Unable to execute double-clicked command: %s." #~ msgstr "Incapaz de executar comando de duplo-clique: %s." #~ msgid "Unable to execute new mail command: %s." #~ msgstr "Incapaz de executar o novo comando de correio: %s." #~ msgid "The command to run when the icon is double-clicked" #~ msgstr "O comando a executar quando fizer duplo-clique no ícone" #~ msgid "When double-click_ed:" #~ msgstr "Quando há um duplo-clique:" #~ msgid "Whether to run a command when the icon is double-clicked or not" #~ msgstr "Se deve ser executado um comando quando fizer duplo-clique no ícone" mail-notification-5.4.dfsg.1/po/de.po0000644000175000001440000016226210737451002017231 0ustar evilynuxusers# German translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Hendrik Brandt , 2004-2005. # Jens Seidel , 2005. # msgid "" msgstr "" "Project-Id-Version: mail-notification 2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-07-31 04:17+0200\n" "PO-Revision-Date: 2005-08-06 07:00+0200\n" "Last-Translator: Hendrik Brandt \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n>1;" #: ../data/GNOME_MailNotification.server.in.in.h:1 msgid "Mail Notification automation" msgstr "Automatische E-Mail-Eingangsüberwachnung" #: ../data/GNOME_MailNotification.server.in.in.h:2 msgid "Mail Notification automation factory" msgstr "Automatische E-Mail-Eingangsüberwachnung" #: ../data/GNOME_MailNotification_Evolution.server.in.h:1 msgid "Evolution folder tree control" msgstr "Evolution-Ordnerbaum-Steuerung" #: ../data/GNOME_MailNotification_Evolution.server.in.h:2 msgid "Evolution folder tree control factory" msgstr "Evolution-Ordnerbaum-Steuerungsfabrik" #: ../data/GNOME_MailNotification_Evolution.server.in.h:3 msgid "Mail Notification / Evolution glue" msgstr "E-Mail-Eingangsüberwachnung / Evolution-Anbindung" #: ../data/GNOME_MailNotification_Evolution.server.in.h:4 msgid "Mail Notification / Evolution glue factory" msgstr "E-Mail-Eingangsüberwachnung / Evolution-Anbindungsfarbik" #: ../data/mail-notification-properties.desktop.in.h:1 #: ../src/mn-main-window.gob:209 msgid "Configure Mail Notification" msgstr "Die E-Mail-Eingangsüberwachung einstellen" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 #: ../data/mail-notification.soundlist.in.h:1 ../src/mn-mail-icon.gob:223 #: ../src/mn-main.c:285 ../src/mn-main.c:301 msgid "Mail Notification" msgstr "E-Mail-Eingangsüberwachung" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Informiert Sie wenn eine neue Nachricht eintrifft" #: ../data/mail-notification.schemas.in.h:1 msgid "Automatically close the mail summary popup" msgstr "Nachrichtenübersicht automatisch schließen" #: ../data/mail-notification.schemas.in.h:2 msgid "Blink on errors" msgstr "Bei Fehler blinken" #: ../data/mail-notification.schemas.in.h:3 msgid "Delay between mail checks (minutes part)." msgstr "Abstand zwischen Eingangsüberprüfung (Minutenteil)." #: ../data/mail-notification.schemas.in.h:4 msgid "Delay between mail checks (seconds part)." msgstr "Abstand zwischen Eingangsüberprüfung (Sekundenteil)." #: ../data/mail-notification.schemas.in.h:5 msgid "Display mail summary in tooltip" msgstr "Nachrichtenübersicht als Minihilfe anzeigen" #: ../data/mail-notification.schemas.in.h:6 msgid "Do not show the immediate notification error dialog" msgstr "Den Fehlerdialog der Sofortbenachrichtigung nicht sofort anzeigen" #: ../data/mail-notification.schemas.in.h:7 msgid "Double-click action" msgstr "Aktion bei Doppelklick" #: ../data/mail-notification.schemas.in.h:8 msgid "Enable mail summary popup" msgstr "Nachrichtenübersicht aktivieren" #: ../data/mail-notification.schemas.in.h:9 msgid "Fingerprints of trusted X509 certificates" msgstr "Fingerabdrücke vertrauensvoller X509-Zertifikate" #: ../data/mail-notification.schemas.in.h:10 msgid "Height of edit toolbars dialog" msgstr "Höhe des Dialogs zum Bearbeiten der Werkzeugleisten" #: ../data/mail-notification.schemas.in.h:11 msgid "Height of main window" msgstr "Höhe des Hauptfensters" #: ../data/mail-notification.schemas.in.h:12 msgid "Height of properties dialog" msgstr "Höhe des Einstellungen-Dialogs" #: ../data/mail-notification.schemas.in.h:13 msgid "Mail read command" msgstr "Befehl zum Lesen einer Nachricht" #: ../data/mail-notification.schemas.in.h:14 msgid "Mail reader command" msgstr "Befehl zum Starten des E-Mail-Programms" #: ../data/mail-notification.schemas.in.h:15 msgid "Mail summary popup contents font" msgstr "Schrift für den Inhalt der Nachrichtenübersicht" #: ../data/mail-notification.schemas.in.h:16 msgid "Mail summary popup fonts aspect source" msgstr "Quelle der Schrift für die Nachrichtenübersicht" #: ../data/mail-notification.schemas.in.h:17 msgid "Mail summary popup horizontal offset" msgstr "Horizontaler Abstand der Nachrichtenübersicht" #: ../data/mail-notification.schemas.in.h:18 msgid "Mail summary popup position" msgstr "Position der Nachrichtenübersicht" #: ../data/mail-notification.schemas.in.h:19 msgid "Mail summary popup title font" msgstr "Schrift für den Titel der Nachrichtenübersicht" #: ../data/mail-notification.schemas.in.h:20 msgid "Mail summary popup vertical offset" msgstr "Vertikaler" #: ../data/mail-notification.schemas.in.h:21 msgid "Minutes between mail checks" msgstr "Minuten zwischen den Aktualisierungen" #: ../data/mail-notification.schemas.in.h:22 msgid "Minutes to wait before closing the mail summary popup" msgstr "Wartezeit bis zum Schließen der Nachrichtenübersicht" #: ../data/mail-notification.schemas.in.h:23 msgid "New mail command" msgstr "Befehl bei neuer Nachricht" #: ../data/mail-notification.schemas.in.h:24 msgid "Only display recent mail in mail summary popup" msgstr "Nur aktuelle Nachrichten in der Nachrichtenübersicht anzeigen" #: ../data/mail-notification.schemas.in.h:25 msgid "Run a command when all mail is read" msgstr "Einen Befehl ausführen, wenn alle Nachrichten gelesen sind" #: ../data/mail-notification.schemas.in.h:26 msgid "Run a command when new mail arrives" msgstr "Einen Befehl ausführen, wenn eine neue Nachricht eintrifft" #: ../data/mail-notification.schemas.in.h:27 msgid "Seconds between mail checks" msgstr "Sekunden zwischen den Aktualisierungen" #: ../data/mail-notification.schemas.in.h:28 msgid "Seconds to wait before closing the mail summary popup" msgstr "Wartezeit in Sekunden bis zum Schließen der Nachrichtenübersicht" #: ../data/mail-notification.schemas.in.h:29 msgid "Set a mail reader" msgstr "Ein E-Mail-Programm festlegen" #: ../data/mail-notification.schemas.in.h:30 msgid "" "The action to perform when the icon is double-clicked. Must be \"display-" "main-window\", \"launch-mail-reader\" or \"update-mail-status\"." msgstr "" "Die auszuführende Aktion wenn das Symbol doppelt angeklickt wird. Hat " "entweder den Wert »display-mail-window«, »launch-mail-reader« oder »update-" "mail-status«." #: ../data/mail-notification.schemas.in.h:31 msgid "" "The amount of time to wait before closing the mail summary popup (minutes " "part)." msgstr "" "Die Zeitspanne bis zum Schließen der Nachrichtenübersicht (Minutenteil)." #: ../data/mail-notification.schemas.in.h:32 msgid "" "The amount of time to wait before closing the mail summary popup (seconds " "part)." msgstr "" "Die Zeitspanne bis zum Schließen der Nachrichtenübersicht (Sekundenteil)." #: ../data/mail-notification.schemas.in.h:33 msgid "" "The aspect source of the mail summary popup fonts. Must be \"theme\" or " "\"custom\"." msgstr "" "Die Quelle aus der die Schrift für die Nachrichtenübersicht festgelegt wird. " "Der Wert muss entweder »theme« oder »custom« sein." #: ../data/mail-notification.schemas.in.h:34 msgid "The command to run to launch the mail reader." msgstr "Der Befehl um das E-Mail-Programm zu starten" #: ../data/mail-notification.schemas.in.h:35 msgid "The command to run when all mail is read." msgstr "Der Befehl der ausgeführt wird, wenn alle Nachrichten gelesen wurden" #: ../data/mail-notification.schemas.in.h:36 msgid "The command to run when new mail arrives." msgstr "Der Befehl der ausgeführt wird, wenn eine neue Nachricht eintrifft." #: ../data/mail-notification.schemas.in.h:37 msgid "The custom font to use for the contents of the mail summary popup." msgstr "" "Die benutzerdefinierte Schrift für den Inhalt der Nachrichtenübersicht." #: ../data/mail-notification.schemas.in.h:38 msgid "The custom font to use for the title of the mail summary popup." msgstr "Die benutzerdefinierte Schrift für den Titel der Nachrichtenübersicht." #: ../data/mail-notification.schemas.in.h:39 msgid "The height of the edit toolbars dialog in pixels." msgstr "Die Höhe des Dialogs zum Bearbeiten der Werkzeugleisten in Pixel." #: ../data/mail-notification.schemas.in.h:40 msgid "The height of the main window in pixels." msgstr "Die Höhe des Hauptfensters in Pixel." #: ../data/mail-notification.schemas.in.h:41 msgid "The height of the properties dialog in pixels." msgstr "Die Höhe des Einstellungsdialogs in Pixel." #: ../data/mail-notification.schemas.in.h:42 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" "Die Liste vertrauensvoller SSL/TLS-Server (Host-Name:Port) ohne X509-" "Zertifikat." #: ../data/mail-notification.schemas.in.h:43 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "" "Die Liste vertrauensvoller X509-Zertifikate, repräsentiert durch ihre MD5-" "Fingerabdrücke." #: ../data/mail-notification.schemas.in.h:44 msgid "" "The number of pixels to leave between the left or right side of the screen " "and the mail summary popup." msgstr "" "Die Anzahl an Pixeln die zwischen dem linken oder rechten Bildschirmrand und " "der Nachrichtenübersicht." #: ../data/mail-notification.schemas.in.h:45 msgid "" "The number of pixels to leave between the top or bottom side of the screen " "and the mail summary popup." msgstr "" "Die Anzahl an Pixeln die zwischen dem oberen oder runteren Bildschirmrand " "und der Nachrichtenübersicht." #: ../data/mail-notification.schemas.in.h:46 msgid "" "The position of the mail summary popup. Must be \"top-left\", \"top-right\", " "\"bottom-left\" or \"bottom-right\"." msgstr "" "Die Position der Nachrichtenübersicht. Der Wert muss »oben-links«, »oben-" "rechts«, »unten-links« oder »unten-rechts« sein." #: ../data/mail-notification.schemas.in.h:47 msgid "" "The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text\", " "\"both\" or \"both-horiz\"." msgstr "" "Der Werkzeugleistenmodus. Muss den Wert »desktop-default«, »icons«, »text«, " "»both« oder »both-horiz« haben." #: ../data/mail-notification.schemas.in.h:48 msgid "The width of the edit toolbars dialog in pixels." msgstr "Die Breite des Werkzeugleistenbearbeitungsdialogs in Pixel." #: ../data/mail-notification.schemas.in.h:49 msgid "The width of the main window in pixels." msgstr "Die Breite des Hauptfensters in Pixel." #: ../data/mail-notification.schemas.in.h:50 msgid "The width of the properties dialog in pixels." msgstr "Die Breite des Einstellungen-Dialogs in Pixel." #: ../data/mail-notification.schemas.in.h:51 msgid "Toolbars style" msgstr "Werkzeugleistenmodus" #: ../data/mail-notification.schemas.in.h:52 msgid "Trusted servers list" msgstr "Liste vertrauensvoller Server" #: ../data/mail-notification.schemas.in.h:53 msgid "View statusbar" msgstr "Statusleiste anzeigen" #: ../data/mail-notification.schemas.in.h:54 msgid "View toolbars" msgstr "Werkzeugleisten anzeigen" #: ../data/mail-notification.schemas.in.h:55 msgid "Whether the status icon should blink on errors or not." msgstr "" "Legt fest, ob das Nachrichtensymbol bei Auftreten eines Fehlers blinkt." #: ../data/mail-notification.schemas.in.h:56 msgid "Whether the statusbar should be visible or not." msgstr "Legt fest, ob die Statusleiste angezeigt werden." #: ../data/mail-notification.schemas.in.h:57 msgid "Whether the toolbars should be visible or not." msgstr "Legt fest, ob die Werkzeugleisten angezeigt werden." #: ../data/mail-notification.schemas.in.h:58 msgid "Whether to automatically close the mail summary popup or not." msgstr "" "Legt fest, ob ein Befehl ausgeführt wird, wenn eine neue Nachricht eintrifft." #: ../data/mail-notification.schemas.in.h:59 msgid "Whether to display the mail summary in the status icon tooltip or not." msgstr "" "Legt fest, ob die Nachrichtenübersicht in der Minihilfe des Statussymbols " "angezeigt wird." #: ../data/mail-notification.schemas.in.h:60 msgid "Whether to display the mail summary popup when new mail arrives or not." msgstr "" "Legt fest, ob die Nachrichtenübersicht angezeigt wird, wenn eine neue " "Nachricht eintrifft." #: ../data/mail-notification.schemas.in.h:61 msgid "" "Whether to hide previously displayed mail in the mail summary popup or not." msgstr "" "Legt fest, ob zuvor angezeigte Nachrichten in der Nachrichtenübersicht " "erneut angezeigt werden." #: ../data/mail-notification.schemas.in.h:62 msgid "" "Whether to prevent the immediate notification error dialog from being " "displayed or not." msgstr "" "Legt fest, ob der Fehlerdialog der Sofortbenachrichtigung angezeigt wird." #: ../data/mail-notification.schemas.in.h:63 msgid "Whether to run a command when all mail is read or not." msgstr "" "Legt fest, ob ein Befehl ausgeführt wird, wenn alle Nachrichten gelesen " "wurden." #: ../data/mail-notification.schemas.in.h:64 msgid "Whether to run a command when new mail arrives or not." msgstr "" "Legt fest, ob ein Befehl ausgeführt wird, wenn eine neue Nachricht eintrifft." #: ../data/mail-notification.schemas.in.h:65 msgid "Whether to set a mail reader or not." msgstr "Legt fest, ob ein E-Mail-Programm ausgewählt ist." #: ../data/mail-notification.schemas.in.h:66 msgid "Width of edit toolbars dialog" msgstr "Breite des Werkzeugleistenbearbeitungsdialogs" #: ../data/mail-notification.schemas.in.h:67 msgid "Width of main window" msgstr "Breite des Hauptfensters" #: ../data/mail-notification.schemas.in.h:68 msgid "Width of properties dialog" msgstr "Breite des Einstellungen-Dialogs" #: ../data/mail-notification.soundlist.in.h:2 msgid "New Mail" msgstr "Neue Nachricht" #: ../src/egg-editable-toolbar.c:534 msgid "_Remove Toolbar" msgstr "Werkzeugleiste _entfernen" #: ../src/egg-toolbar-editor.c:555 msgid "Separator" msgstr "Trennlinie" #: ../src/eggtrayicon.c:128 msgid "Orientation" msgstr "Ausrichtung" #: ../src/eggtrayicon.c:129 msgid "The orientation of the tray." msgstr "Die Ausrichtung des Benachrichtigungsfeldes" #: ../src/mn-about-dialog.gob:48 msgid "A Mail Notification Icon" msgstr "" "Ein Benachrichtigungssymbol das erscheint, wenn neue Nachrichten in Ihren " "Postfächern liegen." #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:56 msgid "translator-credits" msgstr "Hendrik Brandt " #: ../src/mn-about-dialog.gob:78 msgid "Unable to open link" msgstr "Verweis konnte nicht geöffnet werden" #: ../src/mn-auth-combo-box.gob:103 #: ../src/mn-autodetect-mailbox-properties.gob:92 msgid "autodetect" msgstr "automatisch erkennen" #: ../src/mn-authenticated-mailbox-properties.gob:46 msgid "_Username:" msgstr "Ben_utzername:" #: ../src/mn-authenticated-mailbox-properties.gob:50 msgid "_Password:" msgstr "_Passwort:" #: ../src/mn-authenticated-mailbox.gob:152 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "credentials you have entered are invalid.\n" "\n" "Please re-enter your credentials." msgstr "" "Die E-Mail-Eingangsüberwachung konnte sich nicht an dem %s-Postfach »%s« " "anmelden. Eine mögliche Ursache ist, dass Sie die Zugangsdaten falsch " "eingegeben haben. \n" "\n" "Bitte geben Sie die Zugangsdaten erneut ein." #: ../src/mn-authenticated-mailbox.gob:153 #, c-format msgid "Enter your credentials for %s mailbox %s." msgstr "Bitte geben Sie Ihre Zugangsdaten für %s-Postfach »%s« ein." #. keep the title in sync with gnome-authentication-manager #: ../src/mn-authenticated-mailbox.gob:195 msgid "Authentication Required" msgstr "Authentifizierung ist erforderlich" #: ../src/mn-autodetect-mailbox-properties.gob:93 msgid "Location" msgstr "Ort" #: ../src/mn-autodetect-mailbox-properties.gob:103 msgid "_Location:" msgstr "_Ort:" #: ../src/mn-autodetect-mailbox-properties.gob:110 msgid "_Browse..." msgstr "_Durchsuchen..." #: ../src/mn-autodetect-mailbox-properties.gob:149 msgid "Select a File or Folder" msgstr "Wählen Sie eine Datei oder ein Verzeichnis" #: ../src/mn-client-session.c:248 #, c-format msgid "resolving %s" msgstr "%s wird kontaktiert" #: ../src/mn-client-session.c:264 #, c-format msgid "unable to resolve %s: %s" msgstr "%s konnte nicht kontaktiert werden: %s" #: ../src/mn-client-session.c:308 #, c-format msgid "%s: unsupported address family" msgstr "%s: Adressfamilie wird nicht unterstützt" #: ../src/mn-client-session.c:315 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: Socket konnte nicht erstellt werden: %s" #: ../src/mn-client-session.c:319 #, c-format msgid "connecting to %s (%s) port %i" msgstr "Verbindung mit %s (%s) über Port %i wird hergestellt" #: ../src/mn-client-session.c:322 #, c-format msgid "unable to connect: %s" msgstr "Es konnte nicht verbunden werden: %s" #: ../src/mn-client-session.c:327 msgid "connected successfully" msgstr "Verbindung hergestellt" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:333 #, c-format msgid "unable to connect to %s" msgstr "Es konnte keine Verbindung mit %s hergestellt werden" #: ../src/mn-client-session.c:360 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "Die OpenSSL-Bibliothek konnte nicht initializiert werden: %s" #: ../src/mn-client-session.c:368 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "Es konnte kein SSL/TLS-Objekt erzeugt werden: %s" #: ../src/mn-client-session.c:374 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "Es konnte kein SSL/TLS-Dateideskriptor gesetzt werden: %s" #: ../src/mn-client-session.c:380 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "Es konnte kein SSL/TLS-Handshake durchgeführt werden: %s" #: ../src/mn-client-session.c:386 msgid "untrusted server" msgstr "nicht vertrauensvolle Server" #: ../src/mn-client-session.c:390 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "Eine SSL/TLS-Zwischenschicht ist jetzt aktiv (%s, %s %i-Bit)" #: ../src/mn-client-session.c:437 #, c-format msgid "%s, fingerprint: %s" msgstr "%s, Fingerabdruck %s" #: ../src/mn-client-session.c:466 msgid "missing certificate" msgstr "kein Zertifikat" #: ../src/mn-client-session.c:492 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "Die E-Mail-Eingangsüberwachnung konnte »%s« nicht vertrauen (%s). Es ist möglich, dass ein Anderer Ihre Kommunikation abfängt um Zugriff auf Ihrepersönlichen Informationen zu bekommen.\n" "\n" "Sie sollten sich nur zu diesem Server verbinden, wenn Sie sicher sind, dass sie auch tatsächlich mit »%s« verbunden sind. Falls Sie sich dennoch mit dem Server verbinden lassen, wird dieser Dialog in Zukunft nicht mehr angezeigt." #: ../src/mn-client-session.c:507 msgid "Connect to untrusted server?" msgstr "Möchten Sie sich mit einem nicht vertrauenswürdigen Server verbinden?" #: ../src/mn-client-session.c:571 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "Die Antwort »%s« ist in diesem Kontext nicht zugelassen" #: ../src/mn-client-session.c:599 #, c-format msgid "unable to parse response \"%s\"" msgstr "Die Antwort »%s« konnte nicht analysiert werden" #: ../src/mn-client-session.c:649 ../src/mn-client-session.c:656 #, c-format msgid "unable to read from server: %s" msgstr "Es konnte nicht vom Server gelesen werden: %s" #: ../src/mn-client-session.c:654 msgid "unable to read from server: EOF" msgstr "Es konnte nicht vom Server gelesen werden: EOF" #: ../src/mn-client-session.c:666 #, c-format msgid "unable to decode data using SASL: %s" msgstr "Die Daten konnten nicht per SASL dekodiert werden: %s" #: ../src/mn-client-session.c:811 #, c-format msgid "unable to encode data using SASL: %s" msgstr "Die Daten konnten nicht per SASL kodiert werden: %s" #: ../src/mn-client-session.c:842 ../src/mn-client-session.c:849 #, c-format msgid "unable to write to server: %s" msgstr "Es konnte nicht auf den Server geschrieben werden: %s" #: ../src/mn-client-session.c:847 msgid "unable to write to server: EOF" msgstr "Es konnte nicht auf den Server geschrieben werden: EOF" #: ../src/mn-client-session.c:878 ../src/mn-pop3-mailbox.gob:468 #, c-format msgid "unable to encode Base64: %s" msgstr "Es konnte nicht mit Base64 kodiert werden: %s" #: ../src/mn-client-session.c:1056 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "Die SASL-Bibliothek konnte nicht initializiert werden: %s" #: ../src/mn-client-session.c:1068 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "Die lokale Adresse des Socket konnte nicht herausgefunden werden: %s" #: ../src/mn-client-session.c:1074 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "" "Die entfernte Adresse des Socket konnte nicht herausgefunden werden: %s" #: ../src/mn-client-session.c:1108 #, c-format msgid "unable to set SASL security properties: %s" msgstr "die SASL-Sicherheitseigenschaften konnten nicht gesetzt werden: %s" #: ../src/mn-client-session.c:1132 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "" "Die SASL-Authentifizierung konnte nicht gestartet werden: es wurde eine " "unbekannte Anfrage von SASL gestellt" #: ../src/mn-client-session.c:1151 #, c-format msgid "unable to start SASL authentication: %s" msgstr "Die SASL-Authentifizierung konnte nicht gestartet werden: %s" #: ../src/mn-client-session.c:1155 #, c-format msgid "unable to create a SASL connection: %s" msgstr "Es konnte keine Verbindung mit SASL erzeugt werden: %s" #: ../src/mn-client-session.c:1202 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "" "Es wurde eine unbekannte Anfrage von SASL gestellt, SASL-Authentifizierung " "wird abgebrochen" #: ../src/mn-client-session.c:1219 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, SASL-Authentifizierung wird abgebrochen" #. compliance error #: ../src/mn-client-session.c:1224 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "Die Server-seitige Base64-Eingabe konnte nicht dekodiert werden: %s" #: ../src/mn-client-session.c:1260 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "Die SASL-Sicherheitsebene der Stärke %i ist jetzt aktiv" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1265 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "Der Wert SASL_MAXOUTBUF wurde nicht gefunden: %s" #: ../src/mn-client-session.c:1271 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "Warnung: Der Wert SASL_SSF wurde nicht gefunden: %s" #: ../src/mn-conf.c:240 msgid "A directory creation error has occurred" msgstr "Beim Verzeichniserstellen ist ein Fehler aufgetreten" #: ../src/mn-conf.c:241 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "Das Verzeichnis»%s« konnte nicht angelegt werden: %s." #: ../src/mn-conf.c:317 #, c-format msgid "recursively unsetting %s" msgstr "%s rekursiv zurück setzen" #: ../src/mn-conf.c:321 msgid "syncing the GConf database" msgstr "Synchronisiere mit der GConf-Datenbank" #: ../src/mn-conf.c:324 msgid "completed" msgstr "Abgeschlossen" #: ../src/mn-custom-vfs-mailbox.gob:76 msgid "invalid location" msgstr "Ungültiger Ort" #: ../src/mn-evolution-folder-tree-control.c:86 msgid "The currently selected URI" msgstr "Die aktuell ausgewählte Adresse" #: ../src/mn-evolution-mailbox-properties.gob:67 msgid "Folder" msgstr "Ordner" #: ../src/mn-evolution-mailbox-properties.gob:169 msgid "" "Mail Notification can not contact Evolution. Make sure that Evolution is " "running and that the Evolution Mail Notification plugin is loaded." msgstr "Die E-Mail-Eingangsüberwachung konnte Evolution nicht kontaktieren. " "Bitte stellen Sie sicher, dass Evolution läuft und dass das Evolution-Plugin zur E-Mail-Benachrichtigung " "geladen ist." #: ../src/mn-evolution-mailbox.gob:61 msgid "folder not found" msgstr "Ordner nicht gefunden" #: ../src/mn-evolution-mailbox.gob:182 msgid "unable to contact Evolution" msgstr "Evolution konnte nicht kontaktiert werden" #: ../src/mn-evolution-plugin.c:130 ../src/mn-evolution-plugin.c:134 msgid "Unable to activate the Mail Notification plugin" msgstr "Das Evolution-Plugin zur E-Mail-Benachrichtigung konnte nicht aktiviert werden" #: ../src/mn-evolution-plugin.c:130 #, c-format msgid "" "Bonobo could not locate the %s server. Please check your Mail Notification " "installation." msgstr "" "Bonobo konnte den %s-Server nicht finden. Bitte überprüfen Sie " "Ihre Installation der E-Mail-Eingangsüberwachung." #: ../src/mn-evolution-plugin.c:134 ../src/mn-main.c:427 #, c-format msgid "" "Bonobo was unable to register the %s server. Please check your Mail " "Notification installation." msgstr "" "Bonobo konnte den %s-Server nicht registrieren. Bitte " "überprüfen Sie Ihre Installation der E-Mail-Eingangsüberwachung." #: ../src/mn-gmail-mailbox.gob:111 msgid "invalid feed location" msgstr "ungültige Feed-Adresse" #: ../src/mn-gmail-mailbox.gob:125 #, c-format msgid "retrieving feed from %s" msgstr "Feed von %s wird empfangen" #: ../src/mn-gmail-mailbox.gob:132 #, c-format msgid "unable to retrieve feed: %s" msgstr "Feed konnte nicht geholt werden: %s" #: ../src/mn-gmail-mailbox.gob:147 ../src/mn-gmail-mailbox.gob:194 msgid "unable to parse feed" msgstr "Feed konnte nicht analysiert werden" #: ../src/mn-gmime-stream-vfs.gob:49 #: ../src/mn-sylpheed-mailbox-backend.gob:152 #, c-format msgid "unable to read %s: %s" msgstr "%s konnte nicht gelesen werden: %s" #: ../src/mn-gmime-stream-vfs.gob:51 #, c-format msgid "unable to write to %s: %s" msgstr "Es konnte nicht nach %s geschrieben werden: %s" #: ../src/mn-gmime-stream-vfs.gob:53 #, c-format msgid "unable to seek in %s: %s" msgstr "Es konnte nicht in %s gesucht werden: %s" #: ../src/mn-gmime-stream-vfs.gob:55 #, c-format msgid "unable to tell position of %s: %s" msgstr "Die Position von %s konnte nicht ermittelt werden: %s" #: ../src/mn-gmime-stream-vfs.gob:57 ../src/mn-mh-mailbox-backend.gob:158 #, c-format msgid "unable to close %s: %s" msgstr "%s konnte nicht geschlossen werden: %s" #: ../src/mn-imap-mailbox-properties.gob:113 msgid "Mailbox:" msgstr "Postfach:" #: ../src/mn-imap-mailbox-properties.gob:117 msgid "in_box" msgstr "In_box" #: ../src/mn-imap-mailbox-properties.gob:128 msgid "oth_er:" msgstr "_Anderer:" #: ../src/mn-imap-mailbox-properties.gob:139 msgid "ne_ver" msgstr "n_ie" #: ../src/mn-imap-mailbox-properties.gob:140 msgid "au_todetect" msgstr "au_tomatisch erkennen" #: ../src/mn-imap-mailbox-properties.gob:141 msgid "al_ways" msgstr "i_mmer" #: ../src/mn-imap-mailbox-properties.gob:173 msgid "Use the IDLE extension:" msgstr "Die Erweiterung IDLE verwenden:" #: ../src/mn-imap-mailbox.gob:390 msgid "server did not send capabilities" msgstr "Der Server hat seine Fähigkeiten nicht bekannt gegeben" #: ../src/mn-imap-mailbox.gob:573 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "" "Der Server gibt LOGINDISABLED zurück, LOGIN-Authentifizierung wird nicht " "verwendet" #: ../src/mn-imap-mailbox.gob:574 msgid "unable to login" msgstr "Anmeldung fehlgeschlagen" #. compliance error #: ../src/mn-imap-mailbox.gob:714 msgid "server did not send search results" msgstr "Der Server hat keine Suchergebnisse gesendet" #. compliance error #: ../src/mn-imap-mailbox.gob:792 msgid "server did not send all the messages we requested" msgstr "Der Server hat nicht alle angeforderten Nachrichten gesendet" #: ../src/mn-imap-mailbox.gob:859 msgid "unable to fetch message" msgstr "Nachrichten konnten nicht abgerufen werden" #: ../src/mn-imap-mailbox.gob:875 msgid "" "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, " "logging out" msgstr "»IDLE-Erweiterung verwenden« wird auf »nie« in den Postfacheinstellungen gesetzt, " "abmelden" #: ../src/mn-imap-mailbox.gob:886 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "der entfernte Server verwendet %s, die IDLE-Erweiterung wird nicht verwendet" #: ../src/mn-imap-mailbox.gob:891 #, c-format msgid "" "the remote server runs %s, the IDLE extension might not function properly" msgstr "der entfernte Server verwendet %s, die IDLE-Erweiterung funktioniert unter Umständen nicht richtig" #: ../src/mn-imap-mailbox.gob:900 msgid "the remote server does not support the IDLE extension, logging out" msgstr "der entfernte Server unterstützt die IDLE-Erweiterung nicht, es wird abgemeldet" #: ../src/mn-imap-mailbox.gob:1251 ../src/mn-pop3-mailbox.gob:1124 msgid "unknown server error" msgstr "Unbekannter Server-Fehler" #: ../src/mn-imap-mailbox.gob:1357 ../src/mn-pop3-mailbox.gob:311 msgid "server does not support in-band SSL/TLS" msgstr "Der Server unterstützt kein band-internes SSL/TLS" #: ../src/mn-imap-mailbox.gob:1381 ../src/mn-pop3-mailbox.gob:997 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" "Sie haben eine Authentifizierung mit SASL ausgewählt, jedoch wurde die " "Unterstützung für SASL beim Erstellen des Programms nicht eingebaut" #: ../src/mn-imap-mailbox.gob:1391 ../src/mn-pop3-mailbox.gob:1017 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "Unbekannte Authentifizierungsmethode »%s«" #: ../src/mn-imap-mailbox.gob:1423 ../src/mn-pop3-mailbox.gob:1053 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "Mechanismus %s wird deaktiviert und SASL-Authentifizierung wird erneut probiert" #: ../src/mn-imap-mailbox.gob:1435 msgid "falling back to IMAP LOGIN authentication" msgstr "Es wird auf die Authentifizierung per IMAP LOGIN zurückgegriffen" #: ../src/mn-imap-mailbox.gob:1447 ../src/mn-pop3-mailbox.gob:1082 msgid "authentication failed" msgstr "Authentifizierung fehlgeschlagen" #: ../src/mn-mail-icon.gob:91 msgid "Main _Window" msgstr "_Hauptfenster" #: ../src/mn-mail-icon.gob:92 ../src/mn-main-window.gob:165 msgid "_Mail Reader" msgstr "_E-Mail-Programm" #: ../src/mn-mail-icon.gob:93 ../src/mn-main-window.gob:173 msgid "_Update" msgstr "_Aktualisieren" #: ../src/mn-mail-icon.gob:99 msgid "R_emove From Notification Area" msgstr "Aus dem Benachrichtigungsfeld entfernen" #: ../src/mn-mailbox-properties-dialog.gob:88 #, c-format msgid "%s Properties" msgstr "%s Eigenschaften" #: ../src/mn-mailbox-properties-dialog.gob:205 msgid "Add a Mailbox" msgstr "Ein Postfach hinzufügen" #: ../src/mn-mailbox-view.gob:179 msgid "A paste error has occurred" msgstr "Es ist ein Einfügefehler aufgetreten" #: ../src/mn-mailbox-view.gob:320 ../src/mn-message-view.gob:313 msgid "Mailbox" msgstr "Postfach" #: ../src/mn-mailbox-view.gob:523 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "unerledigtes %s-Postfach (%s)" #: ../src/mn-mailbox-view.gob:528 #, c-format msgid "%s mailbox" msgstr "%s-Postfach" #: ../src/mn-mailbox-view.gob:543 msgid "detecting mailbox type..." msgstr "Postfachtyp wird ermittelt..." #: ../src/mn-mailbox.gob:278 msgid "\"type\" attribute missing" msgstr "Attribut »type« wurde nicht gefunden" #: ../src/mn-mailbox.gob:285 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "unbekannter Postfachtyp »%s«" #: ../src/mn-mailbox.gob:305 #, c-format msgid "" "property \"%s\": unable to transform string \"%s\" into a value of type \"%s" "\"" msgstr "Eigenschaft »%s«: es war nicht möglich, die Zeichenkette »%s« in einen Wert vom " "Typ »%s« umzuwandeln" #: ../src/mn-mailbox.gob:744 #, c-format msgid "property \"%s\" has no value" msgstr "Eigenschaft »%s« hat keinen Wert" #: ../src/mn-mailboxes.gob:203 msgid "An error has occurred while importing old mailboxes" msgstr "Beim Importieren älterer Postfächer ist ein Fehler aufgetreten" #: ../src/mn-mailboxes.gob:248 msgid "Unable to load the mailboxes configuration" msgstr "Die Postfacheinstellungen konnten nicht gelden werden" #: ../src/mn-mailboxes.gob:294 msgid "Unable to parse the XML document." msgstr "Das XML-Dokument konnte nicht analysiert werden." #: ../src/mn-mailboxes.gob:301 msgid "The root element is missing." msgstr "Das Wurzelelement ist nicht vorhanden." #: ../src/mn-mailboxes.gob:307 #, c-format msgid "The root element \"%s\" is invalid." msgstr "Das Wurzelelement »%s« ist nicht gültig." #: ../src/mn-mailboxes.gob:330 #, c-format msgid "On line %i: %s." msgstr "In Zeile %i: %s" #: ../src/mn-mailboxes.gob:335 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "In Zeile %i: unbekanntes Element »%s«." #: ../src/mn-mailboxes.gob:346 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "Beim Laden der Postfacheinstellungen ist ein Fehler aufgetreten." msgstr[1] "Beim Laden der Postfacheinstellungen sind mehrere Fehler aufgetreten." #: ../src/mn-mailboxes.gob:371 msgid "Unable to save the mailboxes configuration" msgstr "Die Postfacheinstellungen konnte nicht gespeichert werden" #: ../src/mn-mailboxes.gob:417 msgid "Unable to write the XML document." msgstr "Das XML-Dokument konnte nicht geschrieben werden." #. non fatal #: ../src/mn-mailboxes.gob:433 #, c-format msgid "unable to delete %s: %s" msgstr "%s konnte nicht gelöscht werden: %s" #: ../src/mn-mailboxes.gob:457 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "%s hat %i neue Nachricht" msgstr[1] "%s hat %i neue Nachrichten" #: ../src/mn-mailboxes.gob:483 #, c-format msgid "%s reported an error: %s" msgstr "%s hat einen Fehler erzeugt: %s" #: ../src/mn-maildir-mailbox-backend.gob:111 #, c-format msgid "unable to open folder \"new\": %s" msgstr "Der Ordner »new« konnte nicht geöffnet werden: %s" #: ../src/mn-maildir-mailbox-backend.gob:144 #, c-format msgid "unable to close folder \"new\": %s" msgstr "Der Ordner »new« konnte nicht geschlossen werden: %s" #: ../src/mn-maildir-mailbox-backend.gob:147 #, c-format msgid "error while reading folder \"new\": %s" msgstr "Fehler beim Lesen des Ordners »new«: %s" #: ../src/mn-main-window.gob:106 msgid "Help messages" msgstr "Hilfetexte" #: ../src/mn-main-window.gob:107 msgid "Count messages" msgstr "Nachrichten zählen" #. Toplevel #: ../src/mn-main-window.gob:156 msgid "_Mail" msgstr "_Nachricht" #: ../src/mn-main-window.gob:157 msgid "_Edit" msgstr "_Bearbeiten" #: ../src/mn-main-window.gob:158 msgid "_View" msgstr "_Ansicht" #: ../src/mn-main-window.gob:159 msgid "_Help" msgstr "_Hilfe" #: ../src/mn-main-window.gob:167 msgid "Launch the mail reader" msgstr "Das E-Mail-Programm starten" #. Reload #: ../src/mn-main-window.gob:175 ../src/mn-main.c:248 msgid "Update the mail status" msgstr "Nach neuen Nachrichten sehen" #: ../src/mn-main-window.gob:181 msgid "_Close" msgstr "_Schließen" #: ../src/mn-main-window.gob:183 msgid "Close this window" msgstr "Dieses Fenster schließen" #: ../src/mn-main-window.gob:189 msgid "_Quit" msgstr "_Beenden" #: ../src/mn-main-window.gob:191 ../src/mn-main.c:266 msgid "Quit Mail Notification" msgstr "Die E-Mail-Eingangsüberwachung beenden" #: ../src/mn-main-window.gob:199 ../src/mn-main-window.gob:247 msgid "_Toolbars" msgstr "_Werkzeugleisten" #: ../src/mn-main-window.gob:201 msgid "Customize the toolbars" msgstr "Die Werkzeugleisten an die eigenen Bedürfnisse anpassen" #: ../src/mn-main-window.gob:207 msgid "_Preferences" msgstr "_Einstellungen" #: ../src/mn-main-window.gob:217 msgid "Toolbars Styl_e" msgstr "Werkzeugleistenmodus" #: ../src/mn-main-window.gob:219 msgid "Customize the toolbars style" msgstr "Den Modus der Werkzeugleisten anpassen" #: ../src/mn-main-window.gob:227 msgid "_Contents" msgstr "I_nhalt" #: ../src/mn-main-window.gob:229 msgid "Display help" msgstr "Die Hilfe anzeigen" #: ../src/mn-main-window.gob:235 msgid "_About" msgstr "_Info" #: ../src/mn-main-window.gob:237 msgid "Display credits" msgstr "Mitwirkende anzeigen" #: ../src/mn-main-window.gob:249 msgid "Show or hide the toolbars" msgstr "Die Werkzeugleisten anzeigen oder verstecken" #: ../src/mn-main-window.gob:256 msgid "_Statusbar" msgstr "_Statusleiste" #: ../src/mn-main-window.gob:258 msgid "Show or hide the statusbar" msgstr "Die Statusleiste anzeigen oder verstecken" #: ../src/mn-main-window.gob:269 msgid "_Desktop Default" msgstr "_Systemvorgabe" #: ../src/mn-main-window.gob:271 msgid "Set the toolbars style to the desktop default setting" msgstr "Den Werkzeugleistenmodus wie vom System vorgegeben benutzen" #: ../src/mn-main-window.gob:277 msgid "I_cons Only" msgstr "Nur _Symbole" #: ../src/mn-main-window.gob:279 msgid "Only display the toolbars icons" msgstr "Nur Werkzeugleistensymbole anzeigen" #: ../src/mn-main-window.gob:285 msgid "_Text Only" msgstr "Nur _Beschriftungen" #: ../src/mn-main-window.gob:287 msgid "Only display the toolbars text" msgstr "Nur Werkzeugleistentexte anzeigen" #: ../src/mn-main-window.gob:293 msgid "Text Belo_w Icons" msgstr "Beschriftungen _unter Symbolen" #: ../src/mn-main-window.gob:295 msgid "Display the toolbars text below the icons" msgstr "Die Werkzeugleistenbeschriftung unter den Symbolen anzeigen" #: ../src/mn-main-window.gob:301 msgid "Text Be_side Icons" msgstr "Beschriftung _neben Symbolen" #: ../src/mn-main-window.gob:303 msgid "Display the toolbars text beside the icons" msgstr "Die Werkzeugleistenbeschriftung neben den Symbolen anzeigen" #: ../src/mn-main-window.gob:345 #, c-format msgid "unable to load menus.xml: %s" msgstr "menus.xml konnte nicht geladen werden: %s" #: ../src/mn-main-window.gob:388 msgid "unable to load toolbars.xml" msgstr "toolbars.xml konnte nicht geladen werden" #: ../src/mn-main-window.gob:439 #, c-format msgid "%i new message" msgid_plural "%i new messages" msgstr[0] "%i neue Nachricht" msgstr[1] "%i neue Nachrichten" #. #. * Here and everywhere else, we order the backends by descending #. * order of (believed) popularity. #. #: ../src/mn-main.c:96 msgid "Compiled-in mailbox backends: " msgstr "Eingebaute Postfacharten: " #: ../src/mn-main.c:124 msgid "Compiled-in POP3 and IMAP features: " msgstr "Eingebaute POP3- und IMAP-Fähigkeiten: " #: ../src/mn-main.c:194 msgid "Enable informational output" msgstr "Ausgabe von Informationen aktivieren" #: ../src/mn-main.c:203 msgid "List the compiled-in features" msgstr "Eingebaute Programmfähigkeiten anzeigen" #: ../src/mn-main.c:212 msgid "Display the main window" msgstr "Das Hauptfenster anzeigen" #: ../src/mn-main.c:221 msgid "Display the properties dialog" msgstr "Den Dialog zum Einstellen der E-Mail-Eingangsüberwachung anzeigen" #: ../src/mn-main.c:230 msgid "Display the about dialog" msgstr "Den Info-Dialog anzeigen" #: ../src/mn-main.c:239 msgid "Close the mail summary popup" msgstr "Die Nachrichtenübersicht schließen" #: ../src/mn-main.c:257 msgid "Unset obsolete GConf configuration" msgstr "Veraltete GConf-Konfiguration zurücksetzen" #. #. * We can't use mn_error_dialog() because gtk_init() has not been #. * called yet. #. #: ../src/mn-main.c:293 msgid "multi-threading is not available" msgstr "Multi-Threading steht nicht zur Verfügung" #: ../src/mn-main.c:355 msgid "" "Bonobo could not locate the automation object. Please check your Mail " "Notification installation." msgstr "" "Bonobo konnte das Automatisierungsobjekt nicht finden. Bitte überprüfen Sie " "Ihre Installation der E-Mail-Eingangsüberwachung." #: ../src/mn-main.c:361 msgid "quitting Mail Notification" msgstr "E-Mail-Eingangsüberwachung wir beendet" #: ../src/mn-main.c:365 msgid "Mail Notification is not running" msgstr "Die E-Mail-Eingangsüberwachung ist nicht aktiv" #: ../src/mn-main.c:372 msgid "Unable to initialize the GnomeVFS library." msgstr "Die GnomeVFS-Bibliothek konnte nicht initializiert werden." #: ../src/mn-main.c:404 msgid "updating the mail status" msgstr "Nachrichtenstatus wird aktualisiert" #: ../src/mn-main.c:413 msgid "Mail Notification is already running" msgstr "Die E-Mail-Eingangsüberwachung ist bereits aktiv" #: ../src/mn-main.c:423 #, c-format msgid "" "Bonobo could not locate the %s file. Please check your Mail Notification " "installation." msgstr "" "Bonobo konnte die %s-Datei nicht finden. Bitte überprüfen Sie " "Ihre Installation der E-Mail-Eingangsüberwachung." #: ../src/mn-mbox-mailbox-backend.gob:209 #, c-format msgid "unable to close file: %s" msgstr "Datei konnte nicht geschlossen werden: %s" #: ../src/mn-mbox-mailbox-backend.gob:222 #, c-format msgid "unable to open mailbox: %s" msgstr "Postfach konnte nicht geöffnet werden: %s" #: ../src/mn-message-mime.c:104 msgid "unable to parse MIME message" msgstr "Die MIME-Nachricht konnte nicht analysiert werden" #: ../src/mn-message-view.gob:82 msgid "You have no new mail." msgstr "Sie haben keine neuen Nachrichten." #: ../src/mn-message-view.gob:322 msgid "Unreadable message" msgstr "Nichtlesbare Nachricht" #: ../src/mn-message-view.gob:330 msgid "From" msgstr "Von" #: ../src/mn-message-view.gob:338 msgid "Subject" msgstr "Betreff" #: ../src/mn-message-view.gob:349 msgid "Sent" msgstr "Gesendet" #: ../src/mn-message.gob:99 msgid "Unknown" msgstr "Inactive" #: ../src/mn-message.gob:124 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "Vor %i Sekunde" #: ../src/mn-message.gob:128 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "vor etwa %i Minute" msgstr[1] "vor etwa %i Minuten" #: ../src/mn-message.gob:133 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "vor etwa %i Stunde" msgstr[1] "vor etwa %i Stunden" #: ../src/mn-message.gob:138 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "vor etwa %i Tag" msgstr[1] "vor etwa %i Tagen" #: ../src/mn-message.gob:143 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "vor etwa %i Woche" msgstr[1] "vor etwa %i Wochen" #. translators: "none" is used like "Mailbox: none" #: ../src/mn-message.gob:163 msgid "none" msgstr "keine" #: ../src/mn-mh-mailbox-backend.gob:161 #, c-format msgid "error while reading %s: %s" msgstr "Fehler beim Lesen von %s: %s" #: ../src/mn-mh-mailbox-backend.gob:174 #, c-format msgid "unable to open %s: %s" msgstr "%s konnte nicht geöffnet werden: %s" #: ../src/mn-pi-mailbox-properties.gob:67 msgid "sta_ndard" msgstr "Sta_ndard" #: ../src/mn-pi-mailbox-properties.gob:68 msgid "_in-band SSL/TLS" msgstr "_band-internes SSL/TLS" #: ../src/mn-pi-mailbox-properties.gob:69 msgid "SSL/TLS on sepa_rate port" msgstr "SSL/TLS über e_xtra Port" #: ../src/mn-pi-mailbox-properties.gob:73 msgid "_Hostname:" msgstr "_Server:" #: ../src/mn-pi-mailbox-properties.gob:93 msgid "_Details" msgstr "_Details" #: ../src/mn-pi-mailbox-properties.gob:148 msgid "Connection type:" msgstr "Verbindungsart:" #: ../src/mn-pi-mailbox-properties.gob:155 msgid "Port:" msgstr "Port:" #: ../src/mn-pi-mailbox-properties.gob:178 msgid "_Authentication mechanism:" msgstr "_Authentifizierungsmethode:" #: ../src/mn-pi-mailbox.gob:113 msgid "SSL/TLS support has not been compiled in" msgstr "" "Die Unterstützung für SSL/TLS wurde beim Erstellen des Programms nicht " "eingebaut" #: ../src/mn-pop3-mailbox.gob:359 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "Ungültige Argumente für die Anmeldeverzögerung" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:519 msgid "" "SASL authentication with initial client response failed, retrying without " "initial client response" msgstr "Die SASL-Authentifizierung mit anfänglicher Client-Antwort ist gescheitert, es " "wird nun ohne Client-Antwort erneut versucht" #: ../src/mn-pop3-mailbox.gob:733 msgid "unknown error" msgstr "Unbekannter Fehler" #: ../src/mn-pop3-mailbox.gob:828 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "" "Anmeldeverzögerung wird berücksichtigt, es wird für eine Sekunde " "gewartetAnmeldeverzögerung wird berücksichtigt, es wird für %i Sekunden " "gewartet" #: ../src/mn-pop3-mailbox.gob:1009 msgid "server does not support APOP authentication" msgstr "Der Server unterstützt eine Authentifizierung per APOP nicht." #: ../src/mn-pop3-mailbox.gob:1065 msgid "falling back to APOP authentication" msgstr "Es wird auf Authentifizierung mit APOP zurück gegriffen." #: ../src/mn-pop3-mailbox.gob:1070 msgid "falling back to USER/PASS authentication" msgstr "" "Es wird auf Authentifizierung per Nutzername und Passwort zurück gegriffen." #: ../src/mn-properties-dialog.gob:170 ../ui/properties-dialog.glade.h:10 msgid "Mail Notification Properties" msgstr "Einstellung der E-Mail-Eingangsüberwachung" #: ../src/mn-properties-dialog.gob:207 msgid "top left" msgstr "oben links" #: ../src/mn-properties-dialog.gob:208 msgid "top right" msgstr "oben rechts" #: ../src/mn-properties-dialog.gob:209 msgid "bottom left" msgstr "unten links" #: ../src/mn-properties-dialog.gob:210 msgid "bottom right" msgstr "unten rechts" #: ../src/mn-properties-dialog.gob:329 msgid "No mailbox selected." msgstr "Kein Postfach ausgewählt." #: ../src/mn-properties-dialog.gob:334 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "Ein Posfach ausgewählt." msgstr[1] "%i Postfächer ausgewählt." #: ../src/mn-properties-dialog.gob:465 #, c-format msgid "Test message #%i" msgstr "Testnachricht Nr. %i" #: ../src/mn-properties-dialog.gob:470 msgid "Mail Notification Properties Dialog" msgstr "Einstellungen der E-Mail-Eingangsüberwachung" #: ../src/mn-shell.gob:109 msgid "You have new mail." msgstr "Sie haben neue Nachrichten." #: ../src/mn-shell.gob:374 msgid "Mailboxes Having New Mail" msgstr "Folgende Postfächer haben neue Nachrichten" #: ../src/mn-shell.gob:393 msgid "Errors" msgstr "Fehler" #: ../src/mn-shell.gob:408 msgid "Mail Summary" msgstr "Nachrichtenübersicht" #: ../src/mn-ssl.c:76 msgid "unknown SSL/TLS error" msgstr "Unbekannter SSL/TLS-Fehler" #: ../src/mn-stock.c:28 msgid "Select _All" msgstr "_Alles auswählen" #: ../src/mn-stock.c:29 msgid "Leave Fullscreen" msgstr "Vollbild verlassen" #: ../src/mn-stock.c:30 msgid "Co_nnect" msgstr "_Verbinden" #: ../src/mn-sylpheed-mailbox-backend.gob:170 #, c-format msgid "unable to open folder: %s" msgstr "Ordner konnte nicht geöffnet werden: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:209 #, c-format msgid "unable to close folder: %s" msgstr "Ordner konnte nicht geschlossen werden: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:212 #, c-format msgid "error while reading folder: %s" msgstr "Fehler beim Lesen von Ordner: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:255 msgid "unexpected end of file" msgstr "unerwartetes Dateiende" #: ../src/mn-sylpheed-mailbox-backend.gob:269 #, c-format msgid "incompatible file version \"%i\"" msgstr "inkompatible Dateiversion »%i«" #: ../src/mn-sylpheed-mailbox-backend.gob:272 msgid "file version missing" msgstr "Dateiversion nicht gefunden" #: ../src/mn-system-vfs-mailbox-properties.gob:39 #: ../src/mn-system-vfs-mailbox-properties.gob:47 #: ../src/mn-system-vfs-mailbox.gob:45 msgid "System mailbox" msgstr "Systempostfach" #: ../src/mn-system-vfs-mailbox-properties.gob:68 #, c-format msgid "Your system mailbox is %s." msgstr "" "Ihr Systempostfach ist %s." #: ../src/mn-system-vfs-mailbox-properties.gob:75 msgid "" "The location of your system mailbox could not be detected. Check the MAIL " "environment variable." msgstr "" "Der Ort Ihres Systempostfachs konnte nicht ermittelt werden. Bitte überprüfen Sie die " "Umgebungsvariable »MAIL«." #: ../src/mn-system-vfs-mailbox.gob:72 msgid "MAIL environment variable not defined" msgstr "Die Umgebungsvariable »MAIL« ist nicht gesetzt" #: ../src/mn-util.c:281 #, c-format msgid "error loading image: %s" msgstr "Bild konnte nicht geladen werden: %s" #: ../src/mn-util.c:298 #, c-format msgid "widget \"%s\" not found in interface \"%s\"" msgstr "Widget »%s« konnte nicht in Interface »%s« gefunden werden" #: ../src/mn-util.c:398 #, c-format msgid "unable to open self as a module: %s" msgstr "Anwendung konnte selbst nicht in einem Modul geöffnet werden: %s" #: ../src/mn-util.c:403 #, c-format msgid "signal handler \"%s\" not found" msgstr "Signalverarbeiter »%s« wurde nicht gefunden" #: ../src/mn-util.c:556 ../src/mn-util.c:579 ../src/mn-util.c:601 #: ../src/mn-util.c:623 msgid "A drag and drop error has occurred" msgstr "Es ist ein Drag'n'Drop-Fehler aufgetreten" #: ../src/mn-util.c:557 msgid "An invalid location list has been received." msgstr "Eine ungültige Adressliste wurde empfangen." #: ../src/mn-util.c:602 msgid "An invalid Mozilla location has been received." msgstr "Eine ungültige Mozilla-Adresse wurde empfangen." #: ../src/mn-util.c:678 msgid "Unable to display help" msgstr "Die Hilfe kann nicht angezeigt werden" #: ../src/mn-util.c:692 #, c-format msgid "Unable to create a thread: %s." msgstr "Es konnte kein Thread erzeugt werden: %s." #: ../src/mn-util.c:782 msgid "_Do not show this message again" msgstr "_Diese Meldung nicht erneut anzeigen" #: ../src/mn-util.c:892 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" "The following locations are invalid:\n" "\n" "%s" msgstr "" "Der folgende Ort ist ungültig:\n" "\n" "%s" "Die folgenden Orte sind ungültig:\n" "\n" "%s" #: ../src/mn-util.c:912 msgid "A fatal error has occurred in Mail Notification" msgstr "" "Ein schwerwiegender Fehler ist beim Ausführen der E-Mail-Eingangsüberwachung " "aufgetreten" #: ../src/mn-util.c:951 #, c-format msgid "unable to get current time: %s" msgstr "Die aktuelle Zeit konnte nicht ermittelt werden: %s" #: ../src/mn-util.c:1013 #, c-format msgid "invalid signal specification \"%s\"" msgstr "Ungültige Signalspezifikation »%s«" #: ../src/mn-util.c:1052 msgid "A command error has occurred in Mail Notification" msgstr "" "Es ist ein Fehler beim Ausführen eines Befehls in der E-Mail-" "Eingangsüberwachung aufgetreten." #: ../src/mn-util.c:1053 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "»%s« konnte nicht ausgeführt werden: %s." #: ../src/mn-util.c:1311 #, c-format msgid "unable to rename %s to %s: %s" msgstr "%s konnte nicht in %s umbenannt werden: %s" #: ../src/mn-vfs-mailbox-backend.gob:117 #, c-format msgid "unable to monitor mailbox contents (%s), poll mode activated" msgstr "Postfachinhalt (%s) können nicht überwacht werden, Abfragemodus wurde aktiviert" #: ../src/mn-vfs-mailbox.gob:238 #, c-format msgid "unable to monitor mailbox type (%s), poll mode activated" msgstr "Postfachtyp (%s) kann nicht überwacht werden, Abfragemodus wurde aktiviert" #: ../src/mn-vfs-mailbox.gob:307 msgid "unknown mailbox format" msgstr "unbekanntes Postfachformat" #: ../src/mn-vfs-mailbox.gob:307 msgid "does not exist" msgstr "existiert nicht" #: ../src/mn-vfs-mailbox.gob:377 #, c-format msgid "" "As a fallback, they will be checked every %i second (this delay is " "configurable from the Properties Dialog)." "As a fallback, they will be checked every %i seconds (this delay is " "configurable from the Properties Dialog)." msgstr "" "Als Rücksicherung werden diese jede %i Sekunde überprüft (Dieser Wert kann " "über den Einstellungsdialog angepasst werden)." "Als Rücksicherung werden diese alle %i Sekunden überprüft (Dieser Wert kann " "über den Einstellungsdialog angepasst werden)." #: ../src/mn-vfs-mailbox.gob:388 #, c-format msgid "" "As a fallback, they will be checked every %i minute (this delay is " "configurable from the Properties Dialog)." "As a fallback, they will be checked every %i minutes (this delay is " "configurable from the Properties Dialog)." msgstr "" "Als Rücksicherung werden diese jede %i Minute überprüft (Dieser Wert kann " "über den Einstellungsdialog angepasst werden)." "Als Rücksicherung werden diese alle %i Minuten überprüft (Dieser Wert kann " "über den Einstellungsdialog angepasst werden)." #: ../src/mn-vfs-mailbox.gob:399 #, c-format msgid "" "As a fallback, they will be checked approximately every %i minute (this " "delay is configurable from the Properties Dialog)." "As a fallback, they will be checked approximately every %i minutes (this " "delay is configurable from the Properties Dialog)." msgstr "" "Als Rücksicherung werden diese durchschnittlich jede %i Minute überprüft (dieser Wert kann " "über den Einstellungsdialog angepasst werden)." "Als Rücksicherung werden diese durchschnittlich alle %i Minuten überprüft (dieser Wert kann " "über den Einstellungsdialog angepasst werden)." #: ../src/mn-vfs-mailbox.gob:415 msgid "A monitoring error has occurred" msgstr "Bei der Überwachung ist ein Fehler aufgetreten" #: ../src/mn-vfs-mailbox.gob:416 #, c-format msgid "" "Mail Notification was unable to enable immediate notification for one or " "more mailboxes. %s" msgstr "" "Die E-Mail-Eingangsüberwachung konnte die Sofortbenachrichtigung für ein " "oder mehrere Postfächer nicht aktivieren: %s" #: ../ui/edit-toolbars-dialog.glade.h:1 msgid "Edit Toolbars" msgstr "Werkzeugleisten bearbeiten" #: ../ui/edit-toolbars-dialog.glade.h:2 msgid "_Add a New Toolbar" msgstr "_Neue Werkzeugleiste hinzufügen" #: ../ui/edit-toolbars-dialog.glade.h:3 #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "_Use Default" msgstr "_Vorgabe verwenden" #: ../ui/mail-summary-popup.glade.h:1 msgid "Mail Summary" msgstr "Nachrichtenübersicht" #: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:4 msgid "General" msgstr "Allgemein" #: ../ui/mailbox-properties-dialog.glade.h:2 msgid "Mailbox _name:" msgstr "Postfach_name:" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox _type:" msgstr "_Art des Postfachs:" #: ../ui/properties-dialog.glade.h:1 msgid "Commands" msgstr "Befehle" #: ../ui/properties-dialog.glade.h:2 msgid "Double-click Action" msgstr "Aktion bei Doppelklick" #: ../ui/properties-dialog.glade.h:3 msgid "Fonts" msgstr "Schriften" #: ../ui/properties-dialog.glade.h:5 msgid "Mailbox List" msgstr "Postfächer" #: ../ui/properties-dialog.glade.h:6 msgid "Position" msgstr "Position" #: ../ui/properties-dialog.glade.h:7 msgid "Co_ntents:" msgstr "_Inhalt:" #: ../ui/properties-dialog.glade.h:8 msgid "Dis_play mail summary in tooltip" msgstr "_Nachrichtenübersicht anzeigen" #: ../ui/properties-dialog.glade.h:9 msgid "General" msgstr "Allgemein" #: ../ui/properties-dialog.glade.h:11 msgid "Mail Summary Popup" msgstr "Aufklappende Nachrichtenübersicht" #: ../ui/properties-dialog.glade.h:12 msgid "Mailboxes" msgstr "Postfächer" #: ../ui/properties-dialog.glade.h:13 msgid "Only display _recent mail" msgstr "Nur a_ktuelle Nachrichten anzeigen" #: ../ui/properties-dialog.glade.h:14 msgid "Use these _fonts:" msgstr "Folgende _Schriften verwenden:" #: ../ui/properties-dialog.glade.h:15 msgid "When _all mail has been read:" msgstr "Wenn alle _Nachricht gelesen wurden:" #: ../ui/properties-dialog.glade.h:16 msgid "When _new mail arrives:" msgstr "Wenn neue Nachricht _eintrifft:" #: ../ui/properties-dialog.glade.h:17 msgid "_Automatically close after:" msgstr "_Automatisch schließen nach:" #: ../ui/properties-dialog.glade.h:18 msgid "_Blink on errors" msgstr "_Bei Fehler blinken" #: ../ui/properties-dialog.glade.h:19 msgid "_Delay between mail checks:" msgstr "_Nach neuen Nachrichten sehen alle:" #: ../ui/properties-dialog.glade.h:20 msgid "_Display a Test Popup" msgstr "_Test-Popup anzeigen" #: ../ui/properties-dialog.glade.h:21 msgid "_Display the main window" msgstr "_Hauptfenster anzeigen" #: ../ui/properties-dialog.glade.h:22 msgid "_Enable mail summary popup" msgstr "_Aufklappende Nachrichtenübersicht aktivieren" #: ../ui/properties-dialog.glade.h:23 msgid "_Horizontal offset:" msgstr "_Horizontaler Abstand:" #: ../ui/properties-dialog.glade.h:24 msgid "_Launch the mail reader" msgstr "E-Mail-Programm _starten" #: ../ui/properties-dialog.glade.h:25 msgid "_Mail reader:" msgstr "_E-Mail-Programm:" #: ../ui/properties-dialog.glade.h:26 msgid "_Position:" msgstr "_Position:" #: ../ui/properties-dialog.glade.h:27 msgid "_Start Mail Notification on GNOME login" msgstr "_Laden beim Starten von GNOME" #: ../ui/properties-dialog.glade.h:28 msgid "_Title:" msgstr "_Titel:" #: ../ui/properties-dialog.glade.h:29 msgid "_Update the mail status" msgstr "_Nach neuen Nachrichten sehen" #: ../ui/properties-dialog.glade.h:30 msgid "_Use fonts from theme" msgstr "Schriften des _Themas verwenden" #: ../ui/properties-dialog.glade.h:31 msgid "_Vertical offset:" msgstr "_Vertikaler Abstand:" #: ../ui/properties-dialog.glade.h:32 msgid "minutes" msgstr "Minuten" #: ../ui/properties-dialog.glade.h:33 msgid "pixels" msgstr "Pixel" #: ../ui/properties-dialog.glade.h:34 msgid "seconds" msgstr "Sekunden" mail-notification-5.4.dfsg.1/po/sr@Latn.po0000644000175000001440000026442711005111356020204 0ustar evilynuxusers# Serbian translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Filip Miletic , 2004-2008. # # Both Serbian Cyrillic and Serbian Latin files should # be available. # msgid "" msgstr "" "Project-Id-Version: mail-notification 5.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-28 10:07+0100\n" "PO-Revision-Date: 2008-04-27 16:51+0200\n" "Last-Translator: Filip Miletić \n" "Language-Team: Serbian (sr) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: ../data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "Podesi dojavu prispeća pošte" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:296 #: ../src/mn-main.c:103 ../src/mn-main.c:424 ../src/mn-main.c:445 #: ../src/mn-main.c:496 msgid "Mail Notification" msgstr "Dojava pošte" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Obavesti kada stigne nova pošta" #: ../data/mail-notification.schemas.in.in.h:1 msgid "Always display an icon" msgstr "Uvek prikazuj sličicu" #: ../data/mail-notification.schemas.in.in.h:2 msgid "Blink on errors" msgstr "Treperi ako dođe do greške" #: ../data/mail-notification.schemas.in.in.h:3 msgid "Click action" msgstr "Dejstvo pri pritisku" #: ../data/mail-notification.schemas.in.in.h:4 msgid "Display a message count in the status icon" msgstr "Prikazuj broj poruka u statusnoj sličici" #: ../data/mail-notification.schemas.in.in.h:5 msgid "Display seen mail" msgstr "Prikaži pregledane poruke" #: ../data/mail-notification.schemas.in.in.h:6 msgid "Enable message popups" msgstr "Dozvoli iskačuće prozore" #: ../data/mail-notification.schemas.in.in.h:7 msgid "Expire message popups" msgstr "Važnost iskačućih prozora ističe" #: ../data/mail-notification.schemas.in.in.h:8 msgid "Fallback character sets" msgstr "Rezervni skup znakova" #: ../data/mail-notification.schemas.in.in.h:9 msgid "Fingerprints of trusted X509 certificates" msgstr "Otisci proverenih X509 sertifikata" #: ../data/mail-notification.schemas.in.in.h:10 msgid "Height of properties dialog" msgstr "Visina prozora sa postavkama" #: ../data/mail-notification.schemas.in.in.h:11 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "number of seconds to wait before expiring message popups." msgstr "Ako je podešavanje /apps/mail-notification/popups/expiration/enabled postavljeno na „true?, ovo predstavlja vreme koje treba da protekne pre nego što iskačući prozor nestane." #: ../data/mail-notification.schemas.in.in.h:12 msgid "Mail changed command" msgstr "Komanda pri promeni pošte" #: ../data/mail-notification.schemas.in.in.h:13 msgid "Mail read command" msgstr "Komanda za čitanje pošte" #: ../data/mail-notification.schemas.in.in.h:14 msgid "Maximum number of messages in the tooltip mail summary" msgstr "Najveći broj poruka u prikazu sažetaka poruka" #: ../data/mail-notification.schemas.in.in.h:15 msgid "Maximum number of simultaneous popups" msgstr "Najveći broj istovremeno otvorenih obaveštenja" #: ../data/mail-notification.schemas.in.in.h:16 msgid "Message popups actions" msgstr "Dejstva u iskačućim porukama" #: ../data/mail-notification.schemas.in.in.h:17 msgid "Message popups position" msgstr "Mesto iskačućeg prozora sa porukama" #: ../data/mail-notification.schemas.in.in.h:18 msgid "New mail command" msgstr "Izvrši kada pošta stigne" #: ../data/mail-notification.schemas.in.in.h:19 msgid "New mail sound" msgstr "Zvuk pri novoj pošti" #: ../data/mail-notification.schemas.in.in.h:20 msgid "Play a sound when new mail arrives" msgstr "Pokreni komandu kada stigne nova pošta" #: ../data/mail-notification.schemas.in.in.h:21 msgid "Play sound command" msgstr "Komanda za puštanje zvuka" #: ../data/mail-notification.schemas.in.in.h:22 msgid "Run a command when all mail is read" msgstr "Pokreni komandu kada je sva pošta pročitana" #: ../data/mail-notification.schemas.in.in.h:23 msgid "Run a command when new mail arrives" msgstr "Pokreni komandu kada stigne nova pošta" #: ../data/mail-notification.schemas.in.in.h:24 msgid "Run a command when the message list changes" msgstr "Pokreni komandu kada se spisak poruka promeni" #: ../data/mail-notification.schemas.in.in.h:25 msgid "Seconds to wait before expiring message popups" msgstr "" "Broj sekundi koji treba da protekne pre zatvaranja iskačućeg prozora sa " "porukama" #: ../data/mail-notification.schemas.in.in.h:26 msgid "" "The action to perform when the icon is clicked. Must be \"launch-mail-reader" "\", \"open-latest-message\", \"consider-new-mail-as-read\" or \"update-mail-" "status\"." msgstr "" "Naredba koja se izvršava pri pritisku na sličicu. Mogu da budu: „prikaži-" "prozor-sa-postavkama?, „pokreni-čitač-pošte?, „otvori-poslednju-poruku? ili " "„osveži-status-pošte?." #: ../data/mail-notification.schemas.in.in.h:27 msgid "The command to run when all mail is read." msgstr "Komanda koju treba pokrenuti kada je sva pošta pročitana." #: ../data/mail-notification.schemas.in.in.h:28 msgid "The command to run when new mail arrives." msgstr "Pokreni ovu komandu kada stigne nova pošta." #: ../data/mail-notification.schemas.in.in.h:29 msgid "The command to run when the message list changes." msgstr "Komanda koja se pokreće kada se promeni spisak poruka." #: ../data/mail-notification.schemas.in.in.h:31 #, no-c-format msgid "" "The command to use to play a sound file. The string %file will be " "substituted with the filename of the sound to play." msgstr "" "Komanda koja se koristi za puštanje zvuka. Niz %file biće zamenjen imenom " "datoteke koju treba pustiti." #: ../data/mail-notification.schemas.in.in.h:32 msgid "The height of the properties dialog in pixels." msgstr "Visina prozora sa postavkama izražena u tačkama." #: ../data/mail-notification.schemas.in.in.h:33 msgid "" "The list of character sets to attempt conversion from when uncompliant 8-bit " "data is encountered in message headers. The first character set allowing a " "successful conversion will be used. The special name \"user\" will be " "replaced with the character set of the user's locale. Note that Mail " "Notification must be restarted for changes to take effect." msgstr "Spisak skupova znakova za koje će biti pokušana konverzija ako se u zaglavlju poruke zateknu znaci koji nisu saglasni sa trenutno izabranim skupom znakova. Prvi skup znakova koji dozvoljava uspešnu konverziju će biti korišćen. Posebno ime „user? biće zamenjeno skupom znakova iz korisnikovog lokaliteta. Da bi ova izmena počela da važi morate ponovo da pokrenete dojavu pošte." #: ../data/mail-notification.schemas.in.in.h:34 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" "Spisak proverenih SSL/TLS servera (računar:port) koji nemaju X509 sertifikat." #: ../data/mail-notification.schemas.in.in.h:35 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "Spisak proverenih X509 sertifikata, predstavljenih MD5 otiskom." #: ../data/mail-notification.schemas.in.in.h:36 msgid "The maximum number of messages to display in the tooltip mail summary." msgstr "Najveći broj poruka kada se prikazuje sažetak poruka." #: ../data/mail-notification.schemas.in.in.h:37 msgid "" "The maximum number of popups to display simultaneously. If this limit is " "exceeded, only the most recent messages will be displayed. If the /apps/mail-" "notification/popups/position key is set to \"attached\", this limit will be " "ignored and only one popup will be allowed." msgstr "" "Najveći broj prozora koji će istovremeno biti otvoreni. Ako se premaši ova " "granica, biće prikazane samo najskorije poruke. Ako je ključ /apps/mail-" "notification/popups/position postavljen na „attached?, ova granica biće " "zanemarena i biće dozvoljen prikaz samo jednog prozora." #: ../data/mail-notification.schemas.in.in.h:38 msgid "" "The ordered list of actions to include in the message popups. Each element " "must be \"open\", \"mark-as-read\", \"mark-as-spam\" or \"delete\"." msgstr "" "Uređeni spisak radnji koje će biti uključene u iskačuće prozore. Elementi " "moraju da budu jedni od „open?, „mark-as-read?, „mark-as-spam? ili \"delete" "\"." #: ../data/mail-notification.schemas.in.in.h:39 msgid "The position of the message popups. Must be \"attached\" or \"free\"." msgstr "" "Mesto iskačućeg prozora sa porukama. Može biti „zakačen? ili „slobodan?." #: ../data/mail-notification.schemas.in.in.h:40 msgid "The sound file to play when new mail arrives." msgstr "Pusti ovaj zvuk kada stigne nova pošta." #: ../data/mail-notification.schemas.in.in.h:41 msgid "" "The type of mail summary to display in the icon's tooltip. Must be \"standard" "\", \"compact\" or \"none\"." msgstr "" "Vrsta sažetka pošte koji se prikazuje u oblačiću. Može biti „običan?, " "„kratak? ili „nijedan?." #: ../data/mail-notification.schemas.in.in.h:42 msgid "The width of the properties dialog in pixels." msgstr "Širina prozora sa postavkama izražena u tačkama." #: ../data/mail-notification.schemas.in.in.h:43 msgid "Tooltip mail summary" msgstr "Oblačić sa sažetkom poruka" #: ../data/mail-notification.schemas.in.in.h:44 msgid "Trusted servers list" msgstr "Spisak proverenih servera" #: ../data/mail-notification.schemas.in.in.h:45 msgid "Whether the status icon should blink on errors or not." msgstr "Da li sličica treba da treperi ako dođe do greške ili ne." #: ../data/mail-notification.schemas.in.in.h:46 msgid "Whether to display a message count in the status icon or not." msgstr "Da li treba prikazati broj poruka u oblačiću statusne sličice ili ne." #: ../data/mail-notification.schemas.in.in.h:47 msgid "Whether to display an icon when there is no new mail or not." msgstr "Da li se prikazuje sličica kada nema nove pošte." #: ../data/mail-notification.schemas.in.in.h:48 msgid "" "Whether to display mail which is still marked as unread but has been seen or " "not." msgstr "" "Da li treba prikazati poštu koja je još uvek označena kao nepročitana ali " "nije pregledana." #: ../data/mail-notification.schemas.in.in.h:49 msgid "Whether to enable message popups or not." msgstr "Da li se koriste iskačući prozori sa porukama ili ne." #: ../data/mail-notification.schemas.in.in.h:50 msgid "" "Whether to expire message popups or not. Must be \"default\", \"false\" or " "\"true\"." msgstr "" "Da li iskačući prozori ističu ili ne. Mora biti „default?, „false? ili " "„true?." #: ../data/mail-notification.schemas.in.in.h:51 msgid "Whether to play a sound when new mail arrives or not." msgstr "Da li treba pustiti zvuk kada stigne nova pošta ili ne." #: ../data/mail-notification.schemas.in.in.h:52 msgid "Whether to run a command when all mail is read or not." msgstr "" "Da li treba ili ne treba pokrenuti neku komandu kada je sva pošta pročitana." #: ../data/mail-notification.schemas.in.in.h:53 msgid "Whether to run a command when new mail arrives or not." msgstr "Da li treba pokrenuti neku komandu kada stigne nova pošta." #: ../data/mail-notification.schemas.in.in.h:54 msgid "Whether to run a command when the message list changes or not." msgstr "" "Da li treba pokrenuti neku komandu kada se spisak poruka promeni ili ne." #: ../data/mail-notification.schemas.in.in.h:55 msgid "Width of properties dialog" msgstr "Širina prozora sa postavkama" #: ../src/eggtrayicon.c:133 msgid "Orientation" msgstr "Orijentacija" #: ../src/eggtrayicon.c:134 msgid "The orientation of the tray." msgstr "Orijentacija obaveštajne zone." #. translators: header capitalization #: ../src/mn-about-dialog.gob:47 msgid "A Mail Notification Icon" msgstr "Sličica za dojavu prispeća pošte" #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:55 msgid "translator-credits" msgstr "Filip Miletić " #: ../src/mn-auth-combo-box.gob:98 #: ../src/mn-autodetect-mailbox-properties.gob:106 msgid "Autodetect" msgstr "A_utodetekcija" #. translators: header capitalization #: ../src/mn-authenticated-mailbox-properties.gob:56 msgid "Account" msgstr "Nalog" #: ../src/mn-authenticated-mailbox-properties.gob:59 msgid "_Username:" msgstr "_Kor.ime:" #: ../src/mn-authenticated-mailbox-properties.gob:63 msgid "_Password:" msgstr "_Lozinka:" #: ../src/mn-authenticated-mailbox-properties.gob:140 msgid "Saving password to keyring..." msgstr "Čuvanje lozinke u privesku..." #: ../src/mn-authenticated-mailbox-properties.gob:185 msgid "Retrieving password from keyring..." msgstr "Uzimanje lozinke iz priveska..." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:306 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "password you have entered is invalid.\n" "\n" "Please re-enter your password." msgstr "" "Dojava pošte nije mogla da se prijavi na %s sandučeta %s, najverovatnije " "zato što uneta lozinka nije ispravna.\n" "\n" "Molim unesite ponovo lozinku." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:308 #, c-format msgid "Enter your password for %s mailbox %s." msgstr "Unesite lozinku za %s sanduče %s." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: ../src/mn-authenticated-mailbox.gob:381 msgid "Authentication Required" msgstr "Potrebna je prijava" #: ../src/mn-authenticated-mailbox.gob:463 msgid "Unable to save the mailbox password" msgstr "Nije moguće sačuvati lozinku sandučića" #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:465 #, c-format msgid "The password of %s mailbox %s could not be saved to the keyring." msgstr "Lozinka za %s sanduče %s nije mogla biti sačuvana u privesku." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:119 #: ../src/mn-system-vfs-mailbox-properties.gob:57 msgid "Location" msgstr "Mesto" #: ../src/mn-autodetect-mailbox-properties.gob:121 msgid "_Location:" msgstr "_Mesto:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:129 msgid "_Browse..." msgstr "_Pregledaj..." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:169 msgid "Select a File or Folder" msgstr "Izaberite datoteku ili fasciklu" #: ../src/mn-base-mbox-mailbox-backend.gob:346 #, c-format msgid "unable to open mailbox: %s" msgstr "nije moguće otvoriti sanduče: %s" #: ../src/mn-client-session.c:177 #, c-format msgid "resolving %s" msgstr "pronalazim %s" #: ../src/mn-client-session.c:193 #, c-format msgid "unable to resolve %s: %s" msgstr "Nije moguće pronaći %s: %s" #: ../src/mn-client-session.c:234 #, c-format msgid "network address #%i" msgstr "mrežna adresa #%i" #: ../src/mn-client-session.c:237 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "mrežna adresa #%i se ne može prebaciti u tekstualni oblik: %s" #: ../src/mn-client-session.c:248 #, c-format msgid "%s: unsupported address family" msgstr "%s: ova vrsta adrese nije podržana" #: ../src/mn-client-session.c:255 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: nije moguće napraviti utičnicu: %s" #: ../src/mn-client-session.c:259 #, c-format msgid "connecting to %s (%s) port %i" msgstr "povezujem se sa %s (%s) port %i" #: ../src/mn-client-session.c:262 #, c-format msgid "unable to connect: %s" msgstr "nije moguće povezati se sa: %s" #: ../src/mn-client-session.c:267 msgid "connected successfully" msgstr "povezivanje je uspelo" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:281 #, c-format msgid "unable to connect to %s" msgstr "nije moguće povezati se sa %s" #: ../src/mn-client-session.c:333 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "odgovor \"%s\" nije ispravan u trenutno važećem kontekstu" #: ../src/mn-client-session.c:362 #, c-format msgid "unable to parse response \"%s\"" msgstr "nije moguće obraditi odgovor \"%s\"" #: ../src/mn-client-session.c:626 msgid "server name not found in certificate" msgstr "ime servera nije pronađeno u sertifikatu" #: ../src/mn-client-session.c:631 #, c-format msgid "" "user-provided server name \"%s\" does not match certificate-provided server " "name \"%s\"" msgstr "" "ime servera koje je zadao korisnik („%s?) se ne poklapa sa imenom servera " "koje stoji u sertifikatu („%s?)" #: ../src/mn-client-session.c:645 #, c-format msgid "\"%s\", " msgstr "„%s?, " #: ../src/mn-client-session.c:647 ../src/mn-client-session.c:1582 #: ../src/mn-yahoo-mailbox.gob:218 #, c-format msgid "\"%s\"" msgstr "„%s?" #: ../src/mn-client-session.c:650 #, c-format msgid "" "user-provided server name \"%s\" matches none of the certificate-provided " "server names %s" msgstr "" "ime servera koje je zadao korisnik („%s?) ne poklapa se ni sa jednim od " "imena servera koja stoje u sertifikatu %s" #: ../src/mn-client-session.c:740 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "nije moguće pokrenuti OpenSSL biblioteku: %s" #: ../src/mn-client-session.c:748 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "nije moguće napraviti SSL/TLS objekat: %s" #: ../src/mn-client-session.c:754 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "nije moguće postaviti SSL/TLS opis za datoteku: %s" #: ../src/mn-client-session.c:761 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "nije moguće obaviti SSL/TLS kontakt: %s" #: ../src/mn-client-session.c:767 msgid "untrusted server" msgstr "neproveren server" #: ../src/mn-client-session.c:771 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "SSL/TLS sloj je pokrenut (%s, %s %i-bit)" #: ../src/mn-client-session.c:819 ../src/mn-client-session.c:826 #, c-format msgid "unable to read from server: %s" msgstr "Nije moguće čitanje sa servera: %s" #: ../src/mn-client-session.c:824 msgid "unable to read from server: EOF" msgstr "Nije moguće čitanje sa servera: EOF" #: ../src/mn-client-session.c:836 #, c-format msgid "unable to decode data using SASL: %s" msgstr "Ne mogu se dekodovati podaci putem SASL: %s" #: ../src/mn-client-session.c:980 #, c-format msgid "unable to encode data using SASL: %s" msgstr "nije moguće kodirati podatke uz pomoć SASL: %s" #: ../src/mn-client-session.c:1009 ../src/mn-client-session.c:1016 #, c-format msgid "unable to write to server: %s" msgstr "nije moguć upis na server: %s" #: ../src/mn-client-session.c:1014 msgid "unable to write to server: EOF" msgstr "nije moguć upis na server: EOF" #: ../src/mn-client-session.c:1043 ../src/mn-pop3-mailbox.gob:448 #, c-format msgid "unable to encode Base64: %s" msgstr "nije moguće kodirati Base64: %s" #: ../src/mn-client-session.c:1220 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "ne može se pokrenuti SASL biblioteka: %s" #: ../src/mn-client-session.c:1232 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "ne može da se dobavi lokalna adresa utičnice: %s" #: ../src/mn-client-session.c:1238 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "ne može da se dobavi udaljena adresa utičnice: %s" #: ../src/mn-client-session.c:1272 #, c-format msgid "unable to set SASL security properties: %s" msgstr "nije moguće postaviti SASL sigurnosne postavke: %s" #: ../src/mn-client-session.c:1296 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "ne može se pokrenuti SASL prijava: SASL traži podatke koje nemamo" #: ../src/mn-client-session.c:1315 #, c-format msgid "unable to start SASL authentication: %s" msgstr "ne može se pokrenuti SASL prijava: %s" #: ../src/mn-client-session.c:1319 #, c-format msgid "unable to create a SASL connection: %s" msgstr "nije moguće uspostaviti SASL vezu: %s" #: ../src/mn-client-session.c:1366 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "SASL je tražio nama nepoznate podatke, obustavljam SASL prijavu" #: ../src/mn-client-session.c:1383 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, obustavljam SASL prijavu" #. compliance error #: ../src/mn-client-session.c:1388 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "nije moguće dekodovati Base64 ulaz sa servera: %s" #: ../src/mn-client-session.c:1424 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "SASL sigurnosni sloj nivoa snage %i je uspostavljen" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1429 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "ne mogu da pročitam postavku SASL_MAXOUTBUF: %s" #: ../src/mn-client-session.c:1435 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "upozorenje: ne mogu da pročitam postavku SASL_SSF: %s" #: ../src/mn-client-session.c:1583 msgid "unknown server error" msgstr "nepoznata greška na serveru" #: ../src/mn-compact-message-view.gob:39 msgid "Mailbox" msgstr "Sanduče" #: ../src/mn-compact-message-view.gob:40 msgid "From" msgstr "Od" #: ../src/mn-compact-message-view.gob:41 msgid "Subject" msgstr "Tema" #: ../src/mn-compact-message-view.gob:42 msgid "Sent" msgstr "Poslato" #: ../src/mn-conf.c:249 #, c-format msgid "cannot find default value of configuration key \"%s\"" msgstr "nije moguće pronaći podrazumevanu vrednost za podešavajući ključ „%s?" #: ../src/mn-conf.c:254 msgid "" "The default configuration has not been installed properly. Please check your " "Mail Notification installation." msgstr "" "Izvorno podešavanje nije ispravno instalirano. Molimo da proverite " "instalaciju Dojave pošte." #: ../src/mn-conf.c:291 msgid "A directory creation error has occurred" msgstr "Došlo je do greške pri pravljenju direktorijuma" #: ../src/mn-conf.c:292 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "Nije moguće napraviti direktorijum ?%s?: %s." #: ../src/mn-conf.c:361 #, c-format msgid "recursively unsetting %s" msgstr "rekurzivno poništavam %s" #: ../src/mn-conf.c:365 msgid "syncing the GConf database" msgstr "usklađujem GConf bazu podataka" #: ../src/mn-conf.c:368 msgid "completed" msgstr "urađeno" #: ../src/mn-custom-vfs-mailbox.gob:72 msgid "invalid location" msgstr "nevažeće mesto" #: ../src/mn-evolution-folder-tree-client.gob:269 msgid "" "Mail Notification can not contact Evolution. Make sure that Evolution is " "running and that the Evolution Jean-Yves Lefort's Mail Notification plugin " "is loaded." msgstr "" "Dojava pošte ne može da se poveže sa Evolucijom. Pokrenite Evoluciju i " "uključite dodatak Žan-Iva Leforta (Jean-Yves Lefort) za povezivanje Evolucije " "sa Dojavom pošte." #. translators: header capitalization #: ../src/mn-evolution-mailbox-properties.gob:71 #: ../src/mn-webmail-mailbox-properties.gob:92 msgid "Folder" msgstr "Fascikla" #: ../src/mn-evolution-mailbox.gob:225 msgid "unable to contact Evolution" msgstr "nije moguće povezati se sa Evolucijom" #: ../src/mn-evolution-plugin.c:151 msgid "A fatal error has occurred in the Evolution Mail Notification plugin" msgstr "Došlo je do kobne greške u dodatku programu za dojavu pošte za vezu sa programom evolucija." #: ../src/mn-evolution-plugin.c:152 ../src/mn-main.c:250 msgid "The connection to the D-Bus session bus was lost." msgstr "Veza sa sesijom d-busa je prekinuta." #: ../src/mn-evolution-plugin.c:175 ../src/mn-evolution-plugin.c:188 #: ../src/mn-evolution-plugin.c:226 msgid "Unable to initialize the Mail Notification plugin" msgstr "Nije moguće uključiti dodatak za dojavu pošte" #: ../src/mn-evolution-plugin.c:176 ../src/mn-main.c:270 #, c-format msgid "Unable to connect to the D-Bus session bus: %s." msgstr "nije moguće priključiti se na sesiju d-busa : %s" #: ../src/mn-evolution-plugin.c:227 #, c-format msgid "Unable to register the Mail Notification Evolution D-Bus server: %s." msgstr "Nije moguće prijaviti server za dojavu pošte u evoluciji: %s." #: ../src/mn-evolution-server.gob:152 #, c-format msgid "folder not found" msgstr "fascikla nije nađena" #: ../src/mn-evolution-server.gob:329 #, c-format msgid "message not found" msgstr "poruka nije nađena" #. #. * translators: GTK+ has the same message used in the same #. * context; please use the GTK+ translation for consistency #. #: ../src/mn-file-chooser-button.gob:179 msgid "(None)" msgstr "(Nijedna)" #. translators: header capitalization #: ../src/mn-gmail-mailbox-properties.gob:105 msgid "Gmail Label" msgstr "Gmejl (Gmail)" #: ../src/mn-gmail-mailbox-properties.gob:107 msgid "_Restrict to this label:" msgstr "_Ograniči na ovu oznaku:" #: ../src/mn-gmail-mailbox.gob:154 msgid "invalid feed location" msgstr "mesto dovoda nije ispravno navedeno" #: ../src/mn-gmail-mailbox.gob:175 #, c-format msgid "retrieving feed from %s" msgstr "preuzimanje izvora sa %s" #: ../src/mn-gmail-mailbox.gob:182 #, c-format msgid "unable to retrieve feed: %s" msgstr "nije moguće pronaći dovod: %s" #: ../src/mn-gmail-mailbox.gob:191 #, c-format msgid "feed retrieved successfully (%i byte)" msgid_plural "feed retrieved successfully (%i bytes)" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../src/mn-gmail-mailbox.gob:203 ../src/mn-gmail-mailbox.gob:254 msgid "unable to parse feed" msgstr "nije moguće obraditi dovod" #: ../src/mn-gmime-stream-vfs.gob:48 #: ../src/mn-sylpheed-mailbox-backend.gob:209 #, c-format msgid "unable to read %s: %s" msgstr "Nije moguće pročitati %s: %s" #: ../src/mn-gmime-stream-vfs.gob:50 ../src/mn-webmail-mailbox.gob:141 #, c-format msgid "unable to write to %s: %s" msgstr "nije moguć upis na %s: %s" #: ../src/mn-gmime-stream-vfs.gob:52 #, c-format msgid "unable to seek in %s: %s" msgstr "Nije moguće pronaći u %s: %s" #: ../src/mn-gmime-stream-vfs.gob:54 #, c-format msgid "unable to tell position of %s: %s" msgstr "nije moguće saznati položaj za %s: %s" #: ../src/mn-gmime-stream-vfs.gob:56 ../src/mn-mh-mailbox-backend.gob:206 #: ../src/mn-webmail-mailbox.gob:147 #, c-format msgid "unable to close %s: %s" msgstr "nije moguće zatvoriti %s: %s" #: ../src/mn-hotmail-mailbox.gob:286 ../src/mn-imap-mailbox.gob:1680 #: ../src/mn-pop3-mailbox.gob:1165 msgid "authentication failed" msgstr "prijava nije uspela" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:109 msgid "IMAP Mailbox" msgstr "IMAP sanduče" #: ../src/mn-imap-mailbox-properties.gob:111 #: ../src/mn-webmail-mailbox-properties.gob:94 msgid "In_box" msgstr "Do_lazno" #: ../src/mn-imap-mailbox-properties.gob:116 #: ../src/mn-webmail-mailbox-properties.gob:99 #: ../ui/mailbox-properties-dialog.glade.h:10 msgid "_Other:" msgstr "_Ostalo:" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:129 msgid "Use the IDLE Extension" msgstr "Koristi produžetak IDLE" #: ../src/mn-imap-mailbox-properties.gob:133 msgid "IMAP connection tab|_Never" msgstr "_Nikad" #: ../src/mn-imap-mailbox-properties.gob:134 msgid "A_utodetect" msgstr "A_utodetekcija" #: ../src/mn-imap-mailbox-properties.gob:135 msgid "Al_ways" msgstr "_Uvek" #: ../src/mn-imap-mailbox.gob:384 msgid "server did not send capabilities" msgstr "server nije obavestio o svojim mogućnostima" #: ../src/mn-imap-mailbox.gob:551 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "server je dojavio LOGINDISABLED, LOGIN prijava neće biti korišćena" #: ../src/mn-imap-mailbox.gob:552 msgid "unable to login" msgstr "prijava nije moguća" #: ../src/mn-imap-mailbox.gob:1063 msgid "" "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, " "logging out" msgstr "" "„Koristi IDLE proširenje“ je postavljeno na „nikad“ u postavkama sandučića, " "odjavljujem se" #: ../src/mn-imap-mailbox.gob:1074 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "udaljeni server koristi %s, ne koristim IDLE produžetak" #: ../src/mn-imap-mailbox.gob:1079 #, c-format msgid "" "the remote server runs %s, the IDLE extension might not function properly" msgstr "udaljeni server koristi %s, IDLE proširenje možda neće ispravno raditi" #: ../src/mn-imap-mailbox.gob:1088 msgid "the remote server does not support the IDLE extension, logging out" msgstr "udaljeni server ne podržava IDLE proširenje, odjavljujem se" #: ../src/mn-imap-mailbox.gob:1590 ../src/mn-pop3-mailbox.gob:309 msgid "server does not support in-band SSL/TLS" msgstr "server ne podržava zaštitu putem SSL/TLS" #: ../src/mn-imap-mailbox.gob:1614 ../src/mn-pop3-mailbox.gob:1080 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" "izabran je mehanizam za prijavu koji koristi SASL ali podrška za SASL nije " "ugrađena u program" #: ../src/mn-imap-mailbox.gob:1624 ../src/mn-pop3-mailbox.gob:1100 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "nepoznat mehanizam za prijavu \"%s\"" #: ../src/mn-imap-mailbox.gob:1656 ../src/mn-pop3-mailbox.gob:1136 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "isključujem mehanizam „%s“ i pokušavam SASL prijavu" #: ../src/mn-imap-mailbox.gob:1668 msgid "falling back to IMAP LOGIN authentication" msgstr "povratak na IMAP LOGIN prijavu" #: ../src/mn-imap-mailbox.gob:1724 ../src/mn-pop3-mailbox.gob:744 #, c-format msgid "cannot retrieve %i message" msgid_plural "cannot retrieve %i messages" msgstr[0] "" msgstr[1] "" msgstr[2] "" #. translators: header capitalization #: ../src/mn-mail-icon.gob:86 msgid "_Mail Reader" msgstr "_Čitač pošte" #. translators: header capitalization #: ../src/mn-mail-icon.gob:88 msgid "_Open Latest Message" msgstr "_Otvori poslednju poruku" #. translators: header capitalization #: ../src/mn-mail-icon.gob:93 msgid "_Consider New Mail as Read" msgstr "_Smatraj da je nova pošta pročitana" #. translators: header capitalization #: ../src/mn-mail-icon.gob:95 ../src/mn-mailbox-view.gob:312 msgid "_Update" msgstr "_Osveži" #. translators: header capitalization #: ../src/mn-mail-icon.gob:106 msgid "R_emove From Notification Area" msgstr "_Ukloni sa obaveštajne zone" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:106 #, c-format msgid "%s Properties" msgstr "Postavke za %s" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:210 msgid "Add a Mailbox" msgstr "Dodaj sanduče" #: ../src/mn-mailbox-properties-dialog.gob:585 msgid "_Default:" msgstr "_Izvorno:" #: ../src/mn-mailbox-properties-dialog.gob:587 #: ../ui/mailbox-properties-dialog.glade.h:9 msgid "_Default" msgstr "I_zvorno" #: ../src/mn-mailbox-properties-dialog.gob:614 msgid "D_efault:" msgstr "Iz_vorno:" #: ../src/mn-mailbox-properties-dialog.gob:618 #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "D_efault" msgstr "Izv_orno:" #: ../src/mn-mailbox-view.gob:249 msgid "A paste error has occurred" msgstr "Došlo je do greške prilikom nalepljivanja" #: ../src/mn-mailbox-view.gob:571 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "neobrađeno %s sanduče (%s)" #: ../src/mn-mailbox-view.gob:575 #, c-format msgid "%s mailbox" msgstr "%s sanduče" #: ../src/mn-mailbox-view.gob:586 msgid "detecting mailbox type..." msgstr "prepoznajem vrstu sandučeta..." #: ../src/mn-mailbox.gob:559 #, c-format msgid "\"type\" attribute missing" msgstr "nedostaje atribut „vrsta“" #: ../src/mn-mailbox.gob:566 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "nepoznata vrsta sandučeta „%s“" #: ../src/mn-mailbox.gob:965 #, c-format msgid "property \"%s\" has no value" msgstr "osobina „%s“ nema postavljenu vrednost" #: ../src/mn-mailbox.gob:1044 ../src/mn-mailbox.gob:1062 #: ../src/mn-shell.gob:624 #, c-format msgid "%s: %s" msgstr "%s: %s" #: ../src/mn-mailboxes.gob:248 msgid "An error has occurred while importing old mailboxes" msgstr "Došlo je do greške prilikom uvoženja starih sandučića" #: ../src/mn-mailboxes.gob:303 msgid "Unable to load the mailboxes configuration" msgstr "Nije moguće uvesti podešavanja sandučića" #: ../src/mn-mailboxes.gob:350 #, c-format msgid "Unable to parse the XML document." msgstr "nije moguće obraditi XML dokument." #: ../src/mn-mailboxes.gob:357 #, c-format msgid "The root element is missing." msgstr "Nedostaje koreni element." #: ../src/mn-mailboxes.gob:363 #, c-format msgid "The root element \"%s\" is invalid." msgstr "Koreni element „%s“ je nevažeći." #: ../src/mn-mailboxes.gob:385 #, c-format msgid "On line %i: %s." msgstr "U liniji %i: %s." #: ../src/mn-mailboxes.gob:390 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "U liniji %i: nepoznati element „%s“." #: ../src/mn-mailboxes.gob:399 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "Došlo je do greške prilikom učitavanja podešavanja sandučića" msgstr[1] "Došlo je do grešaka prilikom učitavanja podešavanja sandučića" msgstr[2] "Došlo je do grešaka prilikom učitavanja podešavanja sandučića" #: ../src/mn-mailboxes.gob:424 msgid "Unable to save the mailboxes configuration" msgstr "Nije moguće sačuvati podešavanja sandučića" #: ../src/mn-mailboxes.gob:469 ../src/mn-vfs.c:233 #, c-format msgid "Unable to remove %s: %s." msgstr "Nije moguće ukloniti %s: %s" #: ../src/mn-mailboxes.gob:477 #, c-format msgid "Unable to create %s: %s." msgstr "Nije moguće napraviti %s: %s" #: ../src/mn-mailboxes.gob:484 #, c-format msgid "Unable to open %s for writing: %s." msgstr "Nije moguće otvoriti %s za upis: %s" #: ../src/mn-mailboxes.gob:491 #, c-format msgid "Unable to write the XML document." msgstr "Nije moguće zapisati XML dokument." #: ../src/mn-mailboxes.gob:497 #, c-format msgid "Unable to close %s: %s." msgstr "Nije moguće zatvoriti %s: %s" #: ../src/mn-mailboxes.gob:507 ../src/mn-mailboxes.gob:514 ../src/mn-vfs.c:251 #: ../src/mn-vfs.c:259 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "Nije moguće preimenovati %s u %s: %s" #. non fatal #: ../src/mn-mailboxes.gob:520 ../src/mn-vfs.c:269 #, c-format msgid "unable to delete %s: %s" msgstr "nije moguće obrisati %s: %s" #: ../src/mn-mailboxes.gob:550 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "Sanduče %s ima %i novu poruku" msgstr[1] "Sanduče %s ima %i nove poruke" msgstr[2] "Sanduče %s ima %i novih poruka" #: ../src/mn-mailboxes.gob:576 #, c-format msgid "%s reported an error: %s" msgstr "%s je dojavio grešku: %s" #: ../src/mn-maildir-mailbox-backend.gob:127 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "nije moguće otvoriti fasciklu „%s?: %s" #: ../src/mn-maildir-mailbox-backend.gob:219 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "nije moguće zatvoriti fasciklu „%s?: %s" #: ../src/mn-maildir-mailbox-backend.gob:222 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "greška pri čitanju fascikle „%s?: %s" #: ../src/mn-maildir-mailbox-backend.gob:253 #: ../src/mn-mh-mailbox-backend.gob:200 #: ../src/mn-sylpheed-mailbox-backend.gob:311 #, c-format msgid "cannot read %i message" msgid_plural "cannot read %i messages" msgstr[0] "nečitljiva je %i poruka" msgstr[1] "nečitljive su %i poruke" msgstr[2] "nečitljivo je %i poruka" #: ../src/mn-maildir-message.gob:159 msgid "Delete message?" msgstr "Uklanjanje poruke?" #: ../src/mn-maildir-message.gob:225 msgid "The message cannot be moved to the trash. Permanently delete it?" msgstr "Poruka ne može da se premesti u smeće. Da li da je za stalno obrišem?" #: ../src/mn-maildir-message.gob:250 #, c-format msgid "" "The message could not be moved to the trash (%s). Permanently delete it?" msgstr "" "Poruka ne može da se premesti u smeće (%s). Da li da je za stalno obrišem?" #: ../src/mn-main.c:72 msgid "yes" msgstr "da" #: ../src/mn-main.c:72 msgid "no" msgstr "ne" #: ../src/mn-main.c:103 #, c-format msgid "%s version %s\n" msgstr "%s izdanje %s\n" #: ../src/mn-main.c:108 #, c-format msgid "Mailbox backends:\n" msgstr "Podržani sandučići:\n" #: ../src/mn-main.c:113 #, c-format msgid "IMAP and POP3 features:\n" msgstr "Mogućnosti za POP3 i IMAP:\n" #: ../src/mn-main.c:200 #, c-format msgid "Unable to contact the running Mail Notification instance: %s." msgstr "Nije moguće priključiti se na trenutno pokrenutu dojavu pošte: %s." #: ../src/mn-main.c:240 #, c-format msgid "%s option ignored since Mail Notification is not already running" msgstr "Opcija %s je zanemarena jer Dojava pošte još uvek nije pokrenuta" #: ../src/mn-main.c:334 msgid "Show version information" msgstr "Prikaži podatke o izdanju" #: ../src/mn-main.c:343 msgid "Enable informational output" msgstr "Dozvoli rečitiji izlaz" #: ../src/mn-main.c:352 msgid "Display the properties dialog" msgstr "Prikaži prozor sa postavkama" #: ../src/mn-main.c:361 msgid "Display the about dialog" msgstr "Prikaži podatke o programu" #: ../src/mn-main.c:370 msgid "Consider new mail as read" msgstr "Smatraj da je nova pošta pročitana" #: ../src/mn-main.c:379 msgid "Update the mail status" msgstr "Osveži podatke o pošti" #: ../src/mn-main.c:388 msgid "Print a XML mail summary" msgstr "Ispiši sažetak poruka u XML formatu" #: ../src/mn-main.c:397 msgid "Unset obsolete GConf configuration" msgstr "Poništi zastarela GConf podešavanja" #: ../src/mn-main.c:406 msgid "Quit Mail Notification" msgstr "Ugasi dojavu pošte" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: ../src/mn-main.c:432 msgid "multi-threading is not available" msgstr "višenitni rad nije podržan" #: ../src/mn-main.c:473 msgid "Mail Notification is not running" msgstr "Program za dojavu pošte nije pokrenut." #: ../src/mn-main.c:485 msgid "Unable to initialize the GnomeVFS library." msgstr "Nije moguće pokrenuti biblioteku GnomeVFS." #: ../src/mn-main.c:498 msgid "An initialization error has occurred in Mail Notification" msgstr "Došlo je do greške pri pokretanju programa za dojavu pošte" #: ../src/mn-main.c:499 msgid "" "Unable to initialize the notification library. Message popups will not be " "displayed." msgstr "" "Biblioteka za dojavu ne može da se pokrene. Iskačući prozori sa porukama " "neće biti prikazivani." #: ../src/mn-main.c:544 msgid "quitting Mail Notification" msgstr "Gasim dojavu pošte" #: ../src/mn-main.c:563 msgid "considering new mail as read" msgstr "nova pošta se smatra pročitanom" #: ../src/mn-main.c:568 msgid "updating the mail status" msgstr "Proveravam poštu" #: ../src/mn-main.c:585 msgid "Mail Notification is already running" msgstr "Program za dojavu pošte je već pokrenut." #: ../src/mn-message-mime.c:173 #, c-format msgid "unable to parse MIME message" msgstr "nije moguće obraditi MIME poruku" #. translators: header capitalization #: ../src/mn-message.gob:97 msgid "Open" msgstr "Otvori" #: ../src/mn-message.gob:98 msgid "Unable to open message" msgstr "Nije moguće otvoriti poruku" #. translators: header capitalization #: ../src/mn-message.gob:107 msgid "Mark as Read" msgstr "Označi kao pročitano" #: ../src/mn-message.gob:108 msgid "Unable to mark message as read" msgstr "Nije moguće poruku označiti kao pročitanu" #. translators: header capitalization #: ../src/mn-message.gob:117 msgid "Mark as Spam" msgstr "Označi kao nepoželjno" #: ../src/mn-message.gob:118 ../src/mn-message.gob:128 msgid "Unable to mark message as spam" msgstr "Nije moguće označiti poruku kao neželjenu" #. translators: header capitalization #: ../src/mn-message.gob:127 msgid "Delete" msgstr "Ukloni" #: ../src/mn-message.gob:336 ../src/mn-sound-player.gob:133 #: ../src/mn-sound-player.gob:169 ../src/mn-util.c:1577 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "Nije moguće izvršiti „%s?: %s." #: ../src/mn-mh-mailbox-backend.gob:209 #, c-format msgid "error while reading %s: %s" msgstr "greška pri čitanju %s: %s" #: ../src/mn-mh-mailbox-backend.gob:223 ../src/mn-webmail-mailbox.gob:276 #, c-format msgid "unable to open %s: %s" msgstr "nije moguće otvoriti %s: %s" #: ../src/mn-pi-mailbox-properties.gob:73 msgid "_Standard" msgstr "_Standard" #: ../src/mn-pi-mailbox-properties.gob:74 msgid "In-_band SSL/TLS" msgstr "Ugra_đeni SSL/TLS" #: ../src/mn-pi-mailbox-properties.gob:75 msgid "SSL/TLS on s_eparate port" msgstr "SSL/TLS na _posebnom portu" #: ../src/mn-pi-mailbox-properties.gob:79 msgid "_Server:" msgstr "_Server:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:99 msgid "Connection Type" msgstr "Vrsta veze" #: ../src/mn-pi-mailbox-properties.gob:146 msgid "Port:" msgstr "Port:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:173 msgid "Authentication" msgstr "Prijava" #: ../src/mn-pi-mailbox-properties.gob:177 msgid "_Mechanism:" msgstr "_Mehanizam:" #: ../src/mn-pi-mailbox-properties.gob:211 msgid "Connection" msgstr "Veza" #: ../src/mn-pi-mailbox.gob:147 msgid "SSL/TLS support has not been compiled in" msgstr "Podrška za SSL/TLS nije ugrađena" #: ../src/mn-pi-mailbox.gob:305 msgid "missing certificate" msgstr "nedostaje sertifikat" #: ../src/mn-pi-mailbox.gob:339 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "Program za dojavu prispeća pošte ne može da proveri \"%s\" (%s). To može da " "znači da neko presreće vašu prepisku kako bi došao do vaših poverljivih " "podataka.\n" "\n" "Na server se treba povezivati samo ako ste sigurni da se zaista povezujete " "sa \"%s\". Ako odlučite da se povežete na server, ova poruka neće ponovo " "biti prikazana." #: ../src/mn-pi-mailbox.gob:353 #, c-format msgid "Certificate fingerprint: %s." msgstr "Otisak sertifikata: %s." #: ../src/mn-pi-mailbox.gob:360 msgid "Connect to untrusted server?" msgstr "Da li da se povežem na neprovereni server?" #: ../src/mn-pop3-mailbox.gob:359 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "parametri za mogućnost LOGIN-DELAY nisu ispravno postavljeni" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:500 msgid "" "SASL authentication with initial client response failed, retrying without " "initial client response" msgstr "" "SASL autentifikacija sa početnim klijentskim odgovorom nije uspela, " "pokušavam ponovo bez početnog klijentskog odgovora" #: ../src/mn-pop3-mailbox.gob:920 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "tražen je zastoj pri prijavi, pauziram %i sekundu" msgstr[1] "tražen je zastoj pri prijavi, pauziram %i sekunde" msgstr[2] "tražen je zastoj pri prijavi, pauziram %i sekundi" #: ../src/mn-pop3-mailbox.gob:1092 msgid "server does not support APOP authentication" msgstr "server ne podržava prijavu korišćenjem mehanizma APOP" #: ../src/mn-pop3-mailbox.gob:1148 msgid "falling back to APOP authentication" msgstr "prelazim na APOP prijavu" #: ../src/mn-pop3-mailbox.gob:1153 msgid "falling back to USER/PASS authentication" msgstr "prelazim na prijavu pomoću imena i lozinke" #: ../src/mn-popup.gob:45 ../src/mn-standard-message-view.gob:39 msgid "Mailbox:" msgstr "Sanduče:" #: ../src/mn-popup.gob:46 ../src/mn-standard-message-view.gob:40 msgid "From:" msgstr "Šalje:" #: ../src/mn-popup.gob:47 ../src/mn-standard-message-view.gob:41 msgid "Subject:" msgstr "Tema:" #: ../src/mn-popup.gob:96 #, c-format msgid "configuration key %s: there is no action named \"%s\"" msgstr "ključ za podešavanja %s: ne postoji dejstvo koje se zove „%s?" #: ../src/mn-popup.gob:176 #, c-format msgid "unable to show popup: %s" msgstr "nije moguće prikazati iskačući prozor: %s" #: ../src/mn-popup.gob:194 #, c-format msgid "unable to close popup: %s" msgstr "nije moguće zatvoriti iskačući prozor: %s" #. we set the summary here because libnotify requires it #. translators: header capitalization #: ../src/mn-popup.gob:205 msgid "New Message" msgstr "Nova poruka" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:114 ../ui/properties-dialog.glade.h:18 msgid "Mail Notification Properties" msgstr "Postavke za dojavu pošte" #: ../src/mn-properties-dialog.gob:232 msgid "No mailbox selected." msgstr "Nijedno sanduče nije izabrano." #: ../src/mn-properties-dialog.gob:237 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "Izabrano %i sanduče" msgstr[1] "Izabrana %i sandučeta" msgstr[2] "Izabrano %i sandučeta" #: ../src/mn-server.gob:136 #, c-format msgid "Unable to register the Mail Notification D-Bus server: %s." msgstr "Nije moguće uključiti dojavin server za d-bus: %s." #: ../src/mn-shell.gob:290 #, c-format msgid "received %s signal, exiting" msgstr "primljen je signal %s, kraj rada" #: ../src/mn-shell.gob:430 msgid "No mail reader is configured" msgstr "Čitač pošte nije podešen" #: ../src/mn-shell.gob:431 msgid "" "You can configure a mail reader by choosing System → Preferences → " "Preferred Applications." msgstr "" "Možete da podesite čitač pošte izborom Sistem → Postavke → Omiljeni " "programi." #: ../src/mn-shell.gob:443 ../src/mn-shell.gob:449 ../src/mn-shell.gob:794 msgid "Unable to open the latest message" msgstr "Nije moguće otvoriti poslednju poruku" #: ../src/mn-shell.gob:444 #, c-format msgid "Messages of mailbox \"%s\" cannot be opened." msgstr "Poruke iz sandučeta „%s? ne mogu da se otvore." #: ../src/mn-shell.gob:450 ../src/mn-shell.gob:714 msgid "You have no new mail." msgstr "Nema novih poruka." #: ../src/mn-shell.gob:605 #, c-format msgid "%s (%i)" msgstr "%s (%i)" #. translators: header capitalization #: ../src/mn-shell.gob:610 msgid "Mailboxes Having New Mail" msgstr "Sandučići sa novom poštom" #. translators: header capitalization #: ../src/mn-shell.gob:629 msgid "Errors" msgstr "Greške" #. translators: header capitalization #: ../src/mn-shell.gob:649 msgid "Mail Summary" msgstr "Sažetak poruka" #: ../src/mn-shell.gob:689 #, c-format msgid "%i message is not displayed" msgid_plural "%i messages are not displayed" msgstr[0] "%i poruka nije prikazana" msgstr[1] "%i poruke nisu prikazane" msgstr[2] "%i poruka nije prikazano" #: ../src/mn-sound-file-chooser-dialog.gob:48 msgid "Select a File" msgstr "Izaberite datoteku" #: ../src/mn-sound-file-chooser-dialog.gob:58 msgid "All files" msgstr "Sve datoteke" #: ../src/mn-sound-file-chooser-dialog.gob:63 msgid "Audio files" msgstr "Zvučne datoteke" #: ../src/mn-sound-player.gob:120 msgid "Unable to play sound" msgstr "Nije moguće pustiti zvuk" #: ../src/mn-sound-player.gob:122 ../src/mn-util.c:1576 msgid "A command error has occurred in Mail Notification" msgstr "Došlo je do greške u komandama" #: ../src/mn-ssl.c:191 msgid "unknown SSL/TLS error" msgstr "nepoznata greška sa SSL/TLS" #: ../src/mn-standard-message-view.gob:45 msgid "Sent:" msgstr "Poslato:" #: ../src/mn-sylpheed-mailbox-backend.gob:229 #, c-format msgid "unable to open folder: %s" msgstr "nije moguće otvoriti fasciklu: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:317 #, c-format msgid "unable to close folder: %s" msgstr "nije moguće zatvoriti fasciklu: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:320 #, c-format msgid "error while reading folder: %s" msgstr "greška pri čitanju fasciklu: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:368 #, c-format msgid "unable to set encoding: %s" msgstr "nije moguće postaviti kodiranje: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:443 #, c-format msgid "unexpected end of file" msgstr "neočekivani kraj datoteke" #: ../src/mn-sylpheed-mailbox-backend.gob:483 #, c-format msgid "incompatible file version \"%i\"" msgstr "izdanje datoteke nije saglasno „%i“" #: ../src/mn-sylpheed-message.gob:69 #, c-format msgid "Unable to read %s: %s." msgstr "Nije moguće pročitati %s: %s." #: ../src/mn-system-vfs-mailbox-properties.gob:38 #: ../src/mn-system-vfs-mailbox-properties.gob:46 #: ../src/mn-system-vfs-mailbox.gob:44 msgid "System mailbox" msgstr "Sistemsko sanduče" #: ../src/mn-system-vfs-mailbox-properties.gob:73 #, c-format msgid "Your system mailbox is %s." msgstr "Vaše sistemsko sanduče je %s." #: ../src/mn-system-vfs-mailbox-properties.gob:80 msgid "" "The location of your system mailbox could not be detected. Check the MAIL " "environment variable." msgstr "Mesto sistemskog sandučeta nije pronađeno. Proverite promenljivu MAIL." #: ../src/mn-system-vfs-mailbox.gob:71 msgid "system mailbox not found" msgstr "sistemsko sanduče nije pronađeno" #: ../src/mn-test-mailbox.gob:38 msgid "Test mailbox" msgstr "Probno sanduče" #: ../src/mn-test-mailbox.gob:57 #, c-format msgid "Test message #%i" msgstr "Tekst poruke #%i" #. translators: header capitalization #: ../src/mn-test-mailbox.gob:63 msgid "Mail Notification Properties Dialog" msgstr "Dijalog za postavke Dojave pošte" #: ../src/mn-util.c:525 ../src/mn-util.c:548 ../src/mn-util.c:568 #: ../src/mn-util.c:590 msgid "A drag and drop error has occurred" msgstr "Došlo je do greške pri prevlačenju/puštanju" #: ../src/mn-util.c:526 msgid "An invalid location list has been received." msgstr "Primljen je nevažeći spisak mesta." #: ../src/mn-util.c:569 msgid "An invalid Mozilla location has been received." msgstr "Primljen je nevažeći Mozilin spisak mesta." #: ../src/mn-util.c:680 msgid "Unable to display help" msgstr "Nije moguće prikazati pomoć" #: ../src/mn-util.c:692 msgid "Unable to open link" msgstr "nije moguće otvoriti vezu" #: ../src/mn-util.c:883 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" msgid_plural "" "The following locations are invalid:\n" "\n" "%s" msgstr[0] "" "Sledeće mesto je nevažeće:\n" "\n" "%s" msgstr[1] "" "Sledeća mesta su nevažeća:\n" "\n" "%s" msgstr[2] "" "Sledeća mesta su nevažeća:\n" "\n" "%s" #: ../src/mn-util.c:899 msgid "A fatal error has occurred in Mail Notification" msgstr "Došlo je do kobne greške u programu za dojavu pošte" #: ../src/mn-util.c:979 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "pre %i sekundu" msgstr[1] "pre %i sekunde" msgstr[2] "pre %i sekundi" #: ../src/mn-util.c:983 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "pre oko %i minut" msgstr[1] "pre oko %i minuta" msgstr[2] "pre oko %i minuta" #: ../src/mn-util.c:988 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "pre oko %i sat" msgstr[1] "pre oko %i sata" msgstr[2] "pre oko %i sati" #: ../src/mn-util.c:993 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "pre oko %i dan" msgstr[1] "pre oko %i dana" msgstr[2] "pre oko %i dana" #: ../src/mn-util.c:998 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "pre oko %i nedelju" msgstr[1] "pre oko %i nedelje" msgstr[2] "pre oko %i nedelja" #: ../src/mn-util.c:1016 #, c-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i sekunda" msgstr[1] "%i sekunde" msgstr[2] "%i sekundi" #: ../src/mn-util.c:1020 #, c-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i minut" msgstr[1] "%i minuta" msgstr[2] "%i minuta" #: ../src/mn-util.c:1025 #, c-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i sat" msgstr[1] "%i sata" msgstr[2] "%i sati" #: ../src/mn-util.c:1030 msgid "1 day" msgstr "1 dan" #: ../src/mn-util.c:1506 #, c-format msgid "unterminated substitution" msgstr "zamena nema kraj" #: ../src/mn-util.c:1545 #, c-format msgid "unknown substitution \"%s\"" msgstr "nepoznata zamena „%s?" #: ../src/mn-util.c:1548 #, c-format msgid "empty substitution" msgstr "prazna zamena" #: ../src/mn-vfs-mailbox.gob:236 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "nije moguće nadgledati %s (%s), upiti su aktivirani" #: ../src/mn-vfs-mailbox.gob:426 msgid "unknown mailbox format" msgstr "format sandučeta nije prepoznat" #: ../src/mn-vfs-mailbox.gob:426 msgid "does not exist" msgstr "ne postoji" #: ../src/mn-vfs.c:241 #, c-format msgid "Unable to write %s: %s." msgstr "Nije moguće upisati %s: %s." #: ../src/mn-webmail-mailbox.gob:84 #, c-format msgid "unable to create a temporary file: %s" msgstr "Nije moguće napraviti privremenu datoteku: %s." #: ../src/mn-webmail-mailbox.gob:91 #, c-format msgid "unable to change the permissions of the temporary file: %s" msgstr "nije moguće promeniti dozvole za privremenu datoteku: %s" #: ../src/mn-webmail-mailbox.gob:135 #, c-format msgid "unable to set encoding of %s: %s" msgstr "nije moguće postaviti kodiranje %s: %s" #: ../src/mn-webmail-mailbox.gob:192 msgid "configuration:" msgstr "podešavanja:" #: ../src/mn-webmail-mailbox.gob:220 #, c-format msgid "running %s" msgstr "pokrećem %s" #: ../src/mn-webmail-mailbox.gob:224 #, c-format msgid "cannot execute \"%s\": %s" msgstr "Nije moguće izvršiti „%s?: %s." #: ../src/mn-webmail-mailbox.gob:229 msgid "standard output:" msgstr "standardni izlaz:" #: ../src/mn-webmail-mailbox.gob:230 msgid "standard error output:" msgstr "standardni izlaz za greške:" #. translators: %s is a program name, as in "unknown fetchyahoo failure" #: ../src/mn-webmail-mailbox.gob:248 #, c-format msgid "unknown %s failure" msgstr "nepoznata greška: %s" #: ../src/mn-xml.c:51 #, c-format msgid "" "property \"%s\": unable to transform string \"%s\" into a value of type \"%s" "\"" msgstr "osobina „%s“: nije moguće prebaciti nisku „%s“ u vrednost vrste „%s“" #: ../src/mn-yahoo-mailbox.gob:71 #, c-format msgid "unable to change the permissions of %s: %s" msgstr "nije moguće promeniti prava pristupa za %s: %s" #: ../src/mn-yahoo-mailbox.gob:82 #, c-format msgid "unable to create %s: %s" msgstr "nije moguće napraviti %s: %s" #: ../src/mn-yahoo-mailbox.gob:229 msgid "delay between mail checks too small" msgstr "pauza između provera pošte je premala" #: ../ui/mailbox-properties-dialog.glade.h:1 msgid "Delay Between Mail Checks" msgstr "Razmak između susednih provera pošte" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:2 ../ui/properties-dialog.glade.h:6 msgid "General" msgstr "Opšte" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox Name" msgstr "Ime sandučeta" #: ../ui/mailbox-properties-dialog.glade.h:5 msgid "Details" msgstr "Detalji" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:6 #: ../ui/properties-dialog.glade.h:15 msgid "General" msgstr "Opšte" #: ../ui/mailbox-properties-dialog.glade.h:7 msgid "Mailbox _type:" msgstr "_Vrsta sandučeta:" #: ../ui/mailbox-properties-dialog.glade.h:8 msgid "O_ther:" msgstr "_Ostalo:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:2 msgid "Click Action" msgstr "Naredba za pritisak" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:4 msgid "Expiration" msgstr "Isticanje" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:8 msgid "Mailbox List" msgstr "Sandučići" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:10 msgid "Position" msgstr "Mesto" #: ../ui/properties-dialog.glade.h:11 msgid "A_fter:" msgstr "_Posle:" #: ../ui/properties-dialog.glade.h:12 msgid "Co_nsider new mail as read" msgstr "S_matraj da je nova pošta pročitana" #: ../ui/properties-dialog.glade.h:13 msgid "De_sktop default" msgstr "_Izvorno za radni prostor" #: ../ui/properties-dialog.glade.h:16 msgid "In the p_opup stack" msgstr "U stogu _iskačućih poruka" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:20 msgid "Message Popups" msgstr "Iskačuće poruke" #: ../ui/properties-dialog.glade.h:21 msgid "Play a _sound when new mail arrives:" msgstr "Pusti _zvuk kada stigne nova pošta:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:23 msgid "Status Icon" msgstr "Statusna sličica" #: ../ui/properties-dialog.glade.h:24 msgid "_Attached to the status icon" msgstr "_Prikačene za statusnu sličicu" #: ../ui/properties-dialog.glade.h:25 msgid "_Display test messages" msgstr "_Prikaz poruka za primer" #: ../ui/properties-dialog.glade.h:26 msgid "_Enable message popups" msgstr "_Dozvoli iskačuće prozore" #: ../ui/properties-dialog.glade.h:27 msgid "_Launch the mail reader" msgstr "P_okreni čitač pošte" #: ../ui/properties-dialog.glade.h:28 msgid "_Open the latest message" msgstr "_Otvori poslednju poruku" #: ../ui/properties-dialog.glade.h:29 msgid "_Update the mail status" msgstr "_Osveži podatke o pošti" #: ../ui/properties-dialog.glade.h:30 msgid "message popups tab|_Never" msgstr "_Nikad" #~ msgid "Mail Notification automation" #~ msgstr "Automatska dojava prispeća pošte" #~ msgid "Mail Notification automation factory" #~ msgstr "Fabrika za dojavu prispeća pošte" #~ msgid "Evolution folder tree control" #~ msgstr "Upravljanje stablom fascikli u programu Evolucija" #~ msgid "Evolution folder tree control factory" #~ msgstr "Fabrika za upravljanje stablom fascikli u programu Evolucija" #~ msgid "Mail Notification / Evolution glue" #~ msgstr "Sučelje za Dojavu pošte i Evoluciju" #~ msgid "Mail Notification / Evolution glue factory" #~ msgstr "Fabrika za Dojavu pošte i Evoluciju" #~ msgid "" #~ "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", " #~ "the amount of time to wait before expiring message popups (seconds part)." #~ msgstr "" #~ "Ako je podešavanje /apps/mail-notification/popups/expiration/enabled " #~ "postavljeno na \"true\", vreme koje treba da protekne pre nego što " #~ "iskačući prozor istekne (sekunde)." #~ msgid "Minutes to wait before expiring message popups" #~ msgstr "" #~ "Broj minuta koji treba da protekne pre zatvaranja iskačućeg prozora sa " #~ "porukom" #~ msgid "The currently selected URI" #~ msgstr "Trenutno izabran URI" #~ msgid "" #~ "Bonobo could not locate the %s server. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo nije uspeo da pronađe %s server. Molim proverite instalaciju " #~ "Dojave pošte." #~ msgid "" #~ "Bonobo was unable to register the %s server. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo nije uspeo da zabeleži %s server. Molim proverite instalaciju " #~ "Dojave pošte." #~ msgid "unable to fetch message" #~ msgstr "nije moguće dobaviti poruku" #~ msgid "A Bonobo exception (%s) has occurred in %s()." #~ msgstr "Desio se Bonobov izuzetak (%s) u %s()." #~ msgid "" #~ "Bonobo could not locate the automation object. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo nije uspeo da pronađe objekat za automatizaciju. Proverite " #~ "instalaciju programa za dojavu pošte. (Prim. prev: usled greške u " #~ "programu Bonobo u Gnomu 2.6, kada instalirate program za obaveštenja, " #~ "treba da se odjavite i ponovo prijavite na sistem da bi sve počelo da " #~ "radi)" #~ msgid "" #~ "Bonobo could not locate the %s file. Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Bonobo nije mogao da pronađe datoteku %s. Molimo proverite podešavanja " #~ "Dojave pošte." #~ msgid "Unknown" #~ msgstr "Nepoznato" #~ msgid "unknown error" #~ msgstr "nepoznata greška" #~ msgid "Unable to delete message" #~ msgstr "Nije moguće ukloniti poruku" #~ msgid "file version missing" #~ msgstr "nedostaje izdanje datoteke" #~ msgid "" #~ "Unable to load image \"%s\" (%s). Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Nije moguće učitati sliku „%s (%s). Molimo proverite instalaciju Dojave " #~ "pošte." #~ msgid "" #~ "Unable to load interface \"%s\". Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Nije moguće učitati sučelje „%s?. Molimo proverite instalaciju Dojave " #~ "pošte." #~ msgid "" #~ "Widget \"%s\" not found in interface \"%s\". Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Komponenta „%s? nije pronađena u sučelju „%s?. Molimo proverite " #~ "instalaciju Dojave pošte." #~ msgid "Unable to open self as a module (%s)." #~ msgstr "nije moguće otvoriti sebe kao modul (%s)." #~ msgid "" #~ "Signal handler \"%s\" not found. Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Obrađivač signala „%s? nije pronađen. Molimo proverite instalaciju Dojave " #~ "pošte." #~ msgid "Unable to create a thread: %s." #~ msgstr "Nije moguće pokrenuti nit: %s." #~ msgid "unable to get current time: %s" #~ msgstr "nije moguće dobaviti trenutno vreme: %s" #~ msgid "unknown date" #~ msgstr "nepoznat datum" #~ msgid "Mailbox _name:" #~ msgstr "_Ime sandučeta:" #~ msgid "_Delay between mail checks:" #~ msgstr "_Pauza između provera pošte:" #~ msgid "_Use Default" #~ msgstr "_Koristi izvorno" #~ msgid "seconds" #~ msgstr "sekundi" #~ msgid "Whether to display seen mail or not." #~ msgstr "Da li treba prikazivati pregledanu poštu ili ne." #~ msgid "unable to close file: %s" #~ msgstr "nije moguće zatvoriti datoteku: %s" #~ msgid "_Never" #~ msgstr "Ni_kad" # FIXME: izbaci latinični naziv kada bude vreme #~ msgid "Sylpheed features:\n" #~ msgstr "Osobine Silfida (Sylpheed):\n" #~ msgid "Select _All" #~ msgstr "Izaberi _sve" #~ msgid "Co_nnect" #~ msgstr "_Poveži se" #~ msgid "error loading image: %s" #~ msgstr "greška pri učitavanju slike: %s" #~ msgid "Commands" #~ msgstr "Naredbe" #~ msgid "Tooltip Mail Summary" #~ msgstr "Sažetak poruka u oblačiću" #~ msgid "When _new mail arrives:" #~ msgstr "Kada _stigne nova pošta:" #~ msgid "When all mail has _been read:" #~ msgstr "Kada je _sva pošta pročitana:" #~ msgid "_Always display" #~ msgstr "_Uvek prikazuj" #~ msgid "_Blink on errors" #~ msgstr "_Treperi pri greškama" #~ msgid "_Display seen mail" #~ msgstr "_Prikaži pregledane poruke" #~ msgid "_Display this dialog" #~ msgstr "Pri_kaži ovaj prozor" #~ msgid "icon tooltip's mail summary layout|Co_mpact" #~ msgstr "_Skraćen" #~ msgid "icon tooltip's mail summary layout|_Standard" #~ msgstr "_Običan" #~ msgid "server did not send all the messages we requested" #~ msgstr "server nije poslao sve tražene poruke" #~ msgid "server did not send search results" #~ msgstr "server nije poslao rezultate pretrage" #~ msgid "Automatically close the mail summary popup" #~ msgstr "Automatski zatvori prozor sa sažetkom poruka" #~ msgid "Mail summary popup contents font" #~ msgstr "Pismo koje se koristi za sadržaj prozora sa sažetkom poruka" #~ msgid "Mail summary popup fonts aspect source" #~ msgstr "Izvor za aspekt za pismo u prozoru za sažetak (???)" #~ msgid "Mail summary popup horizontal offset" #~ msgstr "Pomeraj horizontalnih tačaka za prozor sa sažetkom poruka" #~ msgid "Mail summary popup title font" #~ msgstr "Pismo koje se koristi za naslov prozora sa sažetkom poruka" #~ msgid "Mail summary popup vertical offset" #~ msgstr "Pomeraj vertikalnih tačaka ѕa prozor sa sažetkom poruka" #~ msgid "Only display recent mail in mail summary popup" #~ msgstr "Prikaži samo skoro prispele poruke u sažetku" #~ msgid "" #~ "The amount of time to wait before closing the mail summary popup (minutes " #~ "part)." #~ msgstr "Pauza pre zatvaranja prozora sa sažetkom poruka (minuti)." #~ msgid "" #~ "The amount of time to wait before closing the mail summary popup (seconds " #~ "part)." #~ msgstr "Pauza pre zatvaranja prozora sa sažetkom poruka (sekunde)." #~ msgid "The custom font to use for the contents of the mail summary popup." #~ msgstr "" #~ "Posebno pismo koje se koristi za ispis sadržaja prozora sa sažetkom " #~ "poruka." #~ msgid "The custom font to use for the title of the mail summary popup." #~ msgstr "" #~ "Posebno pismo koje se koristi za ispis naslova prozora sa sažetkom poruka." #~ msgid "" #~ "The number of pixels to leave between the left or right side of the " #~ "screen and the mail summary popup." #~ msgstr "" #~ "Broj tačaka koje treba ostaviti između leve, odn. desne strane ekrana i " #~ "prozora sa sažetkom poruka." #~ msgid "" #~ "The number of pixels to leave between the top or bottom side of the " #~ "screen and the mail summary popup." #~ msgstr "" #~ "Broj tačaka koje treba ostaviti između vrha, odn. dna ekrana i prozora sa " #~ "sažetkom poruka." #~ msgid "" #~ "The position of the mail summary popup. Must be \"top-left\", \"top-right" #~ "\", \"bottom-left\" or \"bottom-right\"." #~ msgstr "" #~ "Položaj prozora sa sažetkom poruka. Može biti: ?gore-levo?, ?gore-" #~ "desno?, ?dole-levo? ili ?dole-desno?." #~ msgid "Whether to automatically close the mail summary popup or not." #~ msgstr "" #~ "Da li treba ili ne treba automatski zatvoriti prozor sa sažetkom pošte." #~ msgid "" #~ "Whether to display the mail summary popup when new mail arrives or not." #~ msgstr "Da li treba prikazati sažetak poruka kada stigne nova pošta." #~ msgid "" #~ "Whether to hide previously displayed mail in the mail summary popup or " #~ "not." #~ msgstr "" #~ "Da li iz sažetka treba ukloniti poruke koje su se u njemu već pre pojavile." #~ msgid "Use the IDLE extension:" #~ msgstr "Koristi IDLE produžetak:" #~ msgid "Mail Summary" #~ msgstr "Sažetak poruka" #~ msgid "Mail Summary" #~ msgstr "Sažetak poruka" #~ msgid "Close the mail summary popup" #~ msgstr "Zatvori prozor sa sažetkom poruka" #~ msgid "none" #~ msgstr "nijedno" #~ msgid "Ho_stname:" #~ msgstr "_Računar:" #~ msgid "Authent_ication mechanism:" #~ msgstr "_Način prijave:" #~ msgid "top left" #~ msgstr "gore-levo" #~ msgid "top right" #~ msgstr "gore-desno" #~ msgid "bottom left" #~ msgstr "dole-levo" #~ msgid "bottom right" #~ msgstr "dole-desno" #~ msgid "Use De_fault" #~ msgstr "_Kori�ti podrazumevano" #~ msgid "Fonts" #~ msgstr "Pisma" #~ msgid "Layout" #~ msgstr "Izgled" #~ msgid "Co_ntents:" #~ msgstr "_Sadržaj:" #~ msgid "Hide p_reviously displayed mail" #~ msgstr "Sa_krij prethodno prikazane poruke" #~ msgid "Hori_zontal offset:" #~ msgstr "_Horizontalni pomak:" #~ msgid "Mail Summary Popup" #~ msgstr "Sažetak poruka" #~ msgid "Use these _fonts:" #~ msgstr "Koristi ova _pisma:" #~ msgid "_Automatically close after:" #~ msgstr "_Automatski zatvori posle:" #~ msgid "_Display a Test Popup" #~ msgstr "Prikaži probno prozorče" #~ msgid "_Position:" #~ msgstr "_Mesto:" #~ msgid "_Title:" #~ msgstr "_Naslov:" #~ msgid "_Use fonts from theme" #~ msgstr "Koristi pisma iz _teme" #~ msgid "_Vertical offset:" #~ msgstr "_Vertikalni pomak:" #~ msgid "pixels" #~ msgstr "tačaka" #~ msgid "popup's mail summary layout|Co_mpact" #~ msgstr "S_kraćen" #~ msgid "popup's mail summary layout|_Standard" #~ msgstr "O_bičan" #~ msgid "Delay between mail checks (minutes part)." #~ msgstr "Razmak između dve provere (minuti)" #~ msgid "Delay between mail checks (seconds part)." #~ msgstr "Razmak između dve provere (sekunde)." #~ msgid "Display mail summary in tooltip" #~ msgstr "Prikaži sažetat poruka u oblačiću" #~ msgid "Do not show the immediate notification error dialog" #~ msgstr "Ne pokazuj prozor sa obaveštenjem o greškama" #~ msgid "Height of edit toolbars dialog" #~ msgstr "Visina prozora za uređivanje alatnih traka" #~ msgid "Height of main window" #~ msgstr "Visina glavnog prozora" #~ msgid "Minutes between mail checks" #~ msgstr "Minuta između dve provere" #~ msgid "Seconds between mail checks" #~ msgstr "Sekundi između dve provere" #~ msgid "Set a mail reader" #~ msgstr "Izaberite čitač pošte" #~ msgid "The command to run to launch the mail reader." #~ msgstr "Komanda kojom se pokreće čitač pošte" #~ msgid "The height of the edit toolbars dialog in pixels." #~ msgstr "Visina prozora za uređivanje statusnih traka, izražena u tačkama." #~ msgid "The height of the main window in pixels." #~ msgstr "Visina glavnog prozora izražena u tačkama." #~ msgid "" #~ "The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text" #~ "\", \"both\" or \"both-horiz\"." #~ msgstr "" #~ "Stil alatnih traka. Može biti: ?podrazumevan?, ?slike?, ?tekst?, ?oba?, ?" #~ "oba-vodoravno?." #~ msgid "The width of the edit toolbars dialog in pixels." #~ msgstr "Širina prozora za uređivanje statusnih traka, izražena u tačkama." #~ msgid "The width of the main window in pixels." #~ msgstr "Širina prozora glavnog prozora izražena u tačkama." #~ msgid "Toolbars style" #~ msgstr "Stil alatne trake" #~ msgid "View statusbar" #~ msgstr "Prikaži statusnu traku" #~ msgid "View toolbars" #~ msgstr "Prikaži alatnu traku" #~ msgid "Whether the statusbar should be visible or not." #~ msgstr "Da li statusna linija treba da se vidi ili ne." #~ msgid "Whether the toolbars should be visible or not." #~ msgstr "Da li alatne trake treba da se vide ili ne" #~ msgid "" #~ "Whether to prevent the immediate notification error dialog from being " #~ "displayed or not." #~ msgstr "Da li treba ili ne treba sprečiti pojavu prozora sa opisom grešaka." #~ msgid "Width of edit toolbars dialog" #~ msgstr "Širina prozora za uređivanje statusnih traka" #~ msgid "Width of main window" #~ msgstr "Širina glavnog prozora" #~ msgid "New Mail" #~ msgstr "Nova pošta" #~ msgid "_Remove Toolbar" #~ msgstr "_Ukloni alatnu traku" #~ msgid "Separator" #~ msgstr "Graničnik" #~ msgid "Main _Window" #~ msgstr "Glavni _prozor" #~ msgid "Count messages" #~ msgstr "Prebroj poruke" #~ msgid "_Mail" #~ msgstr "_Pošta" #~ msgid "_Edit" #~ msgstr "_Uredi" #~ msgid "_View" #~ msgstr "_Pregled" #~ msgid "_Help" #~ msgstr "P_omoć" #~ msgid "Launch the mail reader" #~ msgstr "P_okreni čitač pošte" #~ msgid "_Close" #~ msgstr "_Zatvori" #~ msgid "Close this window" #~ msgstr "Zatvori ovaj prozor" #~ msgid "_Quit" #~ msgstr "_Kraj" #~ msgid "_Toolbars" #~ msgstr "_Alatne trake" #~ msgid "Customize the toolbars" #~ msgstr "Uredi alatne trake" #~ msgid "_Preferences" #~ msgstr "_Postavke" #~ msgid "Toolbars Styl_e" #~ msgstr "Stil alatnih _traka" #~ msgid "Customize the toolbars style" #~ msgstr "Prilagodi stil alatnih traka" #~ msgid "_Contents" #~ msgstr "_Sadržaj" #~ msgid "Display help" #~ msgstr "Prikaži pomoć" #~ msgid "Display credits" #~ msgstr "Prikaži zasluge" #~ msgid "Show or hide the toolbars" #~ msgstr "Prikaži ili ukloni alatnu traku" #~ msgid "_Statusbar" #~ msgstr "_Statusna traka" #~ msgid "Show or hide the statusbar" #~ msgstr "Prikaži ili ukloni statusnu traku" #~ msgid "Set the toolbars style to the desktop default setting" #~ msgstr "Postavi stilove traka na stil koji važi u celom radnom okruženju" #~ msgid "I_cons Only" #~ msgstr "Samo _slike" #~ msgid "_Text Only" #~ msgstr "Samo _tekst" #~ msgid "Only display the toolbars text" #~ msgstr "Prika�i samo tekst u alatnoj traci" #~ msgid "Text Belo_w Icons" #~ msgstr "Tekst _ispod slika" #~ msgid "Display the toolbars text below the icons" #~ msgstr "Prikaži tekst ispod odgovarajuće slike u alatnoj traci" #~ msgid "Text Be_side Icons" #~ msgstr "Tekst _pored slika" #~ msgid "Display the toolbars text beside the icons" #~ msgstr "Prikaži tekst pored odgovarajuće slike u alatnoj traci" #~ msgid "unable to load menus.xml: %s" #~ msgstr "Nije moguće pročitati menus.xml: %s" #~ msgid "unable to load toolbars.xml" #~ msgstr "nije moguće učitati toolbars.xml: %s" #~ msgid "Compiled-in mailbox backends: " #~ msgstr "Ugrađene mogućnosti za sandučiće:" #~ msgid "List the compiled-in features" #~ msgstr "Ispiši ugrađene mogućnosti" #~ msgid "Display the main window" #~ msgstr "Prikaži glavni prozor" #~ msgid "You have new mail." #~ msgstr "Imate novu poštu." #~ msgid "Leave Fullscreen" #~ msgstr "Ostavi na celom ekranu" #~ msgid "MAIL environment variable not defined" #~ msgstr "promenljiva MAIL nije definisana" #~ msgid "widget \"%s\" not found in interface \"%s\"" #~ msgstr "element ?%s? nije pronađen u sučelju ?%s?" #~ msgid "signal handler \"%s\" not found" #~ msgstr "obrađivač signala „%s“ nije pronađen" #~ msgid "_Do not show this message again" #~ msgstr "_Ne prikazuj više ovu poruku" #~ msgid "invalid signal specification \"%s\"" #~ msgstr "nevažeća odrednica za signal ?%s?" #~ msgid "unable to monitor mailbox contents (%s), poll mode activated" #~ msgstr "nije moguće nadgledati sadržaj sandučeta (%s), upiti su aktivirani" #~ msgid "" #~ "As a fallback, they will be checked every %i second (this delay is " #~ "configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked every %i seconds (this delay is " #~ "configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Pošto nema druge mogućnosti, biće proveravani svaku %i sekundu (ovo " #~ "kašnjenje se može promeniti iz prozora sa postavkama)" #~ msgstr[1] "" #~ "Pošto nema druge mogućnosti, biće proveravani svake %i sekunde (ovo " #~ "kašnjenje se može promeniti iz prozora sa postavkama)" #~ msgstr[2] "" #~ "Pošto nema druge mogućnosti, biće proveravani svakih %i sekundi (ovo " #~ "kašnjenje se može promeniti iz prozora sa postavkama)" #~ msgid "" #~ "As a fallback, they will be checked every %i minute (this delay is " #~ "configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked every %i minutes (this delay is " #~ "configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Pošto nema druge mogućnosti, biće proveravani svaki %i minut (ovo kašnjenje " #~ "se može promeniti iz prozora sa postavkama)" #~ msgstr[1] "" #~ "Pošto nema druge mogućnosti, biće proveravani svakih %i minuta (ovo " #~ "kašnjenje se može promeniti iz prozora sa postavkama)" #~ msgstr[2] "" #~ "Pošto nema druge mogućnosti, biće proveravani svakih %i minuta (ovo " #~ "kašnjenje se može promeniti iz prozora sa postavkama)" #~ msgid "" #~ "As a fallback, they will be checked approximately every %i minute (this " #~ "delay is configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked approximately every %i minutes (this " #~ "delay is configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Pošto nema druge mogućnosti, biće proveravani na oko %i minut (ovo " #~ "kašnjenje se može promeniti iz prozora sa postavkama)" #~ msgstr[1] "" #~ "Pošto nema druge mogućnosti, biće proveravani na oko %i minuta (ovo " #~ "kašnjenje se može promeniti iz prozora sa postavkama)" #~ msgstr[2] "" #~ "Pošto nema druge mogućnosti, biće proveravani na oko %i minuta (ovo " #~ "kašnjenje se može promeniti iz prozora sa postavkama)" #~ msgid "A monitoring error has occurred" #~ msgstr "Došlo je do greške pri motrenju" #~ msgid "" #~ "Mail Notification was unable to enable immediate notification for one or " #~ "more mailboxes. %s" #~ msgstr "" #~ "Nije moguće namestiti neposrednu dojavu nove pošte za jedan ili više " #~ "sandučića. %s" #~ msgid "Edit Toolbars" #~ msgstr "Uredi alatne trake" #~ msgid "_Add a New Toolbar" #~ msgstr "_Dodaj novu alatnu traku" #~ msgid "Dis_play mail summary in tooltip" #~ msgstr "Prikaži prozor sa sažetkom poruka u oblačiću" #~ msgid "Mailboxes" #~ msgstr "Sandučići" #~ msgid "_Display the main window" #~ msgstr "_Prikaži glavni prozor" #~ msgid "_Mail reader:" #~ msgstr "_Čitač pošte:" #~ msgid "_Start Mail Notification on GNOME login" #~ msgstr "Pokreni _dojavu pri prijavi" #~ msgid "Has already been run" #~ msgstr "Već je pokrenut" #~ msgid "Mailbox list" #~ msgstr "Spisak sandučića" #~ msgid "The list of mailboxes to monitor." #~ msgstr "Spisak sandučića koji se prate." #~ msgid "Whether Mail Notification has already been run or not." #~ msgstr "Da li je program pokretan pre ili nije." #~ msgid "" #~ "Drag an item onto the toolbars above to add it, from the toolbars in the " #~ "items table to remove it." #~ msgstr "" #~ "Prevucite stavku na alatnu traku kako biste je dodali, ili sa alatne " #~ "trake u tabelu, kako biste je uklonili." # The email of the translator goes here #~ msgid "Jean-Yves Lefort " #~ msgstr "Filip Miletić " #~ msgid "" #~ "Mail Notification requires a " #~ "password\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Dojava pošte zahteva da upišete " #~ "lozinku\n" #~ "\n" #~ "%s" #~ msgid "The URI of the mailbox" #~ msgstr "URI oznaka poštanskog sandučega" #~ msgid "Whether the image is blinking or not" #~ msgstr "Da li slika treperi ili ne" #~ msgid "received non-ASCII data from server" #~ msgstr "server je poslao znake koji ne spadaju u skup ASKRI" #~ msgid "" #~ "the server sent a SASL challenge, but there was a pending initial SASL " #~ "client response" #~ msgstr "" #~ "server je započeo SASL razgovor, ali odgovor od klijenta stigao pre toga" #~ msgid "" #~ "the server did not send a SASL challenge, but there was no pending " #~ "initial SASL client response" #~ msgstr "" #~ "server nije poslao SASL razgovor, ali nije bilo ni odgovora od klijenta." #~ msgid "Your Gmail username" #~ msgstr "Vaš nalog na servisu Gmail" #~ msgid "" #~ "Your Gmail password (if left blank, you will be prompted for the password " #~ "when needed)" #~ msgstr "" #~ "Vaša lozinka na servisu Gmail (ako ne upišete lozinku, program će Vas " #~ "zamoliti da je unesete kada to bude potrebno)" #~ msgid "libsoup has not been compiled with SSL/TLS support" #~ msgstr "libsoup nije izgrađen sa podrškom za SSL/TLS" #~ msgid "unable to parse URI \"%s\"" #~ msgstr "nije moguće obraditi URI \"%s\"" #~ msgid "received non-UTF-8 data from server" #~ msgstr "server je poslao znake koji ne spadaju u skup UTF-8" #~ msgid "unable to transfer data: %s" #~ msgstr "ne mogu da preuzmem podatke: %s" #~ msgid "logging in" #~ msgstr "prijava u toku" #~ msgid "login failed" #~ msgstr "prijava nije uspela" #~ msgid "searching for unread mail" #~ msgstr "tražim novu poštu" #~ msgid "unable to initialize the ICU library" #~ msgstr "ne može se pokrenuti ICU biblioteka" #~ msgid "unable to parse Gmail data" #~ msgstr "ne mogu da obradim podatke sa servisa Gmail" #~ msgid "unable to open calendar: %s" #~ msgstr "nije moguće otvoriti kalendar: %s" #~ msgid "unable to get calendar time: %s" #~ msgstr "nije moguće dobaviti vreme iz kalendara: %s" #~ msgid "U_se idle mode if possible" #~ msgstr "K_oristi vreme dokolice, ako je moguće" #~ msgid "The hostname or IP address of the IMAP server" #~ msgstr "Ime ili IP broj IMAP servera" #~ msgid "Your username on the IMAP server" #~ msgstr "Vaše ime na IMAP serveru" #~ msgid "" #~ "Your password on the IMAP server (if left blank, you will be prompted for " #~ "the password when needed)" #~ msgstr "" #~ "Vaša lozinka na IMAP serveru (ako ne upišete lozinku, program će Vas " #~ "zamoliti da je unesete kada to bude potrebno)" #~ msgid "The port number of the IMAP server" #~ msgstr "Broj porta na IMAP serveru" #~ msgid "If possible, whether to use idle mode or not" #~ msgstr "Da li treba koristiti vreme dokolice ili ne" #~ msgid "The marked up text to show in the type combo box" #~ msgstr "Označeni tekst koji se pojavljuje u oznaci tipa" #~ msgid "Size group" #~ msgstr "Veličina grupe" #~ msgid "A GtkSizeGroup for aligning control labels" #~ msgstr "GtkSizeGroup za uravnanje kontrolnih oznaka" #~ msgid "Complete" #~ msgstr "Gotovo" #~ msgid "Whether the properties are completely filled or not" #~ msgstr "Da li su postavke sasvim popunjene ili ne" #~ msgid "Format" #~ msgstr "Format" #~ msgid "The mailbox is already in the list." #~ msgstr "Sanduče je već u spisku." #~ msgid "The mailbox URI" #~ msgstr "URI oznaka za sanduče" #~ msgid "The mailbox human-readable name" #~ msgstr "Ime sandučeta" #~ msgid "Whether the mailbox has to be polled or not" #~ msgstr "Da li se ovo sanduče ručno proverava ili ne" #~ msgid "The list of new and unread MNMessage objects" #~ msgstr "Spisak novih i nepročitanih MNMessage objekata" #~ msgid "The mailbox error, if any" #~ msgstr "Greška u pristupu sandučetu, ako postoji" #~ msgid "unable to enable immediate notification: %s" #~ msgstr "Nije moguće namestiti neposrednu dojavu nove pošte: %s" #~ msgid "Whether one or more of the mailboxes has to be polled" #~ msgstr "" #~ "Pokazuje da li postoji bar jedno sanduče koje mora da se učestalo " #~ "proverava" #~ msgid "%s is unsupported: %s" #~ msgstr "%s nije podržan: %s" #~ msgid "Gmail timestamps" #~ msgstr "GMAIL vremenski pečat" #~ msgid "Report the mail status" #~ msgstr "Proveri poštu" #~ msgid "" #~ "Bonobo could not locate the GNOME_MailNotification_Automation.server " #~ "file. Please check your Mail Notification installation." #~ msgstr "" #~ "Bonobo nije uspeo da pronađe objekat za automatizaciju. Proverite " #~ "instalaciju programa za dojavu pošte. (Prim. prev: usled greške u " #~ "programu Bonobo u Gnomu 2.6, kada instalirate program za obaveštenja, " #~ "treba da se odjavite i ponovo prijavite na sistem da bi sve počelo da " #~ "radi)" #~ msgid "error while reading .mh_sequences: %s" #~ msgstr "greška pri čitanju datoteke .mh_sequences: %s" #~ msgid "unable to open .mh_sequences: %s" #~ msgstr "nije moguće otvoriti datoteku .mh_sequences: %s" #~ msgid "detecting" #~ msgstr "istražujem" #~ msgid "The hostname or IP address of the POP3 server" #~ msgstr "Ime ili IP broj POP3 servera" #~ msgid "Your username on the POP3 server" #~ msgstr "Vaše ime na POP3 serveru" #~ msgid "" #~ "Your password on the POP3 server (if left blank, you will be prompted for " #~ "the password when needed)" #~ msgstr "" #~ "Vaša lozinka na POP3 serveru (ako ne upišete lozinku, program će Vas " #~ "zamoliti da je unesete kada to bude potrebno)" #~ msgid "The port number of the POP3 server" #~ msgstr "Broj porta na POP3 serveru" #~ msgid "Unsupported Mailboxes" #~ msgstr "Nepodržani sandučići" #~ msgid "unable to parse proxy URI \"%s\"" #~ msgstr "nije moguće obraditi zastupnički URI ?%s?" #~ msgid "The reason why the mailbox is unsupported" #~ msgstr "Razlog zašto sanduče nije podržano" #~ msgid "unsupported" #~ msgstr "nije podržano" #~ msgid "received an invalid Mozilla URL" #~ msgstr "primljen je neispravan Mozilin URL" #~ msgid "The amount of time to wait before closing the mail summary popup" #~ msgstr "Pauza pre zatvaranja prozora sa sažetkom poruka" #~ msgid "The amount of time to wait between mail checks" #~ msgstr "Pauza između dve uzastopne provere" #~ msgid "The command to run to launch the mail reader" #~ msgstr "Naredba za pokretanje čitača pošte" #~ msgid "The command to run when all mail is read" #~ msgstr "Naredba koja se pokreće kada je sva pošta pročitana" #~ msgid "The command to run when new mail arrives" #~ msgstr "Naredba koja se pokreće kada stiže nova pošta" #~ msgid "" #~ "The number of pixels to leave between the left or right side of the " #~ "screen and the mail summary popup" #~ msgstr "" #~ "Broj tačaka koje treba ostaviti između leve, odn. desne strane ekrana i " #~ "prozora sa sažetkom poruka" #~ msgid "" #~ "The number of pixels to leave between the top or bottom side of the " #~ "screen and the mail summary popup" #~ msgstr "" #~ "Broj tačaka koje treba ostaviti između vrha, odn. dna ekrana i prozora sa " #~ "sažetkom poruka" #~ msgid "Whether the status icon should blink on errors or not" #~ msgstr "Da li statusna sličica treperi pri greškama ili ne" #~ msgid "Whether to automatically close the mail summary popup or not" #~ msgstr "" #~ "Da li treba ili ne treba automatski zatvoriti prozor sa sažetkom poruka" #~ msgid "" #~ "Whether to display the mail summary in the status icon tooltip or not" #~ msgstr "Da li treba ili ne treba prikazivati sažetak poruka u oblačiću" #~ msgid "" #~ "Whether to display the mail summary popup when new mail arrives or not" #~ msgstr "" #~ "Da li treba ili ne treba prikazivati sažetak poruka kada stigne nova pošta" #~ msgid "Whether to run a command when all mail is read or not" #~ msgstr "Da li se pokreće ili ne pokreće komanda kada je sva pošta pročitana" #~ msgid "Whether to run a command when new mail arrives or not" #~ msgstr "Da li se pokreće komanda kada stigne pošta ili ne" #~ msgid "Whether to set a mail reader or not" #~ msgstr "Da li treba postaviti čitač pošte" #~ msgid "" #~ "Whether to start Mail Notification when you log into your GNOME session " #~ "or not" #~ msgstr "Da li pokrenuti dojavu pošte kada se prijavite na sistem" #~ msgid "" #~ "First startup\n" #~ "\n" #~ "Mail Notification has been loaded successfully.\n" #~ "\n" #~ "Since this is the first time you run Mail Notification, you need to " #~ "configure it.\n" #~ "\n" #~ "Note: this message will not be shown anymore. To configure Mail " #~ "Notification again, choose Applications → " #~ "Desktop PreferencesMail Notification (or on some systems Applications → Preferences → More Preferences → Mail Notification)." #~ msgstr "" #~ "Prvo pokretanje\n" #~ "\n" #~ "Program za dojavu pošte je uspešno pokrenut.\n" #~ "\n" #~ "Pošto ste program za dojavu pošte prvi put pokrenuli, verovatno želite i " #~ "da ga podesite.\n" #~ "\n" #~ "Pažnja: ova poruka se ubuduće neće prikazivati. Da biste podesili dojavu " #~ "pošte, izaberite stavku Programi Programi → " #~ "Postavke okruženjaDojava pošte (ili na nekim sistemima Programi → Postavke → Još postavki → Dojava pošte)." #~ msgid "_Configure Mail Notification" #~ msgstr "_Podesi dojavu pošte" #~ msgid "Use a custom font for the contents of the mail summary popup" #~ msgstr "Koristi posebno pismo za sadržaj prozora sa sažetkom poruka" #~ msgid "Use a custom font for the title of the mail summary popup" #~ msgstr "Koristi posebno pismo za naslov prozora sa sažetkom poruka" #~ msgid "" #~ "Whether to use a custom font for the contents of the mail summary popup " #~ "or not." #~ msgstr "" #~ "Da li treba ili ne treba koristiti posebno pismo za sadržaj prozora sa " #~ "sažetkom pošte." #~ msgid "" #~ "Whether to use a custom font for the title of the mail summary popup or " #~ "not." #~ msgstr "" #~ "Da li treba ili ne treba korisititi posebno pismo za naslov prozora sa " #~ "sažetkom pošte." #~ msgid "server did not send status" #~ msgstr "server nije poslao status" #~ msgid "_Launch Mail Reader" #~ msgstr "_Pokreni čitač pošte" #~ msgid "Whether the mailbox has new mail or not" #~ msgstr "Da li u sandučetu stoji nova pošta ili ne" #~ msgid "%s has no new mail" #~ msgstr "Sanduče %s nema novu poštu" #~ msgid "Display the mail summary dialog" #~ msgstr "Prikaži prozor sa sažetkom poruka" #~ msgid "error while reading mailbox: %s" #~ msgstr "greška pri čitanju sandučeta: %s" #~ msgid "_Mail Summary" #~ msgstr "_Sažetak poruka" #~ msgid "*" #~ msgstr "*" #~ msgid " " #~ msgstr " " #~ msgid "" #~ "Whether to use a custom font for the contents of the mail summary popup " #~ "or not" #~ msgstr "" #~ "Da li treba ili ne treba koristiti posebno pismo za sadržaj prozora sa " #~ "sažetkom poruka" #~ msgid "" #~ "Whether to use a custom font for the title of the mail summary popup or " #~ "not" #~ msgstr "" #~ "Da li treba ili ne treba koristiti posebno pismo za naslov prozora sa " #~ "sažetkom poruka" #~ msgid "The following mailbox reported an error:\n" #~ msgid_plural "The following mailboxes reported an error:\n" #~ msgstr[0] "Ovo sanduče ima grešku:\n" #~ msgstr[1] "Ovi sandučići imaju grešku:\n" #~ msgstr[2] "Ovi sandučići imaju grešku:\n" #~ msgid "The following mailbox is unsupported:\n" #~ msgid_plural "The following mailboxes are unsupported:\n" #~ msgstr[0] "Ovo sanduče nije podržano:\n" #~ msgstr[1] "Ovi sandučići nisu podržani:\n" #~ msgstr[2] "Ovi sandučići nisu podržani:\n" #~ msgid "Run a command when the icon is double-clicked" #~ msgstr "Izvrši komandu pri dvostrukom kliku na ikonu" #~ msgid "The command to run when the icon is double-clicked." #~ msgstr "Pokreni ovu komandu pri dvostrukom kliku na ikonu." #~ msgid "Whether to run a command when the icon is double-clicked or not." #~ msgstr "" #~ "Da li treba pokrenuti neku komandu kada pri dvostrukom kliku na ikonu." #~ msgid "Your Gmail password" #~ msgstr "Vaša lozinka na servisu Gmail" #~ msgid "successfully logged in" #~ msgstr "prijava je uspela" #~ msgid "Your password on the IMAP server" #~ msgstr "Vaša lozinka na IMAP serveru" #~ msgid "_Run %s" #~ msgstr "_Pokreni %s" #~ msgid "_Run Default Action" #~ msgstr "P_okreni podrazumevano" #~ msgid "Your password on the POP3 server" #~ msgstr "Vaša lozinka na POP3 serveru" #~ msgid "Unable to execute double-clicked command: %s." #~ msgstr "Nije moguće izvršiti komandu na dvostruki klik: %s." #~ msgid "Unable to execute new mail command: %s." #~ msgstr "Nije moguće izvršiti komandu za novu poštu: %s." #~ msgid "The command to run when the icon is double-clicked" #~ msgstr "Naredba koja se pokreće pri dvostrukom kliku" #~ msgid "When double-click_ed:" #~ msgstr "Pri _dvostrukom kliku:" #~ msgid "Whether to run a command when the icon is double-clicked or not" #~ msgstr "Da li se pokreće komanda pri dvostrukom kliku ili ne" mail-notification-5.4.dfsg.1/po/ja.po0000644000175000001440000014244710737451027017245 0ustar evilynuxusers# Japanese translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Hiroshi Hasebe , 2006. # msgid "" msgstr "" "Project-Id-Version: mail-notification 3.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-04-29 11:50+0900\n" "PO-Revision-Date: 2006-06-14 09:22+0200\n" "Last-Translator: Hiroshi Hasebe \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: data/GNOME_MailNotification.server.in.in.h:1 msgid "Mail Notification automation" msgstr "メール着信通知の自動化" #: data/GNOME_MailNotification.server.in.in.h:2 msgid "Mail Notification automation factory" msgstr "メール着信通知自動化ファクトリ" #: data/GNOME_MailNotification_Evolution.server.in.h:1 msgid "Evolution folder tree control" msgstr "Evolutionフォルダツリーコントロール" #: data/GNOME_MailNotification_Evolution.server.in.h:2 msgid "Evolution folder tree control factory" msgstr "Evolutionフォルダツリーコントロールファクトリ" #: data/GNOME_MailNotification_Evolution.server.in.h:3 msgid "Mail Notification / Evolution glue" msgstr "メール着信通知 / Evolution glue" #: data/GNOME_MailNotification_Evolution.server.in.h:4 msgid "Mail Notification / Evolution glue factory" msgstr "メール着信通知 / Evolution glueファクトリ" #: data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "メール着信通知の設定" #: data/mail-notification-properties.desktop.in.h:2 #: data/mail-notification.desktop.in.h:2 src/mn-mail-icon.gob:227 #: src/mn-main.c:132 src/mn-main.c:302 src/mn-main.c:318 msgid "Mail Notification" msgstr "メール着信通知" #: data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "メールの着信状況をお知らせします" #: data/mail-notification.schemas.in.h:1 msgid "Always display an icon" msgstr "常にアイコンを表示" #: data/mail-notification.schemas.in.h:2 msgid "Automatically close the mail summary popup" msgstr "新着メール一覧を自動的に閉じる" #: data/mail-notification.schemas.in.h:3 msgid "Blink on errors" msgstr "エラー発生時にアイコンを点滅させる" #: data/mail-notification.schemas.in.h:4 msgid "Click action" msgstr "クリック時の動作" #: data/mail-notification.schemas.in.h:5 msgid "Display seen mail" msgstr "確認ずみのメールを表示" #: data/mail-notification.schemas.in.h:6 msgid "Enable mail summary popup" msgstr "メール一覧をポップアップ" #: data/mail-notification.schemas.in.h:7 msgid "Fingerprints of trusted X509 certificates" msgstr "X509証明書の電子指紋" #: data/mail-notification.schemas.in.h:8 msgid "Height of properties dialog" msgstr "プロパティダイアログの高さ" #: data/mail-notification.schemas.in.h:9 msgid "Mail read command" msgstr "メールリーダを起動するコマンド" #: data/mail-notification.schemas.in.h:10 msgid "Mail summary popup contents font" msgstr "メール一覧ポップアップの本文フォント" #: data/mail-notification.schemas.in.h:11 msgid "Mail summary popup fonts aspect source" msgstr "メール一覧ポップアップで使うフォントの選択基準" #: data/mail-notification.schemas.in.h:12 msgid "Mail summary popup horizontal offset" msgstr "メール一覧ポップアップの水平オフセット" #: data/mail-notification.schemas.in.h:13 msgid "Mail summary popup position" msgstr "メール一覧ポップアップの表示位置" #: data/mail-notification.schemas.in.h:14 msgid "Mail summary popup title font" msgstr "メール一覧ポップアップのタイトルフォント" #: data/mail-notification.schemas.in.h:15 msgid "Mail summary popup vertical offset" msgstr "メール一覧ポップアップの垂直オフセット" #: data/mail-notification.schemas.in.h:16 msgid "Minutes to wait before closing the mail summary popup" msgstr "メール一覧ポップアップの表示時間" #: data/mail-notification.schemas.in.h:17 msgid "New mail command" msgstr "新着メールコマンド" #: data/mail-notification.schemas.in.h:18 msgid "Only display recent mail in mail summary popup" msgstr "メール一覧ポップアップで最近のメールのみ表示" #: data/mail-notification.schemas.in.h:19 msgid "Run a command when all mail is read" msgstr "全メールを開封後にコマンドを実行" #: data/mail-notification.schemas.in.h:20 msgid "Run a command when new mail arrives" msgstr "メール着信時にコマンドを実行" #: data/mail-notification.schemas.in.h:21 msgid "Seconds to wait before closing the mail summary popup" msgstr "メール一覧ポップアップの表示時間" #: data/mail-notification.schemas.in.h:22 msgid "" "The action to perform when the icon is clicked. Must be \"display-properties-" "dialog\", \"launch-mail-reader\" or \"update-mail-status\"." msgstr "" "アイコンがダブルクリックされたときの動作. \"display-main-window\", \"launch-" "mail-reader\" or \"update-mail-status\" のいずれかを指定." #: data/mail-notification.schemas.in.h:23 msgid "" "The amount of time to wait before closing the mail summary popup (minutes " "part)." msgstr "メール一覧ポップアップの表示時間 (分で指定)" #: data/mail-notification.schemas.in.h:24 msgid "" "The amount of time to wait before closing the mail summary popup (seconds " "part)." msgstr "メール一覧ポップアップの表示時間 (秒で指定)" #: data/mail-notification.schemas.in.h:25 msgid "" "The aspect source of the mail summary popup fonts. Must be \"theme\" or " "\"custom\"." msgstr "" "メール一覧ポップアップで使うフォントの選択基準. \"theme\"もしくは\"custom" "\"を指定." #: data/mail-notification.schemas.in.h:26 msgid "The command to run when all mail is read." msgstr "全メールを開封した後に実行するコマンド." #: data/mail-notification.schemas.in.h:27 msgid "The command to run when new mail arrives." msgstr "メール着信時に実行するコマンド." #: data/mail-notification.schemas.in.h:28 msgid "The custom font to use for the contents of the mail summary popup." msgstr "メール一覧ポップアップの本文表示に使用するカスタムフォント." #: data/mail-notification.schemas.in.h:29 msgid "The custom font to use for the title of the mail summary popup." msgstr "メール一覧ポップアップのタイトル部に使用するカスタムフォント." #: data/mail-notification.schemas.in.h:30 msgid "The height of the properties dialog in pixels." msgstr "プロパティダイアログの高さ (ピクセルで指定)." #: data/mail-notification.schemas.in.h:31 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" "信頼性の確認されたサーバー (ホスト名:ポート番号) の一覧 (X509証明書がない場" "合)." #: data/mail-notification.schemas.in.h:32 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "信頼性の確認されたX509証明書の一覧. (MD5電子指紋で表示)" #: data/mail-notification.schemas.in.h:33 msgid "" "The number of pixels to leave between the left or right side of the screen " "and the mail summary popup." msgstr "" "画面の左端・右端から, メール一覧ポップアップを表示する位置までの距離をピクセ" "ルで指定." #: data/mail-notification.schemas.in.h:34 msgid "" "The number of pixels to leave between the top or bottom side of the screen " "and the mail summary popup." msgstr "" "画面の上端・下端から, メール一覧ポップアップを表示する位置までの距離をピクセ" "ルで指定." #: data/mail-notification.schemas.in.h:35 msgid "" "The position of the mail summary popup. Must be \"top-left\", \"top-right\", " "\"bottom-left\" or \"bottom-right\"." msgstr "" "メール一覧ポップアップの表示位置. \"top-left\", \"top-right\", \"bottom-left" "\", \"bottom-right\" のいずれかを指定." #: data/mail-notification.schemas.in.h:36 msgid "" "The type of mail summary to display in the icon's tooltip. Must be \"standard" "\", \"compact\" or \"none\"." msgstr "" "メール一覧の表示形式. \"standard\", \"compat\", \"none\"のいずれかを指定." #: data/mail-notification.schemas.in.h:37 msgid "The width of the properties dialog in pixels." msgstr "プロパティダイアログの幅 (ピクセルで指定)." #: data/mail-notification.schemas.in.h:38 msgid "Tooltip mail summary" msgstr "メール一覧をバルーンで表示" #: data/mail-notification.schemas.in.h:39 msgid "Trusted servers list" msgstr "信頼性の確認されたサーバーの一覧" #: data/mail-notification.schemas.in.h:40 msgid "Whether the status icon should blink on errors or not." msgstr "エラー発生時にステータスアイコンを点滅させるかどうか." #: data/mail-notification.schemas.in.h:41 msgid "Whether to automatically close the mail summary popup or not." msgstr "メール一覧ポップアップを自動的に閉じるかどうか." #: data/mail-notification.schemas.in.h:42 msgid "Whether to display an icon when there is no new mail or not." msgstr "新着メールが無いときにもアイコンを表示するかどうか." #: data/mail-notification.schemas.in.h:43 msgid "Whether to display seen mail or not." msgstr "確認ずみのメールを表示するかどうか." #: data/mail-notification.schemas.in.h:44 msgid "Whether to display the mail summary popup when new mail arrives or not." msgstr "メール着信時, メール一覧をポップアップするかどうか." #: data/mail-notification.schemas.in.h:45 msgid "" "Whether to hide previously displayed mail in the mail summary popup or not." msgstr "メール一覧ポップアップに, 過去に表示したものを含めるかどうか." #: data/mail-notification.schemas.in.h:46 msgid "Whether to run a command when all mail is read or not." msgstr "全メールを開封した後のコマンド実行の有無." #: data/mail-notification.schemas.in.h:47 msgid "Whether to run a command when new mail arrives or not." msgstr "メール着信時のコマンド実行の有無." #: data/mail-notification.schemas.in.h:48 msgid "Width of properties dialog" msgstr "プロバティダイアログの幅" #: src/eggtrayicon.c:132 msgid "Orientation" msgstr "向き" #: src/eggtrayicon.c:133 msgid "The orientation of the tray." msgstr "トレイの向き" #. translators: header capitalization #: src/mn-about-dialog.gob:49 msgid "A Mail Notification Icon" msgstr "メールボックスを自動的にチェックし,\n新着メールをお知らせします" #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: src/mn-about-dialog.gob:57 msgid "translator-credits" msgstr "Hiroshi Hasebe " #: src/mn-about-dialog.gob:79 msgid "Unable to open link" msgstr "リンクを開くことができません" #: src/mn-auth-combo-box.gob:103 src/mn-autodetect-mailbox-properties.gob:109 msgid "autodetect" msgstr "自動検出" #: src/mn-authenticated-mailbox-properties.gob:46 msgid "_Username:" msgstr "ユーザー名 (_U):" #: src/mn-authenticated-mailbox-properties.gob:50 msgid "_Password:" msgstr "パスワード(_P):" #: src/mn-autodetect-mailbox-properties.gob:110 msgid "Location" msgstr "メールボックスの所在" #: src/mn-autodetect-mailbox-properties.gob:122 msgid "_Location:" msgstr "所在(_L):" #. translators: header capitalization #: src/mn-autodetect-mailbox-properties.gob:130 msgid "_Browse..." msgstr "ブラウズ(_B)..." #. translators: header capitalization #: src/mn-autodetect-mailbox-properties.gob:172 msgid "Select a File or Folder" msgstr "ファイルもしくはフォルダを選択" #: src/mn-client-session.c:247 #, c-format msgid "resolving %s" msgstr "%sを解決中" #: src/mn-client-session.c:263 #, c-format msgid "unable to resolve %s: %s" msgstr "%sの解決に失敗: %s" #: src/mn-client-session.c:304 #, c-format msgid "network address #%i" msgstr "ネットワークアドレス#%i" #: src/mn-client-session.c:307 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "ネットワークアドレス#%iの文字列への変換に失敗: %s" #: src/mn-client-session.c:318 #, c-format msgid "%s: unsupported address family" msgstr "%s: サポートされていないアドレス形式" #: src/mn-client-session.c:325 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: ソケットの作成に失敗: %s" #: src/mn-client-session.c:329 #, c-format msgid "connecting to %s (%s) port %i" msgstr "%s (%s) のポート %i に接続中" #: src/mn-client-session.c:332 #, c-format msgid "unable to connect: %s" msgstr "接続に失敗: %s" #: src/mn-client-session.c:337 msgid "connected successfully" msgstr "接続に成功" #. if reached, we couldn't find a working address #: src/mn-client-session.c:351 #, c-format msgid "unable to connect to %s" msgstr "%sへの接続に失敗" #: src/mn-client-session.c:378 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "OpenSSLライブラリの初期化に失敗: %s" #: src/mn-client-session.c:386 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "SSL/TLSオブジェクトの作成に失敗: %s" #: src/mn-client-session.c:392 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "SSL/TLSファイルディスクリプタの設定に失敗: %s" #: src/mn-client-session.c:398 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "SSL/TLSのハンドシェイクに失敗: %s" #: src/mn-client-session.c:404 msgid "untrusted server" msgstr "信頼性が不明なサーバー" #: src/mn-client-session.c:408 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "SSL/TLSレイヤが有効になりました (%s, %s %iビット)" #: src/mn-client-session.c:455 #, c-format msgid "%s, fingerprint: %s" msgstr "%s, 電子指紋 %s" #: src/mn-client-session.c:484 msgid "missing certificate" msgstr "電子証明書が欠落" #: src/mn-client-session.c:510 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "\"%s\" (%s) の信頼性を確認できませんでした. 通信内容が第三者によって傍受" "されるおそれがあります.\n" "\n" "\"%s\"へ確実に接続している場合にのみ, サーバーへ接続されることを" "おすすめします. サーバーへ接続すると, このメッセージは表示されなくなります." #: src/mn-client-session.c:525 msgid "Connect to untrusted server?" msgstr "信頼性が確認されていないサーバーに接続しますか?" #: src/mn-client-session.c:590 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "このコンテキストでの応答\"%s\"は無効です" #: src/mn-client-session.c:619 #, c-format msgid "unable to parse response \"%s\"" msgstr "応答\"%s\"の解析に失敗" #: src/mn-client-session.c:669 src/mn-client-session.c:676 #, c-format msgid "unable to read from server: %s" msgstr "サーバーからの読み出しに失敗: %s" #: src/mn-client-session.c:674 msgid "unable to read from server: EOF" msgstr "サーバーからの読み出しに失敗: EOF" #: src/mn-client-session.c:686 #, c-format msgid "unable to decode data using SASL: %s" msgstr "SASLでデコードに失敗: %s" #: src/mn-client-session.c:831 #, c-format msgid "unable to encode data using SASL: %s" msgstr "SASLでエンコードに失敗: %s" #: src/mn-client-session.c:862 src/mn-client-session.c:869 #, c-format msgid "unable to write to server: %s" msgstr "サーバーへの書き込みに失敗: %s" #: src/mn-client-session.c:867 msgid "unable to write to server: EOF" msgstr "サーバーへの書き込みに失敗: EOF" #: src/mn-client-session.c:898 src/mn-pop3-mailbox.gob:433 #, c-format msgid "unable to encode Base64: %s" msgstr "Base64エンコードに失敗: %s" #: src/mn-client-session.c:1075 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "SASLライブラリの初期化に失敗: %s" #: src/mn-client-session.c:1087 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "ソケットのローカルアドレスの取得に失敗: %s" #: src/mn-client-session.c:1093 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "ソケットのリモードアドレスの取得に失敗: %s" #: src/mn-client-session.c:1127 #, c-format msgid "unable to set SASL security properties: %s" msgstr "SASLのセキュリティに関する設定に失敗: %s" #: src/mn-client-session.c:1151 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "SASL認証を開始できません. 未知の要求を検出しました" #: src/mn-client-session.c:1170 #, c-format msgid "unable to start SASL authentication: %s" msgstr "SASL認証を開始できません: %s" #: src/mn-client-session.c:1174 #, c-format msgid "unable to create a SASL connection: %s" msgstr "SASLコネクションの確立に失敗: %s" #: src/mn-client-session.c:1221 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "SASLから未知の要求が発生. SASL認証を中止します" #: src/mn-client-session.c:1238 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, SASL認証を中止" #. compliance error #: src/mn-client-session.c:1243 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "サーバから取得したメッセージのBase64デコードに失敗: %s" #: src/mn-client-session.c:1279 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "SASLのセキュリティレイヤ (強度%i) が有効になりました" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: src/mn-client-session.c:1284 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "SASL_MAXOUTBUFプロパティの取得に失敗: %s" #: src/mn-client-session.c:1290 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "警告: SASL_SSFプロパティの取得に失敗: %s" #: src/mn-client-session.c:1449 msgid "unknown server error" msgstr "未知のサーバーエラー" #: src/mn-compact-message-view.gob:45 msgid "Mailbox" msgstr "メールボックス" #: src/mn-compact-message-view.gob:46 msgid "From" msgstr "差出人" #: src/mn-compact-message-view.gob:47 msgid "Subject" msgstr "件名" #: src/mn-compact-message-view.gob:48 msgid "Sent" msgstr "発信時期" #: src/mn-conf.c:262 msgid "A directory creation error has occurred" msgstr "ディレクトリ作成時にエラーが発生" #: src/mn-conf.c:263 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "ディレクトリ\"%s\"の作成に失敗: %s." #: src/mn-conf.c:402 #, c-format msgid "recursively unsetting %s" msgstr "%sの設定を再帰的に解除中" #: src/mn-conf.c:406 msgid "syncing the GConf database" msgstr "GConfデータベースを同期中" #: src/mn-conf.c:409 msgid "completed" msgstr "完了" #: src/mn-conf.c:1137 msgid "A command error has occurred in Mail Notification" msgstr "メール着信通知システムの内部でコマンドエラーが発生" #: src/mn-conf.c:1138 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "\"%s\"の実行に失敗: %s." #: src/mn-custom-vfs-mailbox.gob:76 msgid "invalid location" msgstr "不正な位置指定" #: src/mn-evolution-folder-tree-control.c:91 msgid "The currently selected URI" msgstr "現在選択されているURI" #. translators: header capitalization #: src/mn-evolution-mailbox-properties.gob:68 msgid "Folder" msgstr "フォルダ" #: src/mn-evolution-mailbox-properties.gob:159 msgid "" "Mail Notification can not contact Evolution. Make sure that Evolution is " "running and that the Evolution Mail Notification plugin is loaded." msgstr "" "Evolutionに接続できません. Evolutionが稼働しており, かつ" "Evolutionプラグインが読み込まれていることをご確認ください." #: src/mn-evolution-mailbox.gob:75 msgid "folder not found" msgstr "フォルダが見つかりません" #: src/mn-evolution-mailbox.gob:216 msgid "unable to contact Evolution" msgstr "Evolutionに接続できません" #: src/mn-evolution-plugin.c:136 src/mn-evolution-plugin.c:140 msgid "Unable to activate the Mail Notification plugin" msgstr "プラグインが動作しません" #: src/mn-evolution-plugin.c:136 #, c-format msgid "" "Bonobo could not locate the %s server. Please check your Mail Notification " "installation." msgstr "" "Bonoboがサーバー%sを検出できませんでした. メール着信通知システムが正しく" "インストールされているかどうかをご確認ください." #: src/mn-evolution-plugin.c:140 src/mn-main.c:460 #, c-format msgid "" "Bonobo was unable to register the %s server. Please check your Mail " "Notification installation." msgstr "" "Bonoboがサーバー%sを登録できませんでした. メール着信通知システムが正しく" "インストールされているかどうかをご確認ください." #: src/mn-gmail-mailbox.gob:103 msgid "invalid feed location" msgstr "フィードの指定が不正" #: src/mn-gmail-mailbox.gob:117 #, c-format msgid "retrieving feed from %s" msgstr "%sからフィードを取得中" #: src/mn-gmail-mailbox.gob:124 #, c-format msgid "unable to retrieve feed: %s" msgstr "フィードを取得できませんでした: %s" #: src/mn-gmail-mailbox.gob:139 src/mn-gmail-mailbox.gob:187 msgid "unable to parse feed" msgstr "フィードの内容を解析できません" #: src/mn-gmime-stream-vfs.gob:50 src/mn-sylpheed-mailbox-backend.gob:205 #, c-format msgid "unable to read %s: %s" msgstr "%sの読み取りに失敗: %s" #: src/mn-gmime-stream-vfs.gob:52 #, c-format msgid "unable to write to %s: %s" msgstr "%sへの書き込みに失敗: %s" #: src/mn-gmime-stream-vfs.gob:54 #, c-format msgid "unable to seek in %s: %s" msgstr "%sのシークに失敗: %s" #: src/mn-gmime-stream-vfs.gob:56 #, c-format msgid "unable to tell position of %s: %s" msgstr "%sの位置判別に失敗: %s" #: src/mn-gmime-stream-vfs.gob:58 src/mn-mh-mailbox-backend.gob:164 #, c-format msgid "unable to close %s: %s" msgstr "%sのクローズに失敗: %s" #: src/mn-imap-mailbox-properties.gob:114 src/mn-standard-message-view.gob:62 msgid "Mailbox:" msgstr "メールボックス:" #: src/mn-imap-mailbox-properties.gob:118 msgid "in_box" msgstr "In_box" #: src/mn-imap-mailbox-properties.gob:129 msgid "oth_er:" msgstr "他(_E):" #: src/mn-imap-mailbox-properties.gob:140 msgid "ne_ver" msgstr "しない(_V)" #: src/mn-imap-mailbox-properties.gob:141 msgid "au_todetect" msgstr "自動検出(_T)" #: src/mn-imap-mailbox-properties.gob:142 msgid "al_ways" msgstr "常に(_W)" #: src/mn-imap-mailbox-properties.gob:174 msgid "Use the IDLE extension:" msgstr "拡張機能IDLEを使用します:" #: src/mn-imap-mailbox.gob:384 msgid "server did not send capabilities" msgstr "サーバーの仕様取得に失敗" #: src/mn-imap-mailbox.gob:551 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "サーバーからLOGINDISABLEDの通知あり. LOGIN認証の使用を取り止めます" #: src/mn-imap-mailbox.gob:552 msgid "unable to login" msgstr "ログインできません" #. compliance error #: src/mn-imap-mailbox.gob:752 msgid "server did not send all the messages we requested" msgstr "サーバーから検索結果が得られませんでした" #: src/mn-imap-mailbox.gob:822 msgid "unable to fetch message" msgstr "メッセージの取得に失敗" #: src/mn-imap-mailbox.gob:847 msgid "" "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, " "logging out" msgstr "" "メールボックスの設定で\"Use the IDLE extension\"が\"never\"" "になっています. ログアウトします" #: src/mn-imap-mailbox.gob:858 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "サーバーで%sが稼働しています. 拡張機能IDLEは使用しません" #: src/mn-imap-mailbox.gob:863 #, c-format msgid "" "the remote server runs %s, the IDLE extension might not function properly" msgstr "" "サーバーで%sが稼働しています. 拡張機能 IDLE が正常に機能しないおそれが" "あります" #: src/mn-imap-mailbox.gob:872 msgid "the remote server does not support the IDLE extension, logging out" msgstr "サーバーが拡張機能IDLEをサポートしていません. ログアウトします" #: src/mn-imap-mailbox.gob:1377 src/mn-pop3-mailbox.gob:296 msgid "server does not support in-band SSL/TLS" msgstr "サーバーがin-band SSL/TLSをサポートしていません" #: src/mn-imap-mailbox.gob:1401 src/mn-pop3-mailbox.gob:947 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" "SASL認証が選択されましたが, コンパイル時にSASLの使用が指定されて" "いません" #: src/mn-imap-mailbox.gob:1411 src/mn-pop3-mailbox.gob:967 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "\"%s\"は未知の認証方式です" #: src/mn-imap-mailbox.gob:1443 src/mn-pop3-mailbox.gob:1003 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "\"%s\"を無効にし, SASL認証で再試行します" #: src/mn-imap-mailbox.gob:1455 msgid "falling back to IMAP LOGIN authentication" msgstr "代替認証方式として, IMAP LOGINへ切り替えます" #: src/mn-imap-mailbox.gob:1467 src/mn-pop3-mailbox.gob:1032 msgid "authentication failed" msgstr "認証に失敗しました" #. success; caller must switch state itself #. compliance error #: src/mn-imap-mailbox.gob:1528 msgid "server did not send search results" msgstr "サーバーから検索結果が返しませんでした" #. translators: header capitalization #: src/mn-mail-icon.gob:89 msgid "_Mail Reader" msgstr "メールリーダーを起動(_M)" #. translators: header capitalization #: src/mn-mail-icon.gob:91 src/mn-mailbox-view.gob:312 msgid "_Update" msgstr "今すぐメールをチェック(_U)" #. translators: header capitalization #: src/mn-mail-icon.gob:98 msgid "R_emove From Notification Area" msgstr "通知エリアから外す(_E)" #. translators: header capitalization #: src/mn-mail-summary-popup.gob:270 msgid "Mail Summary" msgstr "新着メール一覧" #. translators: header capitalization #: src/mn-mail-summary-popup.gob:277 msgid "Mail Summary" msgstr "新着メール一覧" #. translators: header capitalization #: src/mn-mailbox-properties-dialog.gob:89 #, c-format msgid "%s Properties" msgstr "%sのプロパティ" #. translators: header capitalization #: src/mn-mailbox-properties-dialog.gob:232 msgid "Add a Mailbox" msgstr "メールボックスを追加" #: src/mn-mailbox-view.gob:248 msgid "A paste error has occurred" msgstr "ペーストエラーが発生" #: src/mn-mailbox-view.gob:557 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "未処理のメールボックス%s (%s)" #: src/mn-mailbox-view.gob:562 #, c-format msgid "%s mailbox" msgstr "%sメールボックス" #: src/mn-mailbox-view.gob:577 msgid "detecting mailbox type..." msgstr "メールボックスの種別を判別しています..." #: src/mn-mailbox.gob:472 msgid "\"type\" attribute missing" msgstr "\"type\"属性が欠落" #: src/mn-mailbox.gob:479 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "メールボックスの種別が不明: \"%s\"" #: src/mn-mailbox.gob:499 #, c-format msgid "" "property \"%s\": unable to transform string \"%s\" into a value of type \"%s" "\"" msgstr "" "\"%s\"プロパティ: 文字列\"%s\"を\"%s\"へ変換できません" #: src/mn-mailbox.gob:948 #, c-format msgid "property \"%s\" has no value" msgstr "\"%s\"プロパティの値が欠落" #: src/mn-mailboxes.gob:239 msgid "An error has occurred while importing old mailboxes" msgstr "古いメールボックスのインポート時にエラーが発生" #: src/mn-mailboxes.gob:265 msgid "Unable to load the mailboxes configuration" msgstr "メールボックスの設定読み込みに失敗" #: src/mn-mailboxes.gob:311 msgid "Unable to parse the XML document." msgstr "XMLドキュメントの解析に失敗." #: src/mn-mailboxes.gob:318 msgid "The root element is missing." msgstr "ルートエレメントが欠落." #: src/mn-mailboxes.gob:324 #, c-format msgid "The root element \"%s\" is invalid." msgstr "ルートエレメント\"%s\"が不正." #: src/mn-mailboxes.gob:347 #, c-format msgid "On line %i: %s." msgstr "オンライン%i: %s" #: src/mn-mailboxes.gob:352 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "オンライン%i: 未知の要素\"%s\"." #: src/mn-mailboxes.gob:361 msgid "An error has occurred while loading the mailboxes configuration" msgstr "メールボックスの設定読み込み時にエラーが発生" #: src/mn-mailboxes.gob:386 msgid "Unable to save the mailboxes configuration" msgstr "メールボックスの設定を保存できません" #: src/mn-mailboxes.gob:428 #, c-format msgid "Unable to remove %s: %s." msgstr "%sの削除に失敗: %s." #: src/mn-mailboxes.gob:436 #, c-format msgid "Unable to create %s: %s." msgstr "%sの作成に失敗: %s." #: src/mn-mailboxes.gob:443 #, c-format msgid "Unable to open %s for writing: %s." msgstr "書き込み時, %sのオープンに失敗: %s." #: src/mn-mailboxes.gob:450 msgid "Unable to write the XML document." msgstr "XMLドキュメントの作成に失敗." #: src/mn-mailboxes.gob:456 #, c-format msgid "Unable to close %s: %s." msgstr "%sのクローズに失敗: %s" #: src/mn-mailboxes.gob:466 src/mn-mailboxes.gob:473 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "%sから%sへの名称変更に失敗: %s" #. non fatal #: src/mn-mailboxes.gob:479 #, c-format msgid "unable to delete %s: %s" msgstr "%sの削除に失敗: %s" #: src/mn-mailboxes.gob:509 #, c-format msgid "%s has %i new message" msgstr "%sに新着メールが%i件" #: src/mn-mailboxes.gob:535 #, c-format msgid "%s reported an error: %s" msgstr "%sがエラーを検出: %s" #: src/mn-maildir-mailbox-backend.gob:125 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "\"%s\"フォルダのオープンに失敗: %s" #: src/mn-maildir-mailbox-backend.gob:173 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "\"%s\"フォルダのクローズに失敗: %s" #: src/mn-maildir-mailbox-backend.gob:176 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "\"%s\"フォルダの読み込みに失敗: %s" #: src/mn-main.c:100 msgid "yes" msgstr "はい" #: src/mn-main.c:100 msgid "no" msgstr "いいえ" #: src/mn-main.c:132 #, c-format msgid "%s version %s\n" msgstr "%sバージョン%s\n" #: src/mn-main.c:137 msgid "Mailbox backends:\n" msgstr "メールボックスのバックエンド:\n" #: src/mn-main.c:142 msgid "POP3 and IMAP features:\n" msgstr "POP3とIMAPの機能:\n" #: src/mn-main.c:147 msgid "Sylpheed features:\n" msgstr "Sylpheed (Sylphid) の機能:\n" #: src/mn-main.c:198 #, c-format msgid "A Bonobo exception (%s) has occurred in %s()." msgstr "Bonoboで例外 (%s) が発生: $s()." #: src/mn-main.c:220 msgid "Show version information" msgstr "バージョン情報を表示" #: src/mn-main.c:229 msgid "Enable informational output" msgstr "情報出力を有効に" #: src/mn-main.c:238 msgid "Display the properties dialog" msgstr "プロパティダイアログを表示" #: src/mn-main.c:247 msgid "Display the about dialog" msgstr "情報ダイアログを表示" #: src/mn-main.c:256 msgid "Close the mail summary popup" msgstr "メール一覧ポップアップを閉じる" #: src/mn-main.c:265 msgid "Update the mail status" msgstr "その時点での着信状況をチェック" #: src/mn-main.c:274 msgid "Unset obsolete GConf configuration" msgstr "旧バージョンのGConf設定を解除" #: src/mn-main.c:283 msgid "Quit Mail Notification" msgstr "メール着信通知システムを終了" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: src/mn-main.c:310 msgid "multi-threading is not available" msgstr "マルチスレッド使用不可" #: src/mn-main.c:365 msgid "" "Bonobo could not locate the automation object. Please check your Mail " "Notification installation." msgstr "" "Bonoboがオードメーションオブジェクトの検出に失敗しました. メール着信通知" "システムが正しくインストールされているかどうかをご確認ください." #: src/mn-main.c:371 msgid "quitting Mail Notification" msgstr "メール着信通知システム終了します..." #: src/mn-main.c:375 msgid "Mail Notification is not running" msgstr "メール着信通知システムが稼働していません" #: src/mn-main.c:390 msgid "Unable to initialize the GnomeVFS library." msgstr "GnomeVFSライブラリの初期化に失敗." #: src/mn-main.c:438 msgid "updating the mail status" msgstr "着信状況をチェック中" #: src/mn-main.c:446 msgid "Mail Notification is already running" msgstr "メール着信通知システムは既に稼働しています" #: src/mn-main.c:456 #, c-format msgid "" "Bonobo could not locate the %s file. Please check your Mail Notification " "installation." msgstr "" "Bonoboが%sファイルの検出に失敗しました. メール着信通知システムが正しく" "インストールされているかどうかをご確認ください." #: src/mn-mbox-mailbox-backend.gob:281 #, c-format msgid "unable to close file: %s" msgstr "ファイルのクローズに失敗: %s" #: src/mn-mbox-mailbox-backend.gob:298 #, c-format msgid "unable to open mailbox: %s" msgstr "メールボックスのオープンに失敗: %s" #: src/mn-message-mime.c:121 msgid "unable to parse MIME message" msgstr "MIMEメッセージの解析に失敗" #: src/mn-message.gob:111 msgid "Unknown" msgstr "不明" #. translators: "none" is used like "Mailbox: none" #: src/mn-message.gob:130 msgid "none" msgstr "無し" #: src/mn-mh-mailbox-backend.gob:167 #, c-format msgid "error while reading %s: %s" msgstr "%sの読み出し中にエラーが発生: %s" #: src/mn-mh-mailbox-backend.gob:180 #, c-format msgid "unable to open %s: %s" msgstr "%sのオープンに失敗: %s" #: src/mn-pi-mailbox-properties.gob:67 msgid "sta_ndard" msgstr "標準(_N)" #: src/mn-pi-mailbox-properties.gob:68 msgid "in-band SS_L/TLS" msgstr "SS_L/TLS (in-band)" #: src/mn-pi-mailbox-properties.gob:69 msgid "SSL/TLS on sepa_rate port" msgstr "SSL/TLSポートの番号を指定(_R)" #: src/mn-pi-mailbox-properties.gob:73 msgid "Ho_stname:" msgstr "サーバー(_S):" #. translators: header capitalization #: src/mn-pi-mailbox-properties.gob:94 msgid "_Details" msgstr "詳細(_D)" #: src/mn-pi-mailbox-properties.gob:149 msgid "Connection type:" msgstr "接続方式:" #: src/mn-pi-mailbox-properties.gob:156 msgid "Port:" msgstr "ポート:" #: src/mn-pi-mailbox-properties.gob:179 msgid "Authent_ication mechanism:" msgstr "認証方式(_A):" #: src/mn-pi-mailbox.gob:151 msgid "SSL/TLS support has not been compiled in" msgstr "SSL/TLSを使用するための機能がコンパイル時に指定されていません" #: src/mn-pi-mailbox.gob:317 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "credentials you have entered are invalid.\n" "\n" "Please re-enter your credentials." msgstr "" "%sのメールボックス\"%s\"にログインできませんでした. 誤った認証情報が" "入力されたためと思われます." "\n" "入力しなおしてみてください." #: src/mn-pi-mailbox.gob:318 #, c-format msgid "Enter your credentials for %s mailbox %s." msgstr "%sのメールボックス\"%s\"の認証情報を入力してください." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: src/mn-pi-mailbox.gob:361 msgid "Authentication Required" msgstr "認証が必要です" #: src/mn-pop3-mailbox.gob:344 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "LOGIN-DELAY機能に対する引数が不正" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: src/mn-pop3-mailbox.gob:485 msgid "" "SASL authentication with initial client response failed, retrying without " "initial client response" msgstr "クライアントの初期応答でSASL認証に失敗. 初期応答なしで" "再試行します" #: src/mn-pop3-mailbox.gob:696 msgid "unknown error" msgstr "未知のエラー" #: src/mn-pop3-mailbox.gob:791 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgstr "LOGIN-DELAYを尊重し, %i秒待ちます" #: src/mn-pop3-mailbox.gob:959 msgid "server does not support APOP authentication" msgstr "サーバーがAPOP認証をサポートしていません" #: src/mn-pop3-mailbox.gob:1015 msgid "falling back to APOP authentication" msgstr "代替認証方式として, APOPに切り替えます." #: src/mn-pop3-mailbox.gob:1020 msgid "falling back to USER/PASS authentication" msgstr "代替認証方式として, USER/PASSに切り替えます." #. translators: header capitalization #: src/mn-properties-dialog.gob:173 ui/properties-dialog.glade.h:13 msgid "Mail Notification Properties" msgstr "メール着信通知システムのプロパティ" #: src/mn-properties-dialog.gob:207 msgid "top left" msgstr "左上" #: src/mn-properties-dialog.gob:208 msgid "top right" msgstr "右上" #: src/mn-properties-dialog.gob:209 msgid "bottom left" msgstr "左下" #: src/mn-properties-dialog.gob:210 msgid "bottom right" msgstr "右下" #: src/mn-properties-dialog.gob:332 msgid "No mailbox selected." msgstr "メールボックスを選択してください." #: src/mn-properties-dialog.gob:337 #, c-format msgid "%i mailbox selected." msgstr "メールボックスを%i個選択." #: src/mn-properties-dialog.gob:456 #, c-format msgid "Test message #%i" msgstr "テストメッセージ#%i" #. translators: header capitalization #: src/mn-properties-dialog.gob:462 msgid "Mail Notification Properties Dialog" msgstr "プロパティダイアログ" #. translators: header capitalization #: src/mn-shell.gob:381 msgid "Mailboxes Having New Mail" msgstr "メールボックスごとの着信状況" #. translators: header capitalization #: src/mn-shell.gob:400 msgid "Errors" msgstr "エラー" #. translators: header capitalization #: src/mn-shell.gob:416 msgid "Mail Summary" msgstr "新着メール一覧" #: src/mn-shell.gob:445 msgid "You have no new mail." msgstr "新着メールはありません." #: src/mn-ssl.c:76 msgid "unknown SSL/TLS error" msgstr "未知のSSL/TLSエラー" #: src/mn-standard-message-view.gob:64 msgid "Unreadable message:" msgstr "メッセージを判読できません:" #: src/mn-standard-message-view.gob:67 msgid "From:" msgstr "差出人:" #: src/mn-standard-message-view.gob:68 msgid "Subject:" msgstr "件名:" #: src/mn-standard-message-view.gob:72 msgid "Sent:" msgstr "発信時期:" #. translators: header capitalization #: src/mn-stock.c:29 msgid "Select _All" msgstr "すべてを選択(_A)" #. translators: header capitalization #. translators: header capitalization #: src/mn-stock.c:32 msgid "Co_nnect" msgstr "接続(_N)" #: src/mn-sylpheed-mailbox-backend.gob:223 #, c-format msgid "unable to open folder: %s" msgstr "フォルダのオープンに失敗: %s" #: src/mn-sylpheed-mailbox-backend.gob:276 #, c-format msgid "unable to close folder: %s" msgstr "フォルダのクローズに失敗: %s" #: src/mn-sylpheed-mailbox-backend.gob:279 #, c-format msgid "error while reading folder: %s" msgstr "フォルダの読み出しに失敗: %s" #: src/mn-sylpheed-mailbox-backend.gob:420 msgid "unexpected end of file" msgstr "予想外のEOF" #: src/mn-sylpheed-mailbox-backend.gob:438 #, c-format msgid "incompatible file version \"%i\"" msgstr "ファイルバージョン\"%i\"の互換性がありません" #: src/mn-sylpheed-mailbox-backend.gob:441 msgid "file version missing" msgstr "ファイルバージョンが欠落" #: src/mn-system-vfs-mailbox-properties.gob:40 #: src/mn-system-vfs-mailbox-properties.gob:48 #: src/mn-system-vfs-mailbox.gob:45 msgid "System mailbox" msgstr "ローカルシステムのメールボックス" #: src/mn-system-vfs-mailbox-properties.gob:70 #, c-format msgid "Your system mailbox is %s." msgstr "あなたのメールボックスは%sです." #: src/mn-system-vfs-mailbox-properties.gob:77 msgid "" "The location of your system mailbox could not be detected. Check the MAIL " "environment variable." msgstr "" "ローカルシステムのメールボックスを検出できませんでした. 環境変数MAILの" "設定をご確認ください." #: src/mn-system-vfs-mailbox.gob:72 msgid "system mailbox not found" msgstr "ローカルシステムのメールボックスが見当たりません" #: src/mn-util.c:349 #, c-format msgid "error loading image: %s" msgstr "画像の読み込みに失敗: %s" #: src/mn-util.c:365 #, c-format msgid "" "Unable to load interface \"%s\". Please check your Mail Notification " "installation." msgstr "" "インターフェース\"%s\"の読み込みに失敗. メール着信通知システムが正しく" "インストールされているかどうかをご確認ください." #: src/mn-util.c:380 #, c-format msgid "" "Widget \"%s\" not found in interface \"%s\". Please check your Mail " "Notification installation." msgstr "\"%s\"ウィジェットがインターフェース内で見つかりません. 新着メール" "通知システムが正しくインストールされているかどうかをご確認ください." #: src/mn-util.c:449 #, c-format msgid "Unable to open self as a module (%s)." msgstr "自分自身をモジュールとしてオープンできません: %s" #: src/mn-util.c:454 #, c-format msgid "" "Signal handler \"%s\" not found. Please check your Mail Notification " "installation." msgstr "" "シグナルハンドラ\"%s\"が見つかりません. メール着信通知システムが正しく" "インストールされているかどうかをご確認ください." #: src/mn-util.c:605 src/mn-util.c:628 src/mn-util.c:648 src/mn-util.c:670 msgid "A drag and drop error has occurred" msgstr "ドラッグ&ドロップエラーが発生" #: src/mn-util.c:606 msgid "An invalid location list has been received." msgstr "不正なアドレス (URI) 一覧を取得しました." #: src/mn-util.c:649 msgid "An invalid Mozilla location has been received." msgstr "Mozilla用のアドレス (URI) 指定が不正." #: src/mn-util.c:725 msgid "Unable to display help" msgstr "ヘルプを表示できません" #: src/mn-util.c:739 #, c-format msgid "Unable to create a thread: %s." msgstr "スレッドの生成に失敗: %s." #: src/mn-util.c:899 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" msgstr "以下のアドレスが不正です:" "\n" "%s" #: src/mn-util.c:919 msgid "A fatal error has occurred in Mail Notification" msgstr "メール着信通知システムの内部で致命的なエラーが発生" #: src/mn-util.c:958 #, c-format msgid "unable to get current time: %s" msgstr "現在の時刻の取得に失敗: %s" #: src/mn-util.c:1250 #, c-format msgid "%i second ago" msgstr "%i秒前" #: src/mn-util.c:1254 #, c-format msgid "about %i minute ago" msgstr "約%i分前" #: src/mn-util.c:1259 #, c-format msgid "about %i hour ago" msgstr "約%i時間前" #: src/mn-util.c:1264 #, c-format msgid "about %i day ago" msgstr "%i日位前" #: src/mn-util.c:1269 #, c-format msgid "about %i week ago" msgstr "%i週間位前" #: src/mn-util.c:1282 msgid "unknown date" msgstr "日時不明" #: src/mn-vfs-mailbox.gob:221 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "%s (%s) の監視ができません. pollモードに切り替えます" #: src/mn-vfs-mailbox.gob:385 msgid "unknown mailbox format" msgstr "メールボックスの形式が不明" #: src/mn-vfs-mailbox.gob:385 msgid "does not exist" msgstr "は存在しません" #: ui/mailbox-properties-dialog.glade.h:1 ui/properties-dialog.glade.h:4 msgid "General" msgstr "基本設定" #: ui/mailbox-properties-dialog.glade.h:2 msgid "Delay between mail chec_ks:" msgstr "自動メールチェックの間隔(_K):" #: ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox _name:" msgstr "メールボックスの名称(_N):" #: ui/mailbox-properties-dialog.glade.h:4 msgid "Use De_fault" msgstr "デフォルトに戻す(_F)" #: ui/mailbox-properties-dialog.glade.h:5 msgid "_Mailbox type:" msgstr "メールボックスの種別(_M):" #: ui/mailbox-properties-dialog.glade.h:6 msgid "_Use Default" msgstr "デフォルトに戻す(_U)" #: ui/mailbox-properties-dialog.glade.h:7 ui/properties-dialog.glade.h:35 msgid "minutes" msgstr "分" #: ui/mailbox-properties-dialog.glade.h:8 ui/properties-dialog.glade.h:39 msgid "seconds" msgstr "秒" #: ui/properties-dialog.glade.h:1 msgid "Click Action" msgstr "クリック時の動作" #: ui/properties-dialog.glade.h:2 msgid "Commands" msgstr "外部コマンド" #: ui/properties-dialog.glade.h:3 msgid "Fonts" msgstr "フォント" #: ui/properties-dialog.glade.h:5 msgid "Layout" msgstr "レイアウト" #: ui/properties-dialog.glade.h:6 msgid "Mailbox List" msgstr "メールボックス一覧" #: ui/properties-dialog.glade.h:7 msgid "Position" msgstr "表示位置" #: ui/properties-dialog.glade.h:8 msgid "Tooltip Mail Summary" msgstr "バルーン表示による着信メール一覧" #: ui/properties-dialog.glade.h:9 msgid "Co_ntents:" msgstr "内容(_N):" #: ui/properties-dialog.glade.h:10 msgid "General" msgstr "全般" #: ui/properties-dialog.glade.h:11 msgid "Hide p_reviously displayed mail" msgstr "確認ずみのメールを隠す(_P)" #: ui/properties-dialog.glade.h:12 msgid "Hori_zontal offset:" msgstr "水平オフセット(_Z):" #: ui/properties-dialog.glade.h:14 msgid "Mail Summary Popup" msgstr "メール一覧ポップアップ" #: ui/properties-dialog.glade.h:15 msgid "Status Icon" msgstr "ステータスアイコン" #: ui/properties-dialog.glade.h:16 msgid "Use these _fonts:" msgstr "フォントを指定(_F):" #: ui/properties-dialog.glade.h:17 msgid "When _new mail arrives:" msgstr "メール着信時に実行(_N):" #: ui/properties-dialog.glade.h:18 msgid "When all mail has _been read:" msgstr "全メール開封後に実行(_B):" #: ui/properties-dialog.glade.h:19 msgid "_Always display" msgstr "常に表示(_A)" #: ui/properties-dialog.glade.h:20 msgid "_Automatically close after:" msgstr "この時間が経過したら自動的に閉じる(_A):" #: ui/properties-dialog.glade.h:21 msgid "_Blink on errors" msgstr "エラー発生時に点滅(_B)" #: ui/properties-dialog.glade.h:22 msgid "_Display a Test Popup" msgstr "ポップアップの動作テスト(_D)" #: ui/properties-dialog.glade.h:23 msgid "_Display seen mail" msgstr "確認済みメールを表示(_D)" #: ui/properties-dialog.glade.h:24 msgid "_Display this dialog" msgstr "このダイアログを表示(_D)" #: ui/properties-dialog.glade.h:25 msgid "_Enable mail summary popup" msgstr "ポップアップによる新着通知を有効に(_E)" #: ui/properties-dialog.glade.h:26 msgid "_Launch the mail reader" msgstr "メールリーダーを起動(_L)" #: ui/properties-dialog.glade.h:27 msgid "_None" msgstr "無し(_N)" #: ui/properties-dialog.glade.h:28 msgid "_Position:" msgstr "位置(_P):" #: ui/properties-dialog.glade.h:29 msgid "_Title:" msgstr "タイトル(_T):" #: ui/properties-dialog.glade.h:30 msgid "_Update the mail status" msgstr "着信状況を強制チェック(_U)" #: ui/properties-dialog.glade.h:31 msgid "_Use fonts from theme" msgstr "デスクトップ環境のテーマと同じフォントを使用(_U)" #: ui/properties-dialog.glade.h:32 msgid "_Vertical offset:" msgstr "垂直オフセット(_V):" #: ui/properties-dialog.glade.h:33 msgid "icon tooltip's mail summary layout|Co_mpact" msgstr "コンパクト(_M)" #: ui/properties-dialog.glade.h:34 msgid "icon tooltip's mail summary layout|_Standard" msgstr "標準(_S)" #: ui/properties-dialog.glade.h:36 msgid "pixels" msgstr "ピクセル" #: ui/properties-dialog.glade.h:37 msgid "popup's mail summary layout|Co_mpact" msgstr "コンパクト(_M)" #: ui/properties-dialog.glade.h:38 msgid "popup's mail summary layout|_Standard" msgstr "標準(_S)" mail-notification-5.4.dfsg.1/po/pl.po0000644000175000001440000024233711015311531017246 0ustar evilynuxusers# Polish translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Tomasz Sarota-Raczek , 2004. # Maurycy Pawłowski-Wieroński , 2005. # Tomasz Sałaciński , 2007. # msgid "" msgstr "" "Project-Id-Version: mail-notification 4.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-05-15 22:17+0200\n" "PO-Revision-Date: 2007-11-23 00:46+0100\n" "Last-Translator: Tomasz Sałaciński \n" "Language-Team: Polish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: ../data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "Konfiguracja zawiadomienia pocztowego" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:296 #: ../src/mn-main.c:107 ../src/mn-main.c:437 ../src/mn-main.c:458 #: ../src/mn-main.c:509 msgid "Mail Notification" msgstr "Zawiadomienie pocztowe" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Otrzymaj zawiadomienie po nadejściu nowej poczty" #: ../data/mail-notification.schemas.in.in.h:1 msgid "Always display an icon" msgstr "Z_awsze pokazuj ikonę w tacce systemowej" #: ../data/mail-notification.schemas.in.in.h:2 msgid "Blink on errors" msgstr "Miganie przy błędach" #: ../data/mail-notification.schemas.in.in.h:3 msgid "Click action" msgstr "Akcja po kliknięciu" #: ../data/mail-notification.schemas.in.in.h:4 msgid "Display a message count in the status icon" msgstr "Pokaż ilość wiadomości na ikonie w obszarze powiadamiania" # These messages are not translated in any PO file #: ../data/mail-notification.schemas.in.in.h:5 msgid "Display seen mail" msgstr "_Pokazuj widzianą pocztę" #: ../data/mail-notification.schemas.in.in.h:6 msgid "Enable message popups" msgstr "Włącz wyskakujące okna wiadomości" #: ../data/mail-notification.schemas.in.in.h:7 msgid "Expire message popups" msgstr "Włącz wyskakujące okna wiadomości" #: ../data/mail-notification.schemas.in.in.h:8 msgid "Fallback character sets" msgstr "Awaryjne kodowanie" #: ../data/mail-notification.schemas.in.in.h:9 msgid "Fingerprints of trusted X509 certificates" msgstr "Odciski palców zaufanych certyfikatów X509" #: ../data/mail-notification.schemas.in.in.h:10 msgid "Height of properties dialog" msgstr "Wysokość dialogu wlaściwości" #: ../data/mail-notification.schemas.in.in.h:11 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "number of seconds to wait before expiring message popups." msgstr "" "Jeżeli /apps/mail-notification/popups/expiration/enabled jest ustawione na " "\"true\", to jest to liczba sekund zanim okienka znikną." #: ../data/mail-notification.schemas.in.in.h:12 msgid "Mail changed command" msgstr "Komenda zmiany poczty" #: ../data/mail-notification.schemas.in.in.h:13 msgid "Mail read command" msgstr "Rozkaz do przeczytania poczty" #: ../data/mail-notification.schemas.in.in.h:14 msgid "Maximum number of messages in the tooltip mail summary" msgstr "Maksymalna liczba wiadomości w podsumowaniu poczty" #: ../data/mail-notification.schemas.in.in.h:15 msgid "Maximum number of simultaneous popups" msgstr "Maksymalna liczba wyskakujących okienek" #: ../data/mail-notification.schemas.in.in.h:16 msgid "Message popups actions" msgstr "Akcje okienek wiadomości" #: ../data/mail-notification.schemas.in.in.h:17 msgid "Message popups position" msgstr "Pozycja wyskakujących okienek" #: ../data/mail-notification.schemas.in.in.h:18 msgid "New mail command" msgstr "Rozkaz do rozpoczęcia nowej poczty" #: ../data/mail-notification.schemas.in.in.h:19 msgid "New mail sound" msgstr "Dźwięk nowej poczty" #: ../data/mail-notification.schemas.in.in.h:20 msgid "Play a sound when new mail arrives" msgstr "Odtwórz dźwięk podczas nadejścia nowej poczty" #: ../data/mail-notification.schemas.in.in.h:21 msgid "Play sound command" msgstr "Komenda do odtworzenia dźwięku" #: ../data/mail-notification.schemas.in.in.h:22 msgid "Run a command when all mail is read" msgstr "Wykonaj rozkaz kiedy cała poczta jest przeczytana" #: ../data/mail-notification.schemas.in.in.h:23 msgid "Run a command when new mail arrives" msgstr "Wykonaj rozkaz po nadejściu nowej poczty" #: ../data/mail-notification.schemas.in.in.h:24 msgid "Run a command when the message list changes" msgstr "Uruchom komendę gdy lista wiadomości ulegnie zmianie" #: ../data/mail-notification.schemas.in.in.h:25 msgid "Seconds to wait before expiring message popups" msgstr "Ilość sekund do poczekania przed zamknięciem wyskakującego okienka." #: ../data/mail-notification.schemas.in.in.h:26 msgid "" "The action to perform when the icon is clicked. Must be \"launch-mail-reader" "\", \"open-latest-message\", \"consider-new-mail-as-read\" or \"update-mail-" "status\"." msgstr "" "Akcja do wykonania podczas kliknięcia na ikonę. Wartości: \"launch-mail-" "reader\", \"open-latest-message\", \"consider-new-mail-as-read\" lub " "\"update-mail-status\"" #: ../data/mail-notification.schemas.in.in.h:27 msgid "The command to run when all mail is read." msgstr "Rozkaz do wykonania kiedy cała poczta jest przeczytana." #: ../data/mail-notification.schemas.in.in.h:28 msgid "The command to run when new mail arrives." msgstr "Polecenie do wykonania po nadejściu owej poczty." #: ../data/mail-notification.schemas.in.in.h:29 msgid "The command to run when the message list changes." msgstr "Komenda do wykonania podczas zmiany listy wiadomości" #: ../data/mail-notification.schemas.in.in.h:31 #, no-c-format msgid "" "The command to use to play a sound file. The string %file will be " "substituted with the filename of the sound to play." msgstr "" #: ../data/mail-notification.schemas.in.in.h:32 msgid "The height of the properties dialog in pixels." msgstr "Wysokość dialogu właściwości w pikselach." #: ../data/mail-notification.schemas.in.in.h:33 msgid "" "The list of character sets to attempt conversion from when uncompliant 8-bit " "data is encountered in message headers. The first character set allowing a " "successful conversion will be used. The special name \"user\" will be " "replaced with the character set of the user's locale. Note that Mail " "Notification must be restarted for changes to take effect." msgstr "" #: ../data/mail-notification.schemas.in.in.h:34 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "Lista zaufanych serwerów SSL/TSL (hostname:port) bez certyfikatu X509." #: ../data/mail-notification.schemas.in.in.h:35 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "" "Lista zaufanych certyfikatów X509, przedstawionych przez ich odciski palców " "MD5." #: ../data/mail-notification.schemas.in.in.h:36 msgid "The maximum number of messages to display in the tooltip mail summary." msgstr "" #: ../data/mail-notification.schemas.in.in.h:37 msgid "" "The maximum number of popups to display simultaneously. If this limit is " "exceeded, only the most recent messages will be displayed. If the /apps/mail-" "notification/popups/position key is set to \"attached\", this limit will be " "ignored and only one popup will be allowed." msgstr "" #: ../data/mail-notification.schemas.in.in.h:38 msgid "" "The ordered list of actions to include in the message popups. Each element " "must be \"open\", \"mark-as-read\", \"mark-as-spam\" or \"delete\"." msgstr "" #: ../data/mail-notification.schemas.in.in.h:39 msgid "The position of the message popups. Must be \"attached\" or \"free\"." msgstr "" "Pozycja wyskakującego okienka streszczenia poczty. Wartości: \"attached\" " "lub \"free\"." #: ../data/mail-notification.schemas.in.in.h:40 msgid "The sound file to play when new mail arrives." msgstr "Dźwięk do odtworzenia podczas nadejścia nowej poczty." #: ../data/mail-notification.schemas.in.in.h:41 msgid "" "The type of mail summary to display in the icon's tooltip. Must be \"standard" "\", \"compact\" or \"none\"." msgstr "" "Typ podsumowania pokazywany w bąbelku ikony. Musi być \"standard\", \"compact" "\" lub \"none\"." #: ../data/mail-notification.schemas.in.in.h:42 msgid "The width of the properties dialog in pixels." msgstr "Szerokość dialogu właściwości w pikselach." #: ../data/mail-notification.schemas.in.in.h:43 msgid "Tooltip mail summary" msgstr "Podsumowanie w wyskakującym bąbelku pomocy" #: ../data/mail-notification.schemas.in.in.h:44 msgid "Trusted servers list" msgstr "Lista zaufanych serwerów" #: ../data/mail-notification.schemas.in.in.h:45 msgid "Whether the status icon should blink on errors or not." msgstr "Czy ikona statusu ma migać przy błędach" #: ../data/mail-notification.schemas.in.in.h:46 msgid "Whether to display a message count in the status icon or not." msgstr "" "Czy wyświetlać liczbę nieprzeczytanych wiadomości w ikonie powiadamiania." #: ../data/mail-notification.schemas.in.in.h:47 msgid "Whether to display an icon when there is no new mail or not." msgstr "Czy wyświetlać ikonę w pasku powiadamiania, gdy nie ma nowej poczty." #: ../data/mail-notification.schemas.in.in.h:48 msgid "" "Whether to display mail which is still marked as unread but has been seen or " "not." msgstr "" "Czy wyświetlać wiadomości które są dalej oznaczone jako nieprzeczytane, ale " "były widziane" #: ../data/mail-notification.schemas.in.in.h:49 msgid "Whether to enable message popups or not." msgstr "Czy wyświetlać wyskakujące okienka wiadomości" #: ../data/mail-notification.schemas.in.in.h:50 msgid "" "Whether to expire message popups or not. Must be \"default\", \"false\" or " "\"true\"." msgstr "" "Czy automatycznie zamykać wyskakujące okienka wiadomości. Wartości: \"default" "\", \"false\" lub \"true\"." #: ../data/mail-notification.schemas.in.in.h:51 msgid "Whether to play a sound when new mail arrives or not." msgstr "Czy odtwarzać dźwięk podczas nadejścia nowej poczty." #: ../data/mail-notification.schemas.in.in.h:52 msgid "Whether to run a command when all mail is read or not." msgstr "Czy wykonać rozkaz kiedy cała poczta jest przeczytanacza czy nie." #: ../data/mail-notification.schemas.in.in.h:53 msgid "Whether to run a command when new mail arrives or not." msgstr "Czy wykonać rozkaz kiedy przyjdzie nowa poczta czy nie." #: ../data/mail-notification.schemas.in.in.h:54 msgid "Whether to run a command when the message list changes or not." msgstr "Czy wykonać komendę poczas zmiany na liście wiadomości." #: ../data/mail-notification.schemas.in.in.h:55 msgid "Width of properties dialog" msgstr "Szerokość dialogu właściwości" #: ../src/eggtrayicon.c:133 msgid "Orientation" msgstr "Orientacja" #: ../src/eggtrayicon.c:134 msgid "The orientation of the tray." msgstr "Orientacja tacy." #. translators: header capitalization #: ../src/mn-about-dialog.gob:47 msgid "A Mail Notification Icon" msgstr "Ikon Zawiadomienia Pocztowego" #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:55 msgid "translator-credits" msgstr "Tomasz Sałaciński " #: ../src/mn-auth-combo-box.gob:98 #: ../src/mn-autodetect-mailbox-properties.gob:106 msgid "Autodetect" msgstr "Wykryj automatycznie" #. translators: header capitalization #: ../src/mn-authenticated-mailbox-properties.gob:56 msgid "Account" msgstr "Konto pocztowe" #: ../src/mn-authenticated-mailbox-properties.gob:59 msgid "_Username:" msgstr "_Użytkownik:" #: ../src/mn-authenticated-mailbox-properties.gob:63 msgid "_Password:" msgstr "_Hasło:" #: ../src/mn-authenticated-mailbox-properties.gob:140 msgid "Saving password to keyring..." msgstr "" #: ../src/mn-authenticated-mailbox-properties.gob:185 msgid "Retrieving password from keyring..." msgstr "" #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:306 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "password you have entered is invalid.\n" "\n" "Please re-enter your password." msgstr "" "Zawiadomienie pocztowe nie mogło się wlogować w skrzynkę %s %s ponieważ było " "wpisanę niepoprawnę hasło.\n" "\n" "Proszę jeszcze raz wpisać hasło." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:308 #, c-format msgid "Enter your password for %s mailbox %s." msgstr "Wpisz twoje hasło dla skrzynki %s %s." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: ../src/mn-authenticated-mailbox.gob:381 msgid "Authentication Required" msgstr "Wymagana autentykacja" #: ../src/mn-authenticated-mailbox.gob:463 msgid "Unable to save the mailbox password" msgstr "Nie można zapisać hasła do skrzynki pocztowej" #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:465 #, c-format msgid "The password of %s mailbox %s could not be saved to the keyring." msgstr "Hasło %s skrzynki %s nie może być zapisane do zestawu kluczy." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:119 #: ../src/mn-system-vfs-mailbox-properties.gob:57 msgid "Location" msgstr "Lokalizacja" #: ../src/mn-autodetect-mailbox-properties.gob:121 msgid "_Location:" msgstr "_Lokalizacja:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:129 msgid "_Browse..." msgstr "_Przeglądaj..." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:169 msgid "Select a File or Folder" msgstr "Wybierz plik lub folder" #: ../src/mn-base-mbox-mailbox-backend.gob:346 #, c-format msgid "unable to open mailbox: %s" msgstr "niezdolny otworzyć skrzynkę pocztową: %s" #: ../src/mn-client-session.c:177 #, c-format msgid "resolving %s" msgstr "rozwiązuję %s" #: ../src/mn-client-session.c:193 #, c-format msgid "unable to resolve %s: %s" msgstr "niezdolny rozwiązać %s: %s" #: ../src/mn-client-session.c:234 #, c-format msgid "network address #%i" msgstr "" #: ../src/mn-client-session.c:237 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "nie można przekonwertować adresu sieciowego #%i na formę liczbową: %s" #: ../src/mn-client-session.c:248 #, c-format msgid "%s: unsupported address family" msgstr "%s: nieobsługiwana rodzina adresów" #: ../src/mn-client-session.c:255 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: niezdolny stworzyć gniazdo: %s" #: ../src/mn-client-session.c:259 #, c-format msgid "connecting to %s (%s) port %i" msgstr "połączenie do %s (%s) port %i" #: ../src/mn-client-session.c:262 #, c-format msgid "unable to connect: %s" msgstr "niezdolny do połączenie się: %s" #: ../src/mn-client-session.c:267 msgid "connected successfully" msgstr "pomyślnę połączenie" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:281 #, c-format msgid "unable to connect to %s" msgstr "niezdolny do połączenie się z %s" #: ../src/mn-client-session.c:333 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "odpowiedź \"%s\" nie jest ważna w aktualnym kontekstcie" #: ../src/mn-client-session.c:362 #, c-format msgid "unable to parse response \"%s\"" msgstr "niezdolny zrobić rozbiór odpowiedzi \"%s\"" #: ../src/mn-client-session.c:626 msgid "server name not found in certificate" msgstr "nazwa serwera nie została znaleziona w certyfikacie" #: ../src/mn-client-session.c:631 #, c-format msgid "" "user-provided server name \"%s\" does not match certificate-provided server " "name \"%s\"" msgstr "" "nazwa serwera dostarczona przez użytkownika \"%s\" nie zgadza się z nazwą " "dostarczoną przez certyfikat \"%s\"" #: ../src/mn-client-session.c:645 #, c-format msgid "\"%s\", " msgstr "\"%s\", " #: ../src/mn-client-session.c:647 ../src/mn-client-session.c:1582 #: ../src/mn-yahoo-mailbox.gob:218 #, c-format msgid "\"%s\"" msgstr "\"%s\"" #: ../src/mn-client-session.c:650 #, c-format msgid "" "user-provided server name \"%s\" matches none of the certificate-provided " "server names %s" msgstr "" #: ../src/mn-client-session.c:740 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "niezdolny do inicjalizacji biblioteki OpenSSL: %s" #: ../src/mn-client-session.c:748 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "niezdolny do stworzenia obiektu SSL/TLS: %s" #: ../src/mn-client-session.c:754 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "niezdolny do ustawienia plikowego deskryptora SSL/TLS: %s" #: ../src/mn-client-session.c:761 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "niezdoly do spełnienia pertraktacji SSL/TLS: %s" #: ../src/mn-client-session.c:767 msgid "untrusted server" msgstr "niezaufany serwer" #: ../src/mn-client-session.c:771 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "warstwa SSL/TLS jest teraz aktywna (%s, %s %i-bit)" #: ../src/mn-client-session.c:819 ../src/mn-client-session.c:826 #, c-format msgid "unable to read from server: %s" msgstr "niezdolny do przeczytania z serwera: %s" #: ../src/mn-client-session.c:824 msgid "unable to read from server: EOF" msgstr "niezdolny do przeczytania z serwera: EOF" #: ../src/mn-client-session.c:836 #, c-format msgid "unable to decode data using SASL: %s" msgstr "niezdolny do rozszyfrowania danych używając SASL: %s" #: ../src/mn-client-session.c:980 #, c-format msgid "unable to encode data using SASL: %s" msgstr "niezdolny do rozszyfrowania danych używając SASL: %s" #: ../src/mn-client-session.c:1009 ../src/mn-client-session.c:1016 #, c-format msgid "unable to write to server: %s" msgstr "niezdolny do pisania do serwera: %s" #: ../src/mn-client-session.c:1014 msgid "unable to write to server: EOF" msgstr "niezdolny do pisania do serwera: EOF" #: ../src/mn-client-session.c:1043 ../src/mn-pop3-mailbox.gob:448 #, c-format msgid "unable to encode Base64: %s" msgstr "niezdolny do zakodowania Base64: %s" #: ../src/mn-client-session.c:1220 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "niezdolny do inicjalizacji biblioteki SASL: %s" #: ../src/mn-client-session.c:1232 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "niezdolny odzyskać lokalnego adresu gniazda: %s" #: ../src/mn-client-session.c:1238 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "niezdolny odzyskać odległego adresu gniazda: %s" #: ../src/mn-client-session.c:1272 #, c-format msgid "unable to set SASL security properties: %s" msgstr "nie można ustawić właściwości certyfikatu SASL: %s" #: ../src/mn-client-session.c:1296 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "" "niezdolny rozpocząć potwierdzenie tożsamości SASL: SASL zapytało się o coś " "czego nie wiemy" #: ../src/mn-client-session.c:1315 #, c-format msgid "unable to start SASL authentication: %s" msgstr "niezdolny rozpocząć potwierdzenie tożsamości SASL: %s" #: ../src/mn-client-session.c:1319 #, c-format msgid "unable to create a SASL connection: %s" msgstr "niezdolny do stworzenia połączenia SASL: %s" #: ../src/mn-client-session.c:1366 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "" "SASL zapytał się o coś czego nie wiemy, przerywam potwierdzenie tożsamości " "SASL" #: ../src/mn-client-session.c:1383 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, przerywam potwierdzenie tożsamości SASL" #. compliance error #: ../src/mn-client-session.c:1388 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "niezdolny rozszyfrować wprowadzenie Base64 od serweru : %s" #: ../src/mn-client-session.c:1424 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "warstwa ochronna SASL czynnika mocy %i jest teraz aktywna" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1429 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "niezdolny otrzymać właściwość SASL_MAXOUTBUF: %s" #: ../src/mn-client-session.c:1435 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "ostrzeżenie: niezdolny otrzymać właściwość SASL_SSF: %s" #: ../src/mn-client-session.c:1583 msgid "unknown server error" msgstr "nieznany błąd serweru" #: ../src/mn-compact-message-view.gob:39 msgid "Mailbox" msgstr "Skrzynka pocztowa" #: ../src/mn-compact-message-view.gob:40 msgid "From" msgstr "Nadawca" #: ../src/mn-compact-message-view.gob:41 msgid "Subject" msgstr "Temat wiadomości" #: ../src/mn-compact-message-view.gob:42 msgid "Sent" msgstr "Wysłano" #: ../src/mn-conf.c:249 #, c-format msgid "cannot find default value of configuration key \"%s\"" msgstr "" #: ../src/mn-conf.c:254 msgid "" "The default configuration has not been installed properly. Please check your " "Mail Notification installation." msgstr "" "Domyślna konfiguracja nie została zainstalowana poprawnie. Proszę sprawdzić " "instalację Zawiadomienia Pocztowego." #: ../src/mn-conf.c:291 msgid "A directory creation error has occurred" msgstr "Błąd podczas tworzenia katalogu" #: ../src/mn-conf.c:292 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "Nie można utworzyć katalogu \"%s\": %s" #: ../src/mn-conf.c:361 #, c-format msgid "recursively unsetting %s" msgstr "rekursywnie usuwam %s" #: ../src/mn-conf.c:365 msgid "syncing the GConf database" msgstr "synchronizacja bazy danych GConf" #: ../src/mn-conf.c:368 msgid "completed" msgstr "skończonę" #: ../src/mn-custom-vfs-mailbox.gob:72 msgid "invalid location" msgstr "nieprawidłowa lokacja" #: ../src/mn-evolution-folder-tree-client.gob:269 msgid "" "Mail Notification can not contact Evolution. Make sure that Evolution is " "running and that the Evolution Jean-Yves Lefort's Mail Notification plugin " "is loaded." msgstr "" "Aplikacja powiadamiania o nowej poczcie nie może skontaktować się z " "Evolution. Upewnij się, że Evolution jest uruchomione i że wtyczka Jean-Yves " "Lefort's Mail Notification jest zainstalowana i załadowana." #. translators: header capitalization #: ../src/mn-evolution-mailbox-properties.gob:71 #: ../src/mn-webmail-mailbox-properties.gob:92 msgid "Folder" msgstr "Folder" #: ../src/mn-evolution-mailbox.gob:225 msgid "unable to contact Evolution" msgstr "nie mogę skontaktować się z Evolution" #: ../src/mn-evolution-plugin.c:151 msgid "A fatal error has occurred in the Evolution Mail Notification plugin" msgstr "Nastąpił fatalny błąd we wtyczce do Evolution Zawiadomienia Pocztowego" #: ../src/mn-evolution-plugin.c:152 ../src/mn-main.c:250 msgid "The connection to the D-Bus session bus was lost." msgstr "Połączenie do sesji D-Bus zostało utracone." #: ../src/mn-evolution-plugin.c:175 ../src/mn-evolution-plugin.c:188 #: ../src/mn-evolution-plugin.c:226 msgid "Unable to initialize the Mail Notification plugin" msgstr "Nie można załatować wtyczki Zawiadomienia Pocztowego" #: ../src/mn-evolution-plugin.c:176 ../src/mn-main.c:283 #, c-format msgid "Unable to connect to the D-Bus session bus: %s." msgstr "Nie można połączyć się z sesją D-Bus: %s." #: ../src/mn-evolution-plugin.c:227 #, c-format msgid "Unable to register the Mail Notification Evolution D-Bus server: %s." msgstr "" "Nie można zarejestrować Zawiadomienia Pocztowego w sesji D-Bus Evolution: %s." #: ../src/mn-evolution-server.gob:152 #, c-format msgid "folder not found" msgstr "folder nie został znaleziony" #: ../src/mn-evolution-server.gob:329 #, c-format msgid "message not found" msgstr "wiadomość nie została znaleziona" #. #. * translators: GTK+ has the same message used in the same #. * context; please use the GTK+ translation for consistency #. #: ../src/mn-file-chooser-button.gob:179 msgid "(None)" msgstr "(Brak)" #. translators: header capitalization #: ../src/mn-gmail-mailbox-properties.gob:105 msgid "Gmail Label" msgstr "Etykieta GMail" #: ../src/mn-gmail-mailbox-properties.gob:107 msgid "_Restrict to this label:" msgstr "_Zastrzeż tylko do tej etykiety:" #: ../src/mn-gmail-mailbox.gob:154 msgid "invalid feed location" msgstr "nieprawidłowa lokalizacja nagłówka" #: ../src/mn-gmail-mailbox.gob:175 #, c-format msgid "retrieving feed from %s" msgstr "pobieram nagłówek z %s" #: ../src/mn-gmail-mailbox.gob:182 #, c-format msgid "unable to retrieve feed: %s" msgstr "nie można pobrać nagłówka: %s" #: ../src/mn-gmail-mailbox.gob:191 #, c-format msgid "feed retrieved successfully (%i byte)" msgid_plural "feed retrieved successfully (%i bytes)" msgstr[0] "nagłówek pobrany pomyślnie (%s bajt)" msgstr[1] "nagłówek pobrany pomyślnie (%s bajty)" msgstr[2] "nagłówek pobrany pomyślnie (%s bajtów)" #: ../src/mn-gmail-mailbox.gob:203 ../src/mn-gmail-mailbox.gob:254 msgid "unable to parse feed" msgstr "nie można przetworzyć nagłówka" #: ../src/mn-gmime-stream-vfs.gob:48 #: ../src/mn-sylpheed-mailbox-backend.gob:209 #, c-format msgid "unable to read %s: %s" msgstr "niezdolny przeczytać %s: %s" #: ../src/mn-gmime-stream-vfs.gob:50 ../src/mn-webmail-mailbox.gob:141 #, c-format msgid "unable to write to %s: %s" msgstr "niezdolny wpisać %s: %s" #: ../src/mn-gmime-stream-vfs.gob:52 #, c-format msgid "unable to seek in %s: %s" msgstr "niezdolny odszukać %s: %s" #: ../src/mn-gmime-stream-vfs.gob:54 #, c-format msgid "unable to tell position of %s: %s" msgstr "niezdolny opisać pozycję %s: %s" #: ../src/mn-gmime-stream-vfs.gob:56 ../src/mn-mh-mailbox-backend.gob:216 #: ../src/mn-webmail-mailbox.gob:147 #, c-format msgid "unable to close %s: %s" msgstr "niezdolny zamknąć %s: %s" #: ../src/mn-hotmail-mailbox.gob:286 ../src/mn-imap-mailbox.gob:1680 #: ../src/mn-pop3-mailbox.gob:1165 msgid "authentication failed" msgstr "logowanie nie udało się" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:109 msgid "IMAP Mailbox" msgstr "Skrzynka IMAP" #: ../src/mn-imap-mailbox-properties.gob:111 #: ../src/mn-webmail-mailbox-properties.gob:94 msgid "In_box" msgstr "Ode_brane" #: ../src/mn-imap-mailbox-properties.gob:116 #: ../src/mn-webmail-mailbox-properties.gob:99 #: ../ui/mailbox-properties-dialog.glade.h:10 msgid "_Other:" msgstr "_Inna:" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:129 msgid "Use the IDLE Extension" msgstr "Użyj rozszerzenia IDLE" #: ../src/mn-imap-mailbox-properties.gob:133 msgid "IMAP connection tab|_Never" msgstr "_Nigdy" #: ../src/mn-imap-mailbox-properties.gob:134 msgid "A_utodetect" msgstr "Wykryj a_utomatycznie" #: ../src/mn-imap-mailbox-properties.gob:135 msgid "Al_ways" msgstr "_Zawsze" #: ../src/mn-imap-mailbox.gob:384 msgid "server did not send capabilities" msgstr "serwer nie wysłał możliwości" #: ../src/mn-imap-mailbox.gob:551 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "" "serwer reklamował LOGINDISABLED, bez używania potwierdzenia tożsamości LOGIN" #: ../src/mn-imap-mailbox.gob:552 msgid "unable to login" msgstr "niezdolny do logowania" #: ../src/mn-imap-mailbox.gob:1063 msgid "" "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, " "logging out" msgstr "" #: ../src/mn-imap-mailbox.gob:1074 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "" #: ../src/mn-imap-mailbox.gob:1079 #, c-format msgid "" "the remote server runs %s, the IDLE extension might not function properly" msgstr "" #: ../src/mn-imap-mailbox.gob:1088 msgid "the remote server does not support the IDLE extension, logging out" msgstr "" #: ../src/mn-imap-mailbox.gob:1590 ../src/mn-pop3-mailbox.gob:309 msgid "server does not support in-band SSL/TLS" msgstr "serwer nie popiera wewnątrzpasmowego SSL/TSL" #: ../src/mn-imap-mailbox.gob:1614 ../src/mn-pop3-mailbox.gob:1080 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "wybrany został nieobsługiwany mechanizm potwierdzania tożsamości SASL" #: ../src/mn-imap-mailbox.gob:1624 ../src/mn-pop3-mailbox.gob:1100 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "nieznany mechanizm potwierdzenia tożsamości \"%s\"" #: ../src/mn-imap-mailbox.gob:1656 ../src/mn-pop3-mailbox.gob:1136 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "wyłączam mechanizm \"%s\"i ponawiam potwierdzenie tożsamości SASL" #: ../src/mn-imap-mailbox.gob:1668 msgid "falling back to IMAP LOGIN authentication" msgstr "powrót do potwierdzenia tożsamości IMAP LOGIN" #: ../src/mn-imap-mailbox.gob:1724 ../src/mn-pop3-mailbox.gob:744 #, c-format msgid "cannot retrieve %i message" msgid_plural "cannot retrieve %i messages" msgstr[0] "nie mogę odczytać %i wiadomości" msgstr[1] "nie mogę odczytać %i wiadomości" msgstr[2] "nie mogę odczytać %i wiadomości" #. translators: header capitalization #: ../src/mn-mail-icon.gob:86 msgid "_Mail Reader" msgstr "Otwórz program pocztowy" #. translators: header capitalization #: ../src/mn-mail-icon.gob:88 msgid "_Open Latest Message" msgstr "_Otwórz ostatnią wiadomość" #. translators: header capitalization #: ../src/mn-mail-icon.gob:93 msgid "_Consider New Mail as Read" msgstr "Uznaj nową pocztę za przeczytaną" #. translators: header capitalization #: ../src/mn-mail-icon.gob:95 ../src/mn-mailbox-view.gob:312 msgid "_Update" msgstr "_Odśwież" #. translators: header capitalization #: ../src/mn-mail-icon.gob:106 msgid "R_emove From Notification Area" msgstr "U_suń z obszaru powiadomienia" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:106 #, c-format msgid "%s Properties" msgstr "Właściwości %s" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:210 msgid "Add a Mailbox" msgstr "Dodaj skrzynkę pocztową" #: ../src/mn-mailbox-properties-dialog.gob:585 msgid "_Default:" msgstr "Domyślna:" #: ../src/mn-mailbox-properties-dialog.gob:587 #: ../ui/mailbox-properties-dialog.glade.h:9 msgid "_Default" msgstr "_Domyślna" #: ../src/mn-mailbox-properties-dialog.gob:614 msgid "D_efault:" msgstr "D_omyślnie:" #: ../src/mn-mailbox-properties-dialog.gob:618 #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "D_efault" msgstr "Domyś_lnie" #: ../src/mn-mailbox-view.gob:249 msgid "A paste error has occurred" msgstr "Wystąpił błąd wklejania" #: ../src/mn-mailbox-view.gob:571 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "nieobsługiwany typ %s skrzynki (%s)" #: ../src/mn-mailbox-view.gob:575 #, c-format msgid "%s mailbox" msgstr "Skrzynka %s" #: ../src/mn-mailbox-view.gob:586 msgid "detecting mailbox type..." msgstr "wykrywanie rodzaju skrzynki..." #: ../src/mn-mailbox.gob:565 #, c-format msgid "\"type\" attribute missing" msgstr "brakuje atrybuty \"type\"" #: ../src/mn-mailbox.gob:572 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "nieznany typ skrzynki \"%s\"" #: ../src/mn-mailbox.gob:971 #, c-format msgid "property \"%s\" has no value" msgstr "właściwość \"%s\" nie ma żadnej wartości" #: ../src/mn-mailbox.gob:1050 ../src/mn-mailbox.gob:1068 #: ../src/mn-shell.gob:624 #, c-format msgid "%s: %s" msgstr "%s: %s" #: ../src/mn-mailboxes.gob:248 msgid "An error has occurred while importing old mailboxes" msgstr "Wystąpił błąd podczas importowania skrzynek pocztowych" #: ../src/mn-mailboxes.gob:303 msgid "Unable to load the mailboxes configuration" msgstr "Nie mogę załadować konfiguracji skrzynek" #: ../src/mn-mailboxes.gob:350 #, c-format msgid "Unable to parse the XML document." msgstr "Nie mogę przetworzyć dokumentu XML." #: ../src/mn-mailboxes.gob:357 #, c-format msgid "The root element is missing." msgstr "Brak elementu korzenia." #: ../src/mn-mailboxes.gob:363 #, c-format msgid "The root element \"%s\" is invalid." msgstr "Element korzenia \"%s\" jest nieprawidłowy." #: ../src/mn-mailboxes.gob:385 #, c-format msgid "On line %i: %s." msgstr "" #: ../src/mn-mailboxes.gob:390 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "" #: ../src/mn-mailboxes.gob:399 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "Wystąpił błąd podczas odczytywania konfiguracji skrzynek" msgstr[1] "Wystąpiły błądy podczas odczytywania konfiguracji skrzynek" msgstr[2] "Wystąpiły błądy podczas odczytywania konfiguracji skrzynek" #: ../src/mn-mailboxes.gob:424 msgid "Unable to save the mailboxes configuration" msgstr "Nie można zapisać konfiguracji skrzynek" #: ../src/mn-mailboxes.gob:469 ../src/mn-vfs.c:233 #, c-format msgid "Unable to remove %s: %s." msgstr "Nie można usunąć %s: %s" #: ../src/mn-mailboxes.gob:477 #, c-format msgid "Unable to create %s: %s." msgstr "Nie można utworzyć %s: %s" #: ../src/mn-mailboxes.gob:484 #, c-format msgid "Unable to open %s for writing: %s." msgstr "Nie można otworzyć %s w trybie do zapisu: %s" #: ../src/mn-mailboxes.gob:491 #, c-format msgid "Unable to write the XML document." msgstr "Nie można zapisać dokumentu XML." #: ../src/mn-mailboxes.gob:497 #, c-format msgid "Unable to close %s: %s." msgstr "Nie można zamknąć %s: %s" #: ../src/mn-mailboxes.gob:507 ../src/mn-mailboxes.gob:514 ../src/mn-vfs.c:251 #: ../src/mn-vfs.c:259 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "Nie można zmienić nazwy z %s na %s: %s" #. non fatal #: ../src/mn-mailboxes.gob:520 ../src/mn-vfs.c:269 #, c-format msgid "unable to delete %s: %s" msgstr "Nie można usunąć %s: %s" #: ../src/mn-mailboxes.gob:550 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "%s ma %i nową wiadomość" msgstr[1] "%s ma %i nowe wiadomości" msgstr[2] "%s ma %i nowych wiadomości" #: ../src/mn-mailboxes.gob:576 #, c-format msgid "%s reported an error: %s" msgstr "%s zgłosiło błąd: %s" #: ../src/mn-maildir-mailbox-backend.gob:127 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "nie można otworzyć folderu \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:219 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "nie można zamknąć folderu \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:222 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "błąd podczas czytania folderu \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:253 #: ../src/mn-mh-mailbox-backend.gob:210 #: ../src/mn-sylpheed-mailbox-backend.gob:311 #, c-format msgid "cannot read %i message" msgid_plural "cannot read %i messages" msgstr[0] "Nie można przeczytać %i wiadomości" msgstr[1] "Nie można przeczytać %i wiadomości" msgstr[2] "Nie można przeczytać %i wiadomości" #: ../src/mn-maildir-message.gob:159 msgid "Delete message?" msgstr "Usunąć wiadomość?" #: ../src/mn-maildir-message.gob:225 msgid "The message cannot be moved to the trash. Permanently delete it?" msgstr "Wiadomość nie może zostać przesunięta do kosza. Usunąć ją całkowicie?" #: ../src/mn-maildir-message.gob:250 #, c-format msgid "" "The message could not be moved to the trash (%s). Permanently delete it?" msgstr "" "Wiadomość nie może zostać przesunięta do kosza (%s). Usunąć ją całkowicie?" #: ../src/mn-main.c:76 msgid "yes" msgstr "tak" #: ../src/mn-main.c:76 msgid "no" msgstr "nie" #: ../src/mn-main.c:107 #, c-format msgid "%s version %s\n" msgstr "%s wersja %s\n" #: ../src/mn-main.c:112 #, c-format msgid "Mailbox backends:\n" msgstr "Backendy skrzynki:\n" #: ../src/mn-main.c:117 #, c-format msgid "IMAP and POP3 features:\n" msgstr "Właściwości IMAP i POP3:\n" #: ../src/mn-main.c:204 #, c-format msgid "Unable to contact the running Mail Notification instance: %s." msgstr "" "Nie można skontaktować się z uruchomionym procesem Zawiadomienia Pocztowego: " "%s." #: ../src/mn-main.c:244 #, c-format msgid "%s option ignored since Mail Notification is not already running" msgstr "" "Opcja %s jest zignorowana, ponieważ Zawiadomienie Pocztowe nie jest " "uruchomione" #: ../src/mn-main.c:347 msgid "Show version information" msgstr "Pokaż informacje o wersji" #: ../src/mn-main.c:356 msgid "Enable informational output" msgstr "Umożliw informacyjny wydruk" #: ../src/mn-main.c:365 msgid "Display the properties dialog" msgstr "Wyświetlij dialog właściwości" #: ../src/mn-main.c:374 msgid "Display the about dialog" msgstr "Wyświetlij dialog \"O\"" #: ../src/mn-main.c:383 msgid "Consider new mail as read" msgstr "Uznaj nową pocztę za przeczytaną" #: ../src/mn-main.c:392 msgid "Update the mail status" msgstr "Odśwież stan poczty" #: ../src/mn-main.c:401 msgid "Print a XML mail summary" msgstr "Wydrukuj podsumowanie XML" #: ../src/mn-main.c:410 msgid "Unset obsolete GConf configuration" msgstr "Usuń przestarzałą konfigurację GConf" #: ../src/mn-main.c:419 msgid "Quit Mail Notification" msgstr "Zakończ powiadomienie pocztowe" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: ../src/mn-main.c:445 msgid "multi-threading is not available" msgstr "wielowątkowość nie jest dostępna " #: ../src/mn-main.c:486 msgid "Mail Notification is not running" msgstr "Zawiadomienie pocztowe nie jest uruchomione." #: ../src/mn-main.c:498 msgid "Unable to initialize the GnomeVFS library." msgstr "Niezdolny do inicjalizacji biblioteki GnomeVFS." #: ../src/mn-main.c:511 msgid "An initialization error has occurred in Mail Notification" msgstr "Wystąpił błąd w inicjalizacji Zawiadomienia Pocztowego" #: ../src/mn-main.c:512 msgid "" "Unable to initialize the notification library. Message popups will not be " "displayed." msgstr "" "Nie można zainicjować biblioteki powiadomień. Wyskakujące okienka nie będą " "wyświetlane." #: ../src/mn-main.c:557 msgid "quitting Mail Notification" msgstr "kończę Zawiadomienie Pocztowe" #: ../src/mn-main.c:576 msgid "considering new mail as read" msgstr "uznaję nową pocztę za przeczytaną" #: ../src/mn-main.c:581 msgid "updating the mail status" msgstr "odświeżanie stanu poczty" #: ../src/mn-main.c:598 msgid "Mail Notification is already running" msgstr "Zawiadomienie pocztowe jest już uruchomione." #: ../src/mn-message-mime.c:173 #, c-format msgid "unable to parse MIME message" msgstr "niezdolny do zrobienia rozbioru wiadomości MIME" #. translators: header capitalization #: ../src/mn-message.gob:97 msgid "Open" msgstr "Otwórz" #: ../src/mn-message.gob:98 msgid "Unable to open message" msgstr "Nie można otworzyć wiadomości" #. translators: header capitalization #: ../src/mn-message.gob:107 msgid "Mark as Read" msgstr "Oznacz jako przeczytane" #: ../src/mn-message.gob:108 msgid "Unable to mark message as read" msgstr "Nie można oznaczyć wiadomości jako przeczytanej" #. translators: header capitalization #: ../src/mn-message.gob:117 msgid "Mark as Spam" msgstr "Oznacz jako spam" #: ../src/mn-message.gob:118 ../src/mn-message.gob:128 msgid "Unable to mark message as spam" msgstr "Nie można oznaczyć wiadomości jako spam" #. translators: header capitalization #: ../src/mn-message.gob:127 msgid "Delete" msgstr "" #: ../src/mn-message.gob:336 ../src/mn-sound-player.gob:133 #: ../src/mn-sound-player.gob:169 ../src/mn-util.c:1577 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "Niezdolny do wykonania \"%s\": %s" #: ../src/mn-mh-mailbox-backend.gob:219 #, c-format msgid "error while reading %s: %s" msgstr "błąd podczas czytania %s: %s" #: ../src/mn-mh-mailbox-backend.gob:243 ../src/mn-webmail-mailbox.gob:276 #, c-format msgid "unable to open %s: %s" msgstr "nie można otworzyć %s: %s" #: ../src/mn-pi-mailbox-properties.gob:73 msgid "_Standard" msgstr "_Standard" #: ../src/mn-pi-mailbox-properties.gob:74 msgid "In-_band SSL/TLS" msgstr "Wewnętrzne SSL/TLS" #: ../src/mn-pi-mailbox-properties.gob:75 msgid "SSL/TLS on s_eparate port" msgstr "SSL/TLS na oddzielnym porcie" #: ../src/mn-pi-mailbox-properties.gob:79 msgid "_Server:" msgstr "_Serwer:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:99 msgid "Connection Type" msgstr "Typ połączenia" #: ../src/mn-pi-mailbox-properties.gob:146 msgid "Port:" msgstr "Port:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:173 msgid "Authentication" msgstr "Autoryzacja" #: ../src/mn-pi-mailbox-properties.gob:177 msgid "_Mechanism:" msgstr "_Mechanizm:" #: ../src/mn-pi-mailbox-properties.gob:211 msgid "Connection" msgstr "Połączenie" #: ../src/mn-pi-mailbox.gob:147 msgid "SSL/TLS support has not been compiled in" msgstr "Protokół SSL/TLS nie jest obsługiwany" #: ../src/mn-pi-mailbox.gob:305 msgid "missing certificate" msgstr "brak certyfikatu" #: ../src/mn-pi-mailbox.gob:339 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "Zawiadomienie pocztowe nie mogło zaufać \"%s\" (%s). Jest możliwe że ktoś " "przechwyta twoje komunikacje żeby uzyskać twoją konfidencjalną informację.\n" "\n" "Powinieneś się tylko łączyć z serwerem jeśli jesteś pewny że jesteś " "połączony z \"%s\". Jeśli się połączysz z tym serwerem, ta wiadomość nie " "będzie pokazana powtórnie." #: ../src/mn-pi-mailbox.gob:353 #, c-format msgid "Certificate fingerprint: %s." msgstr "Odcisk palca certyfikatu: %s" #: ../src/mn-pi-mailbox.gob:360 msgid "Connect to untrusted server?" msgstr "Połączyć się z niezaufanym serwerem?" #: ../src/mn-pop3-mailbox.gob:359 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "nieważne argumenty do zdolności LOGIN-DELAY" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:500 msgid "" "SASL authentication with initial client response failed, retrying without " "initial client response" msgstr "" "Autentykacja SASL z pierwszą odpowiedzią klienta zawiodła, próbuję jeszcze " "raz bez pierwszej odpowiedzi." #: ../src/mn-pop3-mailbox.gob:920 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "honorujemy LOGIN-DELAY, śpimy przez %i sekundę" msgstr[1] "honorujemy LOGIN-DELAY, śpimy przez %i sekund" msgstr[2] "honorujemy LOGIN-DELAY, śpimy przez %i sekundy" #: ../src/mn-pop3-mailbox.gob:1092 msgid "server does not support APOP authentication" msgstr "serwer nie popiera potwierdzenia tożsamości APOP" #: ../src/mn-pop3-mailbox.gob:1148 msgid "falling back to APOP authentication" msgstr "wycofanię do potwierdzenia tożsamości APOP" #: ../src/mn-pop3-mailbox.gob:1153 msgid "falling back to USER/PASS authentication" msgstr "wycofanię do potwierdzenia tożsamości USER/PASS" #: ../src/mn-popup.gob:45 ../src/mn-standard-message-view.gob:39 msgid "Mailbox:" msgstr "Skrzynka pocztowa:" #: ../src/mn-popup.gob:46 ../src/mn-standard-message-view.gob:40 msgid "From:" msgstr "Nadawca:" #: ../src/mn-popup.gob:47 ../src/mn-standard-message-view.gob:41 msgid "Subject:" msgstr "Temat wiadomości:" #: ../src/mn-popup.gob:96 #, c-format msgid "configuration key %s: there is no action named \"%s\"" msgstr "klucz konfiguracyjny %s: nie ma akcji o nazwie \"%s\"" #: ../src/mn-popup.gob:176 #, c-format msgid "unable to show popup: %s" msgstr "nie można pokazać okienka popup: %s" #: ../src/mn-popup.gob:194 #, c-format msgid "unable to close popup: %s" msgstr "nie można zamknąć okienka popup: %s" #. we set the summary here because libnotify requires it #. translators: header capitalization #: ../src/mn-popup.gob:205 msgid "New Message" msgstr "Nowa wiadomość" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:114 ../ui/properties-dialog.glade.h:18 msgid "Mail Notification Properties" msgstr "Właściwości Zawiadomienia Pocztowego" #: ../src/mn-properties-dialog.gob:232 msgid "No mailbox selected." msgstr "Żadna skrzynka pocztowa nie została wybrana." #: ../src/mn-properties-dialog.gob:237 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "%i skrzynka pocztowa wybrana" msgstr[1] "%i skrzynki pocztowe wybrane" msgstr[2] "%i wybranych skrzynek pocztowych" #: ../src/mn-server.gob:136 #, c-format msgid "Unable to register the Mail Notification D-Bus server: %s." msgstr "Nie można zarejestrować serwera D-Bus: %s" #: ../src/mn-shell.gob:290 #, c-format msgid "received %s signal, exiting" msgstr "otrzymano sygnał %s, kończenie" #: ../src/mn-shell.gob:430 msgid "No mail reader is configured" msgstr "Brak skonfigurowanego czytnika poczty" #: ../src/mn-shell.gob:431 msgid "" "You can configure a mail reader by choosing System → Preferences → " "Preferred Applications." msgstr "" "Możesz skonfigurować czytnik poczty w menu System → Preferencje → " "Preferowane Aplikacje" #: ../src/mn-shell.gob:443 ../src/mn-shell.gob:449 ../src/mn-shell.gob:794 msgid "Unable to open the latest message" msgstr "Nie można otworzyć ostatniej wiadomości" #: ../src/mn-shell.gob:444 #, c-format msgid "Messages of mailbox \"%s\" cannot be opened." msgstr "Wiadomości ze skrzynki \"%s\" nie mogą być otwarte." #: ../src/mn-shell.gob:450 ../src/mn-shell.gob:714 msgid "You have no new mail." msgstr "Brak nowych wiadomości." #: ../src/mn-shell.gob:605 #, c-format msgid "%s (%i)" msgstr "%s (%i)" #. translators: header capitalization #: ../src/mn-shell.gob:610 msgid "Mailboxes Having New Mail" msgstr "Skrzynki pocztowe z nową pocztą" #. translators: header capitalization #: ../src/mn-shell.gob:629 msgid "Errors" msgstr "Błędy" #. translators: header capitalization #: ../src/mn-shell.gob:649 msgid "Mail Summary" msgstr "Podsumowanie wiadomości" #: ../src/mn-shell.gob:689 #, c-format msgid "%i message is not displayed" msgid_plural "%i messages are not displayed" msgstr[0] "%i wiadomość nie jest pokazana" msgstr[1] "%i wiadomości nie są pokazane" msgstr[2] "%i wiadomości nie jest pokazanych" #: ../src/mn-sound-file-chooser-dialog.gob:48 msgid "Select a File" msgstr "Wybierz plik" #: ../src/mn-sound-file-chooser-dialog.gob:58 msgid "All files" msgstr "Wszystkie pliki" #: ../src/mn-sound-file-chooser-dialog.gob:63 msgid "Audio files" msgstr "Pliki dźwiękowe" #: ../src/mn-sound-player.gob:120 msgid "Unable to play sound" msgstr "Nie można odtworzyć dźwięku" #: ../src/mn-sound-player.gob:122 ../src/mn-util.c:1576 msgid "A command error has occurred in Mail Notification" msgstr "Błąd rozkazowy występił w Zawiadomieniu Pocztowym" #: ../src/mn-ssl.c:191 msgid "unknown SSL/TLS error" msgstr "nieznany błąd SSL/TLS" #: ../src/mn-standard-message-view.gob:45 msgid "Sent:" msgstr "Wysłano:" #: ../src/mn-sylpheed-mailbox-backend.gob:229 #, c-format msgid "unable to open folder: %s" msgstr "niezdolny otworzyć teczkę: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:317 #, c-format msgid "unable to close folder: %s" msgstr "niezdolny zamknąć teczkę: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:320 #, c-format msgid "error while reading folder: %s" msgstr "błąd podczas czytania teczki: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:368 #, c-format msgid "unable to set encoding: %s" msgstr "nie można ustawić kodowania: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:443 #, c-format msgid "unexpected end of file" msgstr "nieoczekiwany koniec pliku" #: ../src/mn-sylpheed-mailbox-backend.gob:483 #, c-format msgid "incompatible file version \"%i\"" msgstr "niekompatybilna wersja pliku \"%i\"" #: ../src/mn-sylpheed-message.gob:69 #, c-format msgid "Unable to read %s: %s." msgstr "Nie można przeczytać %s: %s" #: ../src/mn-system-vfs-mailbox-properties.gob:38 #: ../src/mn-system-vfs-mailbox-properties.gob:46 #: ../src/mn-system-vfs-mailbox.gob:44 msgid "System mailbox" msgstr "Skrzynka systemowa" #: ../src/mn-system-vfs-mailbox-properties.gob:73 #, c-format msgid "Your system mailbox is %s." msgstr "" "Lokalizacja Twojej systemowej skrzynki pocztowej:%s." #: ../src/mn-system-vfs-mailbox-properties.gob:80 msgid "" "The location of your system mailbox could not be detected. Check the MAIL " "environment variable." msgstr "" "Umieszczenie skrzynki pocztowej twojego systemu nie zostało wykryte. Proszę " "ustawić zmienną środowiskową MAIL." #: ../src/mn-system-vfs-mailbox.gob:71 msgid "system mailbox not found" msgstr "skrzynka systemowa nie znaleziona" #: ../src/mn-test-mailbox.gob:38 msgid "Test mailbox" msgstr "Skrzynka testowa" #: ../src/mn-test-mailbox.gob:57 #, c-format msgid "Test message #%i" msgstr "Wiadomość testowa nr. %i" #. translators: header capitalization #: ../src/mn-test-mailbox.gob:63 msgid "Mail Notification Properties Dialog" msgstr "Okno preferencji powiadamiania o nowej poczcie" #: ../src/mn-util.c:525 ../src/mn-util.c:548 ../src/mn-util.c:568 #: ../src/mn-util.c:590 msgid "A drag and drop error has occurred" msgstr "Błąd podczas przeciągania i upuszczenia" #: ../src/mn-util.c:526 msgid "An invalid location list has been received." msgstr "Otrzymano błędną lokację listy." #: ../src/mn-util.c:569 msgid "An invalid Mozilla location has been received." msgstr "Otrzymano błędną lokację Mozilli." #: ../src/mn-util.c:680 msgid "Unable to display help" msgstr "Niezdolny do wyświetlenia pomocy" #: ../src/mn-util.c:692 msgid "Unable to open link" msgstr "Nie można otworzyć linka" #: ../src/mn-util.c:883 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" msgid_plural "" "The following locations are invalid:\n" "\n" "%s" msgstr[0] "" "Następujące położenie jest nieprawidłowe:\n" "\n" "%s" msgstr[1] "" "Następujące położenia są nieprawidłowe:\n" "\n" "%s" msgstr[2] "" "Następujące położenia są nieprawidłowe:\n" "\n" "%s" #: ../src/mn-util.c:899 msgid "A fatal error has occurred in Mail Notification" msgstr "Fatalny błąd zdarzył się w Zawiadomieniu Pocztowym" #: ../src/mn-util.c:979 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "%i sekundę temu" msgstr[1] "%i sekundy temu" msgstr[2] "%i sekund temu" #: ../src/mn-util.c:983 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "około %i minutę temu" msgstr[1] "około %i minuty temu" msgstr[2] "około %i minut temu" #: ../src/mn-util.c:988 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "około %i godzinę temu" msgstr[1] "około %i godziny temu" msgstr[2] "około %i godzin temu" #: ../src/mn-util.c:993 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "około %i dzień temu" msgstr[1] "około %i dni temu" msgstr[2] "około %i dni temu" #: ../src/mn-util.c:998 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "około %i dzień temu" msgstr[1] "około %i dni temu" msgstr[2] "około %i dni temu" #: ../src/mn-util.c:1016 #, c-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i sekunda" msgstr[1] "%i sekundy" msgstr[2] "%i sekund" #: ../src/mn-util.c:1020 #, c-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i minuta" msgstr[1] "%i minuty" msgstr[2] "%i minut" #: ../src/mn-util.c:1025 #, c-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i godzina" msgstr[1] "%i godziny" msgstr[2] "%i godzin" #: ../src/mn-util.c:1030 msgid "1 day" msgstr "1 dzień" #: ../src/mn-util.c:1506 #, c-format msgid "unterminated substitution" msgstr "niezakończony substytut" #: ../src/mn-util.c:1545 #, c-format msgid "unknown substitution \"%s\"" msgstr "nieznana podmiana \"%s\"" #: ../src/mn-util.c:1548 #, c-format msgid "empty substitution" msgstr "pusta podmiana" #: ../src/mn-vfs-mailbox.gob:236 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "nie można monitorować %s (%s), tryb poll włączony" #: ../src/mn-vfs-mailbox.gob:426 msgid "unknown mailbox format" msgstr "nieznany format skrzynki" #: ../src/mn-vfs-mailbox.gob:426 msgid "does not exist" msgstr "nie istnieje" #: ../src/mn-vfs.c:241 #, c-format msgid "Unable to write %s: %s." msgstr "Nie można zapisać %s: %s" #: ../src/mn-webmail-mailbox.gob:84 #, c-format msgid "unable to create a temporary file: %s" msgstr "nie można utworzyć pliku tymczasowego: %s." #: ../src/mn-webmail-mailbox.gob:91 #, c-format msgid "unable to change the permissions of the temporary file: %s" msgstr "nie można zmienić uprawnień pliku tymczasowego: %s" #: ../src/mn-webmail-mailbox.gob:135 #, c-format msgid "unable to set encoding of %s: %s" msgstr "nie mogę ustawić kodowania %s: %s" #: ../src/mn-webmail-mailbox.gob:192 msgid "configuration:" msgstr "konfiguracja:" #: ../src/mn-webmail-mailbox.gob:220 #, c-format msgid "running %s" msgstr "uruchamian %s" #: ../src/mn-webmail-mailbox.gob:224 #, c-format msgid "cannot execute \"%s\": %s" msgstr "nie można uruchomić \"%s\": %s" #: ../src/mn-webmail-mailbox.gob:229 msgid "standard output:" msgstr "standardowe wyjście:" #: ../src/mn-webmail-mailbox.gob:230 msgid "standard error output:" msgstr "standardowe wyjście błędów:" #. translators: %s is a program name, as in "unknown fetchyahoo failure" #: ../src/mn-webmail-mailbox.gob:248 #, c-format msgid "unknown %s failure" msgstr "nieznany błąd %s" #: ../src/mn-xml.c:51 #, c-format msgid "" "property \"%s\": unable to transform string \"%s\" into a value of type \"%s" "\"" msgstr "" "właściwość \"%s\": nie można przekonwertować tekstu \"%s\" w wartość typu \"%" "s\"" #: ../src/mn-yahoo-mailbox.gob:71 #, c-format msgid "unable to change the permissions of %s: %s" msgstr "nie można zmienić uprawnień %s: %s" #: ../src/mn-yahoo-mailbox.gob:82 #, c-format msgid "unable to create %s: %s" msgstr "nie można utworzyć %s: %s" #: ../src/mn-yahoo-mailbox.gob:229 msgid "delay between mail checks too small" msgstr "opóźnienie sprawdzania poczty za małe" #: ../ui/mailbox-properties-dialog.glade.h:1 msgid "Delay Between Mail Checks" msgstr "Opóźnienie sprawdzania skrzynki" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:2 ../ui/properties-dialog.glade.h:6 msgid "General" msgstr "Ogólne" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox Name" msgstr "Nazwa skrzynki pocztowej" #: ../ui/mailbox-properties-dialog.glade.h:5 msgid "Details" msgstr "Szczegóły" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:6 #: ../ui/properties-dialog.glade.h:15 msgid "General" msgstr "Ogólne" #: ../ui/mailbox-properties-dialog.glade.h:7 msgid "Mailbox _type:" msgstr "_Typ skrzynki pocztowej:" #: ../ui/mailbox-properties-dialog.glade.h:8 msgid "O_ther:" msgstr "_Inne:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:2 msgid "Click Action" msgstr "Akcja po kliknięciu" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:4 msgid "Expiration" msgstr "Przedawnienie" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:8 msgid "Mailbox List" msgstr "Skrzynki pocztowe" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:10 msgid "Position" msgstr "Pozycja" #: ../ui/properties-dialog.glade.h:11 msgid "A_fter:" msgstr "P_o określonym czasie:" #: ../ui/properties-dialog.glade.h:12 msgid "Co_nsider new mail as read" msgstr "Uznaj nową pocztę za przeczytaną" #: ../ui/properties-dialog.glade.h:13 msgid "De_sktop default" msgstr "_Domyślne ustawienie systemowe" #: ../ui/properties-dialog.glade.h:16 msgid "In the p_opup stack" msgstr "Okna ułożone na stosie" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:20 msgid "Message Popups" msgstr "Okienka wiadomości" #: ../ui/properties-dialog.glade.h:21 msgid "Play a _sound when new mail arrives:" msgstr "Odtwórz dźwięk po nadejściu nowej poczty:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:23 msgid "Status Icon" msgstr "Ikona w tacce systemowej" #: ../ui/properties-dialog.glade.h:24 msgid "_Attached to the status icon" msgstr "_Podłączone do ikony w tacce systemowej" #: ../ui/properties-dialog.glade.h:25 msgid "_Display test messages" msgstr "Pokaż wiadomość _testową" #: ../ui/properties-dialog.glade.h:26 msgid "_Enable message popups" msgstr "Włącz wyskakujące okna wiadomości" #: ../ui/properties-dialog.glade.h:27 msgid "_Launch the mail reader" msgstr "U_ruchom program pocztowy" #: ../ui/properties-dialog.glade.h:28 msgid "_Open the latest message" msgstr "_Otwórz ostatnią wiadomość" #: ../ui/properties-dialog.glade.h:29 msgid "_Update the mail status" msgstr "O_dśwież stan poczty" #: ../ui/properties-dialog.glade.h:30 msgid "message popups tab|_Never" msgstr "_Nigdy" #~ msgid "Mail Notification automation" #~ msgstr "Automatyzacja Zawiadomienia Pocztowego" #~ msgid "Mail Notification automation factory" #~ msgstr "Fabryka automatyzacji Zawiadomienia Pocztowego" #~ msgid "Automatically close the mail summary popup" #~ msgstr "Automatycznie zamknij wyskakujące okienko streszczenia poczty" #~ msgid "Delay between mail checks (minutes part)." #~ msgstr "Zwłoka pomiędzy sprawdzaniem poczty (minuty)." #~ msgid "Delay between mail checks (seconds part)." #~ msgstr "Zwłoka pomiędzy sprawdzaniem poczty (sekundy)." #~ msgid "Display mail summary in tooltip" #~ msgstr "Wyświetlanie streszczenia poczty w obszarze powiadamiania" #~ msgid "Do not show the immediate notification error dialog" #~ msgstr "Nie pokazuj dialogu błędowego natychmiastowego zawiadomienia" #~ msgid "Enable mail summary popup" #~ msgstr "Umożliwij wyskakujące okienko streszczenia poczty" #~ msgid "Has already been run" #~ msgstr "Polecenie już było wykonane" #~ msgid "Height of mail summary dialog" #~ msgstr "Wysokość dialogu streszenia poczty" #~ msgid "Mail summary popup contents font" #~ msgstr "Czcionka zawartości wyskakującego okienka streszczenia poczty" #~ msgid "Mail summary popup horizontal offset" #~ msgstr "Poziomę przesunięcie wyskakującego okienka streszczenia poczty" #~ msgid "Mail summary popup title font" #~ msgstr "Czcionka tytułu wyskakującego okienka streszczenia poczty" #~ msgid "Mail summary popup vertical offset" #~ msgstr "Pionowę przesunięcie wyskakującego okienka streszczenia poczty" #~ msgid "Mailbox list" #~ msgstr "Lista skrzynek pocztowych" #~ msgid "Minutes between mail checks" #~ msgstr "Ilość minut pomiędzy sprawdzaniem poczty" #~ msgid "Minutes to wait before closing the mail summary popup" #~ msgstr "" #~ "Ile minut czekać przed zamknięciem wyskakującego okienka streszczenia " #~ "poczty" #~ msgid "Only display recent mail in mail summary popup" #~ msgstr "" #~ "Tylko wyświetlaj niedawną pocztę w wyskakującym okienku streszczenia " #~ "poczty" #~ msgid "Seconds between mail checks" #~ msgstr "Sekundy pomiędzy sprawdzaniem poczty" #~ msgid "Set a mail reader" #~ msgstr "Ustaw czytnika poczty" #~ msgid "" #~ "The amount of time to wait before closing the mail summary popup (minutes " #~ "part)." #~ msgstr "" #~ "Ilość czasu do czekania przed zamknięciem wyskakującego okienka " #~ "streszczenia poczty (minuty)." #~ msgid "" #~ "The amount of time to wait before closing the mail summary popup (seconds " #~ "part)." #~ msgstr "" #~ "Ilość czasu do czekania przed zamknięciem wyskakującego okienka " #~ "streszczenia poczty (sekundy)." #~ msgid "The command to run to launch the mail reader." #~ msgstr "Rozkaz do wykonania żeby uruchomić czytnika poczty." #~ msgid "The custom font to use for the contents of the mail summary popup." #~ msgstr "" #~ "Niestandardowa czcionka użyta dla zawartości wyskakującego okienka " #~ "streszczenia poczty." #~ msgid "The custom font to use for the title of the mail summary popup." #~ msgstr "" #~ "Niestandardowa czcionka użyta dla tytułu wyskakującego okienka " #~ "streszczenia poczty." #~ msgid "The height of the mail summary dialog in pixels." #~ msgstr "Wysokość dialogu streszczenia poczty w pikselach." #~ msgid "The list of mailboxes to monitor." #~ msgstr "Lista monitorowanych skrzynek pocztowych." #~ msgid "" #~ "The number of pixels to leave between the left or right side of the " #~ "screen and the mail summary popup." #~ msgstr "" #~ "Ilość pikselów do pozostawienia pomiędzy lewą lub prawą stroną ekranu i " #~ "wyskakującym okienkiem streszczenia poczty." #~ msgid "" #~ "The number of pixels to leave between the top or bottom side of the " #~ "screen and the mail summary popup." #~ msgstr "" #~ "Ilość pikselów do pozostawienia pomiędzy górną lub dolną stroną ekranu i " #~ "wyskakującym okienkiem streszczenia poczty." #~ msgid "The width of the mail summary dialog in pixels." #~ msgstr "Szerokość dialogu streszczenia poczty w pikselach." #~ msgid "Use a custom font for the contents of the mail summary popup" #~ msgstr "" #~ "Użyj niestandardową czcionkę dla zawartości wyskakującego okienka " #~ "streszczenia poczty" #~ msgid "Use a custom font for the title of the mail summary popup" #~ msgstr "" #~ "Użyj niestandardową czcionkę dla tytułu wyskakującego okienka " #~ "streszczenia poczty" #~ msgid "Whether Mail Notification has already been run or not." #~ msgstr "Czy Zawiadomienie pocztowe było już uruchomione czy nie." #~ msgid "Whether to automatically close the mail summary popup or not." #~ msgstr "" #~ "Automatycznie zamyka okienko ze streszczeniem poczty po upływie zadanego " #~ "czasu" #~ msgid "" #~ "Whether to display the mail summary popup when new mail arrives or not." #~ msgstr "Wyświetl streszczenie poczty po nadejściu nowych listów" #~ msgid "" #~ "Whether to hide previously displayed mail in the mail summary popup or " #~ "not." #~ msgstr "" #~ "Czy schować poprzednio wyświetloną pocztę w wyskakującym okienku " #~ "streszczenia poczty czy nie." #~ msgid "" #~ "Whether to prevent the immediate notification error dialog from being " #~ "displayed or not." #~ msgstr "" #~ "Czy zapobiegać wyświetleniu dialogu błędowego natychmiastowego " #~ "zawiadomieniaczy nie." #~ msgid "" #~ "Whether to use a custom font for the contents of the mail summary popup " #~ "or not." #~ msgstr "" #~ "Czy użyć niestandardową czcionkę dla zawartości wyskakującego okienka " #~ "streszczenia poczty czy nie." #~ msgid "" #~ "Whether to use a custom font for the title of the mail summary popup or " #~ "not." #~ msgstr "" #~ "Czy użyć niestandardową czcionkę dla tytułu wyskakującego okienka " #~ "streszczenia poczty czy nie." #~ msgid "New Mail" #~ msgstr "Nowa Poczta" #~ msgid "Jean-Yves Lefort " #~ msgstr "Tomasz Sarota-Raczek " #~ msgid "" #~ "Mail Notification requires a " #~ "password\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Zawiadomienie pocztowe wymaga " #~ "hasła\n" #~ "\n" #~ "%s" #~ msgid "The URI of the mailbox" #~ msgstr "URI skrzynki pocztowej" #~ msgid "Whether the image is blinking or not" #~ msgstr "Czy obraz miga czy nie" #~ msgid "Co_nnect" #~ msgstr "Po_łącz się." #~ msgid "" #~ "the server sent a SASL challenge, but there was a pending initial SASL " #~ "client response" #~ msgstr "" #~ "serwer wysłał wyzwanie SASL, ale już była początkowa odpowiedź SASL od " #~ "klienta." #~ msgid "" #~ "the server did not send a SASL challenge, but there was no pending " #~ "initial SASL client response" #~ msgstr "" #~ "serwer nie wysłał wyzwania SASL, ale nie było początkowej odpowiedź SASL " #~ "od klienta." #~ msgid "Your Gmail username" #~ msgstr "Twoję Gmail imię użytkownika" #~ msgid "" #~ "Your Gmail password (if left blank, you will be prompted for the password " #~ "when needed)" #~ msgstr "" #~ "Twoję Gmail hasło (jeśli pozostawione pustę, to będziesz zapytany o hasło " #~ "wtedy kiedy będzie potrzebnę)" #~ msgid "libsoup has not been compiled with SSL/TLS support" #~ msgstr "libsoup nie było kompilowanę z poparciem SSL/TLS" #~ msgid "unable to parse URI \"%s\"" #~ msgstr "niezdolny wykonać rozbiór URI \"%s\"" #~ msgid "unable to transfer data: %s" #~ msgstr "niezdolny do przesłania danych: %s" #~ msgid "logging in" #~ msgstr "logowanie" #~ msgid "login failed" #~ msgstr "nieudanę logowanie" #~ msgid "searching for unread mail" #~ msgstr "szukam nieprzeczytanej poczty" #~ msgid "unable to parse Gmail data" #~ msgstr "niezdolny wykonać rozbioru danych Gmail" #~ msgid "in_box" #~ msgstr "_skrzynka odbiorcza" #~ msgid "oth_er:" #~ msgstr "innę:" #~ msgid "U_se idle mode if possible" #~ msgstr "Użyj bezczynny tryb jeśli to jest możliwę" #~ msgid "The hostname or IP address of the IMAP server" #~ msgstr "Nazwa lub adres IP serweru IMAP" #~ msgid "Your username on the IMAP server" #~ msgstr "Twoje imię użytkownika na serwerze IMAP" #~ msgid "" #~ "Your password on the IMAP server (if left blank, you will be prompted for " #~ "the password when needed)" #~ msgstr "" #~ "Twoję hasło na serwerze IMAP (jeśli pozostawione pustę, to będziesz " #~ "zapytany o hasło wtedy kiedy będzie potrzebnę)" #~ msgid "The port number of the IMAP server" #~ msgstr "Numer portu na serwerze IMAP" #~ msgid "The mailbox name" #~ msgstr "Imię skrzynki pocztowej" #~ msgid "If possible, whether to use idle mode or not" #~ msgstr "Jeśli możliwę, czy użyć bezczynny tryb czy nie" #~ msgid "server did not send search results" #~ msgstr "serwer nie wysłał wyników poszukiwania" #~ msgid "server did not send all the messages we requested" #~ msgstr "serwer nie wysłał wszystkich wiadomości o które prosiliśmy" #~ msgid "server did not send status" #~ msgstr "serwer nie wysłał stanu" #~ msgid "_Launch Mail Reader" #~ msgstr "_Uruchom program pocztowy" #~ msgid "Connection type:" #~ msgstr "Konfiguracja serwera:" #~ msgid "_Authentication mechanism:" #~ msgstr "Uwierzytelnianie:" #~ msgid "The marked up text to show in the type combo box" #~ msgstr "Tekst oznaczony do pokazania się w okienku typu combo" #~ msgid "Size group" #~ msgstr "Grupa rozmiaru" #~ msgid "A GtkSizeGroup for aligning control labels" #~ msgstr "GtkSizeGroup dla wyrównania etykiet kontroli" #~ msgid "Complete" #~ msgstr "Skończonę" #~ msgid "Whether the properties are completely filled or not" #~ msgstr "Czy właściwości są całkowicię wypełnione czy nie" #~ msgid "Format" #~ msgstr "Format" #~ msgid "The mailbox is already in the list." #~ msgstr "Skrzynka pocztowa już jest w spisie." #~ msgid "The mailbox URI" #~ msgstr "URI skrzynki pocztowej" #~ msgid "The mailbox human-readable name" #~ msgstr "Ludzko-czytelne imię skrzynki pocztowej" #~ msgid "Whether the mailbox has to be polled or not" #~ msgstr "Czy skrzynka pocztowa była sprawdzona czy nie" #~ msgid "Whether the mailbox has new mail or not" #~ msgstr "Czy skrzynka pocztowa ma nową pocztę czy nie" #~ msgid "The list of new and unread MNMessage objects" #~ msgstr "Spis przeczytanych i nie przeczytanych obiektów MNMessage" #~ msgid "The mailbox error, if any" #~ msgstr "Błąd skrzynki pocztowej, jeżeli wszelki" #~ msgid "unable to enable immediate notification for %s: %s" #~ msgstr "niezdolny umożliwić natychmiastowę zawiadomienie dla %s: %s" #~ msgid "" #~ "As a fallback, they will be checked every %i second (this delay is " #~ "configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked every %i seconds (this delay is " #~ "configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdą %i sekundę (ta zwłoka " #~ "może być skonfigurowana w Dialogu Właściowści)." #~ msgstr[1] "" #~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i sekund (ta zwłoka " #~ "może być skonfigurowana w Dialogu Właściowści)." #~ msgstr[2] "" #~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i sekundy (ta zwłoka " #~ "może być skonfigurowana w Dialogu Właściowści)." #~ msgid "" #~ "As a fallback, they will be checked every %i minute (this delay is " #~ "configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked every %i minutes (this delay is " #~ "configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdą %i minutę (ta zwłoka " #~ "może być skonfigurowana w Dialogu Właściowści)." #~ msgstr[1] "" #~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i minut (ta zwłoka " #~ "może być skonfigurowana w Dialogu Właściowści)." #~ msgstr[2] "" #~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i minuty (ta zwłoka " #~ "może być skonfigurowana w Dialogu Właściowści)." #~ msgid "" #~ "As a fallback, they will be checked approximately every %i minute (this " #~ "delay is configurable from the Properties Dialog)." #~ msgid_plural "" #~ "As a fallback, they will be checked approximately every %i minutes (this " #~ "delay is configurable from the Properties Dialog)." #~ msgstr[0] "" #~ "Pod reżimem awaryjnym, one będą sprawdzanę co mniej więcej każdą %i " #~ "minutę (ta zwłoka może być skonfigurowana w Dialogu Właściowści)." #~ msgstr[1] "" #~ "Pod reżimem awaryjnym, one będą sprawdzanę co mniej więcej każdę %i minut " #~ "(ta zwłoka może być skonfigurowana w Dialogu Właściowści)." #~ msgstr[2] "" #~ "Pod reżimem awaryjnym, one będą sprawdzanę co mniej więcej każdę %i " #~ "minuty (ta zwłoka może być skonfigurowana w Dialogu Właściowści)." #~ msgid "" #~ "Mail Notification was unable to enable immediate notification for one or " #~ "more mailboxes. %s" #~ msgstr "" #~ "Zawiadomienie pocztowe było niezdolnę umożliwić natychmiastowę " #~ "zawiadomienie jednej albo większej ilość skrzynek pocztowych. %s" #~ msgid "Whether one or more of the mailboxes has to be polled" #~ msgstr "Czy jedna lub więcej szkrzynek pocztowych była sprawdzona czy nie" #~ msgid "%s is unsupported: %s" #~ msgstr "%s jest nieobsługiwane: %s" #~ msgid "%s has no new mail" #~ msgstr "%s nie ma nowej poczty" #~ msgid "Compiled-in mailbox backends: %s\n" #~ msgstr "Wkompilowanę wewnętrzne cechy skrzynki pocztowej: %s\n" #~ msgid "Compiled-in features: %s\n" #~ msgstr "Wkompilowanę cechy: %s\n" #~ msgid "List compiled-in features and exit" #~ msgstr "Wydrukuj spis wkompilowanych cech i zakończ" #~ msgid "Display the mail summary dialog" #~ msgstr "Wyświetlij dialog streszczenia poczty" #~ msgid "Report the mail status" #~ msgstr "Zgłoś stan poczty" #~ msgid "" #~ "Bonobo could not locate the GNOME_MailNotification_Automation.server " #~ "file. Please check your Mail Notification installation." #~ msgstr "" #~ "Bonobo nie mogło znaleźć pliku GNOME_MailNotification_Automation.server." #~ "Proszę sprawdzić swoją instalację Zawiadomienia Pocztowego." #~ msgid "" #~ "Bonobo was unable to register the automation server. Please check your " #~ "Mail Notification installation." #~ msgstr "" #~ "Bonobo nie potrafiło zarejestrować serwera automatyzacyjnego. Proszę " #~ "sprawdzić instalację Zawiadomienia Pocztowego" #~ msgid "error while reading mailbox: %s" #~ msgstr "błąd podczas odczytywania skrzynki pocztowej: %s" #~ msgid "%i week ago" #~ msgid_plural "%i weeks ago" #~ msgstr[0] "%i tydzień temu" #~ msgstr[1] "%i tygodni temu" #~ msgstr[2] "%i tygodnie temu" #~ msgid "Unknown" #~ msgstr "Nieznany" #~ msgid "error while reading .mh_sequences: %s" #~ msgstr "błąd podczas czytania .mh_sequences: %s" #~ msgid "unable to open .mh_sequences: %s" #~ msgstr "niezdolny do otwarcia .mh_sequences: %s" #~ msgid "detecting" #~ msgstr "odkrywanie" #~ msgid "_Hostname:" #~ msgstr "Nazwa serwera:" #~ msgid "_in-band SSL/TLS" #~ msgstr "wewnątrzpasmowy TLS" #~ msgid "SSL/TLS on sepa_rate port" #~ msgstr "SSL/TLS na oddzielnym porcie" #~ msgid "The hostname or IP address of the POP3 server" #~ msgstr "Imię lub adres IP serwera POP3" #~ msgid "Your username on the POP3 server" #~ msgstr "Twoję imię użytkownika na serwerze POP3" #~ msgid "" #~ "Your password on the POP3 server (if left blank, you will be prompted for " #~ "the password when needed)" #~ msgstr "" #~ "Twoje hasło na serwerze POP3 (jeśli pozostawionę pustę, to będziesz " #~ "zapytany o hasło wtedy kiedy będzie potrzebnę)" #~ msgid "The port number of the POP3 server" #~ msgstr "Numer portu serweru POP3" #~ msgid "unknown error" #~ msgstr "nieznany błąd" #~ msgid "top left" #~ msgstr "lewy górny róg ekranu" #~ msgid "top right" #~ msgstr "prawy górny róg ekranu" #~ msgid "bottom left" #~ msgstr "lewy dolny róg ekranu" #~ msgid "bottom right" #~ msgstr "prawy dolny róg ekranu" #~ msgid "You have new mail." #~ msgstr "Masz wiadomość!" #~ msgid "Unsupported Mailboxes" #~ msgstr "Nieskonfigurowane skrzynki pocztowe" #~ msgid "unable to parse proxy URI \"%s\"" #~ msgstr "niezdolny zrobić rozbiór pośredniczego URI \"%s\"" #~ msgid "Select _All" #~ msgstr "Wybierz _Wszystkie" #~ msgid "_Mail Summary" #~ msgstr "_Streszczenie poczty" #~ msgid "System Mailbox" #~ msgstr "Lokalna skrzynka" #~ msgid "Your system mailbox (%s) will be used." #~ msgstr "" #~ "Skrzynka pocztowa twojego systemu (%s) " #~ "zostanie użyta." #~ msgid "The reason why the mailbox is unsupported" #~ msgstr "Powód z powodu którego skrzynka pocztowa nie jest popierana" #~ msgid "unsupported" #~ msgstr "nieobsługiwany" #~ msgid "error loading image: %s" #~ msgstr "błąd w ładowaniu obrazka: %s" #~ msgid "widget \"%s\" not found in interface \"%s\"" #~ msgstr "element \"%s\" nie mógł byc znaleziony w interfejsie \"%s\"" #~ msgid "received an invalid Mozilla URL" #~ msgstr "otrzymano nieważny Mozillowy URL" #~ msgid "_Do not show this message again" #~ msgstr "_Nie pokazuj tej wiadomości ponownie" #~ msgid "unable to get current time: %s" #~ msgstr "niezdolny otrzymać aktualny czas: %s" #~ msgid "*" #~ msgstr "*" #~ msgid "_Authenticate" #~ msgstr "_Potwierdź tożsamości" #~ msgid "_Mailbox type:" #~ msgstr "_Typ połączenia:" #~ msgid " " #~ msgstr " " #~ msgid "Commands" #~ msgstr "Polecenia" #~ msgid "Double-click Action" #~ msgstr "Podwójne kliknięcie" #~ msgid "Fonts" #~ msgstr "Czcionki" #~ msgid "Dis_play mail summary in tooltip" #~ msgstr "_Wyświetlanie streszczenia poczty na obszarze powiadamiania" #~ msgid "Hori_zontal offset:" #~ msgstr "Poziome przesunięcie:" #~ msgid "Mail Summary Popup" #~ msgstr "Streszczenie poczty" #~ msgid "Mailboxes" #~ msgstr "Skrzynki pocztowe" #~ msgid "Only display _recent mail" #~ msgstr "Wyświetlanie tylko nieprzeczytanych listów" #~ msgid "P_osition:" #~ msgstr "P_ozycja:" #~ msgid "The amount of time to wait before closing the mail summary popup" #~ msgstr "" #~ "Ilość czasu do czekania przed zamknięciem wyskakującego okienka " #~ "streszczenia poczty" #~ msgid "The amount of time to wait between mail checks" #~ msgstr "Ilość czasu pomiędzy sprawdzaniem poczty" #~ msgid "The command to run to launch the mail reader" #~ msgstr "Rozkaz do wydania który uruchamia czytnika poczty." #~ msgid "The command to run when all mail is read" #~ msgstr "Rozkaz do wykonania po przeczytaniu całej poczty" #~ msgid "The command to run when new mail arrives" #~ msgstr "Rozkaz do wykonania po nadejściu nowej poczty" #~ msgid "" #~ "The number of pixels to leave between the left or right side of the " #~ "screen and the mail summary popup" #~ msgstr "" #~ "Ilość pikselów do pozostawienia pomiędzy lewą lub prawą stroną ekranu i " #~ "wyskakującym okienkiem streszczenia poczty." #~ msgid "" #~ "The number of pixels to leave between the top or bottom side of the " #~ "screen and the mail summary popup" #~ msgstr "" #~ "Ilość pikselów do pozostawienia pomiędzy górną lub dolną stroną ekranu i " #~ "wyskakującym okienkiem streszczenia poczty." #~ msgid "When _all mail is read:" #~ msgstr "Po przeczytaniu całej poczty:" #~ msgid "When _new mail arrives:" #~ msgstr "Po nadejściu nowej poczty:" #~ msgid "Whether the status icon should blink on errors or not" #~ msgstr "Migaj przy wystąpieniu błędów" #~ msgid "Whether to automatically close the mail summary popup or not" #~ msgstr "Zamknij automatycznie streszczenie poczty po upływie zadanego czasu" #~ msgid "" #~ "Whether to display the mail summary in the status icon tooltip or not" #~ msgstr "Wyświetl streszczenie poczty w obszarze powiadamiania" #~ msgid "" #~ "Whether to display the mail summary popup when new mail arrives or not" #~ msgstr "Wyświetl streszczenie poczty po nadejściu nowych wiadomości" #~ msgid "Whether to hide previously displayed mail or not" #~ msgstr "Ukrywaj przeczytane listy" #~ msgid "Whether to run a command when all mail is read or not" #~ msgstr "Uruchom polecenie, gdy cała poczta zostanie przeczytana" #~ msgid "Whether to run a command when new mail arrives or not" #~ msgstr "Uruchom polecenie, gdy nadejdzie nowa poczta" #~ msgid "Whether to set a mail reader or not" #~ msgstr "Ustaw czytnik poczty" #~ msgid "" #~ "Whether to start Mail Notification when you log into your GNOME session " #~ "or not" #~ msgstr "" #~ "Uruchom zawiadomienie pocztowe w trakcie startu środowiska graficznego" #~ msgid "" #~ "Whether to use a custom font for the contents of the mail summary popup " #~ "or not" #~ msgstr "Ustaw czcionkę dla tytułu streszczenia poczty" #~ msgid "" #~ "Whether to use a custom font for the title of the mail summary popup or " #~ "not" #~ msgstr "" #~ "Czy użyć niestandardową czcionkę do tytułu wyskakującego okienka " #~ "streszczenia poczty czy nie" #~ msgid "_Automatically close after:" #~ msgstr "_Automatyczne zamknięcie okienka po:" #~ msgid "_Blink on errors" #~ msgstr "_Miganie przy błędach" #~ msgid "_Contents font:" #~ msgstr "_Wybór czcionki treści:" #~ msgid "_Display the mail summary dialog" #~ msgstr "_Wyświetl streszczenie poczty" #~ msgid "_Enable mail summary popup" #~ msgstr "_Streszczenie poczty" #~ msgid "_Mail reader:" #~ msgstr "C_zytnik poczty:" #~ msgid "_Start Mail Notification on GNOME login" #~ msgstr "_Uruchomienie zawiadomienia pocztowego podczas logowania" #~ msgid "_Title font:" #~ msgstr "_Wybór czcionki tytułu:" #~ msgid "_Vertical offset:" #~ msgstr "_Pionowę przesunięcie" #~ msgid "pixels" #~ msgstr "piksele" #~ msgid "Mail Summary" #~ msgstr "Zawiadomienie pocztowe" #~ msgid "" #~ "First startup\n" #~ "\n" #~ "Mail Notification has been loaded successfully.\n" #~ "\n" #~ "Since this is the first time you run Mail Notification, you might want to " #~ "configure it.\n" #~ "\n" #~ "Note: this message will not be shown anymore. To configure Mail " #~ "Notification again, choose Applications → " #~ "Desktop PreferencesMail Notification (or on some systems Applications → Preferences → More Preferences → Mail Notification)." #~ msgstr "" #~ "Premier démarrage\n" #~ "\n" #~ "Zawiadomienie pocztowe było pomyślnie załadowane.\n" #~ "\n" #~ "Ponieważ uruchamiasz Zawiadomienia Pocztowego poraz pierwszy raz, może " #~ "byś chciał je skonfigurować.\n" #~ "\n" #~ "Uwaga: ta wiadomość nie będzie więcej pokazywana. Jeśli byś ponownie " #~ "chciał skonfigurować Zawiadomienie pocztowe, wybierz AplikacjePreferencje Desktopowe " #~ "→ Zawiadomienie pocztowe (lub na pewnych " #~ "systemach AplikacjePreferencjeWięcej Preferencji → " #~ "Zawiadomienie pocztowe)." #~ msgid "_Configure Mail Notification" #~ msgstr "_Konfiguracja Zawiadomienia pocztowego" #~ msgid "When all mail has _been read:" #~ msgstr "Kiedy wszystkie wiadomości zostały przeczytane:" #~ msgid "Tooltip Mail Summary" #~ msgstr "Podsumowanie wiadomości" #~ msgid "icon tooltip's mail summary layout|_Standard" #~ msgstr "_Standardowe" #~ msgid "icon tooltip's mail summary layout|Co_mpact" #~ msgstr "Ko_mpaktowe" #~ msgid "_Display this dialog" #~ msgstr "Pokaż to okno _dialogowe" #~ msgid "_Never" #~ msgstr "_Nigdy" #~ msgid "Us_e Default" #~ msgstr "_Domyślnie" #~ msgid "Location" #~ msgstr "Lokalizacja" #~ msgid "about" #~ msgstr "około" #~ msgid "ago" #~ msgstr "temu" mail-notification-5.4.dfsg.1/po/POTFILES.skip0000644000175000001440000000342510722101155020404 0ustar evilynuxusersdata/GNOME_MailNotification.server.in data/GNOME_MailNotification_Evolution.server.in data/mail-notification.schemas.in src/GNOME_MailNotification-common.c src/GNOME_MailNotification-skels.c src/GNOME_MailNotification-stubs.c src/GNOME_MailNotification_Evolution-common.c src/GNOME_MailNotification_Evolution-skels.c src/GNOME_MailNotification_Evolution-stubs.c src/mn-about-dialog.c src/mn-auth-combo-box.c src/mn-authenticated-mailbox-properties.c src/mn-authenticated-mailbox.c src/mn-autodetect-mailbox-properties.c src/mn-automation.c src/mn-base-mbox-mailbox-backend.c src/mn-compact-message-view.c src/mn-custom-vfs-mailbox.c src/mn-dialog.c src/mn-evolution-folder-tree-control.c src/mn-evolution-glue.c src/mn-evolution-mailbox-properties.c src/mn-evolution-mailbox.c src/mn-file-chooser-button.c src/mn-gmail-mailbox-properties.c src/mn-gmail-mailbox.c src/mn-gmime-stream-vfs.c src/mn-hotmail-mailbox.c src/mn-imap-mailbox-properties.c src/mn-imap-mailbox.c src/mn-mail-icon.c src/mn-mailbox-properties-dialog.c src/mn-mailbox-view.c src/mn-mailbox.c src/mn-mailboxes.c src/mn-maildir-mailbox-backend.c src/mn-maildir-message.c src/mn-mbox-mailbox-backend.c src/mn-message.c src/mn-mh-mailbox-backend.c src/mn-pi-mailbox-properties.c src/mn-pi-mailbox.c src/mn-pop3-mailbox-properties.c src/mn-pop3-mailbox.c src/mn-popup.c src/mn-properties-dialog.c src/mn-reentrant-mailbox.c src/mn-shell.c src/mn-sound-file-chooser-dialog.c src/mn-sound-player.c src/mn-standard-message-view.c src/mn-sylpheed-mailbox-backend.c src/mn-sylpheed-message.c src/mn-system-vfs-mailbox-properties.c src/mn-system-vfs-mailbox.c src/mn-test-mailbox.c src/mn-text-table.c src/mn-tooltips.c src/mn-vfs-mailbox-backend.c src/mn-vfs-mailbox.c src/mn-webmail-mailbox-properties.c src/mn-webmail-mailbox.c src/mn-yahoo-mailbox.c mail-notification-5.4.dfsg.1/po/ca.po0000644000175000001440000014141710737451054017232 0ustar evilynuxusers# Catalan translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # , 2006. # msgid "" msgstr "" "Project-Id-Version: mail-notification 3.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-07-12 17:00+0200\n" "PO-Revision-Date: 2006-11-21 17:34+0100\n" "Last-Translator: topi \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n!=1;\n" #: ../data/GNOME_MailNotification.server.in.in.h:1 msgid "Mail Notification automation" msgstr "Automatitzaci de l'avisador de correu" #: ../data/GNOME_MailNotification.server.in.in.h:2 msgid "Mail Notification automation factory" msgstr "Construcci de l'automatitzaci de l'avisador de correu" #: ../data/GNOME_MailNotification_Evolution.server.in.h:1 msgid "Evolution folder tree control" msgstr "Control de l'arbre de carpetes de l'Evolution" #: ../data/GNOME_MailNotification_Evolution.server.in.h:2 msgid "Evolution folder tree control factory" msgstr "Construcci del control de l'arbre de carpetes de l'Evolution" #: ../data/GNOME_MailNotification_Evolution.server.in.h:3 msgid "Mail Notification / Evolution glue" msgstr "Avisador de correu / Enganxador amb l'Evolution" #: ../data/GNOME_MailNotification_Evolution.server.in.h:4 msgid "Mail Notification / Evolution glue factory" msgstr "Avisador de correu / Construcci de l'enganxador amb l'Evolution" #: ../data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "Configura l'avisador de correu" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 #: ../src/mn-mail-icon.gob:227 #: ../src/mn-main.c:132 #: ../src/mn-main.c:302 #: ../src/mn-main.c:318 msgid "Mail Notification" msgstr "Avisador de correu" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Avisa'm en arribar correu nou" #: ../data/mail-notification.schemas.in.h:1 msgid "Always display an icon" msgstr "Mostra sempre una icona" #: ../data/mail-notification.schemas.in.h:2 msgid "Automatically close the mail summary popup" msgstr "Tanca automticament el resum emergent de correu" #: ../data/mail-notification.schemas.in.h:3 msgid "Blink on errors" msgstr "Parpelleja si hi ha errors" #: ../data/mail-notification.schemas.in.h:4 msgid "Click action" msgstr "Acci en fer clic" #: ../data/mail-notification.schemas.in.h:5 msgid "Display seen mail" msgstr "Mostra els missatges vistos" #: ../data/mail-notification.schemas.in.h:6 msgid "Enable mail summary popup" msgstr "Habilita el resum emergent de correu" #: ../data/mail-notification.schemas.in.h:7 msgid "Fingerprints of trusted X509 certificates" msgstr "Empremtes digitals de certificats X509 confiables" #: ../data/mail-notification.schemas.in.h:8 msgid "Height of properties dialog" msgstr "Alada del dileg de propietats" #: ../data/mail-notification.schemas.in.h:9 msgid "Mail read command" msgstr "Comanda de correu llegit" #: ../data/mail-notification.schemas.in.h:10 msgid "Mail summary popup contents font" msgstr "Font del contingut del resum emergent de correu" #: ../data/mail-notification.schemas.in.h:11 msgid "Mail summary popup fonts aspect source" msgstr "Origen de l'aspecte de la font del resum emergent de correu" #: ../data/mail-notification.schemas.in.h:12 msgid "Mail summary popup horizontal offset" msgstr "Distncia horitzontal del resum emergent de correu" #: ../data/mail-notification.schemas.in.h:13 msgid "Mail summary popup position" msgstr "Posici del resum emergent de correu" #: ../data/mail-notification.schemas.in.h:14 msgid "Mail summary popup title font" msgstr "Font del ttol del resum emergent de correu" #: ../data/mail-notification.schemas.in.h:15 msgid "Mail summary popup vertical offset" msgstr "Distncia vertical del resum emergent de correu" #: ../data/mail-notification.schemas.in.h:16 msgid "Minutes to wait before closing the mail summary popup" msgstr "Minuts abans de tancar el resum emergent de correu" #: ../data/mail-notification.schemas.in.h:17 msgid "New mail command" msgstr "Comanda per a correu nou" #: ../data/mail-notification.schemas.in.h:18 msgid "Only display recent mail in mail summary popup" msgstr "Mostra noms els correus recents en el resum emergent de correu" #: ../data/mail-notification.schemas.in.h:19 msgid "Run a command when all mail is read" msgstr "Executa una comanda en no haver correu per llegir" #: ../data/mail-notification.schemas.in.h:20 msgid "Run a command when new mail arrives" msgstr "Executa una comanda en arribar correu nou" #: ../data/mail-notification.schemas.in.h:21 msgid "Seconds to wait before closing the mail summary popup" msgstr "Segons abans de tancar el resum emergent de correu" #: ../data/mail-notification.schemas.in.h:22 msgid "The action to perform when the icon is clicked. Must be \"display-properties-dialog\", \"launch-mail-reader\" or \"update-mail-status\"." msgstr "L'acci a portar a terme quan es fa clic a la icona. Ha de ser \"mostra-dileg-de-propietats\", \"executa-el-client-de-correu\" o \"actualitza-l'estat-del-correu\"." #: ../data/mail-notification.schemas.in.h:23 msgid "The amount of time to wait before closing the mail summary popup (minutes part)." msgstr "La quantitat de temps abans de tancar el resum emergent de correu (minuts)." #: ../data/mail-notification.schemas.in.h:24 msgid "The amount of time to wait before closing the mail summary popup (seconds part)." msgstr "La quantitat de temps abans de tancar el resum emergent de correu (segons)." #: ../data/mail-notification.schemas.in.h:25 msgid "The aspect source of the mail summary popup fonts. Must be \"theme\" or \"custom\"." msgstr "L'origen de les fonts del resum emergent de correu. Ha de ser \"theme\" o \"custom\"." #: ../data/mail-notification.schemas.in.h:26 msgid "The command to run when all mail is read." msgstr "La comanda a executar en no haver correu per llegir." #: ../data/mail-notification.schemas.in.h:27 msgid "The command to run when new mail arrives." msgstr "La comanda a executar en arribar correu nou." #: ../data/mail-notification.schemas.in.h:28 msgid "The custom font to use for the contents of the mail summary popup." msgstr "La font a usar per al contingut del resum emergent de correu." #: ../data/mail-notification.schemas.in.h:29 msgid "The custom font to use for the title of the mail summary popup." msgstr "La font a usar per al ttol del resum emergent de correu." #: ../data/mail-notification.schemas.in.h:30 msgid "The height of the properties dialog in pixels." msgstr "L'alada del dileg de propietats en pxels." #: ../data/mail-notification.schemas.in.h:31 msgid "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 certificate." msgstr "Llista de servidors confiables SSL/TLS (servidor:port) sense certificat X509." #: ../data/mail-notification.schemas.in.h:32 msgid "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "Llista de certificats X509 confiables, representats per les empremtes digitals MD5." #: ../data/mail-notification.schemas.in.h:33 msgid "The number of pixels to leave between the left or right side of the screen and the mail summary popup." msgstr "El nombre de pxels entre els costats esquerre i dret de la pantalla i el resum emergent de correu." #: ../data/mail-notification.schemas.in.h:34 msgid "The number of pixels to leave between the top or bottom side of the screen and the mail summary popup." msgstr "El nombre de pxels entre els costats superior i inferior de la pantalla i el resum emergent de correu." #: ../data/mail-notification.schemas.in.h:35 msgid "The position of the mail summary popup. Must be \"top-left\", \"top-right\", \"bottom-left\" or \"bottom-right\"." msgstr "Posici del resum emergent de correu. Ha de ser \"superior-esquerra\", \"superior-dreta\", \"inferior-esquerra\" o \"inferior-dreta\"." #: ../data/mail-notification.schemas.in.h:36 msgid "The type of mail summary to display in the icon's tooltip. Must be \"standard\", \"compact\" or \"none\"." msgstr "El tipus de resum de correu que es mostrar com a consell de la icona. Ha de ser \"estndard\", \"compacte\" o \"cap\"." #: ../data/mail-notification.schemas.in.h:37 msgid "The width of the properties dialog in pixels." msgstr "L'amplada del dileg de propietats en pxels." #: ../data/mail-notification.schemas.in.h:38 msgid "Tooltip mail summary" msgstr "Resum de correu" #: ../data/mail-notification.schemas.in.h:39 msgid "Trusted servers list" msgstr "Llista de servidors confiables" #: ../data/mail-notification.schemas.in.h:40 msgid "Whether the status icon should blink on errors or not." msgstr "Si la icona d'estat ha de parpellejar quan hi ha errors." #: ../data/mail-notification.schemas.in.h:41 msgid "Whether to automatically close the mail summary popup or not." msgstr "Si s'ha de tancar automticament el resum emergent de correu." #: ../data/mail-notification.schemas.in.h:42 msgid "Whether to display an icon when there is no new mail or not." msgstr "Si s'ha de mostrar una icona quan no hi ha correu nou." #: ../data/mail-notification.schemas.in.h:43 msgid "Whether to display seen mail or not." msgstr "Si s'ha de mostrar el correu vist." #: ../data/mail-notification.schemas.in.h:44 msgid "Whether to display the mail summary popup when new mail arrives or not." msgstr "Si s'ha de mostrar el resum emergent de correu en arribar correu nou." #: ../data/mail-notification.schemas.in.h:45 msgid "Whether to hide previously displayed mail in the mail summary popup or not." msgstr "Si s'han d'amagar els correus mostrats anteriorment al resum emergent de correu." #: ../data/mail-notification.schemas.in.h:46 msgid "Whether to run a command when all mail is read or not." msgstr "Si s'ha d'executar una comanda en no haver correu per llegir." #: ../data/mail-notification.schemas.in.h:47 msgid "Whether to run a command when new mail arrives or not." msgstr "Si s'ha d'executar una comanda en arribar correu nou." #: ../data/mail-notification.schemas.in.h:48 msgid "Width of properties dialog" msgstr "Amplada del dileg de propietats" #: ../src/eggtrayicon.c:132 msgid "Orientation" msgstr "Orientaci" #: ../src/eggtrayicon.c:133 msgid "The orientation of the tray." msgstr "L'orientaci de la safata." #. translators: header capitalization #: ../src/mn-about-dialog.gob:49 msgid "A Mail Notification Icon" msgstr "Icona de l'avisador de correu" #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:57 msgid "translator-credits" msgstr "topi " #: ../src/mn-about-dialog.gob:79 msgid "Unable to open link" msgstr "No s'ha pogut obrir l'enlla" #: ../src/mn-auth-combo-box.gob:103 #: ../src/mn-autodetect-mailbox-properties.gob:109 msgid "autodetect" msgstr "autodetectar" #: ../src/mn-authenticated-mailbox-properties.gob:46 msgid "_Username:" msgstr "_Nom d'usuari:" #: ../src/mn-authenticated-mailbox-properties.gob:50 msgid "_Password:" msgstr "_Contrasenya:" #: ../src/mn-autodetect-mailbox-properties.gob:110 msgid "Location" msgstr "Ubicaci" #: ../src/mn-autodetect-mailbox-properties.gob:122 msgid "_Location:" msgstr "U_bicaci:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:130 msgid "_Browse..." msgstr "_Navega..." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:172 msgid "Select a File or Folder" msgstr "Selecciona un Fitxer o Directori" #: ../src/mn-client-session.c:247 #, c-format msgid "resolving %s" msgstr "resolent %s" #: ../src/mn-client-session.c:263 #, c-format msgid "unable to resolve %s: %s" msgstr "no s'ha pogut resoldre %s: %s" #: ../src/mn-client-session.c:304 #, c-format msgid "network address #%i" msgstr "adrea de xarxa #%i" #: ../src/mn-client-session.c:307 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "no s'ha pogut convertir l'adrea de xarxa #%i a format textual: %s" #: ../src/mn-client-session.c:318 #, c-format msgid "%s: unsupported address family" msgstr "%s: famlia d'adreces no suportada" #: ../src/mn-client-session.c:325 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: no s'ha pogut crear el scol: %s" #: ../src/mn-client-session.c:329 #, c-format msgid "connecting to %s (%s) port %i" msgstr "connectant a %s (%s) port %i" #: ../src/mn-client-session.c:332 #, c-format msgid "unable to connect: %s" msgstr "no s'ha pogut connectar: %s" #: ../src/mn-client-session.c:337 msgid "connected successfully" msgstr "connectat amb xit" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:351 #, c-format msgid "unable to connect to %s" msgstr "no s'ha pogut connectar a %s" #: ../src/mn-client-session.c:378 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "no s'ha pogut inicialitzar la llibreria OpenSSL: %s" #: ../src/mn-client-session.c:386 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "no s'ha pogut crear un objecte SSL/TLS: %s" #: ../src/mn-client-session.c:392 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "no s'ha pogut ajustar el descriptor de fitxer SSL/TLS: %s" #: ../src/mn-client-session.c:398 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "no s'ha pogut realitzar la negociaci SSL/TLS: %s" #: ../src/mn-client-session.c:404 msgid "untrusted server" msgstr "servidor no confiable" #: ../src/mn-client-session.c:408 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "no hi ha cap capa SSL/TLS activa (%s, %s %i-bit)" #: ../src/mn-client-session.c:455 #, c-format msgid "%s, fingerprint: %s" msgstr "%s, empremta digitals: %s" #: ../src/mn-client-session.c:484 msgid "missing certificate" msgstr "manca el certificat" #: ../src/mn-client-session.c:510 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that someone is intercepting your communication to obtain your confidential information.\n" "\n" "You should only connect to the server if you are certain you are connected to \"%s\". If you choose to connect to the server, this message will not be shown again." msgstr "" "L'avisador de correu no ha pogut establir la confiana per a \"%s\" (%s). s possible que alg estigui interceptant la comunicaci per obtenir informaci confidencial.\n" "\n" "Noms haureu de connectar al servidor si esteu segurs d'estar connectant a \"%s\". Si trieu connectar al servidor, no es tornar a mostrar-aquest missatge." #: ../src/mn-client-session.c:525 msgid "Connect to untrusted server?" msgstr "Voleu connectar al servidor no confiable?" #: ../src/mn-client-session.c:590 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "la resposta \"%s\" no s vlida en el context actual" #: ../src/mn-client-session.c:619 #, c-format msgid "unable to parse response \"%s\"" msgstr "no s'ha pogut analitzar la resposta: \"%s\"" #: ../src/mn-client-session.c:669 #: ../src/mn-client-session.c:676 #, c-format msgid "unable to read from server: %s" msgstr "no s'ha pogut llegir des del servidor: %s" #: ../src/mn-client-session.c:674 msgid "unable to read from server: EOF" msgstr "no s'ha pogut llegir des del servidor: EOF" #: ../src/mn-client-session.c:686 #, c-format msgid "unable to decode data using SASL: %s" msgstr "no s'ha pogut descodificar les dades usant SASL: %s" #: ../src/mn-client-session.c:831 #, c-format msgid "unable to encode data using SASL: %s" msgstr "no s'ha pogut codificar les dades usant SASL: %s" #: ../src/mn-client-session.c:862 #: ../src/mn-client-session.c:869 #, c-format msgid "unable to write to server: %s" msgstr "no s'ha pogut escriure cap al servidor: %s" #: ../src/mn-client-session.c:867 msgid "unable to write to server: EOF" msgstr "no s'ha pogut escriure cap al servidor: EOF" #: ../src/mn-client-session.c:898 #: ../src/mn-pop3-mailbox.gob:433 #, c-format msgid "unable to encode Base64: %s" msgstr "no s'ha pogut descodificar en Base64: %s" #: ../src/mn-client-session.c:1075 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "no s'ha pogut inicialitzar la llibreria SASL: %s" #: ../src/mn-client-session.c:1087 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "no s'ha pogut recuperar l'adrea local del scol: %s" #: ../src/mn-client-session.c:1093 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "no s'ha pogut recuperar l'adrea remota del scol: %s" #: ../src/mn-client-session.c:1127 #, c-format msgid "unable to set SASL security properties: %s" msgstr "no s'han pogut ajustar les propietats de seguretat SASL: %s" #: ../src/mn-client-session.c:1151 msgid "unable to start SASL authentication: SASL asked for something we did not know" msgstr "no s'ha pogut iniciar l'autenticaci SASL: SASL ha preguntat alguna cosa que no sabem" #: ../src/mn-client-session.c:1170 #, c-format msgid "unable to start SASL authentication: %s" msgstr "no s'ha pogut iniciar l'autenticaci SASL: %s" #: ../src/mn-client-session.c:1174 #, c-format msgid "unable to create a SASL connection: %s" msgstr "no s'ha pogut crear una connexi SASL: %s" #: ../src/mn-client-session.c:1221 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "SASL ha preguntat alguna cosa que no sabem, avortant l'autenticaci SASL" #: ../src/mn-client-session.c:1238 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, avortant l'autenticaci SASL" #. compliance error #: ../src/mn-client-session.c:1243 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "no s'ha pogut descodificar en Base64 l'entrada del servidor: %s" #: ../src/mn-client-session.c:1279 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "s'ha activat una capa de seguretat SASL de factor de fora %i" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1284 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "no s'ha pogut llegir la propietat SASL_MAXOUTBUF: %s" #: ../src/mn-client-session.c:1290 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "avs: no s'ha pogut llegir la propietat SASL_SSF: %s" #: ../src/mn-client-session.c:1449 msgid "unknown server error" msgstr "error desconegut del servidor" #: ../src/mn-compact-message-view.gob:45 msgid "Mailbox" msgstr "Bstia" #: ../src/mn-compact-message-view.gob:46 msgid "From" msgstr "De" #: ../src/mn-compact-message-view.gob:47 msgid "Subject" msgstr "Assumpte" #: ../src/mn-compact-message-view.gob:48 msgid "Sent" msgstr "Enviat" #: ../src/mn-conf.c:262 msgid "A directory creation error has occurred" msgstr "S'ha produt un error creant un directori" #: ../src/mn-conf.c:263 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "No s'ha pogut crear el directori \"%s\": %s." #: ../src/mn-conf.c:402 #, c-format msgid "recursively unsetting %s" msgstr "desajustant recursivament %s" #: ../src/mn-conf.c:406 msgid "syncing the GConf database" msgstr "sincronitzant amb la base de dades de GConf" #: ../src/mn-conf.c:409 msgid "completed" msgstr "completat" #: ../src/mn-conf.c:1137 msgid "A command error has occurred in Mail Notification" msgstr "S'ha produt un error en el avisador de correu" #: ../src/mn-conf.c:1138 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "No s'ha pogut executar \"%s\": %s." #: ../src/mn-custom-vfs-mailbox.gob:76 msgid "invalid location" msgstr "ubicaci no vlida" #: ../src/mn-evolution-folder-tree-control.c:91 msgid "The currently selected URI" msgstr "L'URI seleccionat actualment" #. translators: header capitalization #: ../src/mn-evolution-mailbox-properties.gob:68 msgid "Folder" msgstr "Carpeta" #: ../src/mn-evolution-mailbox-properties.gob:159 msgid "Mail Notification can not contact Evolution. Make sure that Evolution is running and that the Evolution Mail Notification plugin is loaded." msgstr "L'avisador de correu no pot contactar amb l'Evolution. Comproveu que l'Evolution s'est executant i que est carregat el connector de l'avisador de correu." #: ../src/mn-evolution-mailbox.gob:75 msgid "folder not found" msgstr "no s'ha trobat la carpeta" #: ../src/mn-evolution-mailbox.gob:212 msgid "unable to contact Evolution" msgstr "no s'ha pogut contactar amb l'Evolution" #: ../src/mn-evolution-plugin.c:136 #: ../src/mn-evolution-plugin.c:140 msgid "Unable to activate the Mail Notification plugin" msgstr "No s'ha pogut activar el connector de l'avisador de correu" #: ../src/mn-evolution-plugin.c:136 #, c-format msgid "Bonobo could not locate the %s server. Please check your Mail Notification installation." msgstr "Bonobo no ha pogut trobar el servidor %s. Comproveu la installaci de l'avisador de correu." #: ../src/mn-evolution-plugin.c:140 #: ../src/mn-main.c:460 #, c-format msgid "Bonobo was unable to register the %s server. Please check your Mail Notification installation." msgstr "Bonobo no ha pogut registrar el servidor %s. Comproveu la installaci de l'avisador de correu." #: ../src/mn-gmail-mailbox.gob:103 msgid "invalid feed location" msgstr "la ubicaci de l'alimentaci no s vlida" #: ../src/mn-gmail-mailbox.gob:117 #, c-format msgid "retrieving feed from %s" msgstr "recuperant l'alimentaci des de %s" #: ../src/mn-gmail-mailbox.gob:124 #, c-format msgid "unable to retrieve feed: %s" msgstr "no s'ha pogut recuperar l'alimentaci: %s" #: ../src/mn-gmail-mailbox.gob:139 #: ../src/mn-gmail-mailbox.gob:187 msgid "unable to parse feed" msgstr "no s'ha pogut analitzar l'alimentaci" #: ../src/mn-gmime-stream-vfs.gob:50 #: ../src/mn-sylpheed-mailbox-backend.gob:205 #, c-format msgid "unable to read %s: %s" msgstr "no s'ha pogut llegir %s: %s" #: ../src/mn-gmime-stream-vfs.gob:52 #, c-format msgid "unable to write to %s: %s" msgstr "no s'ha pogut escriure en %s: %s" #: ../src/mn-gmime-stream-vfs.gob:54 #, c-format msgid "unable to seek in %s: %s" msgstr "no s'ha pogut cercar en %s: %s" #: ../src/mn-gmime-stream-vfs.gob:56 #, c-format msgid "unable to tell position of %s: %s" msgstr "no s'ha pogut fixar la posici de %s: %s" #: ../src/mn-gmime-stream-vfs.gob:58 #: ../src/mn-mh-mailbox-backend.gob:164 #, c-format msgid "unable to close %s: %s" msgstr "no s'ha pogut tancar %s: %s" #: ../src/mn-imap-mailbox-properties.gob:114 #: ../src/mn-standard-message-view.gob:62 msgid "Mailbox:" msgstr "Bstia:" #: ../src/mn-imap-mailbox-properties.gob:118 msgid "in_box" msgstr "d'ent_rada" #: ../src/mn-imap-mailbox-properties.gob:129 msgid "oth_er:" msgstr "_una altra:" #: ../src/mn-imap-mailbox-properties.gob:140 msgid "ne_ver" msgstr "_mai" #: ../src/mn-imap-mailbox-properties.gob:141 msgid "au_todetect" msgstr "_autodetecta" #: ../src/mn-imap-mailbox-properties.gob:142 msgid "al_ways" msgstr "sem_pre" #: ../src/mn-imap-mailbox-properties.gob:174 msgid "Use the IDLE extension:" msgstr "Usa l'extensi IDLE:" #: ../src/mn-imap-mailbox.gob:384 msgid "server did not send capabilities" msgstr "el servidor no ha enviat les capacitats" #: ../src/mn-imap-mailbox.gob:551 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "el servidor ha avisat LOGINDISABLED, no s'usar l'autenticaci LOGIN" #: ../src/mn-imap-mailbox.gob:552 msgid "unable to login" msgstr "no s'ha pogut entrar" #. compliance error #: ../src/mn-imap-mailbox.gob:752 msgid "server did not send all the messages we requested" msgstr "el servidor no ha enviat tots els missatges que hem sollicitat" #: ../src/mn-imap-mailbox.gob:822 msgid "unable to fetch message" msgstr "no s'ha pogut recuperar el missatge" #: ../src/mn-imap-mailbox.gob:847 msgid "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, logging out" msgstr "\"Usa l'extensi IDLE\" ha de ser \"mai\" a les propietats de la bstia, sortint" #: ../src/mn-imap-mailbox.gob:858 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "el servidor remot executa %s, no s'usar l'extensi IDLE" #: ../src/mn-imap-mailbox.gob:863 #, c-format msgid "the remote server runs %s, the IDLE extension might not function properly" msgstr "el servidor remot executa %s, s possible que l'extensi IDLE no funcioni correctament" #: ../src/mn-imap-mailbox.gob:872 msgid "the remote server does not support the IDLE extension, logging out" msgstr "el servidor remot no suporta l'extensi IDLE, sortint" #: ../src/mn-imap-mailbox.gob:1377 #: ../src/mn-pop3-mailbox.gob:296 msgid "server does not support in-band SSL/TLS" msgstr "el servidor no suporta SSL/TLS en banda" #: ../src/mn-imap-mailbox.gob:1401 #: ../src/mn-pop3-mailbox.gob:947 msgid "a SASL authentication mechanism was selected but SASL support has not been compiled in" msgstr "s'ha seleccionat un mecanisme d'autenticaci SASL, per el suport de SASL no est disponible" #: ../src/mn-imap-mailbox.gob:1411 #: ../src/mn-pop3-mailbox.gob:967 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "mecanisme d'autenticaci desconegut \"%s\"" #: ../src/mn-imap-mailbox.gob:1443 #: ../src/mn-pop3-mailbox.gob:1003 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "inhabilitant el mecanisme \"%s\" i tornant a provar amb l'autenticaci SASL" #: ../src/mn-imap-mailbox.gob:1455 msgid "falling back to IMAP LOGIN authentication" msgstr "passant a autenticaci amb IMAP LOGIN" #: ../src/mn-imap-mailbox.gob:1467 #: ../src/mn-pop3-mailbox.gob:1032 msgid "authentication failed" msgstr "l'autenticaci ha fallat" #. success; caller must switch state itself #. compliance error #: ../src/mn-imap-mailbox.gob:1528 msgid "server did not send search results" msgstr "el servidor no ha enviat els resultats de la cerca" #. translators: header capitalization #: ../src/mn-mail-icon.gob:89 msgid "_Mail Reader" msgstr "_Client de correu" #. translators: header capitalization #: ../src/mn-mail-icon.gob:91 #: ../src/mn-mailbox-view.gob:312 msgid "_Update" msgstr "_Actualitzar" #. translators: header capitalization #: ../src/mn-mail-icon.gob:98 msgid "R_emove From Notification Area" msgstr "_Suprimir de l'rea de notificaci" #. translators: header capitalization #: ../src/mn-mail-summary-popup.gob:270 msgid "Mail Summary" msgstr "Resum de Correu" #. translators: header capitalization #: ../src/mn-mail-summary-popup.gob:277 msgid "Mail Summary" msgstr "Resum de Correu" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:89 #, c-format msgid "%s Properties" msgstr "Propietats de %s" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:232 msgid "Add a Mailbox" msgstr "Afegeix una Bstia" #: ../src/mn-mailbox-view.gob:248 msgid "A paste error has occurred" msgstr "S'ha produt un error enganxant" #: ../src/mn-mailbox-view.gob:557 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "bstia %s no gestionada (%s)" #: ../src/mn-mailbox-view.gob:562 #, c-format msgid "%s mailbox" msgstr "bstia %s" #: ../src/mn-mailbox-view.gob:577 msgid "detecting mailbox type..." msgstr "detectant el tipus de bstia..." #: ../src/mn-mailbox.gob:472 msgid "\"type\" attribute missing" msgstr "manca l'atribut de \"tipus\"" #: ../src/mn-mailbox.gob:479 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "tipus de bstia \"%s\" desconegut" #: ../src/mn-mailbox.gob:499 #, c-format msgid "property \"%s\": unable to transform string \"%s\" into a value of type \"%s\"" msgstr "propietat \"%s\": no es pot transformar la cadena \"%s\" a un valor de tipus \"%s\"" #: ../src/mn-mailbox.gob:948 #, c-format msgid "property \"%s\" has no value" msgstr "la propietat \"%s\" no t valor" #: ../src/mn-mailboxes.gob:239 msgid "An error has occurred while importing old mailboxes" msgstr "S'ha produt un error important bsties antigues" #: ../src/mn-mailboxes.gob:265 msgid "Unable to load the mailboxes configuration" msgstr "No es pot carregar la configuraci de les bsties" #: ../src/mn-mailboxes.gob:311 msgid "Unable to parse the XML document." msgstr "No es pot analitzar el document XML." #: ../src/mn-mailboxes.gob:318 msgid "The root element is missing." msgstr "Manca l'element arrel." #: ../src/mn-mailboxes.gob:324 #, c-format msgid "The root element \"%s\" is invalid." msgstr "L'element arrel \"%s\" no s vlid." #: ../src/mn-mailboxes.gob:347 #, c-format msgid "On line %i: %s." msgstr "En lnia %i: %s." #: ../src/mn-mailboxes.gob:352 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "En lnia %i: element \"%s\" desconegut." #: ../src/mn-mailboxes.gob:361 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "S'ha produt un error carregant la configuraci de les bsties" msgstr[1] "S'han produt errors carregant la configuraci de les bsties" #: ../src/mn-mailboxes.gob:386 msgid "Unable to save the mailboxes configuration" msgstr "No es pot desar la configuraci de les bsties" #: ../src/mn-mailboxes.gob:428 #, c-format msgid "Unable to remove %s: %s." msgstr "No es pot suprimir %s: %s." #: ../src/mn-mailboxes.gob:436 #, c-format msgid "Unable to create %s: %s." msgstr "No es pot crear %s: %s." #: ../src/mn-mailboxes.gob:443 #, c-format msgid "Unable to open %s for writing: %s." msgstr "No es pot obrir %s per escriptura: %s." #: ../src/mn-mailboxes.gob:450 msgid "Unable to write the XML document." msgstr "No es pot escriure el document XML." #: ../src/mn-mailboxes.gob:456 #, c-format msgid "Unable to close %s: %s." msgstr "No es pot tancar %s: %s." #: ../src/mn-mailboxes.gob:466 #: ../src/mn-mailboxes.gob:473 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "No es pot canviar el nom de %s a %s: %s." #. non fatal #: ../src/mn-mailboxes.gob:479 #, c-format msgid "unable to delete %s: %s" msgstr "no es pot suprimir %s: %s" #: ../src/mn-mailboxes.gob:509 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "%s t %i missatge nou" msgstr[1] "%s t %i missatges nous" #: ../src/mn-mailboxes.gob:535 #, c-format msgid "%s reported an error: %s" msgstr "%s ha generat un error: %s" #: ../src/mn-maildir-mailbox-backend.gob:125 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "no es pot obrir la carpeta \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:173 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "no es pot tancar la carpeta \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:176 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "s'ha produt un error en llegir la carpeta \"%s\": %s" #: ../src/mn-main.c:100 msgid "yes" msgstr "s" #: ../src/mn-main.c:100 msgid "no" msgstr "no" #: ../src/mn-main.c:132 #, c-format msgid "%s version %s\n" msgstr "%s versi %s\n" #: ../src/mn-main.c:137 msgid "Mailbox backends:\n" msgstr "Rerefons de la bstia:\n" #: ../src/mn-main.c:142 msgid "POP3 and IMAP features:\n" msgstr "Caracterstiques de POP3 i IMAP:\n" #: ../src/mn-main.c:147 msgid "Sylpheed features:\n" msgstr "Caracterstiques de Sylpheed:\n" #: ../src/mn-main.c:198 #, c-format msgid "A Bonobo exception (%s) has occurred in %s()." msgstr "S'ha produt una excepci de Bonobo (%s) en %s()." #: ../src/mn-main.c:220 msgid "Show version information" msgstr "Mostra la informaci de la versi" #: ../src/mn-main.c:229 msgid "Enable informational output" msgstr "Habilita la sortida d'informaci" #: ../src/mn-main.c:238 msgid "Display the properties dialog" msgstr "Mostra el dileg de propietats" #: ../src/mn-main.c:247 msgid "Display the about dialog" msgstr "Mostra el dileg Quant a" #: ../src/mn-main.c:256 msgid "Close the mail summary popup" msgstr "Tanca el resum emergent de correu" #: ../src/mn-main.c:265 msgid "Update the mail status" msgstr "Actualitza l'estat del correu" #: ../src/mn-main.c:274 msgid "Unset obsolete GConf configuration" msgstr "Desajusta la configuraci obsoleta de GConf" #: ../src/mn-main.c:283 msgid "Quit Mail Notification" msgstr "Sortir de l'avisador de correu" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: ../src/mn-main.c:310 msgid "multi-threading is not available" msgstr "no est disponible el muti-threading" #: ../src/mn-main.c:365 msgid "Bonobo could not locate the automation object. Please check your Mail Notification installation." msgstr "Bonobo no pot trobar l'objecte d'automatitzaci. Comproveu la installaci de l'avisador de correu." #: ../src/mn-main.c:371 msgid "quitting Mail Notification" msgstr "sortint de l'avisador de correu" #: ../src/mn-main.c:375 msgid "Mail Notification is not running" msgstr "L'avisador de correu no s'est executant" #: ../src/mn-main.c:390 msgid "Unable to initialize the GnomeVFS library." msgstr "No s'ha pogut inicialitzar la llibreria GnomeVFS." #: ../src/mn-main.c:438 msgid "updating the mail status" msgstr "actualitzant l'estat del correu" #: ../src/mn-main.c:446 msgid "Mail Notification is already running" msgstr "L'avisador de correu ja s'est executant" #: ../src/mn-main.c:456 #, c-format msgid "Bonobo could not locate the %s file. Please check your Mail Notification installation." msgstr "Bonobo no ha pogut trobar el fitxer %s. Comproveu la installaci de l'avisador de correu." #: ../src/mn-mbox-mailbox-backend.gob:281 #, c-format msgid "unable to close file: %s" msgstr "no s'ha pogut tancar el fitxer: %s" #: ../src/mn-mbox-mailbox-backend.gob:298 #, c-format msgid "unable to open mailbox: %s" msgstr "no s'ha pogut obrir la bstia: %s" #: ../src/mn-message-mime.c:121 msgid "unable to parse MIME message" msgstr "no s'ha pogut analitzar el missatge MIME" #: ../src/mn-message.gob:111 msgid "Unknown" msgstr "Desconegut" #. translators: "none" is used like "Mailbox: none" #: ../src/mn-message.gob:130 msgid "none" msgstr "cap" #: ../src/mn-mh-mailbox-backend.gob:167 #, c-format msgid "error while reading %s: %s" msgstr "s'ha produt un error en llegir %s: %s" #: ../src/mn-mh-mailbox-backend.gob:180 #, c-format msgid "unable to open %s: %s" msgstr "no s'ha pogut obrir %s: %s" #: ../src/mn-pi-mailbox-properties.gob:67 msgid "sta_ndard" msgstr "_estndard" #: ../src/mn-pi-mailbox-properties.gob:68 msgid "in-band SS_L/TLS" msgstr "SS_L/TLS en banda" #: ../src/mn-pi-mailbox-properties.gob:69 msgid "SSL/TLS on sepa_rate port" msgstr "SSL/TLS en un port _diferent" #: ../src/mn-pi-mailbox-properties.gob:73 msgid "Ho_stname:" msgstr "_Servidor:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:94 msgid "_Details" msgstr "_Detalls" #: ../src/mn-pi-mailbox-properties.gob:149 msgid "Connection type:" msgstr "Tipus de connexi:" #: ../src/mn-pi-mailbox-properties.gob:156 msgid "Port:" msgstr "Port:" #: ../src/mn-pi-mailbox-properties.gob:179 msgid "Authent_ication mechanism:" msgstr "Mecanisme d'_autenticaci:" #: ../src/mn-pi-mailbox.gob:151 msgid "SSL/TLS support has not been compiled in" msgstr "El suport de SSL/TLS no est disponible" #: ../src/mn-pi-mailbox.gob:317 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the credentials you have entered are invalid.\n" "\n" "Please re-enter your credentials." msgstr "" "L'avisador de correu no ha estat capa d'entrar a la bstia %s %s, possiblement perqu les credencials entrades no sn vlides.\n" "\n" "Torneu a introduir les credencials." #: ../src/mn-pi-mailbox.gob:318 #, c-format msgid "Enter your credentials for %s mailbox %s." msgstr "Introduu les credencials per a la bstia %s %s." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: ../src/mn-pi-mailbox.gob:361 msgid "Authentication Required" msgstr "Autenticaci Obligatria" #: ../src/mn-pop3-mailbox.gob:344 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "argument no vlids per a la capacitat LOGIN-DELAY" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:485 msgid "SASL authentication with initial client response failed, retrying without initial client response" msgstr "Als servidors amb autenticaci SASL que fallen la resposta inicial del client, reprova sense resposta inicial del client" #: ../src/mn-pop3-mailbox.gob:696 msgid "unknown error" msgstr "error desconegut" #: ../src/mn-pop3-mailbox.gob:791 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgstr "seguint LOGIN-DELAY, s'esperar durant %i segon" #: ../src/mn-pop3-mailbox.gob:959 msgid "server does not support APOP authentication" msgstr "el servidor no suporta autenticaci APOP" #: ../src/mn-pop3-mailbox.gob:1015 msgid "falling back to APOP authentication" msgstr "passant a autenticaci amb APOP" #: ../src/mn-pop3-mailbox.gob:1020 msgid "falling back to USER/PASS authentication" msgstr "passant a autenticaci amb USER/PASS" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:173 #: ../ui/properties-dialog.glade.h:23 msgid "Mail Notification Properties" msgstr "Propietats de l'avisador de correu" #: ../src/mn-properties-dialog.gob:207 msgid "top left" msgstr "superior esquerra" #: ../src/mn-properties-dialog.gob:208 msgid "top right" msgstr "superior dreta" #: ../src/mn-properties-dialog.gob:209 msgid "bottom left" msgstr "inferior esquerra" #: ../src/mn-properties-dialog.gob:210 msgid "bottom right" msgstr "inferior dreta" #: ../src/mn-properties-dialog.gob:332 msgid "No mailbox selected." msgstr "Cap bstia seleccionada." #: ../src/mn-properties-dialog.gob:337 #, c-format msgid "%i mailbox selected." msgstr "%i bsties seleccionades." #: ../src/mn-properties-dialog.gob:456 #, c-format msgid "Test message #%i" msgstr "Correu de prova #%i" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:462 msgid "Mail Notification Properties Dialog" msgstr "Dileg de Propietats de l'avisador de correu" #. translators: header capitalization #: ../src/mn-shell.gob:381 msgid "Mailboxes Having New Mail" msgstr "Bsties amb Correu Nou" #. translators: header capitalization #: ../src/mn-shell.gob:400 msgid "Errors" msgstr "Errors" #. translators: header capitalization #: ../src/mn-shell.gob:416 msgid "Mail Summary" msgstr "Resum de Correu" #: ../src/mn-shell.gob:445 msgid "You have no new mail." msgstr "No hi ha correu nou." #: ../src/mn-ssl.c:76 msgid "unknown SSL/TLS error" msgstr "s'ha produt un error SSL/TSL desconegut" #: ../src/mn-standard-message-view.gob:64 msgid "Unreadable message:" msgstr "Correu illegible:" #: ../src/mn-standard-message-view.gob:67 msgid "From:" msgstr "De:" #: ../src/mn-standard-message-view.gob:68 msgid "Subject:" msgstr "Assumpte:" #: ../src/mn-standard-message-view.gob:72 msgid "Sent:" msgstr "Enviat:" #. translators: header capitalization #: ../src/mn-stock.c:29 msgid "Select _All" msgstr "Selecciona _Tots" #. translators: header capitalization #. translators: header capitalization #: ../src/mn-stock.c:32 msgid "Co_nnect" msgstr "Co_nnecta" #: ../src/mn-sylpheed-mailbox-backend.gob:223 #, c-format msgid "unable to open folder: %s" msgstr "no s'ha pogut obrir la carpeta: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:276 #, c-format msgid "unable to close folder: %s" msgstr "no s'ha pogut tancar la carpeta: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:279 #, c-format msgid "error while reading folder: %s" msgstr "s'ha produt un error en llegir la carpeta: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:420 msgid "unexpected end of file" msgstr "final de fitxer inesperat" #: ../src/mn-sylpheed-mailbox-backend.gob:438 #, c-format msgid "incompatible file version \"%i\"" msgstr "versi del fitxer \"%i\" incompatible" #: ../src/mn-sylpheed-mailbox-backend.gob:441 msgid "file version missing" msgstr "manca la versi del fitxer" #: ../src/mn-system-vfs-mailbox-properties.gob:40 #: ../src/mn-system-vfs-mailbox-properties.gob:48 #: ../src/mn-system-vfs-mailbox.gob:45 msgid "System mailbox" msgstr "Bstia de sistema" #: ../src/mn-system-vfs-mailbox-properties.gob:70 #, c-format msgid "Your system mailbox is %s." msgstr "La bstia del sistema s %s." #: ../src/mn-system-vfs-mailbox-properties.gob:77 msgid "The location of your system mailbox could not be detected. Check the MAIL environment variable." msgstr "No s'ha pogut detectar la ubicaci de la bstia del sistema. Comproveu la variable d'entorn MAIL." #: ../src/mn-system-vfs-mailbox.gob:72 msgid "system mailbox not found" msgstr "no s'ha trobat la bstia del sistema" #: ../src/mn-util.c:349 #, c-format msgid "error loading image: %s" msgstr "s'ha produt un error carregant la imatge: %s" #: ../src/mn-util.c:365 #, c-format msgid "Unable to load interface \"%s\". Please check your Mail Notification installation." msgstr "No s'ha pogut carregat la interfcie \"%s\". Comproveu la installaci de l'avisador de correu." #: ../src/mn-util.c:380 #, c-format msgid "Widget \"%s\" not found in interface \"%s\". Please check your Mail Notification installation." msgstr "No s'ha torbat el giny \"%s\" a la interfcie \"%s\". Comproveu la installaci de l'avisador de correu." #: ../src/mn-util.c:449 #, c-format msgid "Unable to open self as a module (%s)." msgstr "No s'ha pogut obrir com a mdul (%s)." #: ../src/mn-util.c:454 #, c-format msgid "Signal handler \"%s\" not found. Please check your Mail Notification installation." msgstr "No s'ha trobat el gestor de senyals \"%s\". Comproveu la installaci de l'avisador de correu." #: ../src/mn-util.c:605 #: ../src/mn-util.c:628 #: ../src/mn-util.c:648 #: ../src/mn-util.c:670 msgid "A drag and drop error has occurred" msgstr "S'ha produt un error en arrossegar i deixar anar" #: ../src/mn-util.c:606 msgid "An invalid location list has been received." msgstr "S'ha rebut una llista d'ubicacions no vlida." #: ../src/mn-util.c:649 msgid "An invalid Mozilla location has been received." msgstr "S'ha rebut una ubicaci de Mozilla no vlida." #: ../src/mn-util.c:725 msgid "Unable to display help" msgstr "No es pot mostrar l'ajuda" #: ../src/mn-util.c:739 #, c-format msgid "Unable to create a thread: %s." msgstr "No es pot crear el fil: %s" #: ../src/mn-util.c:899 #, c-format msgid "" "The following location is invalid:\n" "\n" "%sThe following locations are invalid:\n" "\n" "%s" msgstr "" "La ubicaci segent no s vlida:\n" "\n" "%sLes ubicacions segents no sn vlides:\n" "\n" "%s" #: ../src/mn-util.c:919 msgid "A fatal error has occurred in Mail Notification" msgstr "S'ha produt un error fatal a l'avisador de correu" #: ../src/mn-util.c:958 #, c-format msgid "unable to get current time: %s" msgstr "no es pot recuperar l'hora actual: %s" #: ../src/mn-util.c:1250 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "fa %i segon" msgstr[1] "fa %i segons" #: ../src/mn-util.c:1254 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "fa %i minut" msgstr[1] "fa %i minuts" #: ../src/mn-util.c:1259 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "fa %i hora" msgstr[1] "fa %i hores" #: ../src/mn-util.c:1264 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "fa %i dia" msgstr[1] "fa %i dies" #: ../src/mn-util.c:1269 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "fa %i setmana" msgstr[1] "fa %i setmanes" #: ../src/mn-util.c:1282 msgid "unknown date" msgstr "data desconeguda" #: ../src/mn-vfs-mailbox.gob:221 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "no es pot monitoritzar %s (%s), s'ha activat el mode de sondeig" #: ../src/mn-vfs-mailbox.gob:385 msgid "unknown mailbox format" msgstr "format de bstia desconegut" #: ../src/mn-vfs-mailbox.gob:385 msgid "does not exist" msgstr "no existeix" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:2 #: ../ui/properties-dialog.glade.h:8 msgid "General" msgstr "General" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Delay between mail chec_ks:" msgstr "Inter_val entre comprovacions:" #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "Mailbox _name:" msgstr "Nom de la _bstia:" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:6 msgid "Use De_fault" msgstr "Usa el _Predeterminat" #: ../ui/mailbox-properties-dialog.glade.h:7 msgid "_Mailbox type:" msgstr "T_ipus de bstia:" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:9 msgid "_Use Default" msgstr "_Usa el Predeterminat" #: ../ui/mailbox-properties-dialog.glade.h:10 #: ../ui/properties-dialog.glade.h:48 msgid "minutes" msgstr "minuts" #: ../ui/mailbox-properties-dialog.glade.h:11 #: ../ui/properties-dialog.glade.h:52 msgid "seconds" msgstr "segons" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:2 msgid "Click Action" msgstr "Acci en Fer Clic" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:4 msgid "Commands" msgstr "Comandes" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:6 msgid "Fonts" msgstr "Fonts" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:10 msgid "Layout" msgstr "Disposici" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:12 msgid "Mailbox List" msgstr "Llista de Bsties" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:14 msgid "Position" msgstr "Posici" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:16 msgid "Tooltip Mail Summary" msgstr "Resum de correu" #: ../ui/properties-dialog.glade.h:17 msgid "Co_ntents:" msgstr "Co_ntinguts:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:19 msgid "General" msgstr "General" #: ../ui/properties-dialog.glade.h:20 msgid "Hide p_reviously displayed mail" msgstr "_Amaga el correus mostrats anteriorment" #: ../ui/properties-dialog.glade.h:21 msgid "Hori_zontal offset:" msgstr "Distncia _horitzontal:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:25 msgid "Mail Summary Popup" msgstr "Resum Emergent de Correu" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:27 msgid "Status Icon" msgstr "Icona d'Estat" #: ../ui/properties-dialog.glade.h:28 msgid "Use these _fonts:" msgstr "Usa les _fonts:" #: ../ui/properties-dialog.glade.h:29 msgid "When _new mail arrives:" msgstr "En arribar correu _nou:" #: ../ui/properties-dialog.glade.h:30 msgid "When all mail has _been read:" msgstr "En no haver correu per _llegir:" #: ../ui/properties-dialog.glade.h:31 msgid "_Always display" msgstr "Mostra _sempre" #: ../ui/properties-dialog.glade.h:32 msgid "_Automatically close after:" msgstr "Ta_nca automticament desprs de:" #: ../ui/properties-dialog.glade.h:33 msgid "_Blink on errors" msgstr "_Parpelleja si hi ha errors" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:35 msgid "_Display a Test Popup" msgstr "_Mostra un Resum Emergent de Prova" #: ../ui/properties-dialog.glade.h:36 msgid "_Display seen mail" msgstr "_Mostra el correu vist" #: ../ui/properties-dialog.glade.h:37 msgid "_Display this dialog" msgstr "_Mostra aquest dileg" #: ../ui/properties-dialog.glade.h:38 msgid "_Enable mail summary popup" msgstr "Habilita el _resum emergent de correu" #: ../ui/properties-dialog.glade.h:39 msgid "_Launch the mail reader" msgstr "E_xecuta el client de correu" #: ../ui/properties-dialog.glade.h:40 msgid "_None" msgstr "C_ap" #: ../ui/properties-dialog.glade.h:41 msgid "_Position:" msgstr "_Posici:" #: ../ui/properties-dialog.glade.h:42 msgid "_Title:" msgstr "Tt_ol:" #: ../ui/properties-dialog.glade.h:43 msgid "_Update the mail status" msgstr "Act_ualitza l'estat del correu" #: ../ui/properties-dialog.glade.h:44 msgid "_Use fonts from theme" msgstr "_Usa les fonts del tema" #: ../ui/properties-dialog.glade.h:45 msgid "_Vertical offset:" msgstr "Distncia _vertical:" #: ../ui/properties-dialog.glade.h:46 msgid "icon tooltip's mail summary layout|Co_mpact" msgstr "_Compacte" #: ../ui/properties-dialog.glade.h:47 msgid "icon tooltip's mail summary layout|_Standard" msgstr "_Estndard" #: ../ui/properties-dialog.glade.h:49 msgid "pixels" msgstr "pxels" #: ../ui/properties-dialog.glade.h:50 msgid "popup's mail summary layout|Co_mpact" msgstr "_Compacte" #: ../ui/properties-dialog.glade.h:51 msgid "popup's mail summary layout|_Standard" msgstr "_Estndard" mail-notification-5.4.dfsg.1/po/sv.po0000644000175000001440000017337211005111372017265 0ustar evilynuxusers# Swedish translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Daniel Nylander , 2006, 2007, 2008. # msgid "" msgstr "" "Project-Id-Version: mail-notification 5.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-28 10:07+0100\n" "PO-Revision-Date: 2008-04-27 16:51+0200\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "Konfigurera E-postnotifieraren" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 #: ../src/mn-mail-icon.gob:296 #: ../src/mn-main.c:103 #: ../src/mn-main.c:424 #: ../src/mn-main.c:445 #: ../src/mn-main.c:496 msgid "Mail Notification" msgstr "E-postnotifieraren" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Bli notifierad när nya brev anländer" #: ../data/mail-notification.schemas.in.in.h:1 msgid "Always display an icon" msgstr "Visa alltid en ikon" #: ../data/mail-notification.schemas.in.in.h:2 msgid "Blink on errors" msgstr "Blinka vid fel" #: ../data/mail-notification.schemas.in.in.h:3 msgid "Click action" msgstr "Klickåtgärd" #: ../data/mail-notification.schemas.in.in.h:4 msgid "Display a message count in the status icon" msgstr "Visa meddelandeantalet i statusikonen" #: ../data/mail-notification.schemas.in.in.h:5 msgid "Display seen mail" msgstr "Visa sedda brev" #: ../data/mail-notification.schemas.in.in.h:6 msgid "Enable message popups" msgstr "Aktivera meddelandepopuprutor" #: ../data/mail-notification.schemas.in.in.h:7 msgid "Expire message popups" msgstr "Låt meddelandepopuprutor försvinna" #: ../data/mail-notification.schemas.in.in.h:8 msgid "Fallback character sets" msgstr "Teckenkodningar att falla tillbaka på" #: ../data/mail-notification.schemas.in.in.h:9 msgid "Fingerprints of trusted X509 certificates" msgstr "Fingeravtryck för pålitliga X509-certifikat" #: ../data/mail-notification.schemas.in.in.h:10 msgid "Height of properties dialog" msgstr "Höjd på egenskapsdialogrutan" #: ../data/mail-notification.schemas.in.in.h:11 msgid "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the number of seconds to wait before expiring message popups." msgstr "Om /apps/mail-notification/popups/expiration/enabled är inställd till \"true\" är detta tidsperioden (i sekunder) att vänta innan meddelandepopuprutor försvinner." #: ../data/mail-notification.schemas.in.in.h:12 msgid "Mail changed command" msgstr "Kommando för ändrade brev" #: ../data/mail-notification.schemas.in.in.h:13 msgid "Mail read command" msgstr "Kommando för att läsa e-post" #: ../data/mail-notification.schemas.in.in.h:14 msgid "Maximum number of messages in the tooltip mail summary" msgstr "Maximalt antal meddelanden i verktygstipsets e-postsammandrag" #: ../data/mail-notification.schemas.in.in.h:15 msgid "Maximum number of simultaneous popups" msgstr "Maximalt antal samtidiga popuprutor" #: ../data/mail-notification.schemas.in.in.h:16 msgid "Message popups actions" msgstr "Åtgärder för meddelandepopuprutor" #: ../data/mail-notification.schemas.in.in.h:17 msgid "Message popups position" msgstr "Position för meddelandepopuprutor" #: ../data/mail-notification.schemas.in.in.h:18 msgid "New mail command" msgstr "Kommando för ny e-post" #: ../data/mail-notification.schemas.in.in.h:19 msgid "New mail sound" msgstr "Ljud för ny e-post" #: ../data/mail-notification.schemas.in.in.h:20 msgid "Play a sound when new mail arrives" msgstr "Spela upp ett ljud när nya brev anländer" #: ../data/mail-notification.schemas.in.in.h:21 msgid "Play sound command" msgstr "Kommando för att spela upp ljud" #: ../data/mail-notification.schemas.in.in.h:22 msgid "Run a command when all mail is read" msgstr "Kör ett kommando när alla brev har lästs" #: ../data/mail-notification.schemas.in.in.h:23 msgid "Run a command when new mail arrives" msgstr "Kör ett kommando när nya brev anländer" #: ../data/mail-notification.schemas.in.in.h:24 msgid "Run a command when the message list changes" msgstr "Kör ett kommando när meddelandelistan ändras" #: ../data/mail-notification.schemas.in.in.h:25 msgid "Seconds to wait before expiring message popups" msgstr "Sekunder att vänta innan meddelandepopuprutor försvinner" #: ../data/mail-notification.schemas.in.in.h:26 msgid "The action to perform when the icon is clicked. Must be \"launch-mail-reader\", \"open-latest-message\", \"consider-new-mail-as-read\" or \"update-mail-status\"." msgstr "Åtgärden att genomföra när ikonen klickas på. Måste vara \"launch-mail-reader\", \"open-latest-message\", \"consider-new-mail-as-read\" eller \"update-mail-status\"." #: ../data/mail-notification.schemas.in.in.h:27 msgid "The command to run when all mail is read." msgstr "Kommandot att köra när alla brev har lästs." #: ../data/mail-notification.schemas.in.in.h:28 msgid "The command to run when new mail arrives." msgstr "Kommandot att köra när nya brev anländer." #: ../data/mail-notification.schemas.in.in.h:29 msgid "The command to run when the message list changes." msgstr "Kommandot att köra när meddelandelistan ändras." #: ../data/mail-notification.schemas.in.in.h:31 #, no-c-format msgid "The command to use to play a sound file. The string %file will be substituted with the filename of the sound to play." msgstr "Kommandot att använda för att spela upp en ljudfil. Strängen %file kommer att ersättas med filnamnet för ljudfilen att spela upp." #: ../data/mail-notification.schemas.in.in.h:32 msgid "The height of the properties dialog in pixels." msgstr "Höjden på egenskapsdialogrutan i antal bildpunkter." #: ../data/mail-notification.schemas.in.in.h:33 msgid "The list of character sets to attempt conversion from when uncompliant 8-bit data is encountered in message headers. The first character set allowing a successful conversion will be used. The special name \"user\" will be replaced with the character set of the user's locale. Note that Mail Notification must be restarted for changes to take effect." msgstr "Listan över teckenuppsättningar att prova konvertera från när ogiltigt 8-bitars data påträffas i meddelanderubrikerna. Första teckenuppsättningen som ger en lyckad konvertering kommer att användas. Specialnamnet \"user\" kommer att ersättas med teckenuppsättningen för användarens lokalanpassning. Observera att E-postnotifieraren måste startas om för att ändringar ska bli aktiva." #: ../data/mail-notification.schemas.in.in.h:34 msgid "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 certificate." msgstr "Listan på pålitliga SSL/TLS-servrar (värdnamn:port) som saknar ett X509-certifikat." #: ../data/mail-notification.schemas.in.in.h:35 msgid "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "Listan av pålitliga X509-certifikat, representerade av deras MD5-fingeravtryck." #: ../data/mail-notification.schemas.in.in.h:36 msgid "The maximum number of messages to display in the tooltip mail summary." msgstr "Maximalt antal meddelanden att visa i verktygstipsets e-postsammandrag." #: ../data/mail-notification.schemas.in.in.h:37 msgid "The maximum number of popups to display simultaneously. If this limit is exceeded, only the most recent messages will be displayed. If the /apps/mail-notification/popups/position key is set to \"attached\", this limit will be ignored and only one popup will be allowed." msgstr "Det maximala antalet popuprutor att visa samtidigt. Om denna gräns överstigs kommer endast de senaste meddelandena att visas. Om nyckeln /apps/mail-notification/popups/position är inställd till \"attached\", kommer denna gräns att ignoreras och endast en popupruta kommer att tillåtas." #: ../data/mail-notification.schemas.in.in.h:38 msgid "The ordered list of actions to include in the message popups. Each element must be \"open\", \"mark-as-read\", \"mark-as-spam\" or \"delete\"." msgstr "Den sorterade listan över åtgärder att inkludera i meddelandepopuprutor. Varje element måste vara antingen \"open\", \"mark-as-read\", \"mark-as-spam\" eller \"delete\"." #: ../data/mail-notification.schemas.in.in.h:39 msgid "The position of the message popups. Must be \"attached\" or \"free\"." msgstr "Positionen för meddelandepopuprutor. Måste vara \"attached\" eller \"free\"." #: ../data/mail-notification.schemas.in.in.h:40 msgid "The sound file to play when new mail arrives." msgstr "Ljudfilen att spela upp när nya brev anländer." #: ../data/mail-notification.schemas.in.in.h:41 msgid "The type of mail summary to display in the icon's tooltip. Must be \"standard\", \"compact\" or \"none\"." msgstr "Typen av e-postsammandrag att visa i ikonens verktygstips. Måste vara \"standard\", \"compact\" eller \"none\"." #: ../data/mail-notification.schemas.in.in.h:42 msgid "The width of the properties dialog in pixels." msgstr "Bredden på egenskapsdialogrutan i antal bildpunkter." #: ../data/mail-notification.schemas.in.in.h:43 msgid "Tooltip mail summary" msgstr "Verktygstips för e-postsammandrag" #: ../data/mail-notification.schemas.in.in.h:44 msgid "Trusted servers list" msgstr "Lista på pålitliga servrar" #: ../data/mail-notification.schemas.in.in.h:45 msgid "Whether the status icon should blink on errors or not." msgstr "Huruvida statusikonen ska blinka vid fel eller inte." #: ../data/mail-notification.schemas.in.in.h:46 msgid "Whether to display a message count in the status icon or not." msgstr "Huruvida ett meddelandeantal ska visas i statusikonen eller inte." #: ../data/mail-notification.schemas.in.in.h:47 msgid "Whether to display an icon when there is no new mail or not." msgstr "Huruvida en ikon ska visas när det inte finns några nya brev eller inte." #: ../data/mail-notification.schemas.in.in.h:48 msgid "Whether to display mail which is still marked as unread but has been seen or not." msgstr "Huruvida brev ska visas som fortfarande är markerade som olästa men har setts eller inte." #: ../data/mail-notification.schemas.in.in.h:49 msgid "Whether to enable message popups or not." msgstr "Huruvida meddelandepopuprutor ska aktiveras eller inte." #: ../data/mail-notification.schemas.in.in.h:50 msgid "Whether to expire message popups or not. Must be \"default\", \"false\" or \"true\"." msgstr "Huruvida meddelandepopuprutor ska försvinna eller inte. Måste vara \"default\", \"false\" eller \"true\"." #: ../data/mail-notification.schemas.in.in.h:51 msgid "Whether to play a sound when new mail arrives or not." msgstr "Huruvida ett ljud ska spelas upp när nya brev anländer eller inte." #: ../data/mail-notification.schemas.in.in.h:52 msgid "Whether to run a command when all mail is read or not." msgstr "Huruvida ett kommando ska köras när alla brev har lästs eller inte." #: ../data/mail-notification.schemas.in.in.h:53 msgid "Whether to run a command when new mail arrives or not." msgstr "Huruvida ett kommando ska köras när nya brev anländer eller inte." #: ../data/mail-notification.schemas.in.in.h:54 msgid "Whether to run a command when the message list changes or not." msgstr "Huruvida ett kommando ska köras när meddelandelistan ändras eller inte." #: ../data/mail-notification.schemas.in.in.h:55 msgid "Width of properties dialog" msgstr "Bredd på egenskapsdialogrutan" #: ../src/eggtrayicon.c:133 msgid "Orientation" msgstr "Orientering" #: ../src/eggtrayicon.c:134 msgid "The orientation of the tray." msgstr "Lådans orientering." #. translators: header capitalization #: ../src/mn-about-dialog.gob:47 msgid "A Mail Notification Icon" msgstr "En e-postnotifieringsikon" #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:55 msgid "translator-credits" msgstr "" "Daniel Nylander \n" "\n" "Skicka synpunkter på översättningen till\n" "tp-sv@listor.tp-sv.se" #: ../src/mn-auth-combo-box.gob:98 #: ../src/mn-autodetect-mailbox-properties.gob:106 msgid "Autodetect" msgstr "Identifiera automatiskt" #. translators: header capitalization #: ../src/mn-authenticated-mailbox-properties.gob:56 msgid "Account" msgstr "Konto" #: ../src/mn-authenticated-mailbox-properties.gob:59 msgid "_Username:" msgstr "_Användarnamn:" #: ../src/mn-authenticated-mailbox-properties.gob:63 msgid "_Password:" msgstr "_Lösenord:" #: ../src/mn-authenticated-mailbox-properties.gob:140 msgid "Saving password to keyring..." msgstr "Sparar lösenord till nyckelring..." #: ../src/mn-authenticated-mailbox-properties.gob:185 msgid "Retrieving password from keyring..." msgstr "Hämtar lösenord från nyckelring..." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:306 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the password you have entered is invalid.\n" "\n" "Please re-enter your password." msgstr "" "E-postnotifieraren kunde inte logga in i %s-postlådan %s, möjligen på grund av att det lösenord du har angivit är felaktigt.\n" "\n" "Ange ditt lösenord igen." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:308 #, c-format msgid "Enter your password for %s mailbox %s." msgstr "Ange ditt lösenord för %s-postlådan %s." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: ../src/mn-authenticated-mailbox.gob:381 msgid "Authentication Required" msgstr "Autentisering krävs" #: ../src/mn-authenticated-mailbox.gob:463 msgid "Unable to save the mailbox password" msgstr "Kunde inte spara lösenordet för postlåda" #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:465 #, c-format msgid "The password of %s mailbox %s could not be saved to the keyring." msgstr "Lösenordet för %s-brevlådan %s kunde inte sparas i nyckelringen." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:119 #: ../src/mn-system-vfs-mailbox-properties.gob:57 msgid "Location" msgstr "Plats" #: ../src/mn-autodetect-mailbox-properties.gob:121 msgid "_Location:" msgstr "_Plats:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:129 msgid "_Browse..." msgstr "_Bläddra..." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:169 msgid "Select a File or Folder" msgstr "Välj en fil eller mapp" #: ../src/mn-base-mbox-mailbox-backend.gob:346 #, c-format msgid "unable to open mailbox: %s" msgstr "kunde inte öppna postlåda: %s" #: ../src/mn-client-session.c:177 #, c-format msgid "resolving %s" msgstr "slår upp %s" #: ../src/mn-client-session.c:193 #, c-format msgid "unable to resolve %s: %s" msgstr "kunde inte slå upp %s: %s" #: ../src/mn-client-session.c:234 #, c-format msgid "network address #%i" msgstr "nätverksadress #%i" #: ../src/mn-client-session.c:237 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "kunde inte konvertera nätverksadress #%i till textformat: %s" #: ../src/mn-client-session.c:248 #, c-format msgid "%s: unsupported address family" msgstr "%s: adressfamiljen stöds inte" #: ../src/mn-client-session.c:255 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: kunde inte skapa uttag: %s" #: ../src/mn-client-session.c:259 #, c-format msgid "connecting to %s (%s) port %i" msgstr "ansluter till %s (%s) port %i" #: ../src/mn-client-session.c:262 #, c-format msgid "unable to connect: %s" msgstr "kunde inte ansluta: %s" #: ../src/mn-client-session.c:267 msgid "connected successfully" msgstr "anslutning lyckades" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:281 #, c-format msgid "unable to connect to %s" msgstr "kunde inte ansluta till %s" #: ../src/mn-client-session.c:333 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "svaret \"%s\" är inte giltigt i aktuellt sammanhang" #: ../src/mn-client-session.c:362 #, c-format msgid "unable to parse response \"%s\"" msgstr "kunde inte tolka svaret \"%s\"" #: ../src/mn-client-session.c:626 msgid "server name not found in certificate" msgstr "servernamnet hittades inte i certifikatet" #: ../src/mn-client-session.c:631 #, c-format msgid "user-provided server name \"%s\" does not match certificate-provided server name \"%s\"" msgstr "användarangivna servernamnet \"%s\" matchar inte servernamnet i certifikatet \"%s\"" #: ../src/mn-client-session.c:645 #, c-format msgid "\"%s\", " msgstr "\"%s\", " #: ../src/mn-client-session.c:647 #: ../src/mn-client-session.c:1582 #: ../src/mn-yahoo-mailbox.gob:218 #, c-format msgid "\"%s\"" msgstr "\"%s\"" #: ../src/mn-client-session.c:650 #, c-format msgid "user-provided server name \"%s\" matches none of the certificate-provided server names %s" msgstr "användarangivna servernamnet \"%s\" matchar inget av de servernamn i certifikatet %s" #: ../src/mn-client-session.c:740 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "kunde inte initera OpenSSL-biblioteket: %s" #: ../src/mn-client-session.c:748 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "kunde inte skapa ett SSL/TLS-objekt: %s" #: ../src/mn-client-session.c:754 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "kunde inte ställa in SSL/TLS-filidentifieraren: %s" #: ../src/mn-client-session.c:761 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "kunde inte genomföra SSL/TLS-handskakning: %s" #: ../src/mn-client-session.c:767 msgid "untrusted server" msgstr "opålitlig server" #: ../src/mn-client-session.c:771 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "ett SSL/TLS-lager är nu aktivt (%s, %s %i-bitars)" #: ../src/mn-client-session.c:819 #: ../src/mn-client-session.c:826 #, c-format msgid "unable to read from server: %s" msgstr "kunde inte läsa från servern: %s" #: ../src/mn-client-session.c:824 msgid "unable to read from server: EOF" msgstr "kunde inte läsa från servern: Slut på fil" #: ../src/mn-client-session.c:836 #, c-format msgid "unable to decode data using SASL: %s" msgstr "kunde inte avkoda data med SASL: %s" #: ../src/mn-client-session.c:980 #, c-format msgid "unable to encode data using SASL: %s" msgstr "kunde inte koda data med SASL: %s" #: ../src/mn-client-session.c:1009 #: ../src/mn-client-session.c:1016 #, c-format msgid "unable to write to server: %s" msgstr "kunde inte skriva till servern: %s" #: ../src/mn-client-session.c:1014 msgid "unable to write to server: EOF" msgstr "kunde inte skriva till servern: Slut på fil" #: ../src/mn-client-session.c:1043 #: ../src/mn-pop3-mailbox.gob:448 #, c-format msgid "unable to encode Base64: %s" msgstr "kunde inte Base64-koda: %s" #: ../src/mn-client-session.c:1220 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "kunde inte initiera SASL-biblioteket: %s" #: ../src/mn-client-session.c:1232 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "kunde inte hämta lokal adress för uttag: %s" #: ../src/mn-client-session.c:1238 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "kunde inte hämta fjärradress för uttag: %s" #: ../src/mn-client-session.c:1272 #, c-format msgid "unable to set SASL security properties: %s" msgstr "kunde inte ställa in SASL-säkerhetsegenskaper: %s" #: ../src/mn-client-session.c:1296 msgid "unable to start SASL authentication: SASL asked for something we did not know" msgstr "kunde inte starta SASL-autentisering: SASL frågade efter någonting som vi inte vet" #: ../src/mn-client-session.c:1315 #, c-format msgid "unable to start SASL authentication: %s" msgstr "kunde inte starta SASL-autentisering: %s" #: ../src/mn-client-session.c:1319 #, c-format msgid "unable to create a SASL connection: %s" msgstr "kunde inte skapa en SASL-anslutning: %s" #: ../src/mn-client-session.c:1366 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "SASL frågade efter någonting vi inte vet, avbryter SASL-autentisering" #: ../src/mn-client-session.c:1383 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, avbryter SASL-autentisering" #. compliance error #: ../src/mn-client-session.c:1388 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "kunde inte avkoda Base64-inmatning från servern: %s" #: ../src/mn-client-session.c:1424 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "ett SASL-säkerhetslager med stark faktor %i är nu aktiv" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1429 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "kunde inte få SASL_MAXOUTBUF-egenskap: %s" #: ../src/mn-client-session.c:1435 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "varning: kunde inte få SASL_SSF-egenskap: %s" #: ../src/mn-client-session.c:1583 msgid "unknown server error" msgstr "okänt serverfel" #: ../src/mn-compact-message-view.gob:39 msgid "Mailbox" msgstr "Postlåda" #: ../src/mn-compact-message-view.gob:40 msgid "From" msgstr "Från" #: ../src/mn-compact-message-view.gob:41 msgid "Subject" msgstr "Ämne" #: ../src/mn-compact-message-view.gob:42 msgid "Sent" msgstr "Skickat" #: ../src/mn-conf.c:249 #, c-format msgid "cannot find default value of configuration key \"%s\"" msgstr "kan inte hitta standardvärde för konfigurationsnyckeln \"%s\"" #: ../src/mn-conf.c:254 msgid "The default configuration has not been installed properly. Please check your Mail Notification installation." msgstr "Standardkonfigurationen har inte installerats korrekt. Kontrollera din installation av E-postnotifieraren." #: ../src/mn-conf.c:291 msgid "A directory creation error has occurred" msgstr "Ett fel vid skapandet av katalog inträffade" #: ../src/mn-conf.c:292 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "Kunde inte skapa katalogen \"%s\": %s." #: ../src/mn-conf.c:361 #, c-format msgid "recursively unsetting %s" msgstr "avmarkerar %s rekursivt" #: ../src/mn-conf.c:365 msgid "syncing the GConf database" msgstr "synkroniserar GConf-databasen" #: ../src/mn-conf.c:368 msgid "completed" msgstr "färdig" #: ../src/mn-custom-vfs-mailbox.gob:72 msgid "invalid location" msgstr "ogiltig plats" #: ../src/mn-evolution-folder-tree-client.gob:269 msgid "Mail Notification can not contact Evolution. Make sure that Evolution is running and that the Evolution Jean-Yves Lefort's Mail Notification plugin is loaded." msgstr "E-postnotifieraren kan inte kontakta Evolution. Försäkra dig om att Evolution kör och att insticksmodulen för E-postnotifieraren i Evolution är inläst." #. translators: header capitalization #: ../src/mn-evolution-mailbox-properties.gob:71 #: ../src/mn-webmail-mailbox-properties.gob:92 msgid "Folder" msgstr "Mapp" #: ../src/mn-evolution-mailbox.gob:225 msgid "unable to contact Evolution" msgstr "kunde inte kontakta Evolution" #: ../src/mn-evolution-plugin.c:151 msgid "A fatal error has occurred in the Evolution Mail Notification plugin" msgstr "Ett ödesdigert fel har inträffat i Evolution-insticksmodulen för E-postnotifieraren" #: ../src/mn-evolution-plugin.c:152 #: ../src/mn-main.c:250 msgid "The connection to the D-Bus session bus was lost." msgstr "Anslutningen till D-Bus-sessionsbussen avbröts." #: ../src/mn-evolution-plugin.c:175 #: ../src/mn-evolution-plugin.c:188 #: ../src/mn-evolution-plugin.c:226 msgid "Unable to initialize the Mail Notification plugin" msgstr "Kunde inte initiera insticksmodulen för E-postnotifieraren" #: ../src/mn-evolution-plugin.c:176 #: ../src/mn-main.c:270 #, c-format msgid "Unable to connect to the D-Bus session bus: %s." msgstr "Kunde inte ansluta till D-Bus-sessionsbussen: %s." #: ../src/mn-evolution-plugin.c:227 #, c-format msgid "Unable to register the Mail Notification Evolution D-Bus server: %s." msgstr "Kunde inte registrera Evolution D-Bus-servern för E-postnotifieraren: %s." #: ../src/mn-evolution-server.gob:152 #, c-format msgid "folder not found" msgstr "mappen hittades inte" #: ../src/mn-evolution-server.gob:329 #, c-format msgid "message not found" msgstr "meddelandet hittades inte" #. #. * translators: GTK+ has the same message used in the same #. * context; please use the GTK+ translation for consistency #. #: ../src/mn-file-chooser-button.gob:179 msgid "(None)" msgstr "(Ingen)" #. translators: header capitalization #: ../src/mn-gmail-mailbox-properties.gob:105 msgid "Gmail Label" msgstr "Gmail-etikett" #: ../src/mn-gmail-mailbox-properties.gob:107 msgid "_Restrict to this label:" msgstr "_Begränsa till denna etikett:" #: ../src/mn-gmail-mailbox.gob:154 msgid "invalid feed location" msgstr "ogiltig kanalplats" #: ../src/mn-gmail-mailbox.gob:175 #, c-format msgid "retrieving feed from %s" msgstr "hämtar kanal från %s" #: ../src/mn-gmail-mailbox.gob:182 #, c-format msgid "unable to retrieve feed: %s" msgstr "kunde inte hämta kanal: %s" #: ../src/mn-gmail-mailbox.gob:191 #, c-format msgid "feed retrieved successfully (%i byte)" msgid_plural "feed retrieved successfully (%i bytes)" msgstr[0] "kanal togs emot (%i byte)" msgstr[1] "kanal togs emot (%i byte)" #: ../src/mn-gmail-mailbox.gob:203 #: ../src/mn-gmail-mailbox.gob:254 msgid "unable to parse feed" msgstr "kunde inte tolka kanal" #: ../src/mn-gmime-stream-vfs.gob:48 #: ../src/mn-sylpheed-mailbox-backend.gob:209 #, c-format msgid "unable to read %s: %s" msgstr "kunde inte läsa %s: %s" #: ../src/mn-gmime-stream-vfs.gob:50 #: ../src/mn-webmail-mailbox.gob:141 #, c-format msgid "unable to write to %s: %s" msgstr "kunde inte skriva till %s: %s" #: ../src/mn-gmime-stream-vfs.gob:52 #, c-format msgid "unable to seek in %s: %s" msgstr "kunde inte spola i %s: %s" #: ../src/mn-gmime-stream-vfs.gob:54 #, c-format msgid "unable to tell position of %s: %s" msgstr "kunde inte ta reda på position för %s: %s" #: ../src/mn-gmime-stream-vfs.gob:56 #: ../src/mn-mh-mailbox-backend.gob:206 #: ../src/mn-webmail-mailbox.gob:147 #, c-format msgid "unable to close %s: %s" msgstr "kunde inte stänga %s: %s" #: ../src/mn-hotmail-mailbox.gob:286 #: ../src/mn-imap-mailbox.gob:1680 #: ../src/mn-pop3-mailbox.gob:1165 msgid "authentication failed" msgstr "autentisering misslyckades" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:109 msgid "IMAP Mailbox" msgstr "IMAP-postlåda" #: ../src/mn-imap-mailbox-properties.gob:111 #: ../src/mn-webmail-mailbox-properties.gob:94 msgid "In_box" msgstr "In_korg" #: ../src/mn-imap-mailbox-properties.gob:116 #: ../src/mn-webmail-mailbox-properties.gob:99 #: ../ui/mailbox-properties-dialog.glade.h:10 msgid "_Other:" msgstr "Anna_n:" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:129 msgid "Use the IDLE Extension" msgstr "Använd IDLE-utökningen" #: ../src/mn-imap-mailbox-properties.gob:133 msgid "IMAP connection tab|_Never" msgstr "A_ldrig" #: ../src/mn-imap-mailbox-properties.gob:134 msgid "A_utodetect" msgstr "Identifiera automatisk_t" #: ../src/mn-imap-mailbox-properties.gob:135 msgid "Al_ways" msgstr "A_lltid" #: ../src/mn-imap-mailbox.gob:384 msgid "server did not send capabilities" msgstr "servern skickade inga färdigheter" #: ../src/mn-imap-mailbox.gob:551 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "servern annonserade LOGINDISABLED, använder inte LOGIN-autentisering" #: ../src/mn-imap-mailbox.gob:552 msgid "unable to login" msgstr "kunde inte logga in" #: ../src/mn-imap-mailbox.gob:1063 msgid "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, logging out" msgstr "\"Använd IDLE-utökningen\" inställd till \"aldrig\" i postlådans egenskaper, loggar ut" #: ../src/mn-imap-mailbox.gob:1074 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "fjärrservern kör %s, använder inte IDLE-utökningen" #: ../src/mn-imap-mailbox.gob:1079 #, c-format msgid "the remote server runs %s, the IDLE extension might not function properly" msgstr "fjärrservern kör %s, IDLE-utökningen kanske inte fungerar korrekt" #: ../src/mn-imap-mailbox.gob:1088 msgid "the remote server does not support the IDLE extension, logging out" msgstr "fjärrservern saknar stöd för IDLE-utökningen, loggar ut" #: ../src/mn-imap-mailbox.gob:1590 #: ../src/mn-pop3-mailbox.gob:309 msgid "server does not support in-band SSL/TLS" msgstr "servern saknar stöd för in-band SSL/TLS" #: ../src/mn-imap-mailbox.gob:1614 #: ../src/mn-pop3-mailbox.gob:1080 msgid "a SASL authentication mechanism was selected but SASL support has not been compiled in" msgstr "en SASL-autentiseringsmekanism valdes men SASL-stöd har inte byggts in" #: ../src/mn-imap-mailbox.gob:1624 #: ../src/mn-pop3-mailbox.gob:1100 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "okänd autentiseringsmekanism \"%s\"" #: ../src/mn-imap-mailbox.gob:1656 #: ../src/mn-pop3-mailbox.gob:1136 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "inaktiverar mekanismen \"%s\" och försöker med SASL-autentisering igen" #: ../src/mn-imap-mailbox.gob:1668 msgid "falling back to IMAP LOGIN authentication" msgstr "faller tillbaka på IMAP LOGIN-autentisering" #: ../src/mn-imap-mailbox.gob:1724 #: ../src/mn-pop3-mailbox.gob:744 #, c-format msgid "cannot retrieve %i message" msgid_plural "cannot retrieve %i messages" msgstr[0] "kan inte hämta %i meddelande" msgstr[1] "kan inte hämta %i meddelanden" #. translators: header capitalization #: ../src/mn-mail-icon.gob:86 msgid "_Mail Reader" msgstr "E-_postprogram" #. translators: header capitalization #: ../src/mn-mail-icon.gob:88 msgid "_Open Latest Message" msgstr "_Öppna senaste meddelandet" #. translators: header capitalization #: ../src/mn-mail-icon.gob:93 msgid "_Consider New Mail as Read" msgstr "A_nse nya brev som lästa" #. translators: header capitalization #: ../src/mn-mail-icon.gob:95 #: ../src/mn-mailbox-view.gob:312 msgid "_Update" msgstr "_Uppdatera" #. translators: header capitalization #: ../src/mn-mail-icon.gob:106 msgid "R_emove From Notification Area" msgstr "Ta _bort från notifieringsyta" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:106 #, c-format msgid "%s Properties" msgstr "Egenskaper för %s" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:210 msgid "Add a Mailbox" msgstr "Lägg till en postlåda" #: ../src/mn-mailbox-properties-dialog.gob:585 msgid "_Default:" msgstr "S_tandard:" #: ../src/mn-mailbox-properties-dialog.gob:587 #: ../ui/mailbox-properties-dialog.glade.h:9 msgid "_Default" msgstr "S_tandard" #: ../src/mn-mailbox-properties-dialog.gob:614 msgid "D_efault:" msgstr "Sta_ndard:" #: ../src/mn-mailbox-properties-dialog.gob:618 #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "D_efault" msgstr "Sta_ndard" #: ../src/mn-mailbox-view.gob:249 msgid "A paste error has occurred" msgstr "Ett fel vid inklistring har inträffat" #: ../src/mn-mailbox-view.gob:571 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "ohanterad %s postlåda (%s)" #: ../src/mn-mailbox-view.gob:575 #, c-format msgid "%s mailbox" msgstr "%s-postlåda" #: ../src/mn-mailbox-view.gob:586 msgid "detecting mailbox type..." msgstr "identifierar postlådetyp..." #: ../src/mn-mailbox.gob:559 #, c-format msgid "\"type\" attribute missing" msgstr "attributet \"type\" saknas" #: ../src/mn-mailbox.gob:566 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "okänd postlådetyp \"%s\"" #: ../src/mn-mailbox.gob:965 #, c-format msgid "property \"%s\" has no value" msgstr "egenskapen \"%s\" har inget värde" #: ../src/mn-mailbox.gob:1044 #: ../src/mn-mailbox.gob:1062 #: ../src/mn-shell.gob:624 #, c-format msgid "%s: %s" msgstr "%s: %s" #: ../src/mn-mailboxes.gob:248 msgid "An error has occurred while importing old mailboxes" msgstr "Ett fel inträffade vid importering av gamla postlådor" #: ../src/mn-mailboxes.gob:303 msgid "Unable to load the mailboxes configuration" msgstr "Kunde inte läsa in konfiguration om postlådorna" #: ../src/mn-mailboxes.gob:350 #, c-format msgid "Unable to parse the XML document." msgstr "Kunde inte tolka XML-dokumentet." #: ../src/mn-mailboxes.gob:357 #, c-format msgid "The root element is missing." msgstr "Rotelementet saknas." #: ../src/mn-mailboxes.gob:363 #, c-format msgid "The root element \"%s\" is invalid." msgstr "Rotelementet \"%s\" är ogiltigt." #: ../src/mn-mailboxes.gob:385 #, c-format msgid "On line %i: %s." msgstr "På rad %i: %s." #: ../src/mn-mailboxes.gob:390 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "På rad %i: okänt element \"%s\"." #: ../src/mn-mailboxes.gob:399 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "Ett fel inträffade vid inläsning av konfiguration om postlådorna" msgstr[1] "Fel inträffade vid inläsning av konfiguration om postlådorna" #: ../src/mn-mailboxes.gob:424 msgid "Unable to save the mailboxes configuration" msgstr "Kunde inte spara konfiguration om postlådorna" #: ../src/mn-mailboxes.gob:469 #: ../src/mn-vfs.c:233 #, c-format msgid "Unable to remove %s: %s." msgstr "Kunde inte ta bort %s: %s." #: ../src/mn-mailboxes.gob:477 #, c-format msgid "Unable to create %s: %s." msgstr "Kunde inte skapa %s: %s." #: ../src/mn-mailboxes.gob:484 #, c-format msgid "Unable to open %s for writing: %s." msgstr "Kunde inte öppna %s för skrivning: %s." #: ../src/mn-mailboxes.gob:491 #, c-format msgid "Unable to write the XML document." msgstr "Kunde inte skriva XML-dokumentet." #: ../src/mn-mailboxes.gob:497 #, c-format msgid "Unable to close %s: %s." msgstr "Kunde inte stänga %s: %s." #: ../src/mn-mailboxes.gob:507 #: ../src/mn-mailboxes.gob:514 #: ../src/mn-vfs.c:251 #: ../src/mn-vfs.c:259 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "Kunde inte byta namn på %s till %s: %s." #. non fatal #: ../src/mn-mailboxes.gob:520 #: ../src/mn-vfs.c:269 #, c-format msgid "unable to delete %s: %s" msgstr "kunde inte ta bort %s: %s" #: ../src/mn-mailboxes.gob:550 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "%s har %i nytt meddelande" msgstr[1] "%s har %i nya meddelanden" #: ../src/mn-mailboxes.gob:576 #, c-format msgid "%s reported an error: %s" msgstr "%s rapporterade att fel: %s" #: ../src/mn-maildir-mailbox-backend.gob:127 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "kunde inte öppna mappen \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:219 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "kunde inte stänga mappen \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:222 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "fel vid läsning av mappen \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:253 #: ../src/mn-mh-mailbox-backend.gob:200 #: ../src/mn-sylpheed-mailbox-backend.gob:311 #, c-format msgid "cannot read %i message" msgid_plural "cannot read %i messages" msgstr[0] "kan inte läsa %i meddelande" msgstr[1] "kan inte läsa %i meddelanden" #: ../src/mn-maildir-message.gob:159 msgid "Delete message?" msgstr "Ta bort meddelande?" #: ../src/mn-maildir-message.gob:225 msgid "The message cannot be moved to the trash. Permanently delete it?" msgstr "Meddelandet kan inte flyttas till papperskorgen. Ta bort det permanent?" #: ../src/mn-maildir-message.gob:250 #, c-format msgid "The message could not be moved to the trash (%s). Permanently delete it?" msgstr "Meddelandet kunde inte flyttas till papperskorgen (%s). Ta bort det permanent?" #: ../src/mn-main.c:72 msgid "yes" msgstr "ja" #: ../src/mn-main.c:72 msgid "no" msgstr "nej" #: ../src/mn-main.c:103 #, c-format msgid "%s version %s\n" msgstr "%s version %s\n" #: ../src/mn-main.c:108 #, c-format msgid "Mailbox backends:\n" msgstr "Bakändor för postlådor:\n" #: ../src/mn-main.c:113 #, c-format msgid "IMAP and POP3 features:\n" msgstr "IMAP och POP3-förmågor:\n" #: ../src/mn-main.c:200 #, c-format msgid "Unable to contact the running Mail Notification instance: %s." msgstr "Kunde inte kontakta den körande instansen av E-postnotifieraren: %s." #: ../src/mn-main.c:240 #, c-format msgid "%s option ignored since Mail Notification is not already running" msgstr "Flaggan %s ignoreras eftersom E-postnotifieraren inte körs" #: ../src/mn-main.c:334 msgid "Show version information" msgstr "Visa versionsinformation" #: ../src/mn-main.c:343 msgid "Enable informational output" msgstr "Aktivera informativ utskrift" #: ../src/mn-main.c:352 msgid "Display the properties dialog" msgstr "Visa egenskapsdialogrutan" #: ../src/mn-main.c:361 msgid "Display the about dialog" msgstr "Visa Om-dialogrutan" #: ../src/mn-main.c:370 msgid "Consider new mail as read" msgstr "Anse nya brev som lästa" #: ../src/mn-main.c:379 msgid "Update the mail status" msgstr "Uppdatera e-poststatus" #: ../src/mn-main.c:388 msgid "Print a XML mail summary" msgstr "Skriv ut ett e-postsammandrag i XML" #: ../src/mn-main.c:397 msgid "Unset obsolete GConf configuration" msgstr "Inaktivera föråldrad GConf-konfiguration" #: ../src/mn-main.c:406 msgid "Quit Mail Notification" msgstr "Avsluta E-postnotifieraren" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: ../src/mn-main.c:432 msgid "multi-threading is not available" msgstr "multitrådning är inte tillgängligt" #: ../src/mn-main.c:473 msgid "Mail Notification is not running" msgstr "E-postnotifieraren körs inte" #: ../src/mn-main.c:485 msgid "Unable to initialize the GnomeVFS library." msgstr "Kunde inte initiera GnomeVFS-biblioteket." #: ../src/mn-main.c:498 msgid "An initialization error has occurred in Mail Notification" msgstr "Ett initieringsfel har inträffat i E-postnotifieraren" #: ../src/mn-main.c:499 msgid "Unable to initialize the notification library. Message popups will not be displayed." msgstr "Kunde inte initiera notifieringsbiblioteket. Meddelandepopuprutor kommer inte att visas." #: ../src/mn-main.c:544 msgid "quitting Mail Notification" msgstr "avslutar E-postnotifieraren" #: ../src/mn-main.c:563 msgid "considering new mail as read" msgstr "anser nya brev som lästa" #: ../src/mn-main.c:568 msgid "updating the mail status" msgstr "uppdaterar e-poststatus" #: ../src/mn-main.c:585 msgid "Mail Notification is already running" msgstr "E-postnotifieraren körs redan" #: ../src/mn-message-mime.c:173 #, c-format msgid "unable to parse MIME message" msgstr "kunde inte tolka MIME-meddelande" #. translators: header capitalization #: ../src/mn-message.gob:97 msgid "Open" msgstr "Öppna" #: ../src/mn-message.gob:98 msgid "Unable to open message" msgstr "Kunde inte öppna meddelandet" #. translators: header capitalization #: ../src/mn-message.gob:107 msgid "Mark as Read" msgstr "Markera som läst" #: ../src/mn-message.gob:108 msgid "Unable to mark message as read" msgstr "Kunde inte markera meddelandet som läst" #. translators: header capitalization #: ../src/mn-message.gob:117 msgid "Mark as Spam" msgstr "Markera som skräppost" #: ../src/mn-message.gob:118 #: ../src/mn-message.gob:128 msgid "Unable to mark message as spam" msgstr "Kunde inte markera meddelandet som skräppost" #. translators: header capitalization #: ../src/mn-message.gob:127 msgid "Delete" msgstr "Ta bort" #: ../src/mn-message.gob:336 #: ../src/mn-sound-player.gob:133 #: ../src/mn-sound-player.gob:169 #: ../src/mn-util.c:1577 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "Kunde inte starta \"%s\": %s." #: ../src/mn-mh-mailbox-backend.gob:209 #, c-format msgid "error while reading %s: %s" msgstr "vid vid läsning av %s: %s" #: ../src/mn-mh-mailbox-backend.gob:223 #: ../src/mn-webmail-mailbox.gob:276 #, c-format msgid "unable to open %s: %s" msgstr "kunde inte öppna %s: %s" #: ../src/mn-pi-mailbox-properties.gob:73 msgid "_Standard" msgstr "Sta_ndard" #: ../src/mn-pi-mailbox-properties.gob:74 msgid "In-_band SSL/TLS" msgstr "In-_band SSL/TLS" #: ../src/mn-pi-mailbox-properties.gob:75 msgid "SSL/TLS on s_eparate port" msgstr "SSL/TLS på s_eparat port" #: ../src/mn-pi-mailbox-properties.gob:79 msgid "_Server:" msgstr "_Server:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:99 msgid "Connection Type" msgstr "Anslutningstyp" #: ../src/mn-pi-mailbox-properties.gob:146 msgid "Port:" msgstr "Port:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:173 msgid "Authentication" msgstr "Autentisering" #: ../src/mn-pi-mailbox-properties.gob:177 msgid "_Mechanism:" msgstr "_Mekanism:" #: ../src/mn-pi-mailbox-properties.gob:211 msgid "Connection" msgstr "Anslutning" #: ../src/mn-pi-mailbox.gob:147 msgid "SSL/TLS support has not been compiled in" msgstr "SSL/TLS-stöd har inte byggts in" #: ../src/mn-pi-mailbox.gob:305 msgid "missing certificate" msgstr "saknar certifikat" #: ../src/mn-pi-mailbox.gob:339 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that someone is intercepting your communication to obtain your confidential information.\n" "\n" "You should only connect to the server if you are certain you are connected to \"%s\". If you choose to connect to the server, this message will not be shown again." msgstr "" "E-postnotifieraren kunde inte lita på \"%s\" (%s). Det är möjligt att någon fångar upp din kommunikation för att få tag på din hemliga information.\n" "\n" "Du bör endast ansluta till servern om du är säker på att du ansluter till \"%s\". Om du väljer att ansluta till servern kommer detta meddelande inte att visas igen." #: ../src/mn-pi-mailbox.gob:353 #, c-format msgid "Certificate fingerprint: %s." msgstr "Certifikatets fingeravtryck: %s." #: ../src/mn-pi-mailbox.gob:360 msgid "Connect to untrusted server?" msgstr "Anslut till opålitlig server?" #: ../src/mn-pop3-mailbox.gob:359 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "ogiltiga argument för färdigheten LOGIN-DELAY" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:500 msgid "SASL authentication with initial client response failed, retrying without initial client response" msgstr "SASL-autentisering med initalt klientsvar misslyckades, försöker utan initalt klientsvar" #: ../src/mn-pop3-mailbox.gob:920 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "följer LOGIN-DELAY, sover i %i sekund" msgstr[1] "följer LOGIN-DELAY, sover i %i sekunder" #: ../src/mn-pop3-mailbox.gob:1092 msgid "server does not support APOP authentication" msgstr "servern saknar stöd för APOP-autentisering" #: ../src/mn-pop3-mailbox.gob:1148 msgid "falling back to APOP authentication" msgstr "faller tillbaka på APOP-autentisering" #: ../src/mn-pop3-mailbox.gob:1153 msgid "falling back to USER/PASS authentication" msgstr "faller tillbaka på USER/PASS-autentisering" #: ../src/mn-popup.gob:45 #: ../src/mn-standard-message-view.gob:39 msgid "Mailbox:" msgstr "Postlåda:" #: ../src/mn-popup.gob:46 #: ../src/mn-standard-message-view.gob:40 msgid "From:" msgstr "Från:" #: ../src/mn-popup.gob:47 #: ../src/mn-standard-message-view.gob:41 msgid "Subject:" msgstr "Ämne:" #: ../src/mn-popup.gob:96 #, c-format msgid "configuration key %s: there is no action named \"%s\"" msgstr "konfigurationsnyckel %s: det finns ingen åtgärd med namnet \"%s\"" #: ../src/mn-popup.gob:176 #, c-format msgid "unable to show popup: %s" msgstr "kunde inte visa popupruta: %s" #: ../src/mn-popup.gob:194 #, c-format msgid "unable to close popup: %s" msgstr "kunde inte stänga popupruta: %s" #. we set the summary here because libnotify requires it #. translators: header capitalization #: ../src/mn-popup.gob:205 msgid "New Message" msgstr "Nytt meddelande" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:114 #: ../ui/properties-dialog.glade.h:18 msgid "Mail Notification Properties" msgstr "Egenskaper för E-postnotifieraren" #: ../src/mn-properties-dialog.gob:232 msgid "No mailbox selected." msgstr "Ingen postlåda markerad." #: ../src/mn-properties-dialog.gob:237 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "%i postlåda markerad." msgstr[1] "%i postlådor markerade." #: ../src/mn-server.gob:136 #, c-format msgid "Unable to register the Mail Notification D-Bus server: %s." msgstr "Kunde inte registrera E-postnotifierarens D-Bus-server: %s." #: ../src/mn-shell.gob:290 #, c-format msgid "received %s signal, exiting" msgstr "tog emot %s-signal, avslutar" #: ../src/mn-shell.gob:430 msgid "No mail reader is configured" msgstr "Inget e-postprogram har konfigurerats" #: ../src/mn-shell.gob:431 msgid "You can configure a mail reader by choosing System → Preferences → Preferred Applications." msgstr "Du kan konfigurera ett e-postprogram genom att välja System → Inställningar → Föredragna program." #: ../src/mn-shell.gob:443 #: ../src/mn-shell.gob:449 #: ../src/mn-shell.gob:794 msgid "Unable to open the latest message" msgstr "Kunde inte öppna senaste meddelandet" #: ../src/mn-shell.gob:444 #, c-format msgid "Messages of mailbox \"%s\" cannot be opened." msgstr "Meddelanden i postlådan \"%s\" kan inte öppnas." #: ../src/mn-shell.gob:450 #: ../src/mn-shell.gob:714 msgid "You have no new mail." msgstr "Du har inga nya brev." #: ../src/mn-shell.gob:605 #, c-format msgid "%s (%i)" msgstr "%s (%i)" #. translators: header capitalization #: ../src/mn-shell.gob:610 msgid "Mailboxes Having New Mail" msgstr "Postlådor som innehåller nya brev" #. translators: header capitalization #: ../src/mn-shell.gob:629 msgid "Errors" msgstr "Fel" #. translators: header capitalization #: ../src/mn-shell.gob:649 msgid "Mail Summary" msgstr "E-postsammandrag" #: ../src/mn-shell.gob:689 #, c-format msgid "%i message is not displayed" msgid_plural "%i messages are not displayed" msgstr[0] "%i meddelande visas inte" msgstr[1] "%i meddelanden visas inte" #: ../src/mn-sound-file-chooser-dialog.gob:48 msgid "Select a File" msgstr "Välj en fil" #: ../src/mn-sound-file-chooser-dialog.gob:58 msgid "All files" msgstr "Alla filer" #: ../src/mn-sound-file-chooser-dialog.gob:63 msgid "Audio files" msgstr "Ljudfiler" #: ../src/mn-sound-player.gob:120 msgid "Unable to play sound" msgstr "Kunde inte spela upp ljud" #: ../src/mn-sound-player.gob:122 #: ../src/mn-util.c:1576 msgid "A command error has occurred in Mail Notification" msgstr "Ett kommandofel har inträffat i E-postnotifieraren" #: ../src/mn-ssl.c:191 msgid "unknown SSL/TLS error" msgstr "okänt SSL/TLS-fel" #: ../src/mn-standard-message-view.gob:45 msgid "Sent:" msgstr "Skickat:" #: ../src/mn-sylpheed-mailbox-backend.gob:229 #, c-format msgid "unable to open folder: %s" msgstr "kunde inte öppna mapp: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:317 #, c-format msgid "unable to close folder: %s" msgstr "kunde inte stänga mapp: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:320 #, c-format msgid "error while reading folder: %s" msgstr "fel vid läsning av mapp: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:368 #, c-format msgid "unable to set encoding: %s" msgstr "kunde inte ställa in kodning: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:443 #, c-format msgid "unexpected end of file" msgstr "oväntat slut på fil" #: ../src/mn-sylpheed-mailbox-backend.gob:483 #, c-format msgid "incompatible file version \"%i\"" msgstr "okompatibel filversion \"%i\"" #: ../src/mn-sylpheed-message.gob:69 #, c-format msgid "Unable to read %s: %s." msgstr "Kunde inte läsa %s: %s." #: ../src/mn-system-vfs-mailbox-properties.gob:38 #: ../src/mn-system-vfs-mailbox-properties.gob:46 #: ../src/mn-system-vfs-mailbox.gob:44 msgid "System mailbox" msgstr "Systempostlåda" #: ../src/mn-system-vfs-mailbox-properties.gob:73 #, c-format msgid "Your system mailbox is %s." msgstr "Din systempostlåda är %s." #: ../src/mn-system-vfs-mailbox-properties.gob:80 msgid "The location of your system mailbox could not be detected. Check the MAIL environment variable." msgstr "Platsen för din systempostlåda kunde inte identifieras. Kontrollera miljövariabeln MAIL." #: ../src/mn-system-vfs-mailbox.gob:71 msgid "system mailbox not found" msgstr "systempostlåda hittades inte" #: ../src/mn-test-mailbox.gob:38 msgid "Test mailbox" msgstr "Testpostlåda" #: ../src/mn-test-mailbox.gob:57 #, c-format msgid "Test message #%i" msgstr "Testmeddelande #%i" #. translators: header capitalization #: ../src/mn-test-mailbox.gob:63 msgid "Mail Notification Properties Dialog" msgstr "Egenskapsdialogrutan för E-postnotifieraren" #: ../src/mn-util.c:525 #: ../src/mn-util.c:548 #: ../src/mn-util.c:568 #: ../src/mn-util.c:590 msgid "A drag and drop error has occurred" msgstr "Ett drag-och-släpp-fel har inträffat" #: ../src/mn-util.c:526 msgid "An invalid location list has been received." msgstr "En ogiltig platslista har tagits emot." #: ../src/mn-util.c:569 msgid "An invalid Mozilla location has been received." msgstr "En ogiltig Mozilla-plats har tagits emot." #: ../src/mn-util.c:680 msgid "Unable to display help" msgstr "Kunde inte visa hjälp" #: ../src/mn-util.c:692 msgid "Unable to open link" msgstr "Kunde inte öppna länk" #: ../src/mn-util.c:883 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" msgid_plural "" "The following locations are invalid:\n" "\n" "%s" msgstr[0] "" "Följande plats är ogiltig:\n" "\n" "%s" msgstr[1] "" "Följande platser är ogiltiga:\n" "\n" "%s" #: ../src/mn-util.c:899 msgid "A fatal error has occurred in Mail Notification" msgstr "Ett ödesdigert fel har inträffat i E-postnotifieraren" #: ../src/mn-util.c:979 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "%i sekund sedan" msgstr[1] "%i sekunder sedan" #: ../src/mn-util.c:983 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "ungefär %i minut sedan" msgstr[1] "ungefär %i minuter sedan" #: ../src/mn-util.c:988 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "ungefär %i timme sedan" msgstr[1] "ungefär %i timmar sedan" #: ../src/mn-util.c:993 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "ungefär %i dag sedan" msgstr[1] "ungefär %i dagar sedan" #: ../src/mn-util.c:998 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "ungefär %i vecka sedan" msgstr[1] "ungefär %i veckor sedan" #: ../src/mn-util.c:1016 #, c-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i sekund" msgstr[1] "%i sekunder" #: ../src/mn-util.c:1020 #, c-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i minut" msgstr[1] "%i minuter" #: ../src/mn-util.c:1025 #, c-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i timme" msgstr[1] "%i timmar" #: ../src/mn-util.c:1030 msgid "1 day" msgstr "1 dygn" #: ../src/mn-util.c:1506 #, c-format msgid "unterminated substitution" msgstr "oavslutad ersättning" #: ../src/mn-util.c:1545 #, c-format msgid "unknown substitution \"%s\"" msgstr "okänd ersättning \"%s\"" #: ../src/mn-util.c:1548 #, c-format msgid "empty substitution" msgstr "tom ersättning" #: ../src/mn-vfs-mailbox.gob:236 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "kunde inte övervaka %s (%s), pollningsläge aktiverat" #: ../src/mn-vfs-mailbox.gob:426 msgid "unknown mailbox format" msgstr "okänt postlådeformat" #: ../src/mn-vfs-mailbox.gob:426 msgid "does not exist" msgstr "finns inte" #: ../src/mn-vfs.c:241 #, c-format msgid "Unable to write %s: %s." msgstr "Kunde inte skriva till %s: %s." #: ../src/mn-webmail-mailbox.gob:84 #, c-format msgid "unable to create a temporary file: %s" msgstr "kunde inte skapa en temporärfil: %s" #: ../src/mn-webmail-mailbox.gob:91 #, c-format msgid "unable to change the permissions of the temporary file: %s" msgstr "kunde inte ändra rättigheterna på temporärfilen: %s" #: ../src/mn-webmail-mailbox.gob:135 #, c-format msgid "unable to set encoding of %s: %s" msgstr "kunde inte ställa in kodningen för %s: %s" #: ../src/mn-webmail-mailbox.gob:192 msgid "configuration:" msgstr "konfiguration:" #: ../src/mn-webmail-mailbox.gob:220 #, c-format msgid "running %s" msgstr "kör %s" #: ../src/mn-webmail-mailbox.gob:224 #, c-format msgid "cannot execute \"%s\": %s" msgstr "kan inte köra \"%s\": %s" #: ../src/mn-webmail-mailbox.gob:229 msgid "standard output:" msgstr "standard ut:" #: ../src/mn-webmail-mailbox.gob:230 msgid "standard error output:" msgstr "standard fel:" #. translators: %s is a program name, as in "unknown fetchyahoo failure" #: ../src/mn-webmail-mailbox.gob:248 #, c-format msgid "unknown %s failure" msgstr "okänt fel med %s" #: ../src/mn-xml.c:51 #, c-format msgid "property \"%s\": unable to transform string \"%s\" into a value of type \"%s\"" msgstr "egenskap \"%s\": kunde inte transformera strängen \"%s\" till ett värde av typen \"%s\"" #: ../src/mn-yahoo-mailbox.gob:71 #, c-format msgid "unable to change the permissions of %s: %s" msgstr "kunde inte ändra rättigheterna på %s: %s" #: ../src/mn-yahoo-mailbox.gob:82 #, c-format msgid "unable to create %s: %s" msgstr "kunde inte skapa %s: %s" #: ../src/mn-yahoo-mailbox.gob:229 msgid "delay between mail checks too small" msgstr "fördröjning mellan brevkontroller är för liten" #: ../ui/mailbox-properties-dialog.glade.h:1 msgid "Delay Between Mail Checks" msgstr "Fördröjning mellan e-postkontroller" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:2 #: ../ui/properties-dialog.glade.h:6 msgid "General" msgstr "Allmänt" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox Name" msgstr "Namn på e-postlåda" #: ../ui/mailbox-properties-dialog.glade.h:5 msgid "Details" msgstr "Detaljer" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:6 #: ../ui/properties-dialog.glade.h:15 msgid "General" msgstr "Allmänt" #: ../ui/mailbox-properties-dialog.glade.h:7 msgid "Mailbox _type:" msgstr "_Typ av postlåda:" #: ../ui/mailbox-properties-dialog.glade.h:8 msgid "O_ther:" msgstr "Anna_n:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:2 msgid "Click Action" msgstr "Klickåtgärd" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:4 msgid "Expiration" msgstr "Låt popuprutor försvinna" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:8 msgid "Mailbox List" msgstr "Lista över postlådor" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:10 msgid "Position" msgstr "Position" #: ../ui/properties-dialog.glade.h:11 msgid "A_fter:" msgstr "E_fter:" #: ../ui/properties-dialog.glade.h:12 msgid "Co_nsider new mail as read" msgstr "A_nse nya brev som lästa" #: ../ui/properties-dialog.glade.h:13 msgid "De_sktop default" msgstr "Skrivb_ordets standard" #: ../ui/properties-dialog.glade.h:16 msgid "In the p_opup stack" msgstr "I p_opuprutestacken" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:20 msgid "Message Popups" msgstr "Meddelandepopuprutor" #: ../ui/properties-dialog.glade.h:21 msgid "Play a _sound when new mail arrives:" msgstr "Spela _upp ett ljud när nya brev anländer:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:23 msgid "Status Icon" msgstr "Statusikon" #: ../ui/properties-dialog.glade.h:24 msgid "_Attached to the status icon" msgstr "_Fäst till statusikonen" #: ../ui/properties-dialog.glade.h:25 msgid "_Display test messages" msgstr "_Visa testmeddelanden" #: ../ui/properties-dialog.glade.h:26 msgid "_Enable message popups" msgstr "_Aktivera meddelandepopuprutor" #: ../ui/properties-dialog.glade.h:27 msgid "_Launch the mail reader" msgstr "_Starta e-postprogrammet" #: ../ui/properties-dialog.glade.h:28 msgid "_Open the latest message" msgstr "_Öppna senaste meddelandet" #: ../ui/properties-dialog.glade.h:29 msgid "_Update the mail status" msgstr "_Uppdatera brevstatusen" #: ../ui/properties-dialog.glade.h:30 msgid "message popups tab|_Never" msgstr "A_ldrig" #~ msgid "Mail Notification automation" #~ msgstr "Automation för E-postnotifieraren" #~ msgid "Mail Notification automation factory" #~ msgstr "Automationsfabrik för E-postnotifieraren" #~ msgid "Evolution folder tree control" #~ msgstr "Kontroll av Evolutions mappträd" #~ msgid "Evolution folder tree control factory" #~ msgstr "Kontrollfabrik för Evolutions mappträd" #~ msgid "Mail Notification / Evolution glue" #~ msgstr "E-postnotifieraren / Evolution-klister" #~ msgid "Mail Notification / Evolution glue factory" #~ msgstr "E-postnotifieraren / Evolution-klisterfabrik" #~ msgid "" #~ "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", " #~ "the amount of time to wait before expiring message popups (seconds part)." #~ msgstr "" #~ "Om /apps/mail-notification/popups/expiration/enabled är inställd till " #~ "\"true\", är detta tidsperioden att vänta innan meddelandepopuprutor " #~ "försvinner (sekunddelen)." #~ msgid "Minutes to wait before expiring message popups" #~ msgstr "Minuter att vänta innan meddelandepopuprutor försvinner" #~ msgid "The currently selected URI" #~ msgstr "Aktuellt markerad URI" #~ msgid "" #~ "Bonobo could not locate the %s server. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo kunde inte hitta server %s. Kontrollera din installation av E-" #~ "postnotifieraren." #~ msgid "" #~ "Bonobo was unable to register the %s server. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo kunde inte registrera servern %s. Kontrollera din installation av " #~ "E-postnotifieraren." #~ msgid "unable to fetch message" #~ msgstr "kunde inte hämta meddelande" #~ msgid "A Bonobo exception (%s) has occurred in %s()." #~ msgstr "Ett undantag i Bonobo (%s) har inträffat i %s()." #~ msgid "" #~ "Bonobo could not locate the automation object. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo kunde inte hitta automationsobjektet. Kontrollera din installation " #~ "av E-postnotifieraren." #~ msgid "" #~ "Bonobo could not locate the %s file. Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Bonobo kunde inte hitta filen %s. Kontrollera din installation av E-" #~ "postnotifieraren." #~ msgid "Unknown" #~ msgstr "Okänt" #~ msgid "unknown error" #~ msgstr "okänt fel" #~ msgid "Unable to delete message" #~ msgstr "Kunde inte ta bort meddelandet" #~ msgid "file version missing" #~ msgstr "filversion saknas" #~ msgid "" #~ "Unable to load image \"%s\" (%s). Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Kunde inte läsa in bilden \"%s\" (%s). Kontrollera din installation av E-" #~ "postnotifieraren." #~ msgid "" #~ "Unable to load interface \"%s\". Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Kunde inte läsa in gränssnittet \"%s\". Kontrollera din installation av E-" #~ "postnotifieraren." #~ msgid "" #~ "Widget \"%s\" not found in interface \"%s\". Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Widgeten \"%s\" hittades inte i gränssnittet \"%s\". Kontrollera din " #~ "installation av E-postnotifieraren." #~ msgid "Unable to open self as a module (%s)." #~ msgstr "Kunde inte öppna själv som en modul (%s)." #~ msgid "" #~ "Signal handler \"%s\" not found. Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Signalhanteraren \"%s\" hittades inte. Kontrollera din installation av E-" #~ "postnotifieraren." #~ msgid "Unable to create a thread: %s." #~ msgstr "Kunde inte skapa en tråd: %s." #~ msgid "unable to get current time: %s" #~ msgstr "kunde inte hämta aktuell tid: %s" #~ msgid "unknown date" #~ msgstr "okänt datum" #~ msgid "Mailbox _name:" #~ msgstr "Namn på postlåda:" #~ msgid "_Delay between mail checks:" #~ msgstr "Fördröjning mellan brev_kontroller:" #~ msgid "_Use Default" #~ msgstr "_Använd standard" #~ msgid "seconds" #~ msgstr "sekunder" #~ msgid "Whether to display seen mail or not." #~ msgstr "Huruvida sedda brev ska visas eller inte." #~ msgid "unable to close file: %s" #~ msgstr "kunde inte stänga fil: %s" #~ msgid "_Never" #~ msgstr "Al_drig" #~ msgid "Sylpheed features:\n" #~ msgstr "Sylpheed erbjuder:\n" #~ msgid "Select _All" #~ msgstr "Markera _alla" #~ msgid "Co_nnect" #~ msgstr "A_nslut" #~ msgid "error loading image: %s" #~ msgstr "fel vid inläsning av bild: %s" #~ msgid "Commands" #~ msgstr "Kommandon" #~ msgid "Tooltip Mail Summary" #~ msgstr "Verktygstips för e-postsammandrag" #~ msgid "When _new mail arrives:" #~ msgstr "När _nya brev anländer:" #~ msgid "When all mail has _been read:" #~ msgstr "När alla brev har _blivit lästa:" #~ msgid "_Always display" #~ msgstr "Visa _alltid" #~ msgid "_Blink on errors" #~ msgstr "_Blinka vid fel" #~ msgid "_Display seen mail" #~ msgstr "_Visa sedda brev" #~ msgid "_Display this dialog" #~ msgstr "_Visa denna dialogruta" #~ msgid "icon tooltip's mail summary layout|Co_mpact" #~ msgstr "Ko_mpakt" #~ msgid "icon tooltip's mail summary layout|_Standard" #~ msgstr "_Standard" mail-notification-5.4.dfsg.1/po/es.po0000644000175000001440000017425311005111335017242 0ustar evilynuxusers# Spanish translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Nacho Hermoso de Mendoza , 2007. # msgid "" msgstr "" "Project-Id-Version: mail-notification 5.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-04-25 10:12+0200\n" "PO-Revision-Date: 2008-04-27 16:51+0200\n" "Last-Translator: Nacho Hermoso de Mendoza \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: KBabel 1.11.4\n" #: ../data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "Configurar Notificación de correo" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:296 #: ../src/mn-main.c:103 ../src/mn-main.c:424 ../src/mn-main.c:445 #: ../src/mn-main.c:496 msgid "Mail Notification" msgstr "Notificación de correo" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Notifica cuando llega un correo nuevo" #: ../data/mail-notification.schemas.in.in.h:1 msgid "Always display an icon" msgstr "Mostrar siempre un icono" #: ../data/mail-notification.schemas.in.in.h:2 msgid "Blink on errors" msgstr "Parpadear si hay errores" #: ../data/mail-notification.schemas.in.in.h:3 msgid "Click action" msgstr "Acción al hacer clic" #: ../data/mail-notification.schemas.in.in.h:4 msgid "Display a message count in the status icon" msgstr "Mostrar un mensaje con el número de objetos en el icono de estado" #: ../data/mail-notification.schemas.in.in.h:5 msgid "Display seen mail" msgstr "Muestra el correo visto" #: ../data/mail-notification.schemas.in.in.h:6 msgid "Enable message popups" msgstr "Habilitar mensajes emergentes" #: ../data/mail-notification.schemas.in.in.h:7 msgid "Expire message popups" msgstr "Terminar mensajes emergentes" #: ../data/mail-notification.schemas.in.in.h:8 msgid "Fallback character sets" msgstr "Juego de caracteres predeterminado" #: ../data/mail-notification.schemas.in.in.h:9 msgid "Fingerprints of trusted X509 certificates" msgstr "Huellas digitales de certificados X509 confiables" #: ../data/mail-notification.schemas.in.in.h:10 msgid "Height of properties dialog" msgstr "Altura del diálogo de propiedades" #: ../data/mail-notification.schemas.in.in.h:11 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "number of seconds to wait before expiring message popups." msgstr "" "Si /apps/mail-notification/popups/expiration/enabled está fijado en " "\"verdadero\", el número de segundos antes de que expiren los mensajes " "emergentes." #: ../data/mail-notification.schemas.in.in.h:12 msgid "Mail changed command" msgstr "Comando de correo cambiado" #: ../data/mail-notification.schemas.in.in.h:13 msgid "Mail read command" msgstr "Comando de correo leído" #: ../data/mail-notification.schemas.in.in.h:14 msgid "Maximum number of messages in the tooltip mail summary" msgstr "Número máximo de mensajes en el tooltip del sumario de correo." #: ../data/mail-notification.schemas.in.in.h:15 msgid "Maximum number of simultaneous popups" msgstr "Número de emergentes simultáneos máximo" #: ../data/mail-notification.schemas.in.in.h:16 msgid "Message popups actions" msgstr "Acciones de mensajes emergentes" #: ../data/mail-notification.schemas.in.in.h:17 msgid "Message popups position" msgstr "Posición de los mensajes emergentes" #: ../data/mail-notification.schemas.in.in.h:18 msgid "New mail command" msgstr "Comando para correo nuevo" #: ../data/mail-notification.schemas.in.in.h:19 msgid "New mail sound" msgstr "Sonido para correo nuevo" #: ../data/mail-notification.schemas.in.in.h:20 msgid "Play a sound when new mail arrives" msgstr "Reproducir un sonido al recibir correo nuevo" #: ../data/mail-notification.schemas.in.in.h:21 msgid "Play sound command" msgstr "Reproducir un comando de sonido " #: ../data/mail-notification.schemas.in.in.h:22 msgid "Run a command when all mail is read" msgstr "Ejecutar un comando cuando todo el correo está leído" #: ../data/mail-notification.schemas.in.in.h:23 msgid "Run a command when new mail arrives" msgstr "Ejecutar un comando cuando llega un correo nuevo" #: ../data/mail-notification.schemas.in.in.h:24 msgid "Run a command when the message list changes" msgstr "Ejecutar un comando cuando cambia la lista de mensajes" #: ../data/mail-notification.schemas.in.in.h:25 msgid "Seconds to wait before expiring message popups" msgstr "Segundos antes de cerrar los mensajes emergentes" #: ../data/mail-notification.schemas.in.in.h:26 msgid "" "The action to perform when the icon is clicked. Must be \"launch-mail-reader" "\", \"open-latest-message\", \"consider-new-mail-as-read\" or \"update-mail-" "status\"." msgstr "" "La acción a ejecutar cuando se hace clic en el icono. Tiene que ser " "\"mostrar-diálogo-de-propiedades\", \"lanzar-el-cliente-de-correo\" o " "\"actualizar-el estado-de-correo\"." #: ../data/mail-notification.schemas.in.in.h:27 msgid "The command to run when all mail is read." msgstr "Comando a ejecutar cuando todo el correo está leído." #: ../data/mail-notification.schemas.in.in.h:28 msgid "The command to run when new mail arrives." msgstr "Comando a ejecutar cuando llega correo nuevo." #: ../data/mail-notification.schemas.in.in.h:29 msgid "The command to run when the message list changes." msgstr "El comando a ejecutar cuando cambia la lista de mensajes." #: ../data/mail-notification.schemas.in.in.h:31 #, no-c-format msgid "" "The command to use to play a sound file. The string %file will be " "substituted with the filename of the sound to play." msgstr "" "Comando a utilizar para reproducir un archivo de sonido. La cadena %file " "será sustituida por el nombre de archivo del sonido a reproducir." #: ../data/mail-notification.schemas.in.in.h:32 msgid "The height of the properties dialog in pixels." msgstr "La altura del diálogo de propiedades en píxels." #: ../data/mail-notification.schemas.in.in.h:33 msgid "" "The list of character sets to attempt conversion from when uncompliant 8-bit " "data is encountered in message headers. The first character set allowing a " "successful conversion will be used. The special name \"user\" will be " "replaced with the character set of the user's locale. Note that Mail " "Notification must be restarted for changes to take effect." msgstr "" "Cuando se encuentren datos de 8 bits no estándares en la cabecera del " "mensaje, se intentará convertir al juego de caracteres por defecto. Se " "utilizará el primer juego de caracteres que permita una conversión con " "éxito. El nombre especial \"user\" se reemplazará con el juego de caracteres " "del usuario local. Notificación de correo deberá ser reiniciado para que los " "cambios surjan efecto." #: ../data/mail-notification.schemas.in.in.h:34 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" "Lista de servidores confiables SSL/TLS (servidor:puerto) sin certificado " "X509." #: ../data/mail-notification.schemas.in.in.h:35 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "" "Lista de certificados X509 confiables, representados por las huellas " "digitales MD5." #: ../data/mail-notification.schemas.in.in.h:36 msgid "The maximum number of messages to display in the tooltip mail summary." msgstr "" "El número máximo de mensajes mostrados en el tooltip del sumario de correo." #: ../data/mail-notification.schemas.in.in.h:37 msgid "" "The maximum number of popups to display simultaneously. If this limit is " "exceeded, only the most recent messages will be displayed. If the /apps/mail-" "notification/popups/position key is set to \"attached\", this limit will be " "ignored and only one popup will be allowed." msgstr "" "Número máximo de emergentes mostrados simultáneamente. Si se excede este " "límite, solo se mostrarán los mensajes mas recientes. Si la clave /apps/mail-" "notification/popups/position está en \"attached\", este límite se ignorará y " "se solo se permitirá un emergente." #: ../data/mail-notification.schemas.in.in.h:38 msgid "" "The ordered list of actions to include in the message popups. Each element " "must be \"open\", \"mark-as-read\", \"mark-as-spam\" or \"delete\"." msgstr "" "La lista ordenada de acciones a incluir en los mensajes emergentes. Cada " "elemento debe ser \"abrir\", \"marcar-como-leído\", \"marcar-como-spam\" o " "\"eliminar\"." #: ../data/mail-notification.schemas.in.in.h:39 msgid "The position of the message popups. Must be \"attached\" or \"free\"." msgstr "" "La posición de los mensajes emergentes. Tiene que ser \"adjunto\" o \"libre" "\"." #: ../data/mail-notification.schemas.in.in.h:40 msgid "The sound file to play when new mail arrives." msgstr "Sonido a reproducir cuando llega correo nuevo." #: ../data/mail-notification.schemas.in.in.h:41 msgid "" "The type of mail summary to display in the icon's tooltip. Must be \"standard" "\", \"compact\" or \"none\"." msgstr "" "El tipo de resumen de correo que se mostrará como un consejo del icono. " "Tiene que ser \"estandar\", \"compacto\" o \"ninguno\"." #: ../data/mail-notification.schemas.in.in.h:42 msgid "The width of the properties dialog in pixels." msgstr "La anchura del diálogo de propiedades en píxels." #: ../data/mail-notification.schemas.in.in.h:43 msgid "Tooltip mail summary" msgstr "Resumen de correo" #: ../data/mail-notification.schemas.in.in.h:44 msgid "Trusted servers list" msgstr "Lista de servidores confiables" #: ../data/mail-notification.schemas.in.in.h:45 msgid "Whether the status icon should blink on errors or not." msgstr "Hacer o no hacer que el icono parpadee cuando hay errores." #: ../data/mail-notification.schemas.in.in.h:46 msgid "Whether to display a message count in the status icon or not." msgstr "" "Mostrar o no mostrar mensaje con número de objetos en el icono de estado." #: ../data/mail-notification.schemas.in.in.h:47 msgid "Whether to display an icon when there is no new mail or not." msgstr "Mostrar o no mostrar un icono cuando no hay correo nuevo." #: ../data/mail-notification.schemas.in.in.h:48 msgid "" "Whether to display mail which is still marked as unread but has been seen or " "not." msgstr "" "Mostrar o no mostrar el correo marcado como no leído pero que ha sido visto." #: ../data/mail-notification.schemas.in.in.h:49 msgid "Whether to enable message popups or not." msgstr "Habilitar o no habilitar los mensajes emergentes." #: ../data/mail-notification.schemas.in.in.h:50 msgid "" "Whether to expire message popups or not. Must be \"default\", \"false\" or " "\"true\"." msgstr "" "Terminar o no terminar mensajes emergentes. Debe de ser \"predeterminado\", " "\"falso\" o \"verdadero\"." #: ../data/mail-notification.schemas.in.in.h:51 msgid "Whether to play a sound when new mail arrives or not." msgstr "Reproducir o no reproducir un sonido al llegar correo nuevo." #: ../data/mail-notification.schemas.in.in.h:52 msgid "Whether to run a command when all mail is read or not." msgstr "Ejecutar o no ejecutar un comando cuando todo el correo está leído." #: ../data/mail-notification.schemas.in.in.h:53 msgid "Whether to run a command when new mail arrives or not." msgstr "Ejecutar o no ejecutar un comando cuando llega correo nuevo." #: ../data/mail-notification.schemas.in.in.h:54 msgid "Whether to run a command when the message list changes or not." msgstr "Ejecutar o no ejecutar un comando cuando cambia la lista de mensajes." #: ../data/mail-notification.schemas.in.in.h:55 msgid "Width of properties dialog" msgstr "Anchura del diálogo de propiedades" #: ../src/eggtrayicon.c:133 msgid "Orientation" msgstr "Orientación" #: ../src/eggtrayicon.c:134 msgid "The orientation of the tray." msgstr "La orientación de la bandeja." #. translators: header capitalization #: ../src/mn-about-dialog.gob:47 msgid "A Mail Notification Icon" msgstr "Icono de Notificación de correo" #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:55 msgid "translator-credits" msgstr "Nacho Hermoso de Mendoza " #: ../src/mn-auth-combo-box.gob:98 #: ../src/mn-autodetect-mailbox-properties.gob:106 msgid "Autodetect" msgstr "Autodetectar" #. translators: header capitalization #: ../src/mn-authenticated-mailbox-properties.gob:56 msgid "Account" msgstr "Cuenta" #: ../src/mn-authenticated-mailbox-properties.gob:59 msgid "_Username:" msgstr "_Nombre de usuario:" #: ../src/mn-authenticated-mailbox-properties.gob:63 msgid "_Password:" msgstr "_Contraseña:" #: ../src/mn-authenticated-mailbox-properties.gob:140 msgid "Saving password to keyring..." msgstr "Guardando contraseñas al anillo de claves..." #: ../src/mn-authenticated-mailbox-properties.gob:185 msgid "Retrieving password from keyring..." msgstr "Recuperando contraseña del anillo de claves..." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:306 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "password you have entered is invalid.\n" "\n" "Please re-enter your password." msgstr "" "Notificación de correo no puede entrar al buzón %s %s, posiblemente porque " "la contraseña introducida no es válida.\n" "\n" "Por favor, introduce de nuevo la contraseña." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:308 #, c-format msgid "Enter your password for %s mailbox %s." msgstr "Introduce tu contraseña para %s el buzón %s." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: ../src/mn-authenticated-mailbox.gob:381 msgid "Authentication Required" msgstr "Autenticación requerida" #: ../src/mn-authenticated-mailbox.gob:463 msgid "Unable to save the mailbox password" msgstr "No se puede guardar la contraseña de los buzones" #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:465 #, c-format msgid "The password of %s mailbox %s could not be saved to the keyring." msgstr "" "La contraseña del buzón %s %s no se pudo guardar en el anillo de claves." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:119 #: ../src/mn-system-vfs-mailbox-properties.gob:57 msgid "Location" msgstr "Ubicación" #: ../src/mn-autodetect-mailbox-properties.gob:121 msgid "_Location:" msgstr "_Ubicación:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:129 msgid "_Browse..." msgstr "_Examinar..." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:169 msgid "Select a File or Folder" msgstr "Selecciona un fichero o directorio" #: ../src/mn-base-mbox-mailbox-backend.gob:346 #, c-format msgid "unable to open mailbox: %s" msgstr "no se puede abrir el buzón: %s" #: ../src/mn-client-session.c:177 #, c-format msgid "resolving %s" msgstr "resolviendo %s" #: ../src/mn-client-session.c:193 #, c-format msgid "unable to resolve %s: %s" msgstr "no se puede resolver %s: %s" #: ../src/mn-client-session.c:234 #, c-format msgid "network address #%i" msgstr "dirección de red #%i" #: ../src/mn-client-session.c:237 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "no se puede convertir la dirección de red #%i en forma de texto: %s" #: ../src/mn-client-session.c:248 #, c-format msgid "%s: unsupported address family" msgstr "%s: familia de direcciones no soportada" #: ../src/mn-client-session.c:255 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: no se puede crear el socket: %s" #: ../src/mn-client-session.c:259 #, c-format msgid "connecting to %s (%s) port %i" msgstr "conectando a %s (%s) puerto %i" #: ../src/mn-client-session.c:262 #, c-format msgid "unable to connect: %s" msgstr "no se puede conectar: %s" #: ../src/mn-client-session.c:267 msgid "connected successfully" msgstr "conectado con éxito" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:281 #, c-format msgid "unable to connect to %s" msgstr "no se puede conectar a %s" #: ../src/mn-client-session.c:333 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "la respuesta \"%s\" no es válida en el contexto actual" #: ../src/mn-client-session.c:362 #, c-format msgid "unable to parse response \"%s\"" msgstr "no se puede analizar la respuesta: \"%s\"" #: ../src/mn-client-session.c:626 msgid "server name not found in certificate" msgstr "nombre de servidor no encontrado en el certificado" #: ../src/mn-client-session.c:631 #, c-format msgid "" "user-provided server name \"%s\" does not match certificate-provided server " "name \"%s\"" msgstr "" "el nombre del servidor \"%s\" proporcionado por el usuario no coincide con " "el nombre del servidor \"%s\" proporcionado por el certificado" #: ../src/mn-client-session.c:645 #, c-format msgid "\"%s\", " msgstr "\"%s\", " #: ../src/mn-client-session.c:647 ../src/mn-client-session.c:1582 #: ../src/mn-yahoo-mailbox.gob:218 #, c-format msgid "\"%s\"" msgstr "\"%s\"" #: ../src/mn-client-session.c:650 #, c-format msgid "" "user-provided server name \"%s\" matches none of the certificate-provided " "server names %s" msgstr "" "el nombre del servidor \"%s\" proporcionado por el usuario no coincide con " "ninguno de los nombres de servidores \"%s\" proporcionados por el certificado" #: ../src/mn-client-session.c:740 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "no se puede inicializar la biblioteca OpenSSL: %s" #: ../src/mn-client-session.c:748 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "no se puede crear el objeto SSL/TLS: %s" #: ../src/mn-client-session.c:754 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "no se puede ajustar el descriptor de fichero SSL/TLS: %s" #: ../src/mn-client-session.c:761 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "no se puede realizar la negociación SSL/TLS: %s" #: ../src/mn-client-session.c:767 msgid "untrusted server" msgstr "servidor no confiable" #: ../src/mn-client-session.c:771 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "una capa SSL/TLS está ahora activa (%s, %s %i-bit)" #: ../src/mn-client-session.c:819 ../src/mn-client-session.c:826 #, c-format msgid "unable to read from server: %s" msgstr "no se puede leer desde el servidor: %s" #: ../src/mn-client-session.c:824 msgid "unable to read from server: EOF" msgstr "no se puede leer desde el servidor: EOF" #: ../src/mn-client-session.c:836 #, c-format msgid "unable to decode data using SASL: %s" msgstr "no se pueden descifrar los datos usando SASL: %s" #: ../src/mn-client-session.c:980 #, c-format msgid "unable to encode data using SASL: %s" msgstr "no se puede codificar los datos usando SASL: %s" #: ../src/mn-client-session.c:1009 ../src/mn-client-session.c:1016 #, c-format msgid "unable to write to server: %s" msgstr "no se puede escribir en el servidor: %s" #: ../src/mn-client-session.c:1014 msgid "unable to write to server: EOF" msgstr "no se puede escribir en el servidor: EOF" #: ../src/mn-client-session.c:1043 ../src/mn-pop3-mailbox.gob:448 #, c-format msgid "unable to encode Base64: %s" msgstr "no se puede codificar Base64: %s" #: ../src/mn-client-session.c:1220 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "no se puede inicializar la biblioteca SASL: %s" #: ../src/mn-client-session.c:1232 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "no se puede recuperar la dirección local del socket: %s" #: ../src/mn-client-session.c:1238 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "no se puede recuperar la dirección remota del socket: %s" #: ../src/mn-client-session.c:1272 #, c-format msgid "unable to set SASL security properties: %s" msgstr "no se pueden ajustar las propiedades de seguridad SASL: %s" #: ../src/mn-client-session.c:1296 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "" "no se puede iniciar la autenticación SASL: SASL ha preguntado algo que no " "sabíamos" #: ../src/mn-client-session.c:1315 #, c-format msgid "unable to start SASL authentication: %s" msgstr "no se puede iniciar la autenticación SASL: %s" #: ../src/mn-client-session.c:1319 #, c-format msgid "unable to create a SASL connection: %s" msgstr "no se puede crear una conexión SASL: %s" #: ../src/mn-client-session.c:1366 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "" "SASL ha preguntado algo que no sabíamos, abortando la autenticación SASL" #: ../src/mn-client-session.c:1383 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, abortando la autenticación SASL" #. compliance error #: ../src/mn-client-session.c:1388 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "no se puede descifrar la entrada Base64 del servidor: %s" #: ../src/mn-client-session.c:1424 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "se ha activado una capa de seguridad SASL de factor de fuerza %i" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1429 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "no se puede obtener la propiedad SASL_MAXOUTBUF: %s" #: ../src/mn-client-session.c:1435 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "aviso: no se puede leer la propiedad SASL_SSF: %s" #: ../src/mn-client-session.c:1583 msgid "unknown server error" msgstr "error desconocido del servidor" #: ../src/mn-compact-message-view.gob:39 msgid "Mailbox" msgstr "Buzón" #: ../src/mn-compact-message-view.gob:40 msgid "From" msgstr "De" #: ../src/mn-compact-message-view.gob:41 msgid "Subject" msgstr "Asunto" #: ../src/mn-compact-message-view.gob:42 msgid "Sent" msgstr "Enviado" #: ../src/mn-conf.c:249 #, c-format msgid "cannot find default value of configuration key \"%s\"" msgstr "" "no se puede encontrar el valor predeterminado de la clave de configuración " "\"%s\"" #: ../src/mn-conf.c:254 msgid "" "The default configuration has not been installed properly. Please check your " "Mail Notification installation." msgstr "" "La configuración por defecto no ha sido instalada correctamente. Por favor, " "comprueba la instalación de Notificación de correo." #: ../src/mn-conf.c:291 msgid "A directory creation error has occurred" msgstr "Se ha producido un error creando un directorio" #: ../src/mn-conf.c:292 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "No se puede crear el directorio \"%s\": %s." #: ../src/mn-conf.c:361 #, c-format msgid "recursively unsetting %s" msgstr "desajustando recursivamente %s" #: ../src/mn-conf.c:365 msgid "syncing the GConf database" msgstr "sincronizando con la base de datos de GConf" #: ../src/mn-conf.c:368 msgid "completed" msgstr "completado" #: ../src/mn-custom-vfs-mailbox.gob:72 msgid "invalid location" msgstr "ubicación inválida" #: ../src/mn-evolution-folder-tree-client.gob:269 msgid "" "Mail Notification can not contact Evolution. Make sure that Evolution is " "running and that the Evolution Jean-Yves Lefort's Mail Notification plugin " "is loaded." msgstr "" "Notificación de correo no puede contactar con Evolution. Comprueba que " "Evolution está en ejecución y que está cargado el conector con Notificación " "de correo." #. translators: header capitalization #: ../src/mn-evolution-mailbox-properties.gob:71 #: ../src/mn-webmail-mailbox-properties.gob:92 msgid "Folder" msgstr "Carpeta" #: ../src/mn-evolution-mailbox.gob:225 msgid "unable to contact Evolution" msgstr "no se puede contactar con Evolution" #: ../src/mn-evolution-plugin.c:151 msgid "A fatal error has occurred in the Evolution Mail Notification plugin" msgstr "" "Se ha producido un error fatal en el conector para Evolution del " "Notificación de correo" #: ../src/mn-evolution-plugin.c:152 ../src/mn-main.c:250 msgid "The connection to the D-Bus session bus was lost." msgstr "Se ha perdido la conexión con D-Bus session." #: ../src/mn-evolution-plugin.c:175 ../src/mn-evolution-plugin.c:188 #: ../src/mn-evolution-plugin.c:226 msgid "Unable to initialize the Mail Notification plugin" msgstr "No se puede iniciar el conector de Notificación de correo" #: ../src/mn-evolution-plugin.c:176 ../src/mn-main.c:270 #, c-format msgid "Unable to connect to the D-Bus session bus: %s." msgstr "No se puede conectar con D-Bus session bus: %s" #: ../src/mn-evolution-plugin.c:227 #, c-format msgid "Unable to register the Mail Notification Evolution D-Bus server: %s." msgstr "" "No se puede registrar el Evolution D-Bus server de Notificación de correo: %s" #: ../src/mn-evolution-server.gob:152 #, c-format msgid "folder not found" msgstr "carpeta no encontrada" #: ../src/mn-evolution-server.gob:329 #, c-format msgid "message not found" msgstr "mensaje no encontrado" #. #. * translators: GTK+ has the same message used in the same #. * context; please use the GTK+ translation for consistency #. #: ../src/mn-file-chooser-button.gob:179 msgid "(None)" msgstr "(Ninguno)" #. translators: header capitalization #: ../src/mn-gmail-mailbox-properties.gob:105 msgid "Gmail Label" msgstr "Etiqueta de Gmail" #: ../src/mn-gmail-mailbox-properties.gob:107 msgid "_Restrict to this label:" msgstr "_Restringir a esta etiqueta:" #: ../src/mn-gmail-mailbox.gob:154 msgid "invalid feed location" msgstr "ubicación del feed inválida" #: ../src/mn-gmail-mailbox.gob:175 #, c-format msgid "retrieving feed from %s" msgstr "recuperando el feed desde %s" #: ../src/mn-gmail-mailbox.gob:182 #, c-format msgid "unable to retrieve feed: %s" msgstr "no se puede recuperar el feed: %s" #: ../src/mn-gmail-mailbox.gob:191 #, c-format msgid "feed retrieved successfully (%i byte)" msgid_plural "feed retrieved successfully (%i bytes)" msgstr[0] "feed recuperado con éxito (%i byte)" msgstr[1] "feed recuperado con éxito (%i bytes)" #: ../src/mn-gmail-mailbox.gob:203 ../src/mn-gmail-mailbox.gob:254 msgid "unable to parse feed" msgstr "no se puede analizar el feed" #: ../src/mn-gmime-stream-vfs.gob:48 #: ../src/mn-sylpheed-mailbox-backend.gob:209 #, c-format msgid "unable to read %s: %s" msgstr "no se puede leer %s: %s" #: ../src/mn-gmime-stream-vfs.gob:50 ../src/mn-webmail-mailbox.gob:141 #, c-format msgid "unable to write to %s: %s" msgstr "no se puede escribir en %s: %s" #: ../src/mn-gmime-stream-vfs.gob:52 #, c-format msgid "unable to seek in %s: %s" msgstr "no se puede buscar en %s: %s" #: ../src/mn-gmime-stream-vfs.gob:54 #, c-format msgid "unable to tell position of %s: %s" msgstr "no se puede fijar la posición de %s: %s" #: ../src/mn-gmime-stream-vfs.gob:56 ../src/mn-mh-mailbox-backend.gob:216 #: ../src/mn-webmail-mailbox.gob:147 #, c-format msgid "unable to close %s: %s" msgstr "no se puede cerrar %s: %s" #: ../src/mn-hotmail-mailbox.gob:286 ../src/mn-imap-mailbox.gob:1680 #: ../src/mn-pop3-mailbox.gob:1165 msgid "authentication failed" msgstr "la autenticación ha fallado" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:109 msgid "IMAP Mailbox" msgstr "Buzón IMAP" #: ../src/mn-imap-mailbox-properties.gob:111 #: ../src/mn-webmail-mailbox-properties.gob:94 msgid "In_box" msgstr "Recibi_dos" #: ../src/mn-imap-mailbox-properties.gob:116 #: ../src/mn-webmail-mailbox-properties.gob:99 #: ../ui/mailbox-properties-dialog.glade.h:10 msgid "_Other:" msgstr "_Otros:" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:129 msgid "Use the IDLE Extension" msgstr "Utilizar la extensión IDLE" #: ../src/mn-imap-mailbox-properties.gob:133 msgid "IMAP connection tab|_Never" msgstr "_Nunca" #: ../src/mn-imap-mailbox-properties.gob:134 msgid "A_utodetect" msgstr "A_utodetectar" #: ../src/mn-imap-mailbox-properties.gob:135 msgid "Al_ways" msgstr "Siem_pre" #: ../src/mn-imap-mailbox.gob:384 msgid "server did not send capabilities" msgstr "el servidor no ha enviado las capacidades" #: ../src/mn-imap-mailbox.gob:551 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "" "el servidor ha avisado LOGINDISABLED, no se usará la autenticación LOGIN" #: ../src/mn-imap-mailbox.gob:552 msgid "unable to login" msgstr "no se puede entrar" #: ../src/mn-imap-mailbox.gob:1063 msgid "" "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, " "logging out" msgstr "" "\"Utiliza la extensión IDLE\" poner en \"nunca\" en las propiedades del " "buzón, saliendo" #: ../src/mn-imap-mailbox.gob:1074 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "el servidor remoto ejecuta %s, no se usará la extensión IDLE" #: ../src/mn-imap-mailbox.gob:1079 #, c-format msgid "" "the remote server runs %s, the IDLE extension might not function properly" msgstr "" "el servidor remoto ejecuta %s, la extensión IDLE podría no funcionar " "correctamente" #: ../src/mn-imap-mailbox.gob:1088 msgid "the remote server does not support the IDLE extension, logging out" msgstr "el servidor remoto no soporta la extensión IDLE, saliendo" #: ../src/mn-imap-mailbox.gob:1590 ../src/mn-pop3-mailbox.gob:309 msgid "server does not support in-band SSL/TLS" msgstr "el servidor no soporta SSL/TLS en banda" #: ../src/mn-imap-mailbox.gob:1614 ../src/mn-pop3-mailbox.gob:1080 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" "se ha seleccionado un mecanismo de autenticación SASL, pero el soporte de " "SASL no está disponible" #: ../src/mn-imap-mailbox.gob:1624 ../src/mn-pop3-mailbox.gob:1100 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "mecanismo de autenticación desconocido \"%s\"" #: ../src/mn-imap-mailbox.gob:1656 ../src/mn-pop3-mailbox.gob:1136 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "" "deshabilitando el mecanismo \"%s\" y volviendo a probar con la autenticación " "SASL" #: ../src/mn-imap-mailbox.gob:1668 msgid "falling back to IMAP LOGIN authentication" msgstr "pasando a autenticación con IMAP LOGIN" #: ../src/mn-imap-mailbox.gob:1724 ../src/mn-pop3-mailbox.gob:744 #, c-format msgid "cannot retrieve %i message" msgid_plural "cannot retrieve %i messages" msgstr[0] "no se puede recuperar el mensaje %i" msgstr[1] "no se pueden recuperar los mensajes %i" #. translators: header capitalization #: ../src/mn-mail-icon.gob:86 msgid "_Mail Reader" msgstr "_Cliente de correo" #. translators: header capitalization #: ../src/mn-mail-icon.gob:88 msgid "_Open Latest Message" msgstr "_Abrir el último mensaje" #. translators: header capitalization #: ../src/mn-mail-icon.gob:93 msgid "_Consider New Mail as Read" msgstr "_Considerar correo nuevo como leído" #. translators: header capitalization #: ../src/mn-mail-icon.gob:95 ../src/mn-mailbox-view.gob:312 msgid "_Update" msgstr "_Actualizar" #. translators: header capitalization #: ../src/mn-mail-icon.gob:106 msgid "R_emove From Notification Area" msgstr "_Suprimir del Área de notificación" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:106 #, c-format msgid "%s Properties" msgstr "Propiedades de %s" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:210 msgid "Add a Mailbox" msgstr "Añadir un Buzón" #: ../src/mn-mailbox-properties-dialog.gob:585 msgid "_Default:" msgstr "Pre_determinados:" #: ../src/mn-mailbox-properties-dialog.gob:587 #: ../ui/mailbox-properties-dialog.glade.h:9 msgid "_Default" msgstr "Pre_determinados" #: ../src/mn-mailbox-properties-dialog.gob:614 msgid "D_efault:" msgstr "Pr_edeterminados:" #: ../src/mn-mailbox-properties-dialog.gob:618 #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "D_efault" msgstr "Pr_edeterminados" #: ../src/mn-mailbox-view.gob:249 msgid "A paste error has occurred" msgstr "Se ha producido un error de pegado" #: ../src/mn-mailbox-view.gob:571 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "buzón %s no gestionado (%s)" #: ../src/mn-mailbox-view.gob:575 #, c-format msgid "%s mailbox" msgstr "buzón %s" #: ../src/mn-mailbox-view.gob:586 msgid "detecting mailbox type..." msgstr "detectando el tipo de buzón..." #: ../src/mn-mailbox.gob:559 #, c-format msgid "\"type\" attribute missing" msgstr "perdido el atributo de \"tipo\"" #: ../src/mn-mailbox.gob:566 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "tipo de buzón \"%s\" desconocido" #: ../src/mn-mailbox.gob:965 #, c-format msgid "property \"%s\" has no value" msgstr "la propiedad \"%s\" no tiene valor" #: ../src/mn-mailbox.gob:1044 ../src/mn-mailbox.gob:1062 #: ../src/mn-shell.gob:624 #, c-format msgid "%s: %s" msgstr "%s: %s" #: ../src/mn-mailboxes.gob:248 msgid "An error has occurred while importing old mailboxes" msgstr "Se ha producido un error mientras importaba buzones antiguos" #: ../src/mn-mailboxes.gob:303 msgid "Unable to load the mailboxes configuration" msgstr "No se puede cargar la configuración de los buzones" #: ../src/mn-mailboxes.gob:350 #, c-format msgid "Unable to parse the XML document." msgstr "No se puede analizar el documento XML." #: ../src/mn-mailboxes.gob:357 #, c-format msgid "The root element is missing." msgstr "El elemento raíz está perdido." #: ../src/mn-mailboxes.gob:363 #, c-format msgid "The root element \"%s\" is invalid." msgstr "El elemento raíz \"%s\" no es válido." #: ../src/mn-mailboxes.gob:385 #, c-format msgid "On line %i: %s." msgstr "En linea %i: %s." #: ../src/mn-mailboxes.gob:390 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "En linea %i: elemento \"%s\" desconocido." #: ../src/mn-mailboxes.gob:399 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "Se ha producido un error cargando la configuración de los buzones" msgstr[1] "Se han producido errores cargando la configuración de los buzones" #: ../src/mn-mailboxes.gob:424 msgid "Unable to save the mailboxes configuration" msgstr "No se puede salvar la configuración de los buzones" #: ../src/mn-mailboxes.gob:469 ../src/mn-vfs.c:233 #, c-format msgid "Unable to remove %s: %s." msgstr "No se puede suprimir %s: %s." #: ../src/mn-mailboxes.gob:477 #, c-format msgid "Unable to create %s: %s." msgstr "No se puede crear %s: %s." #: ../src/mn-mailboxes.gob:484 #, c-format msgid "Unable to open %s for writing: %s." msgstr "No se puede abrir %s para escritura: %s." #: ../src/mn-mailboxes.gob:491 #, c-format msgid "Unable to write the XML document." msgstr "No se puede escribir el documento XML." #: ../src/mn-mailboxes.gob:497 #, c-format msgid "Unable to close %s: %s." msgstr "No se puede cerrar %s: %s." #: ../src/mn-mailboxes.gob:507 ../src/mn-mailboxes.gob:514 ../src/mn-vfs.c:251 #: ../src/mn-vfs.c:259 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "No se puede renombrar %s a %s: %s." #. non fatal #: ../src/mn-mailboxes.gob:520 ../src/mn-vfs.c:269 #, c-format msgid "unable to delete %s: %s" msgstr "no se puede suprimir %s: %s" #: ../src/mn-mailboxes.gob:550 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "%s tiene %i mensaje nuevo" msgstr[1] "%s tiene %i mensajes nuevos" #: ../src/mn-mailboxes.gob:576 #, c-format msgid "%s reported an error: %s" msgstr "%s ha generado un error: %s" #: ../src/mn-maildir-mailbox-backend.gob:127 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "no se puede abrir la carpeta \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:219 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "no se puede cerrar la carpeta \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:222 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "se ha producido un error leyendo la carpeta \"%s\": %s" #: ../src/mn-maildir-mailbox-backend.gob:253 #: ../src/mn-mh-mailbox-backend.gob:210 #: ../src/mn-sylpheed-mailbox-backend.gob:311 #, c-format msgid "cannot read %i message" msgid_plural "cannot read %i messages" msgstr[0] "no se puede leer el mensaje %i" msgstr[1] "no se pueden leer los mensajes %i" #: ../src/mn-maildir-message.gob:159 msgid "Delete message?" msgstr "¿Eliminar mensaje?" #: ../src/mn-maildir-message.gob:225 msgid "The message cannot be moved to the trash. Permanently delete it?" msgstr "" "El mensaje no se puede mover a la papelera. ¿Eliminarlo permanentemente?" #: ../src/mn-maildir-message.gob:250 #, c-format msgid "" "The message could not be moved to the trash (%s). Permanently delete it?" msgstr "" "El mensaje no se pudo mover a la papelera (%s). ¿Eliminarlo permanentemente?" #: ../src/mn-main.c:72 msgid "yes" msgstr "sí" #: ../src/mn-main.c:72 msgid "no" msgstr "no" #: ../src/mn-main.c:103 #, c-format msgid "%s version %s\n" msgstr "%s versión %s\n" #: ../src/mn-main.c:108 #, c-format msgid "Mailbox backends:\n" msgstr "Entornos del buzón:\n" #: ../src/mn-main.c:113 #, c-format msgid "IMAP and POP3 features:\n" msgstr "Características de POP3 e IMAP:\n" #: ../src/mn-main.c:200 #, c-format msgid "Unable to contact the running Mail Notification instance: %s." msgstr "" "No se puede contactar con la instancia en ejecución de Notificación de " "correo: %s." #: ../src/mn-main.c:240 #, c-format msgid "%s option ignored since Mail Notification is not already running" msgstr "" "la opción %s se ignora puesto que Notificación de correo ya no se está " "ejecutando" #: ../src/mn-main.c:334 msgid "Show version information" msgstr "Muestra la información de la versión" #: ../src/mn-main.c:343 msgid "Enable informational output" msgstr "Habilita la salida de información" #: ../src/mn-main.c:352 msgid "Display the properties dialog" msgstr "Mostrar el diálogo de propiedades" #: ../src/mn-main.c:361 msgid "Display the about dialog" msgstr "Mostrar el diálogo Acerca de" #: ../src/mn-main.c:370 msgid "Consider new mail as read" msgstr "Considerar nuevo correo como leído" #: ../src/mn-main.c:379 msgid "Update the mail status" msgstr "Actualizar el estado del correo" #: ../src/mn-main.c:388 msgid "Print a XML mail summary" msgstr "Imprime un resumen de correos en XML" #: ../src/mn-main.c:397 msgid "Unset obsolete GConf configuration" msgstr "Desajusta la configuración obsoleta de GConf" #: ../src/mn-main.c:406 msgid "Quit Mail Notification" msgstr "Salir del Notificación de correo" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: ../src/mn-main.c:432 msgid "multi-threading is not available" msgstr "no está disponible el muti-threading" #: ../src/mn-main.c:473 msgid "Mail Notification is not running" msgstr "Notificación de correo no se está ejecutando" #: ../src/mn-main.c:485 msgid "Unable to initialize the GnomeVFS library." msgstr "No se puede inicializar la biblioteca GnomeVFS." #: ../src/mn-main.c:498 msgid "An initialization error has occurred in Mail Notification" msgstr "Se ha producido un error iniciando Notificación de correo" #: ../src/mn-main.c:499 msgid "" "Unable to initialize the notification library. Message popups will not be " "displayed." msgstr "" "No se pudo iniciar la biblioteca de notificación. Los mensajes emergentes no " "se mostrarán." #: ../src/mn-main.c:544 msgid "quitting Mail Notification" msgstr "saliendo de Notificación de correo" #: ../src/mn-main.c:563 msgid "considering new mail as read" msgstr "considerando correo nuevo como leído" #: ../src/mn-main.c:568 msgid "updating the mail status" msgstr "actualizando el estado del correo" #: ../src/mn-main.c:585 msgid "Mail Notification is already running" msgstr "Notificación de correo ya está en ejecución" #: ../src/mn-message-mime.c:173 #, c-format msgid "unable to parse MIME message" msgstr "no se puede analizar el mensaje MIME" #. translators: header capitalization #: ../src/mn-message.gob:97 msgid "Open" msgstr "Abrir" #: ../src/mn-message.gob:98 msgid "Unable to open message" msgstr "no se puede abrir el mensaje" #. translators: header capitalization #: ../src/mn-message.gob:107 msgid "Mark as Read" msgstr "Marcar como Leído" #: ../src/mn-message.gob:108 msgid "Unable to mark message as read" msgstr "No se puede marcar el mensaje como leído" #. translators: header capitalization #: ../src/mn-message.gob:117 msgid "Mark as Spam" msgstr "Marcar como Spam" #: ../src/mn-message.gob:118 ../src/mn-message.gob:128 msgid "Unable to mark message as spam" msgstr "No se puede marcar el mensaje como spam" #. translators: header capitalization #: ../src/mn-message.gob:127 msgid "Delete" msgstr "Suprimir" #: ../src/mn-message.gob:336 ../src/mn-sound-player.gob:133 #: ../src/mn-sound-player.gob:169 ../src/mn-util.c:1577 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "No se puede ejecutar \"%s\": %s." #: ../src/mn-mh-mailbox-backend.gob:219 #, c-format msgid "error while reading %s: %s" msgstr "error leyendo %s: %s" #: ../src/mn-mh-mailbox-backend.gob:243 ../src/mn-webmail-mailbox.gob:276 #, c-format msgid "unable to open %s: %s" msgstr "no se puede abrir %s: %s" #: ../src/mn-pi-mailbox-properties.gob:73 msgid "_Standard" msgstr "_Estándar" #: ../src/mn-pi-mailbox-properties.gob:74 msgid "In-_band SSL/TLS" msgstr "SSL/TLS en _banda" #: ../src/mn-pi-mailbox-properties.gob:75 msgid "SSL/TLS on s_eparate port" msgstr "SSL/TLS en un puerto dif_erente" #: ../src/mn-pi-mailbox-properties.gob:79 msgid "_Server:" msgstr "_Servidor:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:99 msgid "Connection Type" msgstr "Tipo de Conexión" #: ../src/mn-pi-mailbox-properties.gob:146 msgid "Port:" msgstr "Puerto:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:173 msgid "Authentication" msgstr "Autenticación" #: ../src/mn-pi-mailbox-properties.gob:177 msgid "_Mechanism:" msgstr "_Mecanismo:" #: ../src/mn-pi-mailbox-properties.gob:211 msgid "Connection" msgstr "Conexión" #: ../src/mn-pi-mailbox.gob:147 msgid "SSL/TLS support has not been compiled in" msgstr "El soporte de SSL/TLS no está disponible" #: ../src/mn-pi-mailbox.gob:305 msgid "missing certificate" msgstr "certificado perdido" #: ../src/mn-pi-mailbox.gob:339 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "Notificación de correo no puede establecer la confianza para \"%s\" (%s). Es " "posible que alguien esté interceptando la comunicación para obtener " "información confidencial.\n" "\n" "Deberías conectar al sólo al servidor si estás seguro de estar conectando a " "\"%s\". Si eliges conectar al servidor, este mensaje no volverá a mostrarse." #: ../src/mn-pi-mailbox.gob:353 #, c-format msgid "Certificate fingerprint: %s." msgstr "Certificado digital: %s." #: ../src/mn-pi-mailbox.gob:360 msgid "Connect to untrusted server?" msgstr "Conectar al servidor no confiable?" #: ../src/mn-pop3-mailbox.gob:359 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "argumentos no válidos para la capacidad LOGIN-DELAY" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:500 msgid "" "SASL authentication with initial client response failed, retrying without " "initial client response" msgstr "" "La autenticación SASL con respuesta inicial del cliente ha fallado, " "reintentando sin respuesta inicial de cliente" #: ../src/mn-pop3-mailbox.gob:920 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "siguiendo LOGIN-DELAY, se esperará durante %i segundo" msgstr[1] "siguiendo LOGIN-DELAY, se esperará durante %i segundos" #: ../src/mn-pop3-mailbox.gob:1092 msgid "server does not support APOP authentication" msgstr "el servidor no soporta autenticación con APOP" #: ../src/mn-pop3-mailbox.gob:1148 msgid "falling back to APOP authentication" msgstr "pasando a APOP" #: ../src/mn-pop3-mailbox.gob:1153 msgid "falling back to USER/PASS authentication" msgstr "pasando a autenticación con USER/PASS" #: ../src/mn-popup.gob:45 ../src/mn-standard-message-view.gob:39 msgid "Mailbox:" msgstr "Buzón:" #: ../src/mn-popup.gob:46 ../src/mn-standard-message-view.gob:40 msgid "From:" msgstr "De:" #: ../src/mn-popup.gob:47 ../src/mn-standard-message-view.gob:41 msgid "Subject:" msgstr "Asunto:" #: ../src/mn-popup.gob:96 #, c-format msgid "configuration key %s: there is no action named \"%s\"" msgstr "clave de configuración %s: no hay ninguna acción de nombre \"%s\"" #: ../src/mn-popup.gob:176 #, c-format msgid "unable to show popup: %s" msgstr "no se puede mostrar emergentes: %s" #: ../src/mn-popup.gob:194 #, c-format msgid "unable to close popup: %s" msgstr "no se pueden cerrar emergentes: %s" #. we set the summary here because libnotify requires it #. translators: header capitalization #: ../src/mn-popup.gob:205 msgid "New Message" msgstr "Nuevo mensaje" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:114 ../ui/properties-dialog.glade.h:18 msgid "Mail Notification Properties" msgstr "Propiedades de Notificación de correo" #: ../src/mn-properties-dialog.gob:232 msgid "No mailbox selected." msgstr "Ningún buzón seleccionado." #: ../src/mn-properties-dialog.gob:237 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "%i buzón seleccionado." msgstr[1] "%i buzones seleccionados." #: ../src/mn-server.gob:136 #, c-format msgid "Unable to register the Mail Notification D-Bus server: %s." msgstr "No se puede registrar el D-Bus server de Notificación de correo: %s" #: ../src/mn-shell.gob:290 #, c-format msgid "received %s signal, exiting" msgstr "recibida señal %s, saliendo" #: ../src/mn-shell.gob:430 msgid "No mail reader is configured" msgstr "No hay ningún cliente de correo configurado" #: ../src/mn-shell.gob:431 msgid "" "You can configure a mail reader by choosing System → Preferences → " "Preferred Applications." msgstr "" "Puedes configurar tu cliente de correo utilizando Sistema → Preferencias " "→ Aplicaciones Preferidas." #: ../src/mn-shell.gob:443 ../src/mn-shell.gob:449 ../src/mn-shell.gob:794 msgid "Unable to open the latest message" msgstr "No se puede abrir el último mensaje" #: ../src/mn-shell.gob:444 #, c-format msgid "Messages of mailbox \"%s\" cannot be opened." msgstr "Los correos del buzón \"%s\" no se han podido abrir." #: ../src/mn-shell.gob:450 ../src/mn-shell.gob:714 msgid "You have no new mail." msgstr "No hay correo nuevo." #: ../src/mn-shell.gob:605 #, c-format msgid "%s (%i)" msgstr "%s (%i)" #. translators: header capitalization #: ../src/mn-shell.gob:610 msgid "Mailboxes Having New Mail" msgstr "Buzones con correo nuevo" #. translators: header capitalization #: ../src/mn-shell.gob:629 msgid "Errors" msgstr "Errores" #. translators: header capitalization #: ../src/mn-shell.gob:649 msgid "Mail Summary" msgstr "Resumen de correo" #: ../src/mn-shell.gob:689 #, c-format msgid "%i message is not displayed" msgid_plural "%i messages are not displayed" msgstr[0] "%i el mensaje no se muestra" msgstr[1] "%i los mensajes no se muestran " #: ../src/mn-sound-file-chooser-dialog.gob:48 msgid "Select a File" msgstr "Selecciona un Fichero" #: ../src/mn-sound-file-chooser-dialog.gob:58 msgid "All files" msgstr "Todos los archivos" #: ../src/mn-sound-file-chooser-dialog.gob:63 msgid "Audio files" msgstr "Archivos de audio" #: ../src/mn-sound-player.gob:120 msgid "Unable to play sound" msgstr "No se puede reproducir el sonido" #: ../src/mn-sound-player.gob:122 ../src/mn-util.c:1576 msgid "A command error has occurred in Mail Notification" msgstr "Se ha producido un error en Notificación de correo" #: ../src/mn-ssl.c:191 msgid "unknown SSL/TLS error" msgstr "error SSL/TSL desconocido" #: ../src/mn-standard-message-view.gob:45 msgid "Sent:" msgstr "Enviado:" #: ../src/mn-sylpheed-mailbox-backend.gob:229 #, c-format msgid "unable to open folder: %s" msgstr "no se puede abrir la carpeta: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:317 #, c-format msgid "unable to close folder: %s" msgstr "no se puede cerrar la carpeta: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:320 #, c-format msgid "error while reading folder: %s" msgstr "se ha producido un error al leer la carpeta: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:368 #, c-format msgid "unable to set encoding: %s" msgstr "no se puede codificar: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:443 #, c-format msgid "unexpected end of file" msgstr "final de fichero inesperado" #: ../src/mn-sylpheed-mailbox-backend.gob:483 #, c-format msgid "incompatible file version \"%i\"" msgstr "versión del fichero \"%i\" incompatible" #: ../src/mn-sylpheed-message.gob:69 #, c-format msgid "Unable to read %s: %s." msgstr "No se puede leer %s: %s" #: ../src/mn-system-vfs-mailbox-properties.gob:38 #: ../src/mn-system-vfs-mailbox-properties.gob:46 #: ../src/mn-system-vfs-mailbox.gob:44 msgid "System mailbox" msgstr "Buzón de sistema" #: ../src/mn-system-vfs-mailbox-properties.gob:73 #, c-format msgid "Your system mailbox is %s." msgstr "El buzón del sistema es %s." #: ../src/mn-system-vfs-mailbox-properties.gob:80 msgid "" "The location of your system mailbox could not be detected. Check the MAIL " "environment variable." msgstr "" "No se puede detectar la ubicación de la buzón del sistema. Comprueba la " "variable de entorno MAIL." #: ../src/mn-system-vfs-mailbox.gob:71 msgid "system mailbox not found" msgstr "no se ha encontrado el buzón del sistema" #: ../src/mn-test-mailbox.gob:38 msgid "Test mailbox" msgstr "Buzón de prueba" #: ../src/mn-test-mailbox.gob:57 #, c-format msgid "Test message #%i" msgstr "Mensaje de prueba #%i" #. translators: header capitalization #: ../src/mn-test-mailbox.gob:63 msgid "Mail Notification Properties Dialog" msgstr "Diálogo de propiedades de Notificación de correo" #: ../src/mn-util.c:525 ../src/mn-util.c:548 ../src/mn-util.c:568 #: ../src/mn-util.c:590 msgid "A drag and drop error has occurred" msgstr "Se ha producido un error de arrastrar y soltar" #: ../src/mn-util.c:526 msgid "An invalid location list has been received." msgstr "Se ha recibido una lista de ubicaciones inválida." #: ../src/mn-util.c:569 msgid "An invalid Mozilla location has been received." msgstr "Se ha recibido una ubicación de Mozilla inválida." #: ../src/mn-util.c:680 msgid "Unable to display help" msgstr "No se puede mostrar la ayuda" #: ../src/mn-util.c:692 msgid "Unable to open link" msgstr "No se puede abrir el enlace" #: ../src/mn-util.c:883 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" msgid_plural "" "The following locations are invalid:\n" "\n" "%s" msgstr[0] "" "La siguiente ubicación no es válida:\n" "\n" "%s" msgstr[1] "" "Las siguientes ubicaciones no son válidas:\n" "\n" "%s" #: ../src/mn-util.c:899 msgid "A fatal error has occurred in Mail Notification" msgstr "Se ha producido un error fatal en la Notificación de correo" #: ../src/mn-util.c:979 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "hace %i segundo" msgstr[1] "hace %i segundos" #: ../src/mn-util.c:983 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "hace %i minuto" msgstr[1] "hace %i minutos" #: ../src/mn-util.c:988 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "hace %i hora" msgstr[1] "hace %i horas" #: ../src/mn-util.c:993 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "hace %i día" msgstr[1] "hace %i días" #: ../src/mn-util.c:998 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "hace %i semana" msgstr[1] "hace %i semanas" #: ../src/mn-util.c:1016 #, c-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i segundo" msgstr[1] "%i segundos" #: ../src/mn-util.c:1020 #, c-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i minuto" msgstr[1] "%i minutos" #: ../src/mn-util.c:1025 #, c-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i hora" msgstr[1] "%i horas" #: ../src/mn-util.c:1030 msgid "1 day" msgstr "1 día" #: ../src/mn-util.c:1506 #, c-format msgid "unterminated substitution" msgstr "sustitución indeterminada" #: ../src/mn-util.c:1545 #, c-format msgid "unknown substitution \"%s\"" msgstr "sustitución desconocida \"%s\"" #: ../src/mn-util.c:1548 #, c-format msgid "empty substitution" msgstr "sustitución vacía" #: ../src/mn-vfs-mailbox.gob:236 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "no se puede monitorizar %s (%s), se ha activado el modo de sondeo" #: ../src/mn-vfs-mailbox.gob:426 msgid "unknown mailbox format" msgstr "formato de buzón desconocido" #: ../src/mn-vfs-mailbox.gob:426 msgid "does not exist" msgstr "no existe" #: ../src/mn-vfs.c:241 #, c-format msgid "Unable to write %s: %s." msgstr "No se puede escribir %s: %s." #: ../src/mn-webmail-mailbox.gob:84 #, c-format msgid "unable to create a temporary file: %s" msgstr "no se puede crear el archivo temporal: %s" #: ../src/mn-webmail-mailbox.gob:91 #, c-format msgid "unable to change the permissions of the temporary file: %s" msgstr "no se pueden cambiar los permisos del archivo temporal: %s" #: ../src/mn-webmail-mailbox.gob:135 #, c-format msgid "unable to set encoding of %s: %s" msgstr "no se puede codificar %s: %s" #: ../src/mn-webmail-mailbox.gob:192 msgid "configuration:" msgstr "configuración:" #: ../src/mn-webmail-mailbox.gob:220 #, c-format msgid "running %s" msgstr "corriendo %s" #: ../src/mn-webmail-mailbox.gob:224 #, c-format msgid "cannot execute \"%s\": %s" msgstr "no se puede ejecutar \"%s\": %s" #: ../src/mn-webmail-mailbox.gob:229 msgid "standard output:" msgstr "salida estándar:" #: ../src/mn-webmail-mailbox.gob:230 msgid "standard error output:" msgstr "salida de error estándar:" #. translators: %s is a program name, as in "unknown fetchyahoo failure" #: ../src/mn-webmail-mailbox.gob:248 #, c-format msgid "unknown %s failure" msgstr "fallo desconocido %s" #: ../src/mn-xml.c:51 #, c-format msgid "" "property \"%s\": unable to transform string \"%s\" into a value of type \"%s" "\"" msgstr "" "propiedad \"%s\": no se puede transformar la cadena \"%s\" a un valor de " "tipo \"%s\"" #: ../src/mn-yahoo-mailbox.gob:71 #, c-format msgid "unable to change the permissions of %s: %s" msgstr "no se pueden cambiar los permisos de %s: %s" #: ../src/mn-yahoo-mailbox.gob:82 #, c-format msgid "unable to create %s: %s" msgstr "no se puede crear %s: %s." #: ../src/mn-yahoo-mailbox.gob:229 msgid "delay between mail checks too small" msgstr "tiempo entre comprobaciones de correo demasiado pequeño:" #: ../ui/mailbox-properties-dialog.glade.h:1 msgid "Delay Between Mail Checks" msgstr "Retraso entre comprobaciones" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:2 ../ui/properties-dialog.glade.h:6 msgid "General" msgstr "General" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox Name" msgstr "Nombre del Buzón" #: ../ui/mailbox-properties-dialog.glade.h:5 msgid "Details" msgstr "Detalles" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:6 #: ../ui/properties-dialog.glade.h:15 msgid "General" msgstr "General" #: ../ui/mailbox-properties-dialog.glade.h:7 msgid "Mailbox _type:" msgstr "_Tipo de buzón:" #: ../ui/mailbox-properties-dialog.glade.h:8 msgid "O_ther:" msgstr "O_tros:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:2 msgid "Click Action" msgstr "Acción al hacer Clic" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:4 msgid "Expiration" msgstr "Expiración" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:8 msgid "Mailbox List" msgstr "Lista de buzones" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:10 msgid "Position" msgstr "Posición" #: ../ui/properties-dialog.glade.h:11 msgid "A_fter:" msgstr "_Después de:" #: ../ui/properties-dialog.glade.h:12 msgid "Co_nsider new mail as read" msgstr "Co_nsiderar correo nuevo como leído" #: ../ui/properties-dialog.glade.h:13 msgid "De_sktop default" msgstr "_Predeterminada del escritorio" #: ../ui/properties-dialog.glade.h:16 msgid "In the p_opup stack" msgstr "_En la pila de emergentes" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:20 msgid "Message Popups" msgstr "Mensajes Emergentes" #: ../ui/properties-dialog.glade.h:21 msgid "Play a _sound when new mail arrives:" msgstr "_Reproducir un sonido al recibir correo nuevo:" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:23 msgid "Status Icon" msgstr "Icono de Estado" #: ../ui/properties-dialog.glade.h:24 msgid "_Attached to the status icon" msgstr "_Junto al icono de estado" #: ../ui/properties-dialog.glade.h:25 msgid "_Display test messages" msgstr "_Mostrar mensajes de prueba" #: ../ui/properties-dialog.glade.h:26 msgid "_Enable message popups" msgstr "_Habilitar mensajes emergentes" #: ../ui/properties-dialog.glade.h:27 msgid "_Launch the mail reader" msgstr "_Lanzar el cliente de correo" #: ../ui/properties-dialog.glade.h:28 msgid "_Open the latest message" msgstr "_Abrir el último mensaje" #: ../ui/properties-dialog.glade.h:29 msgid "_Update the mail status" msgstr "_Actualizar el estado del correo" #: ../ui/properties-dialog.glade.h:30 msgid "message popups tab|_Never" msgstr "_Nunca" #~ msgid "Mail Notification automation" #~ msgstr "Automatización de Notificación de correo" #~ msgid "Mail Notification automation factory" #~ msgstr "Construcción de la automatización de Notificación de correo" #~ msgid "Evolution folder tree control" #~ msgstr "Control del árbol de carpetas de Evolution" #~ msgid "Evolution folder tree control factory" #~ msgstr "Construcción del control de árbol de carpetas de Evolution" #~ msgid "Mail Notification / Evolution glue" #~ msgstr "Notificación de correo / Enlace con Evolution" #~ msgid "Mail Notification / Evolution glue factory" #~ msgstr "Notificación de correo / Construcción del enlace con Evolution" #~ msgid "" #~ "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", " #~ "the amount of time to wait before expiring message popups (seconds part)." #~ msgstr "" #~ "Si /apps/mail-notification/popups/expiration/enabled está en \"true\", " #~ "tiempo a esperar antes de terminar los mensajes emergentes (partes de " #~ "segundo)" #~ msgid "Minutes to wait before expiring message popups" #~ msgstr "Minutos antes de cerrar los mensajes emergentes" #~ msgid "The currently selected URI" #~ msgstr "El URI actualmente seleccionado" #~ msgid "" #~ "Bonobo could not locate the %s server. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo no puede encontrar el servidor %s. Comprueba tu instalación de " #~ "Notificación de correo." #~ msgid "" #~ "Bonobo was unable to register the %s server. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo no puede registrar el servidor %s. Comprueba tu instalación de " #~ "Notificación de correo." #~ msgid "unable to fetch message" #~ msgstr "no se puede recuperar el mensaje" #~ msgid "A Bonobo exception (%s) has occurred in %s()." #~ msgstr "Se ha producido una excepción de Bonobo (%s) en %s()." #~ msgid "" #~ "Bonobo could not locate the automation object. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo no puede encontrar el objeto de automatización. Comprueba la " #~ "instalación de Notificación de correo." #~ msgid "" #~ "Bonobo could not locate the %s file. Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Bonobo no puede encontrar el fichero %s. Comprueba la instalación de " #~ "Notificación de correo." #~ msgid "Unknown" #~ msgstr "Desconocido" #~ msgid "unknown error" #~ msgstr "error desconocido" #~ msgid "Unable to delete message" #~ msgstr "No se puede eliminar el mensaje" #~ msgid "file version missing" #~ msgstr "versión del fichero perdida" #~ msgid "" #~ "Unable to load image \"%s\" (%s). Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "No se puede cargar la imagen \"%s\" (%s). Por favor, comprueba la " #~ "instalación de Notificación de correo." #~ msgid "" #~ "Unable to load interface \"%s\". Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "No se puede cargar la interfaz \"%s\". Comprueba la instalación de " #~ "Notificación de correo." #~ msgid "" #~ "Widget \"%s\" not found in interface \"%s\". Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "No se ha encontrado el Widget \"%s\" en la interfaz \"%s\". Comprueba la " #~ "instalación de Notificación de correo." #~ msgid "Unable to open self as a module (%s)." #~ msgstr "No se puede abrir como módulo (%s)." #~ msgid "" #~ "Signal handler \"%s\" not found. Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Gestor de señales \"%s\" no encontrado. Por favor, comprueba la " #~ "instalación de Notificación de correo." #~ msgid "Unable to create a thread: %s." #~ msgstr "No se puede crear el hilo: %s" #~ msgid "unable to get current time: %s" #~ msgstr "no se puede recuperar la hora actual: %s" #~ msgid "unknown date" #~ msgstr "fecha desconocida" #~ msgid "Mailbox _name:" #~ msgstr "Nombre del _buzón:" #~ msgid "_Delay between mail checks:" #~ msgstr "_Tiempo entre comprobaciones de correo:" #~ msgid "_Use Default" #~ msgstr "_Usar Predeterminados" #~ msgid "seconds" #~ msgstr "segundos" mail-notification-5.4.dfsg.1/po/fr.po0000644000175000001440000020127411015312551017240 0ustar evilynuxusers# French translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Jean-Yves Lefort , 2005-2006. # msgid "" msgstr "" "Project-Id-Version: mail-notification 5.4\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-05-22 17:39+0200\n" "PO-Revision-Date: 2008-05-22 17:46+0200\n" "Last-Translator: Jean-Yves Lefort \n" "Language-Team: Jean-Yves Lefort \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n>1;\n" #: ../data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "Configurer l'avertisseur de courrier" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:296 #: ../src/mn-main.c:107 ../src/mn-main.c:437 ../src/mn-main.c:458 #: ../src/mn-main.c:509 msgid "Mail Notification" msgstr "Avertisseur de courrier" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Etre averti lorsque du nouveau courrier arrive" #: ../data/mail-notification.schemas.in.in.h:1 msgid "Always display an icon" msgstr "Toujours afficher une icône" #: ../data/mail-notification.schemas.in.in.h:2 msgid "Blink on errors" msgstr "Clignoter lors d'erreurs" #: ../data/mail-notification.schemas.in.in.h:3 msgid "Click action" msgstr "Action du clic" #: ../data/mail-notification.schemas.in.in.h:4 msgid "Display a message count in the status icon" msgstr "Afficher le nombre de messages dans l'icône de statut" #: ../data/mail-notification.schemas.in.in.h:5 msgid "Display seen mail" msgstr "Afficher le courrier vu" #: ../data/mail-notification.schemas.in.in.h:6 msgid "Enable message popups" msgstr "Activer les popups" #: ../data/mail-notification.schemas.in.in.h:7 msgid "Expire message popups" msgstr "Activer l'expiration des popups" #: ../data/mail-notification.schemas.in.in.h:8 msgid "Fallback character sets" msgstr "Jeux de caractères de remplacement" #: ../data/mail-notification.schemas.in.in.h:9 msgid "Fingerprints of trusted X509 certificates" msgstr "Empreintes digitales des certificats X509 de confiance" #: ../data/mail-notification.schemas.in.in.h:10 msgid "Height of properties dialog" msgstr "Hauteur de la boîte de dialogue contenant les propriétés" #: ../data/mail-notification.schemas.in.in.h:11 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "number of seconds to wait before expiring message popups." msgstr "" "Si /apps/mail-notification/popups/expiration/enabled est « true », le délai " "d'expiration des popups, en secondes." #: ../data/mail-notification.schemas.in.in.h:12 msgid "Mail changed command" msgstr "Commande de courrier changé" #: ../data/mail-notification.schemas.in.in.h:13 msgid "Mail read command" msgstr "Commande de courrier lu" #: ../data/mail-notification.schemas.in.in.h:14 msgid "Maximum number of messages in the tooltip mail summary" msgstr "Nombre maximum de messages dans l'aperçu du courrier du ballon d'aide" #: ../data/mail-notification.schemas.in.in.h:15 msgid "Maximum number of simultaneous popups" msgstr "Nombre maximum de popups simultanés" #: ../data/mail-notification.schemas.in.in.h:16 msgid "Message popups actions" msgstr "Actions des popups" #: ../data/mail-notification.schemas.in.in.h:17 msgid "Message popups position" msgstr "Position des popups" #: ../data/mail-notification.schemas.in.in.h:18 msgid "Messages to consider as read" msgstr "Les messages à considérer comme lus" #: ../data/mail-notification.schemas.in.in.h:19 msgid "New mail command" msgstr "Commande de nouveau courrier" #: ../data/mail-notification.schemas.in.in.h:20 msgid "New mail sound" msgstr "Son de nouveau courrier" #: ../data/mail-notification.schemas.in.in.h:21 msgid "Play a sound when new mail arrives" msgstr "Emettre un son lorsque du nouveau courrier arrive" #: ../data/mail-notification.schemas.in.in.h:22 msgid "Play sound command" msgstr "Commande de lecture de son" #: ../data/mail-notification.schemas.in.in.h:23 msgid "Run a command when all mail is read" msgstr "Exécuter une commande lorsque tout le courrier est lu" #: ../data/mail-notification.schemas.in.in.h:24 msgid "Run a command when new mail arrives" msgstr "Exécuter une commande lorsque du nouveau courrier arrive" #: ../data/mail-notification.schemas.in.in.h:25 msgid "Run a command when the message list changes" msgstr "Exécuter une commande lorsque la liste des messages change" #: ../data/mail-notification.schemas.in.in.h:26 msgid "Seconds to wait before expiring message popups" msgstr "Délai d'expiration des popups, en secondes" #: ../data/mail-notification.schemas.in.in.h:27 msgid "" "The action to perform when the icon is clicked. Must be \"launch-mail-reader" "\", \"open-latest-message\", \"consider-new-mail-as-read\" or \"update-mail-" "status\"." msgstr "L'action à effectuer lorsque l'icône est cliquée. Doit être « launch-mail-reader », « open-latest-message », « consider-new-mail-as-read » ou « update-mail-status »." #: ../data/mail-notification.schemas.in.in.h:28 msgid "The command to run when all mail is read." msgstr "La commande à exécuter lorsque tout le courrier est lu" #: ../data/mail-notification.schemas.in.in.h:29 msgid "The command to run when new mail arrives." msgstr "La commande à exécuter lorsque du nouveau courrier arrive." #: ../data/mail-notification.schemas.in.in.h:30 msgid "The command to run when the message list changes." msgstr "La commande à exécuter lorsque la liste des messages change." #: ../data/mail-notification.schemas.in.in.h:32 #, no-c-format msgid "" "The command to use to play a sound file. The string %file will be " "substituted with the filename of the sound to play." msgstr "" "La commande à utiliser pour lire un fichier son. La chaîne de caractères %" "file sera remplacée par le nom du fichier son à jouer." #: ../data/mail-notification.schemas.in.in.h:33 msgid "The height of the properties dialog in pixels." msgstr "La hauteur de la boîte de dialogue contenant les propriétés en pixels." #: ../data/mail-notification.schemas.in.in.h:34 msgid "" "The list of character sets to attempt conversion from when uncompliant 8-bit " "data is encountered in message headers. The first character set allowing a " "successful conversion will be used. The special name \"user\" will be " "replaced with the character set of the user's locale. Note that Mail " "Notification must be restarted for changes to take effect." msgstr "" "La liste des jeux de caractères à essayer lorsque des données 8-bit " "invalides sont trouvées dans un en-tête de message. Le premier de ces jeux " "qui permet de convertir les données 8-bit sera utilisé. Le nom spécial « user " "» sera remplacé par le jeu de caractère de l'utilisateur. Veuillez noter que " "l'avertisseur de courrier doit être relancé pour que les changements " "prennent effet." #: ../data/mail-notification.schemas.in.in.h:35 msgid "The list of messages to consider as read and ignore." msgstr "La liste des messages à considérer comme lus et à ignorer." #: ../data/mail-notification.schemas.in.in.h:36 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" "La liste des serveurs SSL/TLS (hôte:port) de confiance auxquels il manque un " "certificat X509." #: ../data/mail-notification.schemas.in.in.h:37 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "" "La liste des certificats X509 de confiance, représentés par leur empreinte " "digitale." #: ../data/mail-notification.schemas.in.in.h:38 msgid "The maximum number of messages to display in the tooltip mail summary." msgstr "" "Le nombre maximum de messages à afficher dans l'aperçu du courrier du ballon " "d'aide." #: ../data/mail-notification.schemas.in.in.h:39 msgid "" "The maximum number of popups to display simultaneously. If this limit is " "exceeded, only the most recent messages will be displayed. If the /apps/mail-" "notification/popups/position key is set to \"attached\", this limit will be " "ignored and only one popup will be allowed." msgstr "" "Le nombre maximum de popups à afficher simultanément. Si cette limite est " "dépassée,\n" "seuls les messages les plus récents seront affichés. Si la clé /apps/mail-" "notification/popups/position a la valeur \"attached\", cette limite sera " "ignorée et un seul popup sera autorisé." #: ../data/mail-notification.schemas.in.in.h:40 msgid "" "The ordered list of actions to include in the message popups. Each element " "must be \"open\", \"mark-as-read\", \"mark-as-spam\" or \"delete\"." msgstr "" "La liste triée d'actions à inclure dans les popups. Chaque élément doit être " "« open », « mark-as-read », « mark-as-spam » ou « delete »." #: ../data/mail-notification.schemas.in.in.h:41 msgid "The position of the message popups. Must be \"attached\" or \"free\"." msgstr "La position des popups. Doit être « attached » ou « free »." #: ../data/mail-notification.schemas.in.in.h:42 msgid "The sound file to play when new mail arrives." msgstr "Le fichier son à lire lorsque du nouveau courrier arrive." #: ../data/mail-notification.schemas.in.in.h:43 msgid "" "The type of mail summary to display in the icon's tooltip. Must be \"standard" "\", \"compact\" or \"none\"." msgstr "" "Le type d'aperçu du courrier à afficher dans le ballon d'aide de l'icône. " "Doit être « standard », « compact » ou « none »." #: ../data/mail-notification.schemas.in.in.h:44 msgid "The width of the properties dialog in pixels." msgstr "La largeur de la boîte de dialogue contenant les propriétés en pixels." #: ../data/mail-notification.schemas.in.in.h:45 msgid "Tooltip mail summary" msgstr "Aperçu du courrier dans le ballon d'aide" #: ../data/mail-notification.schemas.in.in.h:46 msgid "Trusted servers list" msgstr "Liste des serveurs de confiance" #: ../data/mail-notification.schemas.in.in.h:47 msgid "Whether the status icon should blink on errors or not." msgstr "Si l'icône de statut doit clignoter lors d'erreurs ou pas." #: ../data/mail-notification.schemas.in.in.h:48 msgid "Whether to display a message count in the status icon or not." msgstr "" "Si le nombre de messages doit être affiché dans l'icône de statut ou pas." #: ../data/mail-notification.schemas.in.in.h:49 msgid "Whether to display an icon when there is no new mail or not." msgstr "" "Si une icône doit être affichée lorsqu'il n'y a pas de nouveau courrier ou " "pas." #: ../data/mail-notification.schemas.in.in.h:50 msgid "" "Whether to display mail which is still marked as unread but has been seen or " "not." msgstr "" "Si le courrier qui est encore marqué comme non lu mais qui a été vu\n" "doit être affiché ou pas." #: ../data/mail-notification.schemas.in.in.h:51 msgid "Whether to enable message popups or not." msgstr "Si les popups doivent être activés ou pas." #: ../data/mail-notification.schemas.in.in.h:52 msgid "" "Whether to expire message popups or not. Must be \"default\", \"false\" or " "\"true\"." msgstr "" "Si l'expiration des popups doit être activée ou pas. Doit être « default », « " "false » ou « true »." #: ../data/mail-notification.schemas.in.in.h:53 msgid "Whether to play a sound when new mail arrives or not." msgstr "" "Si un fichier son doit être lu lorsque du nouveau courrier arrive ou pas." #: ../data/mail-notification.schemas.in.in.h:54 msgid "Whether to run a command when all mail is read or not." msgstr "" "Si une commande doit être exécutée lorsque tout le courrier est lu ou pas." #: ../data/mail-notification.schemas.in.in.h:55 msgid "Whether to run a command when new mail arrives or not." msgstr "" "Si une commande doit être exécutée lorsque du nouveau courrier arrive ou pas." #: ../data/mail-notification.schemas.in.in.h:56 msgid "Whether to run a command when the message list changes or not." msgstr "" "Si une commande doit être exécutée lorsque la liste des messages change ou " "pas." #: ../data/mail-notification.schemas.in.in.h:57 msgid "Width of properties dialog" msgstr "Largeur de la boîte de dialogue contenant les propriétés" #: ../src/eggtrayicon.c:133 msgid "Orientation" msgstr "Orientation" #: ../src/eggtrayicon.c:134 msgid "The orientation of the tray." msgstr "L'orientation du plateau." #. translators: header capitalization #: ../src/mn-about-dialog.gob:47 msgid "A Mail Notification Icon" msgstr "Une icône d'avertissement de courrier" #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:55 msgid "translator-credits" msgstr "Jean-Yves Lefort " #: ../src/mn-auth-combo-box.gob:98 #: ../src/mn-autodetect-mailbox-properties.gob:106 msgid "Autodetect" msgstr "Autodétecter" #. translators: header capitalization #: ../src/mn-authenticated-mailbox-properties.gob:56 msgid "Account" msgstr "Compte" #: ../src/mn-authenticated-mailbox-properties.gob:59 msgid "_Username:" msgstr "Nom d'_utilisateur :" #: ../src/mn-authenticated-mailbox-properties.gob:63 msgid "_Password:" msgstr "Mot de _passe :" #: ../src/mn-authenticated-mailbox-properties.gob:140 msgid "Saving password to keyring..." msgstr "Sauvegarde du mot de passe dans le trousseau de clés en cours..." #: ../src/mn-authenticated-mailbox-properties.gob:185 msgid "Retrieving password from keyring..." msgstr "Récupération du mot de passe du trousseau de clés en cours..." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:306 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "password you have entered is invalid.\n" "\n" "Please re-enter your password." msgstr "" "L'avertisseur de courrier n'a pas été en mesure d'ouvrir une session dans la " "boîte aux lettres %s %s, peut-être parce que le mot de passe que vous avez " "saisi est invalide.\n" "\n" "Veuillez à nouveau saisir vos données d'authentification." #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:308 #, c-format msgid "Enter your password for %s mailbox %s." msgstr "Entrez votre mot de passe pour la boîte aux lettres %s %s." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: ../src/mn-authenticated-mailbox.gob:381 msgid "Authentication Required" msgstr "Authentification requise" #: ../src/mn-authenticated-mailbox.gob:463 msgid "Unable to save the mailbox password" msgstr "Impossible de sauvegarder le mot de passe de la boîte aux lettres" #. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) #: ../src/mn-authenticated-mailbox.gob:465 #, c-format msgid "The password of %s mailbox %s could not be saved to the keyring." msgstr "" "Le mot de passe de la boîte aux lettres %s %s n'a pu être sauvegardé dans le " "trousseau de clés." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:119 #: ../src/mn-system-vfs-mailbox-properties.gob:57 msgid "Location" msgstr "Emplacement" #: ../src/mn-autodetect-mailbox-properties.gob:121 msgid "_Location:" msgstr "E_mplacement :" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:129 msgid "_Browse..." msgstr "_Parcourir..." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:169 msgid "Select a File or Folder" msgstr "Sélectionnez un fichier ou dossier" #: ../src/mn-base-mbox-mailbox-backend.gob:346 #, c-format msgid "unable to open mailbox: %s" msgstr "impossible d'ouvrir la boîte aux lettres : %s" #: ../src/mn-client-session.c:177 #, c-format msgid "resolving %s" msgstr "résolution de %s en cours" #: ../src/mn-client-session.c:193 #, c-format msgid "unable to resolve %s: %s" msgstr "impossible de résoudre %s : %s" #: ../src/mn-client-session.c:234 #, c-format msgid "network address #%i" msgstr "adresse réseau %i" #: ../src/mn-client-session.c:237 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "" "impossible de convertir l'adresse réseau %i vers une forme textuelle : %s" #: ../src/mn-client-session.c:248 #, c-format msgid "%s: unsupported address family" msgstr "%s : famille d'adresse non prise en charge" #: ../src/mn-client-session.c:255 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s : impossible de créer un socket : %s" #: ../src/mn-client-session.c:259 #, c-format msgid "connecting to %s (%s) port %i" msgstr "connexion à %s (%s) port %i en cours" #: ../src/mn-client-session.c:262 #, c-format msgid "unable to connect: %s" msgstr "impossible de se connecter : %s" #: ../src/mn-client-session.c:267 msgid "connected successfully" msgstr "connecté avec succès" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:281 #, c-format msgid "unable to connect to %s" msgstr "impossible de se connecter à %s" #: ../src/mn-client-session.c:333 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "la réponse « %s » n'est pas valable dans le contexte actuel" #: ../src/mn-client-session.c:362 #, c-format msgid "unable to parse response \"%s\"" msgstr "impossible d'interpréter la réponse « %s »" #: ../src/mn-client-session.c:626 msgid "server name not found in certificate" msgstr "nom de serveur non trouvé dans le certificat" #: ../src/mn-client-session.c:631 #, c-format msgid "" "user-provided server name \"%s\" does not match certificate-provided server " "name \"%s\"" msgstr "" "le nom de serveur « %s » fourni par l'utilisateur ne correspond pas au nom de " "serveur « %s » fourni par le certificat" #: ../src/mn-client-session.c:645 #, c-format msgid "\"%s\", " msgstr "« %s », " #: ../src/mn-client-session.c:647 ../src/mn-client-session.c:1582 #: ../src/mn-yahoo-mailbox.gob:218 #, c-format msgid "\"%s\"" msgstr "« %s »" #: ../src/mn-client-session.c:650 #, c-format msgid "" "user-provided server name \"%s\" matches none of the certificate-provided " "server names %s" msgstr "" "le nom de serveur « %s » fourni par l'utilisateur ne correspond à aucun des " "noms de serveur %s fournis par le certificat" #: ../src/mn-client-session.c:740 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "impossible d'initialiser la bibliothèque OpenSSL : %s" #: ../src/mn-client-session.c:748 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "impossible de créer un objet SSL/TLS : %s" #: ../src/mn-client-session.c:754 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "impossible de spécifier le descripteur de fichier SSL/TLS : %s" #: ../src/mn-client-session.c:761 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "impossible d'accomplir la négociation SSL/TLS : %s" #: ../src/mn-client-session.c:767 msgid "untrusted server" msgstr "serveur non fiable" #: ../src/mn-client-session.c:771 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "une couche SSL/TLS est maintenant active (%s, %s %i-bit)" #: ../src/mn-client-session.c:819 ../src/mn-client-session.c:826 #, c-format msgid "unable to read from server: %s" msgstr "impossible de lire depuis le serveur : %s" #: ../src/mn-client-session.c:824 msgid "unable to read from server: EOF" msgstr "impossible de lire depuis le serveur : EOF" #: ../src/mn-client-session.c:836 #, c-format msgid "unable to decode data using SASL: %s" msgstr "impossible de décoder les données en utilisant SASL : %s" #: ../src/mn-client-session.c:980 #, c-format msgid "unable to encode data using SASL: %s" msgstr "impossible d'encoder les données en utilisant SASL : %s" #: ../src/mn-client-session.c:1009 ../src/mn-client-session.c:1016 #, c-format msgid "unable to write to server: %s" msgstr "impossible d'écrire vers le serveur : %s" #: ../src/mn-client-session.c:1014 msgid "unable to write to server: EOF" msgstr "impossible d'écrire vers le serveur : EOF" #: ../src/mn-client-session.c:1043 ../src/mn-pop3-mailbox.gob:448 #, c-format msgid "unable to encode Base64: %s" msgstr "impossible d'encoder en Base64 : %s" #: ../src/mn-client-session.c:1220 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "impossible d'initialiser la bibliothèque SASL : %s" #: ../src/mn-client-session.c:1232 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "impossible d'obtenir l'adresse locale du socket : %s" #: ../src/mn-client-session.c:1238 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "impossible d'obtenir l'adresse distante du socket : %s" #: ../src/mn-client-session.c:1272 #, c-format msgid "unable to set SASL security properties: %s" msgstr "impossible de spécifier les propriétés de sécurité SASL : %s" #: ../src/mn-client-session.c:1296 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "" "impossible de démarrer l'authentification SASL : SASL a demandé quelque " "chose que nous ne connaissions pas" #: ../src/mn-client-session.c:1315 #, c-format msgid "unable to start SASL authentication: %s" msgstr "impossible de démarrer l'authentification SASL : %s" #: ../src/mn-client-session.c:1319 #, c-format msgid "unable to create a SASL connection: %s" msgstr "impossible de créer une connexion SASL : %s" #: ../src/mn-client-session.c:1366 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "" "SASL a demandé quelque chose que nous ne connaissions pas, annulation de " "l'authentification SASL" #: ../src/mn-client-session.c:1383 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, annulation de l'authentification SASL" #. compliance error #: ../src/mn-client-session.c:1388 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "impossible de décoder l'entrée Base64 du serveur : %s" #: ../src/mn-client-session.c:1424 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "" "une couche de sécurité SASL de facteur de force %i est maintenant active" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1429 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "impossible d'obtenir la propriété SASL_MAXOUTBUF : %s" #: ../src/mn-client-session.c:1435 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "avertissement : impossible d'obtenir la propriété SASL_SSF : %s" #: ../src/mn-client-session.c:1583 msgid "unknown server error" msgstr "erreur serveur inconnue" #: ../src/mn-compact-message-view.gob:39 msgid "Mailbox" msgstr "Boîte aux lettres" #: ../src/mn-compact-message-view.gob:40 msgid "From" msgstr "De" #: ../src/mn-compact-message-view.gob:41 msgid "Subject" msgstr "Sujet" #: ../src/mn-compact-message-view.gob:42 msgid "Sent" msgstr "Envoyé" #: ../src/mn-conf.c:250 #, c-format msgid "cannot find default value of configuration key \"%s\"" msgstr "" "impossible de trouver la valeur par défaut de la clé de configuration « %s »" #: ../src/mn-conf.c:255 msgid "" "The default configuration has not been installed properly. Please check your " "Mail Notification installation." msgstr "" "La configuration par défaut n'a pas été installée correctement. Veuillez " "vérifier votre installation de l'avertisseur de courrier." #: ../src/mn-conf.c:292 msgid "A directory creation error has occurred" msgstr "Une erreur de création de répertoire s'est produite" #: ../src/mn-conf.c:293 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "Impossible de créer le répertoire « %s » : %s." #: ../src/mn-conf.c:362 #, c-format msgid "recursively unsetting %s" msgstr "en train de supprimer récursivement %s" #: ../src/mn-conf.c:366 msgid "syncing the GConf database" msgstr "en train de synchroniser la base de données GConf" #: ../src/mn-conf.c:369 msgid "completed" msgstr "terminé" #: ../src/mn-custom-vfs-mailbox.gob:72 msgid "invalid location" msgstr "emplacement invalide" #: ../src/mn-evolution-folder-tree-client.gob:269 msgid "" "Mail Notification can not contact Evolution. Make sure that Evolution is " "running and that the Evolution Jean-Yves Lefort's Mail Notification plugin " "is loaded." msgstr "" "L'avertisseur de courrier ne peut contacter Evolution. Assurez-vous " "qu'Evolution est en cours de fonctionnement et que l'extension Evolution « " "Avertisseur de courrier de Jean-Yves Lefort » est chargée." #. translators: header capitalization #: ../src/mn-evolution-mailbox-properties.gob:71 #: ../src/mn-webmail-mailbox-properties.gob:92 msgid "Folder" msgstr "Dossier" #: ../src/mn-evolution-mailbox.gob:225 msgid "unable to contact Evolution" msgstr "impossible de contacter Evolution" #: ../src/mn-evolution-plugin.c:151 msgid "A fatal error has occurred in the Evolution Mail Notification plugin" msgstr "" "Une erreur fatale s'est produite dans l'extension Evolution « Avertisseur de " "courrier »" #: ../src/mn-evolution-plugin.c:152 ../src/mn-main.c:250 msgid "The connection to the D-Bus session bus was lost." msgstr "La connexion à la session D-Bus a été perdue." #: ../src/mn-evolution-plugin.c:175 ../src/mn-evolution-plugin.c:188 #: ../src/mn-evolution-plugin.c:226 msgid "Unable to initialize the Mail Notification plugin" msgstr "Impossible d'initialiser l'extension « Avertisseur de courrier »" #: ../src/mn-evolution-plugin.c:176 ../src/mn-main.c:283 #, c-format msgid "Unable to connect to the D-Bus session bus: %s." msgstr "Impossible de se connecter au bus session D-Bus : %s." #: ../src/mn-evolution-plugin.c:227 #, c-format msgid "Unable to register the Mail Notification Evolution D-Bus server: %s." msgstr "" "Impossible d'enregistrer le serveur D-Bus de l'avertisseur de courrier " "Evolution : %s." #: ../src/mn-evolution-server.gob:152 #, c-format msgid "folder not found" msgstr "dossier non trouvé" #: ../src/mn-evolution-server.gob:329 #, c-format msgid "message not found" msgstr "message non trouvé" #. #. * translators: GTK+ has the same message used in the same #. * context; please use the GTK+ translation for consistency #. #: ../src/mn-file-chooser-button.gob:179 msgid "(None)" msgstr "(Aucun)" #. translators: header capitalization #: ../src/mn-gmail-mailbox-properties.gob:105 msgid "Gmail Label" msgstr "Etiquette Gmail" #: ../src/mn-gmail-mailbox-properties.gob:107 msgid "_Restrict to this label:" msgstr "_Restreindre à cette étiquette :" #: ../src/mn-gmail-mailbox.gob:154 msgid "invalid feed location" msgstr "emplacement d'alimentation non valide" #: ../src/mn-gmail-mailbox.gob:175 #, c-format msgid "retrieving feed from %s" msgstr "obtention de l'alimentation depuis %s en cours" #: ../src/mn-gmail-mailbox.gob:182 #, c-format msgid "unable to retrieve feed: %s" msgstr "impossible d'obtenir l'alimentation : %s" #: ../src/mn-gmail-mailbox.gob:191 #, c-format msgid "feed retrieved successfully (%i byte)" msgid_plural "feed retrieved successfully (%i bytes)" msgstr[0] "données récupérées avec succès (%i octet)" msgstr[1] "données récupérées avec succès (%i octets)" #: ../src/mn-gmail-mailbox.gob:203 ../src/mn-gmail-mailbox.gob:254 msgid "unable to parse feed" msgstr "impossible d'interpréter l'alimentation" #: ../src/mn-gmime-stream-vfs.gob:48 #: ../src/mn-sylpheed-mailbox-backend.gob:209 #, c-format msgid "unable to read %s: %s" msgstr "impossible de lire %s : %s" #: ../src/mn-gmime-stream-vfs.gob:50 ../src/mn-webmail-mailbox.gob:141 #, c-format msgid "unable to write to %s: %s" msgstr "impossible d'écrire vers %s : %s" #: ../src/mn-gmime-stream-vfs.gob:52 #, c-format msgid "unable to seek in %s: %s" msgstr "impossible de chercher dans %s : %s" #: ../src/mn-gmime-stream-vfs.gob:54 #, c-format msgid "unable to tell position of %s: %s" msgstr "impossible de dire la position de %s : %s" #: ../src/mn-gmime-stream-vfs.gob:56 ../src/mn-mh-mailbox-backend.gob:216 #: ../src/mn-webmail-mailbox.gob:147 #, c-format msgid "unable to close %s: %s" msgstr "impossible de fermer %s : %s" #: ../src/mn-hotmail-mailbox.gob:286 ../src/mn-imap-mailbox.gob:1684 #: ../src/mn-pop3-mailbox.gob:1165 msgid "authentication failed" msgstr "l'authentification a échoué" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:109 msgid "IMAP Mailbox" msgstr "Boîte aux lettres IMAP" #: ../src/mn-imap-mailbox-properties.gob:111 #: ../src/mn-webmail-mailbox-properties.gob:94 msgid "In_box" msgstr "_Boîte de réception" #: ../src/mn-imap-mailbox-properties.gob:116 #: ../src/mn-webmail-mailbox-properties.gob:99 #: ../ui/mailbox-properties-dialog.glade.h:10 msgid "_Other:" msgstr "_Autre :" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:129 msgid "Use the IDLE Extension" msgstr "Utiliser l'extension IDLE" #: ../src/mn-imap-mailbox-properties.gob:133 msgid "IMAP connection tab|_Never" msgstr "Jamai_s" #: ../src/mn-imap-mailbox-properties.gob:134 msgid "A_utodetect" msgstr "_Autodétecter" #: ../src/mn-imap-mailbox-properties.gob:135 msgid "Al_ways" msgstr "_Toujours" #: ../src/mn-imap-mailbox.gob:384 msgid "server did not send capabilities" msgstr "le serveur n'a pas envoyé ses possibilités" #: ../src/mn-imap-mailbox.gob:551 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "" "le serveur a annoncé LOGINDISABLED, pas d'utilisation de l'authentification " "LOGIN" #: ../src/mn-imap-mailbox.gob:552 msgid "unable to login" msgstr "impossible d'ouvrir la session" #: ../src/mn-imap-mailbox.gob:1067 msgid "" "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, " "logging out" msgstr "" "la valeur de l'option « Utiliser l'extension IDLE » dans les propriétés de la " "boîte aux lettres est « jamais », fermeture de session" #: ../src/mn-imap-mailbox.gob:1078 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "le serveur distant utilise %s, l'extension IDLE ne sera pas utilisée" #: ../src/mn-imap-mailbox.gob:1083 #, c-format msgid "" "the remote server runs %s, the IDLE extension might not function properly" msgstr "" "le serveur distant utilise %s, il se peut que l'extension IDLE ne fonctionne " "pas correctement" #: ../src/mn-imap-mailbox.gob:1092 msgid "the remote server does not support the IDLE extension, logging out" msgstr "" "le serveur distant ne supporte pas l'extension IDLE, fermeture de session" #: ../src/mn-imap-mailbox.gob:1594 ../src/mn-pop3-mailbox.gob:309 msgid "server does not support in-band SSL/TLS" msgstr "le serveur ne supporte pas le mode SSL/TLS interne" #: ../src/mn-imap-mailbox.gob:1618 ../src/mn-pop3-mailbox.gob:1080 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" "un mécanisme d'authentification SASL a été sélectionné mais le support SASL " "n'a pas été inclus lors de la compilation" #: ../src/mn-imap-mailbox.gob:1628 ../src/mn-pop3-mailbox.gob:1100 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "mécanisme d'authentification inconnu « %s »" #: ../src/mn-imap-mailbox.gob:1660 ../src/mn-pop3-mailbox.gob:1136 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "" "désactivation du mécanisme « %s » et nouvelle tentative d'authentification " "SASL" #: ../src/mn-imap-mailbox.gob:1672 msgid "falling back to IMAP LOGIN authentication" msgstr "rétrogradation vers l'authentification IMAP LOGIN" #: ../src/mn-imap-mailbox.gob:1728 ../src/mn-pop3-mailbox.gob:744 #, c-format msgid "cannot retrieve %i message" msgid_plural "cannot retrieve %i messages" msgstr[0] "impossible de récupérer %i message" msgstr[1] "impossible de récupérer %i messages" #. translators: header capitalization #: ../src/mn-mail-icon.gob:86 msgid "_Mail Reader" msgstr "_Lecteur de courrier" #. translators: header capitalization #: ../src/mn-mail-icon.gob:88 msgid "_Open Latest Message" msgstr "_Ouvrir le dernier message" #. translators: header capitalization #: ../src/mn-mail-icon.gob:93 msgid "_Consider New Mail as Read" msgstr "_Considérer le nouveau courrier comme lu" #. translators: header capitalization #: ../src/mn-mail-icon.gob:95 ../src/mn-mailbox-view.gob:312 msgid "_Update" msgstr "_Mettre à jour" #. translators: header capitalization #: ../src/mn-mail-icon.gob:106 msgid "R_emove From Notification Area" msgstr "_Enlever de la zone d'avertissement" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:106 #, c-format msgid "%s Properties" msgstr "Propriétés de %s" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:210 msgid "Add a Mailbox" msgstr "Ajouter une boîte aux lettres" #: ../src/mn-mailbox-properties-dialog.gob:585 msgid "_Default:" msgstr "_Valeur par défaut :" #: ../src/mn-mailbox-properties-dialog.gob:587 #: ../ui/mailbox-properties-dialog.glade.h:9 msgid "_Default" msgstr "_Valeur par défaut" #: ../src/mn-mailbox-properties-dialog.gob:614 msgid "D_efault:" msgstr "Valeur par _défaut :" #: ../src/mn-mailbox-properties-dialog.gob:618 #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "D_efault" msgstr "Valeur par _défaut" #: ../src/mn-mailbox-view.gob:249 msgid "A paste error has occurred" msgstr "Une erreur de collage s'est produite" #: ../src/mn-mailbox-view.gob:571 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "boîte aux lettres %s non prise en charge (%s)" #: ../src/mn-mailbox-view.gob:575 #, c-format msgid "%s mailbox" msgstr "boîte aux lettres %s" #: ../src/mn-mailbox-view.gob:586 msgid "detecting mailbox type..." msgstr "détection du type de boîte aux lettres en cours..." #: ../src/mn-mailbox.gob:667 #, c-format msgid "\"type\" attribute missing" msgstr "attribut « type » manquant" #: ../src/mn-mailbox.gob:674 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "type de boîte aux lettres « %s » inconnu" #: ../src/mn-mailbox.gob:1073 #, c-format msgid "property \"%s\" has no value" msgstr "la propriété « %s » n'a pas de valeur" #: ../src/mn-mailbox.gob:1152 ../src/mn-mailbox.gob:1170 #: ../src/mn-shell.gob:626 #, c-format msgid "%s: %s" msgstr "%s : %s" #: ../src/mn-mailboxes.gob:250 msgid "An error has occurred while importing old mailboxes" msgstr "" "Une erreur s'est produite lors de l'importation des anciennes boîtes aux " "lettres" #: ../src/mn-mailboxes.gob:305 msgid "Unable to load the mailboxes configuration" msgstr "Impossible de charger la configuration des boîtes aux lettres" #: ../src/mn-mailboxes.gob:352 #, c-format msgid "Unable to parse the XML document." msgstr "Impossible d'interpréter le document XML." #: ../src/mn-mailboxes.gob:359 #, c-format msgid "The root element is missing." msgstr "L'élément racine est manquant." #: ../src/mn-mailboxes.gob:365 #, c-format msgid "The root element \"%s\" is invalid." msgstr "L'élément racine « %s » est invalide." #: ../src/mn-mailboxes.gob:387 #, c-format msgid "On line %i: %s." msgstr "A la ligne %i : %s." #: ../src/mn-mailboxes.gob:392 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "A la ligne %i : élément « %s » inconnu." #: ../src/mn-mailboxes.gob:401 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "" "Une erreur s'est produite lors du chargement de la configuration des boîtes " "aux lettres" msgstr[1] "" "Des erreurs se sont produites lors du chargement de la configuration des " "boîtes aux lettres" #: ../src/mn-mailboxes.gob:426 msgid "Unable to save the mailboxes configuration" msgstr "Impossible de sauvegarder la configuration des boîtes aux lettres" #: ../src/mn-mailboxes.gob:471 ../src/mn-vfs.c:233 #, c-format msgid "Unable to remove %s: %s." msgstr "Impossible d'enlever %s : %s." #: ../src/mn-mailboxes.gob:479 #, c-format msgid "Unable to create %s: %s." msgstr "Impossible de créer %s : %s." #: ../src/mn-mailboxes.gob:486 #, c-format msgid "Unable to open %s for writing: %s." msgstr "Impossible d'ouvrir %s en mode écriture : %s." #: ../src/mn-mailboxes.gob:493 #, c-format msgid "Unable to write the XML document." msgstr "Impossible d'écrire le document XML." #: ../src/mn-mailboxes.gob:499 #, c-format msgid "Unable to close %s: %s." msgstr "Impossible de fermer %s : %s." #: ../src/mn-mailboxes.gob:509 ../src/mn-mailboxes.gob:516 ../src/mn-vfs.c:251 #: ../src/mn-vfs.c:259 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "Impossible de renommer %s en %s : %s." #. non fatal #: ../src/mn-mailboxes.gob:522 ../src/mn-vfs.c:269 #, c-format msgid "unable to delete %s: %s" msgstr "impossible de supprimer %s : %s" #: ../src/mn-mailboxes.gob:555 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "%s a %i nouveau message" msgstr[1] "%s a %i nouveaux messages" #: ../src/mn-mailboxes.gob:581 #, c-format msgid "%s reported an error: %s" msgstr "%s a indiqué une erreur : %s" #: ../src/mn-maildir-mailbox-backend.gob:127 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "impossible d'ouvrir le dossier « %s » : %s" #: ../src/mn-maildir-mailbox-backend.gob:231 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "impossible de fermer le dossier « %s » : %s" #: ../src/mn-maildir-mailbox-backend.gob:234 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "erreur lors de la lecture du dossier « %s » : %s" #: ../src/mn-maildir-mailbox-backend.gob:265 #: ../src/mn-mh-mailbox-backend.gob:210 #: ../src/mn-sylpheed-mailbox-backend.gob:311 #, c-format msgid "cannot read %i message" msgid_plural "cannot read %i messages" msgstr[0] "impossible de lire %i message" msgstr[1] "impossible de lire %i messages" #: ../src/mn-maildir-message.gob:159 msgid "Delete message?" msgstr "Supprimer le message?" #: ../src/mn-maildir-message.gob:225 msgid "The message cannot be moved to the trash. Permanently delete it?" msgstr "" "Le message ne peut être déplacé vers la corbeille. Le supprimer de manière " "permanente ?" #: ../src/mn-maildir-message.gob:250 #, c-format msgid "" "The message could not be moved to the trash (%s). Permanently delete it?" msgstr "" "Le message n'a pu être déplacé vers la corbeille (%s). Le supprimer de " "manière permanente ?" #: ../src/mn-main.c:76 msgid "yes" msgstr "oui" #: ../src/mn-main.c:76 msgid "no" msgstr "non" #: ../src/mn-main.c:107 #, c-format msgid "%s version %s\n" msgstr "%s version %s\n" #: ../src/mn-main.c:112 #, c-format msgid "Mailbox backends:\n" msgstr "Prises en charge de boîtes aux lettres :\n" #: ../src/mn-main.c:117 #, c-format msgid "IMAP and POP3 features:\n" msgstr "Fonctionnalités IMAP et POP3 :\n" #: ../src/mn-main.c:204 #, c-format msgid "Unable to contact the running Mail Notification instance: %s." msgstr "" "Impossible de contacter l'avertisseur de courrier en cours d'exécution : %s." #: ../src/mn-main.c:244 #, c-format msgid "%s option ignored since Mail Notification is not already running" msgstr "" "option %s ignorée puisque l'avertisseur de courrier n'est pas déjà en cours " "d'exécution" #: ../src/mn-main.c:347 msgid "Show version information" msgstr "Afficher les informations de version" #: ../src/mn-main.c:356 msgid "Enable informational output" msgstr "Activer la sortie informationnelle" #: ../src/mn-main.c:365 msgid "Display the properties dialog" msgstr "Afficher la boîte de dialogue contenant les propriétés" #: ../src/mn-main.c:374 msgid "Display the about dialog" msgstr "Afficher la boîte de dialogue « à propos »" #: ../src/mn-main.c:383 msgid "Consider new mail as read" msgstr "Considérer le nouveau courrier comme lu" #: ../src/mn-main.c:392 msgid "Update the mail status" msgstr "Mettre à jour le statut du courrier" #: ../src/mn-main.c:401 msgid "Print a XML mail summary" msgstr "Afficher un aperçu XML du courrier" #: ../src/mn-main.c:410 msgid "Unset obsolete GConf configuration" msgstr "Supprimer la configuration GConf obsolète" #: ../src/mn-main.c:419 msgid "Quit Mail Notification" msgstr "Quitter l'avertisseur de courrier" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: ../src/mn-main.c:445 msgid "multi-threading is not available" msgstr "le multi-threading n'est pas disponible" #: ../src/mn-main.c:486 msgid "Mail Notification is not running" msgstr "L'avertisseur de courrier n'est pas en cours d'exécution" #: ../src/mn-main.c:498 msgid "Unable to initialize the GnomeVFS library." msgstr "Impossible d'initialiser la bibliothèque GnomeVFS." #: ../src/mn-main.c:511 msgid "An initialization error has occurred in Mail Notification" msgstr "" "Une erreur d'initialisation s'est produite dans l'avertisseur de courrier" #: ../src/mn-main.c:512 msgid "" "Unable to initialize the notification library. Message popups will not be " "displayed." msgstr "" "Impossible d'initialiser la bibliothèque d'avertissement. Les popups ne " "seront pas affichés." #: ../src/mn-main.c:557 msgid "quitting Mail Notification" msgstr "en train de quitter l'avertisseur de courrier" #: ../src/mn-main.c:576 msgid "considering new mail as read" msgstr "considération du nouveau courrier comme étant lu" #: ../src/mn-main.c:581 msgid "updating the mail status" msgstr "mise à jour du statut du courrier" #: ../src/mn-main.c:598 msgid "Mail Notification is already running" msgstr "L'avertisseur de courrier est déjà en cours d'exécution" #: ../src/mn-message-mime.c:173 #, c-format msgid "unable to parse MIME message" msgstr "impossible d'interpréter le message MIME" #. translators: header capitalization #: ../src/mn-message.gob:98 msgid "Open" msgstr "Ouvrir" #: ../src/mn-message.gob:99 msgid "Unable to open message" msgstr "Impossible d'ouvrir le message" #. translators: header capitalization #: ../src/mn-message.gob:108 msgid "Mark as Read" msgstr "Marquer comme lu" #: ../src/mn-message.gob:109 msgid "Unable to mark message as read" msgstr "Impossible de marquer le message comme lu" #. translators: header capitalization #: ../src/mn-message.gob:118 msgid "Mark as Spam" msgstr "Marquer comme indésirable" #: ../src/mn-message.gob:119 ../src/mn-message.gob:129 msgid "Unable to mark message as spam" msgstr "Impossible de marquer le message comme indésirable" #. translators: header capitalization #: ../src/mn-message.gob:128 msgid "Delete" msgstr "Supprimer" #: ../src/mn-message.gob:337 ../src/mn-sound-player.gob:133 #: ../src/mn-sound-player.gob:169 ../src/mn-util.c:1577 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "Impossible d'exécuter « %s » : %s" #: ../src/mn-mh-mailbox-backend.gob:219 #, c-format msgid "error while reading %s: %s" msgstr "erreur lors de la lecture de %s : %s" #: ../src/mn-mh-mailbox-backend.gob:243 ../src/mn-webmail-mailbox.gob:276 #, c-format msgid "unable to open %s: %s" msgstr "impossible d'ouvrir %s : %s" #: ../src/mn-pi-mailbox-properties.gob:73 msgid "_Standard" msgstr "_Standard" #: ../src/mn-pi-mailbox-properties.gob:74 msgid "In-_band SSL/TLS" msgstr "SS_L/TLS interne" #: ../src/mn-pi-mailbox-properties.gob:75 msgid "SSL/TLS on s_eparate port" msgstr "SSL/TLS sur port sépa_ré" #: ../src/mn-pi-mailbox-properties.gob:79 msgid "_Server:" msgstr "_Serveur :" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:99 msgid "Connection Type" msgstr "Type de connexion" #: ../src/mn-pi-mailbox-properties.gob:146 msgid "Port:" msgstr "Port :" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:173 msgid "Authentication" msgstr "Authentification" #: ../src/mn-pi-mailbox-properties.gob:177 msgid "_Mechanism:" msgstr "_Mécanisme :" #: ../src/mn-pi-mailbox-properties.gob:211 msgid "Connection" msgstr "Connexion" #: ../src/mn-pi-mailbox.gob:147 msgid "SSL/TLS support has not been compiled in" msgstr "le support SSL/TLS n'a pas été inclus lors de la compilation" #: ../src/mn-pi-mailbox.gob:305 msgid "missing certificate" msgstr "certificat manquant" #: ../src/mn-pi-mailbox.gob:339 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "L'avertisseur de courrier n'a pas été en mesure de faire confiance à « %s » (%" "s). Il est possible que quelqu'un soit en train d'intercepter votre " "communication afin d'obtenir vos informations confidentielles.\n" "\n" "Vous devriez vous connecter au serveur uniquement si vous êtes certain que " "vous êtes connecté à « %s ». Si vous choisissez de vous connecter au serveur, " "ce message ne sera plus affiché." #: ../src/mn-pi-mailbox.gob:353 #, c-format msgid "Certificate fingerprint: %s." msgstr "Empreinte digitale du certificat : %s." #: ../src/mn-pi-mailbox.gob:360 msgid "Connect to untrusted server?" msgstr "Se connecter au serveur non fiable ?" #: ../src/mn-pop3-mailbox.gob:359 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "arguments invalides pour la possibilité LOGIN-DELAY" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:500 msgid "" "SASL authentication with initial client response failed, retrying without " "initial client response" msgstr "" "l'authentification SASL avec réponse client SASL initiale a échoué, nouvel " "essai sans réponse client SASL initiale" #: ../src/mn-pop3-mailbox.gob:920 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "attente de %i seconde afin d'obéir à LOGIN-DELAY" msgstr[1] "attente de %i secondes afin d'obéir à LOGIN-DELAY" #: ../src/mn-pop3-mailbox.gob:1092 msgid "server does not support APOP authentication" msgstr "le serveur ne supporte pas l'authentification APOP" #: ../src/mn-pop3-mailbox.gob:1148 msgid "falling back to APOP authentication" msgstr "rétrogradation vers l'authentification APOP" #: ../src/mn-pop3-mailbox.gob:1153 msgid "falling back to USER/PASS authentication" msgstr "rétrogradation vers l'authentification USER/PASS" #: ../src/mn-popup.gob:45 ../src/mn-standard-message-view.gob:39 msgid "Mailbox:" msgstr "Boîte aux lettres :" #: ../src/mn-popup.gob:46 ../src/mn-standard-message-view.gob:40 msgid "From:" msgstr "De :" #: ../src/mn-popup.gob:47 ../src/mn-standard-message-view.gob:41 msgid "Subject:" msgstr "Sujet :" #: ../src/mn-popup.gob:96 #, c-format msgid "configuration key %s: there is no action named \"%s\"" msgstr "clé de configuration %s : il n'y a pas d'action nommée « %s »" #: ../src/mn-popup.gob:176 #, c-format msgid "unable to show popup: %s" msgstr "impossible d'afficher le popup : %s" #: ../src/mn-popup.gob:194 #, c-format msgid "unable to close popup: %s" msgstr "impossible de fermer le popup : %s" #. we set the summary here because libnotify requires it #. translators: header capitalization #: ../src/mn-popup.gob:205 msgid "New Message" msgstr "Nouveau message" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:114 ../ui/properties-dialog.glade.h:18 msgid "Mail Notification Properties" msgstr "Propriétés de l'avertisseur de courrier" #: ../src/mn-properties-dialog.gob:232 msgid "No mailbox selected." msgstr "Pas de boîte aux lettres sélectionnée." #: ../src/mn-properties-dialog.gob:237 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "%i boîte aux lettres sélectionnée." msgstr[1] "%i boîtes aux lettres sélectionnées." #: ../src/mn-server.gob:136 #, c-format msgid "Unable to register the Mail Notification D-Bus server: %s." msgstr "" "Impossible d'enregistrer le serveur D-Bus de l'avertisseur de courrier : %s." #: ../src/mn-shell.gob:290 #, c-format msgid "received %s signal, exiting" msgstr "signal %s reçu, application quittée" #: ../src/mn-shell.gob:430 msgid "No mail reader is configured" msgstr "Aucun lecteur de courrier n'est configuré" #: ../src/mn-shell.gob:431 msgid "" "You can configure a mail reader by choosing System → Preferences → " "Preferred Applications." msgstr "" "Vous pouvez configurer un lecteur de courrier en choisissant Système → " "Préférences → Applications préférées." #: ../src/mn-shell.gob:443 ../src/mn-shell.gob:449 ../src/mn-shell.gob:796 msgid "Unable to open the latest message" msgstr "Impossible d'ouvrir le dernier message" #: ../src/mn-shell.gob:444 #, c-format msgid "Messages of mailbox \"%s\" cannot be opened." msgstr "Les messages de la boîte aux lettres « %s » ne peuvent être ouverts." #: ../src/mn-shell.gob:450 ../src/mn-shell.gob:716 msgid "You have no new mail." msgstr "Vous n'avez pas de nouveau courrier." #: ../src/mn-shell.gob:605 #, c-format msgid "%s (%i)" msgstr "%s (%i)" #. translators: header capitalization #: ../src/mn-shell.gob:612 msgid "Mailboxes Having New Mail" msgstr "Boîtes aux lettres ayant du nouveau courrier" #. translators: header capitalization #: ../src/mn-shell.gob:631 msgid "Errors" msgstr "Erreurs" #. translators: header capitalization #: ../src/mn-shell.gob:651 msgid "Mail Summary" msgstr "Aperçu du courrier" #: ../src/mn-shell.gob:691 #, c-format msgid "%i message is not displayed" msgid_plural "%i messages are not displayed" msgstr[0] "%i message n'est pas affiché" msgstr[1] "%i messages ne sont pas affichés" #: ../src/mn-sound-file-chooser-dialog.gob:48 msgid "Select a File" msgstr "Sélectionnez un fichier" #: ../src/mn-sound-file-chooser-dialog.gob:58 msgid "All files" msgstr "Tous les fichiers" #: ../src/mn-sound-file-chooser-dialog.gob:63 msgid "Audio files" msgstr "Fichiers audio" #: ../src/mn-sound-player.gob:120 msgid "Unable to play sound" msgstr "Impossible de lire le son" #: ../src/mn-sound-player.gob:122 ../src/mn-util.c:1576 msgid "A command error has occurred in Mail Notification" msgstr "Une erreur de commande s'est produite dans l'avertisseur de courrier" #: ../src/mn-ssl.c:191 msgid "unknown SSL/TLS error" msgstr "erreur SSL/TLS inconnue" #: ../src/mn-standard-message-view.gob:45 msgid "Sent:" msgstr "Envoyé :" #: ../src/mn-sylpheed-mailbox-backend.gob:229 #, c-format msgid "unable to open folder: %s" msgstr "impossible d'ouvrir le dossier : %s" #: ../src/mn-sylpheed-mailbox-backend.gob:317 #, c-format msgid "unable to close folder: %s" msgstr "impossible de fermer le dossier : %s" #: ../src/mn-sylpheed-mailbox-backend.gob:320 #, c-format msgid "error while reading folder: %s" msgstr "erreur lors de la lecture du dossier : %s" #: ../src/mn-sylpheed-mailbox-backend.gob:368 #, c-format msgid "unable to set encoding: %s" msgstr "impossible de sélectionner la page de code : %s" #: ../src/mn-sylpheed-mailbox-backend.gob:443 #, c-format msgid "unexpected end of file" msgstr "fin de fichier inattendue" #: ../src/mn-sylpheed-mailbox-backend.gob:483 #, c-format msgid "incompatible file version \"%i\"" msgstr "version de fichier « %i » incompatible" #: ../src/mn-sylpheed-message.gob:69 #, c-format msgid "Unable to read %s: %s." msgstr "Impossible de lire %s : %s." #: ../src/mn-system-vfs-mailbox-properties.gob:38 #: ../src/mn-system-vfs-mailbox-properties.gob:46 #: ../src/mn-system-vfs-mailbox.gob:44 msgid "System mailbox" msgstr "Boîte aux lettres système" #: ../src/mn-system-vfs-mailbox-properties.gob:73 #, c-format msgid "Your system mailbox is %s." msgstr "Votre boîte aux lettres système est %s." #: ../src/mn-system-vfs-mailbox-properties.gob:80 msgid "" "The location of your system mailbox could not be detected. Check the MAIL " "environment variable." msgstr "" "L'emplacement de votre boîte aux lettres système n'a pu être détecté. " "Vérifiez la variable d'environnement MAIL." #: ../src/mn-system-vfs-mailbox.gob:71 msgid "system mailbox not found" msgstr "boîte aux lettres système non trouvée" #: ../src/mn-test-mailbox.gob:38 msgid "Test mailbox" msgstr "Boîte aux lettres test" #: ../src/mn-test-mailbox.gob:57 #, c-format msgid "Test message #%i" msgstr "Message test %i" #. translators: header capitalization #: ../src/mn-test-mailbox.gob:63 msgid "Mail Notification Properties Dialog" msgstr "" "Boîte de dialogue contenant les propriétés de l'avertisseur de courrier" #: ../src/mn-util.c:525 ../src/mn-util.c:548 ../src/mn-util.c:568 #: ../src/mn-util.c:590 msgid "A drag and drop error has occurred" msgstr "Une erreur de glisser-déposer s'est produite" #: ../src/mn-util.c:526 msgid "An invalid location list has been received." msgstr "Une liste d'emplacements non valide a été reçue." #: ../src/mn-util.c:569 msgid "An invalid Mozilla location has been received." msgstr "Un emplacement Mozilla non valide a été reçu." #: ../src/mn-util.c:680 msgid "Unable to display help" msgstr "Impossible d'afficher l'aide" #: ../src/mn-util.c:692 msgid "Unable to open link" msgstr "Impossible d'ouvrir le lien" #: ../src/mn-util.c:883 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" msgid_plural "" "The following locations are invalid:\n" "\n" "%s" msgstr[0] "" "L'emplacement suivant est invalide :\n" "\n" "%s" msgstr[1] "" "Les emplacements suivants sont invalides :\n" "\n" "%s" #: ../src/mn-util.c:899 msgid "A fatal error has occurred in Mail Notification" msgstr "Une erreur fatale s'est produite dans l'avertisseur de courrier" #: ../src/mn-util.c:979 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "il y a %i seconde" msgstr[1] "il y a %i secondes" #: ../src/mn-util.c:983 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "il y a approximativement %i minute" msgstr[1] "il y a approximativement %i minutes" #: ../src/mn-util.c:988 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "il y a approximativement %i heure" msgstr[1] "il y a approximativement %i heures" #: ../src/mn-util.c:993 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "il y a approximativement %i jour" msgstr[1] "il y a approximativement %i jours" #: ../src/mn-util.c:998 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "il y a approximativement %i semaine" msgstr[1] "il y a approximativement %i semaines" #: ../src/mn-util.c:1016 #, c-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i seconde" msgstr[1] "%i secondes" #: ../src/mn-util.c:1020 #, c-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i minute" msgstr[1] "%i minutes" #: ../src/mn-util.c:1025 #, c-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i heure" msgstr[1] "%i heures" #: ../src/mn-util.c:1030 msgid "1 day" msgstr "1 jour" #: ../src/mn-util.c:1506 #, c-format msgid "unterminated substitution" msgstr "substitution non terminée" #: ../src/mn-util.c:1545 #, c-format msgid "unknown substitution \"%s\"" msgstr "substitution « %s » inconnue" #: ../src/mn-util.c:1548 #, c-format msgid "empty substitution" msgstr "substitution vide" #: ../src/mn-vfs-mailbox.gob:236 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "impossible de surveiller %s (%s), vérification explicite activée" #: ../src/mn-vfs-mailbox.gob:426 msgid "unknown mailbox format" msgstr "format de boîte aux lettres inconnu" #: ../src/mn-vfs-mailbox.gob:426 msgid "does not exist" msgstr "n'existe pas" #: ../src/mn-vfs.c:241 #, c-format msgid "Unable to write %s: %s." msgstr "Impossible d'écrire %s : %s." #: ../src/mn-webmail-mailbox.gob:84 #, c-format msgid "unable to create a temporary file: %s" msgstr "impossible de créer un fichier temporaire : %s" #: ../src/mn-webmail-mailbox.gob:91 #, c-format msgid "unable to change the permissions of the temporary file: %s" msgstr "impossible de modifier les permissions du fichier temporaire : %s" #: ../src/mn-webmail-mailbox.gob:135 #, c-format msgid "unable to set encoding of %s: %s" msgstr "impossible de sélectionner la page de code de %s : %s" #: ../src/mn-webmail-mailbox.gob:192 msgid "configuration:" msgstr "configuration :" #: ../src/mn-webmail-mailbox.gob:220 #, c-format msgid "running %s" msgstr "exécution de %s" #: ../src/mn-webmail-mailbox.gob:224 #, c-format msgid "cannot execute \"%s\": %s" msgstr "impossible d'exécuter « %s » : %s" #: ../src/mn-webmail-mailbox.gob:229 msgid "standard output:" msgstr "sortie standard :" #: ../src/mn-webmail-mailbox.gob:230 msgid "standard error output:" msgstr "sortie d'erreur standard :" #. translators: %s is a program name, as in "unknown fetchyahoo failure" #: ../src/mn-webmail-mailbox.gob:248 #, c-format msgid "unknown %s failure" msgstr "échec inconnu de %s" #: ../src/mn-xml.c:51 #, c-format msgid "" "property \"%s\": unable to transform string \"%s\" into a value of type \"%s" "\"" msgstr "" "propriété « %s » : impossible de transformer la chaîne de caractères « %s » en " "une valeur de type « %s »" #: ../src/mn-yahoo-mailbox.gob:71 #, c-format msgid "unable to change the permissions of %s: %s" msgstr "impossible de changer les permissions de %s : %s" #: ../src/mn-yahoo-mailbox.gob:82 #, c-format msgid "unable to create %s: %s" msgstr "impossible de créer %s : %s" #: ../src/mn-yahoo-mailbox.gob:229 msgid "delay between mail checks too small" msgstr "délai entre les vérifications de courrier trop faible" #: ../ui/mailbox-properties-dialog.glade.h:1 msgid "Delay Between Mail Checks" msgstr "Délai entre les vérifications de courrier" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:2 ../ui/properties-dialog.glade.h:6 msgid "General" msgstr "Général" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox Name" msgstr "Nom de la boîte aux lettres" #: ../ui/mailbox-properties-dialog.glade.h:5 msgid "Details" msgstr "Détails" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:6 #: ../ui/properties-dialog.glade.h:15 msgid "General" msgstr "Général" #: ../ui/mailbox-properties-dialog.glade.h:7 msgid "Mailbox _type:" msgstr "_Type de boîte aux lettres :" #: ../ui/mailbox-properties-dialog.glade.h:8 msgid "O_ther:" msgstr "A_utre :" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:2 msgid "Click Action" msgstr "Action du clic" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:4 msgid "Expiration" msgstr "Expiration" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:8 msgid "Mailbox List" msgstr "Liste des boîtes aux lettres" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:10 msgid "Position" msgstr "Position" #: ../ui/properties-dialog.glade.h:11 msgid "A_fter:" msgstr "Ap_rès :" #: ../ui/properties-dialog.glade.h:12 msgid "Co_nsider new mail as read" msgstr "_Considérer le nouveau courrier comme lu" #: ../ui/properties-dialog.glade.h:13 msgid "De_sktop default" msgstr "_Valeur par défaut du bureau" #: ../ui/properties-dialog.glade.h:16 msgid "In the p_opup stack" msgstr "Dans la _pile des popups" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:20 msgid "Message Popups" msgstr "Popups" #: ../ui/properties-dialog.glade.h:21 msgid "Play a _sound when new mail arrives:" msgstr "Emettre un _son lorsque du courrier arrive :" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:23 msgid "Status Icon" msgstr "Icône de statut" #: ../ui/properties-dialog.glade.h:24 msgid "_Attached to the status icon" msgstr "A_ttachés à l'icône de statut" #: ../ui/properties-dialog.glade.h:25 msgid "_Display test messages" msgstr "_Afficher des messages de test" #: ../ui/properties-dialog.glade.h:26 msgid "_Enable message popups" msgstr "A_ctiver les popups" #: ../ui/properties-dialog.glade.h:27 msgid "_Launch the mail reader" msgstr "E_xécuter le lecteur de courrier" #: ../ui/properties-dialog.glade.h:28 msgid "_Open the latest message" msgstr "_Ouvrir le dernier message" #: ../ui/properties-dialog.glade.h:29 msgid "_Update the mail status" msgstr "Mettre à jour le _statut du courrier" #: ../ui/properties-dialog.glade.h:30 msgid "message popups tab|_Never" msgstr "Ja_mais" #~ msgid "" #~ "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", " #~ "the amount of time to wait before expiring message popups (seconds part)." #~ msgstr "" #~ "Si /apps/mail-notification/popups/expiration/enabled est « true », le " #~ "délai d'expiration des popups (secondes)." #~ msgid "Minutes to wait before expiring message popups" #~ msgstr "Minutes du délai d'expiration des popups" #, fuzzy #~ msgid "A GConf error has occurred: %s." #~ msgstr "Une erreur de collage s'est produite" #~ msgid "Mail Notification automation" #~ msgstr "automation de l'avertisseur de courrier" #~ msgid "Mail Notification automation factory" #~ msgstr "usine d'automation de l'avertisseur de courrier" #~ msgid "Evolution folder tree control" #~ msgstr "contrôle Evolution « hiérarchie de dossiers »" #~ msgid "Evolution folder tree control factory" #~ msgstr "créateur du contrôle Evolution « hiérarchie de dossiers »" #~ msgid "Mail Notification / Evolution glue" #~ msgstr "colle avertisseur de courrier / Evolution" #~ msgid "Mail Notification / Evolution glue factory" #~ msgstr "créateur du liant avertisseur de courrier / Evolution" #~ msgid "The currently selected URI" #~ msgstr "L'URI actuellement sélectionnée" #~ msgid "" #~ "Bonobo could not locate the %s server. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo n'a pu localiser le serveur %s. Veuillez vérifier votre " #~ "installation de l'avertisseur de courrier." #~ msgid "" #~ "Bonobo was unable to register the %s server. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo n'a pu inscrire le serveur %s. Veuillez vérifier votre " #~ "installation de l'avertisseur de courrier." #~ msgid "unable to fetch message" #~ msgstr "impossible d'obtenir le message" #~ msgid "A Bonobo exception (%s) has occurred in %s()." #~ msgstr "Une exception Bonobo (%s) s'est produite dans %s()." #~ msgid "" #~ "Bonobo could not locate the automation object. Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Bonobo n'a pu localiser l'objet automation. Veuillez vérifier votre " #~ "installation de l'avertisseur de courrier." #~ msgid "" #~ "Bonobo could not locate the %s file. Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Bonobo n'a pu localiser le fichier %s. Veuillez vérifier votre " #~ "installation de l'avertisseur de courrier." #~ msgid "Unknown" #~ msgstr "Inconnu" #~ msgid "unknown error" #~ msgstr "erreur inconnue" #~ msgid "Unable to delete message" #~ msgstr "Impossible de supprimer le message" #~ msgid "file version missing" #~ msgstr "version de fichier manquante" #~ msgid "" #~ "Unable to load image \"%s\" (%s). Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Impossible de charger l'image « %s » (%s). Veuillez vérifier votre " #~ "installation de l'avertisseur de courrier." #~ msgid "" #~ "Unable to load interface \"%s\". Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Impossible de charger l'interface « %s ». Veuillez vérifier votre " #~ "installation de l'avertisseur de courrier." #~ msgid "" #~ "Widget \"%s\" not found in interface \"%s\". Please check your Mail " #~ "Notification installation." #~ msgstr "" #~ "Elément « %s » non trouvé dans l'interface « %s ». Veuillez vérifier votre " #~ "installation de l'avertisseur de courrier." #~ msgid "Unable to open self as a module (%s)." #~ msgstr "Impossible de s'auto-ouvrir en tant que module (%s)." #~ msgid "" #~ "Signal handler \"%s\" not found. Please check your Mail Notification " #~ "installation." #~ msgstr "" #~ "Gestionnaire de signal « %s » non trouvé. Veuillez vérifier votre " #~ "installation de l'avertisseur de courrier." #~ msgid "Unable to create a thread: %s." #~ msgstr "Impossible de créer un thread : %s." #~ msgid "unable to get current time: %s" #~ msgstr "impossible d'obtenir l'heure courante : %s" #~ msgid "unknown date" #~ msgstr "date inconnue" #~ msgid "Mailbox _name:" #~ msgstr "N_om de la boîte aux lettres :" #~ msgid "_Delay between mail checks:" #~ msgstr "_Délai entre les vérifications de courrier :" #~ msgid "_Use Default" #~ msgstr "_Par défaut" #~ msgid "seconds" #~ msgstr "secondes" mail-notification-5.4.dfsg.1/po/nl.po0000644000175000001440000015110610737451115017252 0ustar evilynuxusers# Dutch translations for mail-notification. # Copyright (C) 2003-2008 Jean-Yves Lefort. # # This file is distributed under the same license as the # mail-notification package. # # Marcel J. Zwiebel , 2006-2007 # msgid "" msgstr "" "Project-Id-Version: mail-notification 4.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-06-19 08:41+0200\n" "PO-Revision-Date: 2007-06-26 12:07+0200\n" "Last-Translator: Marcel J. Zwiebel \n" "Language-Team: Marcel J. Zwiebel \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n>1;\n" #: ../data/GNOME_MailNotification.server.in.in.h:1 msgid "Mail Notification automation" msgstr "Automatische e-mail notificatie" #: ../data/GNOME_MailNotification.server.in.in.h:2 msgid "Mail Notification automation factory" msgstr "Automatische e-mail notificatie fabriek" #: ../data/GNOME_MailNotification_Evolution.server.in.h:1 msgid "Evolution folder tree control" msgstr "Evolution mappen boomweergave bedieningselement" #: ../data/GNOME_MailNotification_Evolution.server.in.h:2 msgid "Evolution folder tree control factory" msgstr "Evolution mappen boomweergave bedieningselement fabriek" #: ../data/GNOME_MailNotification_Evolution.server.in.h:3 msgid "Mail Notification / Evolution glue" msgstr "E-mail notificatie / Evolution verbinding" #: ../data/GNOME_MailNotification_Evolution.server.in.h:4 msgid "Mail Notification / Evolution glue factory" msgstr "E-mail notificatie / Evolution verbinding fabriek" #: ../data/mail-notification-properties.desktop.in.h:1 msgid "Configure Mail Notification" msgstr "E-mail notificatie instellen" #: ../data/mail-notification-properties.desktop.in.h:2 #: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:234 #: ../src/mn-main.c:143 ../src/mn-main.c:350 ../src/mn-main.c:371 #: ../src/mn-main.c:445 msgid "Mail Notification" msgstr "E-mail notificatie" #: ../data/mail-notification.desktop.in.h:1 msgid "Get notified when new mail arrives" msgstr "Informeer mij wanneer nieuwe e-mail berichten binnenkomen" #: ../data/mail-notification.schemas.in.in.h:1 msgid "Always display an icon" msgstr "Toon altijd een icoon" #: ../data/mail-notification.schemas.in.in.h:2 msgid "Blink on errors" msgstr "Bij fouten knipperen" #: ../data/mail-notification.schemas.in.in.h:3 msgid "Click action" msgstr "Muisklik-actie" #: ../data/mail-notification.schemas.in.in.h:4 msgid "Display seen mail" msgstr "Laat gelezen e-mail berichten zien" #: ../data/mail-notification.schemas.in.in.h:5 msgid "Enable message popups" msgstr "Mini-overzicht (popup) nieuwe e-mail activeren" #: ../data/mail-notification.schemas.in.in.h:6 msgid "Expire message popups" msgstr "Mini-overzicht (popup) verlopen e-mail activeren" #: ../data/mail-notification.schemas.in.in.h:7 msgid "Fingerprints of trusted X509 certificates" msgstr "Vingerafdrukken van betrouwbare X509 certificaten" #: ../data/mail-notification.schemas.in.in.h:8 msgid "Height of properties dialog" msgstr "Hoogte van het instellingen dialoogvenster" #: ../data/mail-notification.schemas.in.in.h:9 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "amount of time to wait before expiring message popups (minutes part)." msgstr "" "Als /apps/mail-notification/popups/expiration/enabled is \"true\", de " "wachttijd voordat het berichtvenster verlopen verschijnt (minuten)." #: ../data/mail-notification.schemas.in.in.h:10 msgid "" "If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the " "amount of time to wait before expiring message popups (seconds part)." msgstr "" "Als /apps/mail-notification/popups/expiration/enabled is \\\"true\\\", de " "wachttijd voordat het berichtvenster verlopen verschijnt (seconden)." #: ../data/mail-notification.schemas.in.in.h:11 msgid "Mail changed command" msgstr "Opdracht bij het wijzigen van e-mail" #: ../data/mail-notification.schemas.in.in.h:12 msgid "Mail read command" msgstr "Opdracht bij het lezen van e-mail" #: ../data/mail-notification.schemas.in.in.h:13 #, fuzzy msgid "Message popups actions" msgstr "Popupvenster acties" #: ../data/mail-notification.schemas.in.in.h:14 msgid "Message popups position" msgstr "Popupvenster plaatsing" #: ../data/mail-notification.schemas.in.in.h:15 msgid "Minutes to wait before expiring message popups" msgstr "Wachttijd in minuten voordat het e-mail popupvenster gesloten wordt" #: ../data/mail-notification.schemas.in.in.h:16 msgid "New mail command" msgstr "Opdracht bij ontvangst van nieuwe e-mail" #: ../data/mail-notification.schemas.in.in.h:17 msgid "Run a command when all mail is read" msgstr "Opdracht na het lezen van alle nieuwe e-mail" #: ../data/mail-notification.schemas.in.in.h:18 msgid "Run a command when new mail arrives" msgstr "Opdracht na het lezen van alle nieuwe e-mail" #: ../data/mail-notification.schemas.in.in.h:19 msgid "Run a command when the message list changes" msgstr "Opdracht na het wijzigen van de berichtenlijst" #: ../data/mail-notification.schemas.in.in.h:20 msgid "Seconds to wait before expiring message popups" msgstr "Wachttijd in seconden voordat het e-mail popupvenster gesloten wordt" #: ../data/mail-notification.schemas.in.in.h:21 msgid "" "The action to perform when the icon is clicked. Must be \"display-properties-" "dialog\", \"launch-mail-reader\", \"open-latest-message\" or \"update-mail-" "status\"." msgstr "" "De opdracht die uitgevoerd moet worden bij een muisklik op het icoon. Heeft " "ofwel de waarde \"display-properties-dialog\", \"launch-mail-reader\" of " "\"update-mail-status\"." #: ../data/mail-notification.schemas.in.in.h:22 msgid "The command to run when all mail is read." msgstr "Opdracht die uitgevoerd moet worden wanneer alle e-mail gelezen is" #: ../data/mail-notification.schemas.in.in.h:23 msgid "The command to run when new mail arrives." msgstr "Opdracht die uitgevoerd moet worden wanneer nieuwe e-mail arriveert." #: ../data/mail-notification.schemas.in.in.h:24 msgid "The command to run when the message list changes." msgstr "Opdracht die uitgevoerd moet worden wanneer de berichtenlijst wijzigt." #: ../data/mail-notification.schemas.in.in.h:25 msgid "The height of the properties dialog in pixels." msgstr "Hoogte van het instellingen dialoogvenster in pixels" #: ../data/mail-notification.schemas.in.in.h:26 msgid "" "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 " "certificate." msgstr "" "De lijst met betrouwbare SSL/TLS-servers (hostname:port) zonder X509-" "certificaat." #: ../data/mail-notification.schemas.in.in.h:27 msgid "" "The list of trusted X509 certificates, represented by their MD5 fingerprint." msgstr "" "De lijst met betrouwbare X509-certificaten, gerepresenteerd door hun " "MD5vingerafdruk." #: ../data/mail-notification.schemas.in.in.h:28 msgid "" "The ordered list of actions to include in the message popups. Each element " "must be \"open\", \"mark-as-read\", \"mark-as-spam\" or \"delete\"." msgstr "" "De geordende lijst van acties getoond in het popupvenster. Elk element " "moet zijn \"open\", \"mark-as-read\", \"mark-as-spam\" of \"delete\"." #: ../data/mail-notification.schemas.in.in.h:29 msgid "The position of the message popups. Must be \"attached\" or \"free\"." msgstr "De positie van het popupvenster. Moet zijn \"attached\" of \"free\"." #: ../data/mail-notification.schemas.in.in.h:30 msgid "" "The type of mail summary to display in the icon's tooltip. Must be \"standard" "\", \"compact\" or \"none\"." msgstr "" "Het type e-mailoverzicht dat getoond wordt in de tooltip van het icoon. Moet " "zijn \"standard\",\"compact\" of \"none\"." #: ../data/mail-notification.schemas.in.in.h:31 msgid "The width of the properties dialog in pixels." msgstr "Hoogte van het instellingen dialoogvenster in pixels." #: ../data/mail-notification.schemas.in.in.h:32 msgid "Tooltip mail summary" msgstr "Hoogte van het instellingen dialoogvenster in pixels." #: ../data/mail-notification.schemas.in.in.h:33 msgid "Trusted servers list" msgstr "Lijst trusted servers" #: ../data/mail-notification.schemas.in.in.h:34 msgid "Whether the status icon should blink on errors or not." msgstr "Moet het e-mail icoon bij het optreden van fouten knipperen" #: ../data/mail-notification.schemas.in.in.h:35 msgid "Whether to display an icon when there is no new mail or not." msgstr "Moet een icoon getoond worden als nieuwe e-mail arriveert." #: ../data/mail-notification.schemas.in.in.h:36 msgid "Whether to display seen mail or not." msgstr "Moet eerder getoonde e-mail opnieuw getoond worden." #: ../data/mail-notification.schemas.in.in.h:37 msgid "Whether to enable message popups or not." msgstr "Moeten popupvensters ingeschakeld worden." #: ../data/mail-notification.schemas.in.in.h:38 msgid "" "Whether to expire message popups or not. Must be \"default\", \"false\" or " "\"true\"." msgstr "" "Moeten popupvenster automatisch gesloten worden. Moet zijn \"default\", " "\"false\" of \"true\"." #: ../data/mail-notification.schemas.in.in.h:39 msgid "Whether to run a command when all mail is read or not." msgstr "Moet een opdracht uitgevoerd worden als alle e-mail gelezen is." #: ../data/mail-notification.schemas.in.in.h:40 msgid "Whether to run a command when new mail arrives or not." msgstr "Moet een opdracht uitgevoerd worden als een nieuwe e-mail arriveert." #: ../data/mail-notification.schemas.in.in.h:41 msgid "Whether to run a command when the message list changes or not." msgstr "Moet een opdracht uitgevoerd worden als de berichtenlijst wijzigt." #: ../data/mail-notification.schemas.in.in.h:42 msgid "Width of properties dialog" msgstr "Breedte van het instellingenvenster" #: ../src/eggtrayicon.c:132 msgid "Orientation" msgstr "Oriëntatie" #: ../src/eggtrayicon.c:133 msgid "The orientation of the tray." msgstr "De oriëntatie van het mededelingengebied." #. translators: header capitalization #: ../src/mn-about-dialog.gob:50 msgid "A Mail Notification Icon" msgstr "" "Een e-mail icoon dat verschijnt als er nieuwe e-mail berichten in uw postbus " "zijn gearriveerd." #. #. * translators: Your Name #. * optionally followed by one or more: \nOther Contributor's Name #. #: ../src/mn-about-dialog.gob:58 msgid "translator-credits" msgstr "Marcel J. Zwiebel " #: ../src/mn-auth-combo-box.gob:101 #: ../src/mn-autodetect-mailbox-properties.gob:110 msgid "Autodetect" msgstr "Automatisch detecteren" #. translators: header capitalization #: ../src/mn-authenticated-mailbox-properties.gob:50 msgid "Account" msgstr "Account" #: ../src/mn-authenticated-mailbox-properties.gob:53 msgid "_Username:" msgstr "Gebr_uikersnaam:" #: ../src/mn-authenticated-mailbox-properties.gob:57 msgid "_Password:" msgstr "_Wachtwoord:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:124 #: ../src/mn-system-vfs-mailbox-properties.gob:60 msgid "Location" msgstr "Locatie" #: ../src/mn-autodetect-mailbox-properties.gob:126 msgid "_Location:" msgstr "_Locatie:" #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:134 msgid "_Browse..." msgstr "_Doorzoeken..." #. translators: header capitalization #: ../src/mn-autodetect-mailbox-properties.gob:176 msgid "Select a File or Folder" msgstr "Selecteer een bestand of map" #: ../src/mn-base-mbox-mailbox-backend.gob:345 #, c-format msgid "unable to close file: %s" msgstr "bestand kan niet gesloten worden: %s" #: ../src/mn-base-mbox-mailbox-backend.gob:359 #, c-format msgid "unable to open mailbox: %s" msgstr "postbus kan niet geopend worden: %s" #: ../src/mn-client-session.c:257 #, c-format msgid "resolving %s" msgstr "verbinding maken met %s" #: ../src/mn-client-session.c:273 #, c-format msgid "unable to resolve %s: %s" msgstr "er kon geen verbinding worden gemaakt met %s: %s" #: ../src/mn-client-session.c:314 #, c-format msgid "network address #%i" msgstr "netwerkadres #%i" #: ../src/mn-client-session.c:317 #, c-format msgid "unable to convert network address #%i into textual form: %s" msgstr "het netwerkadres #%i kan niet als tekst geconverteerd worden: %s" #: ../src/mn-client-session.c:328 #, c-format msgid "%s: unsupported address family" msgstr "%s: adresfamilie wordt niet ondersteund " #: ../src/mn-client-session.c:335 #, c-format msgid "%s: unable to create socket: %s" msgstr "%s: Socket kon niet aangemaakt worden: %s" #: ../src/mn-client-session.c:339 #, c-format msgid "connecting to %s (%s) port %i" msgstr "connectie maken met %s (%s) via poort %i" #: ../src/mn-client-session.c:342 #, c-format msgid "unable to connect: %s" msgstr "er kan geen verbinding worden gemaakt: %s" #: ../src/mn-client-session.c:347 msgid "connected successfully" msgstr "verbinding geslaagd" #. if reached, we couldn't find a working address #: ../src/mn-client-session.c:361 #, c-format msgid "unable to connect to %s" msgstr "er kan geen verbinding gemaakt worden met %s" #: ../src/mn-client-session.c:388 #, c-format msgid "unable to initialize the OpenSSL library: %s" msgstr "de OpenSSL bibliotheek kan niet geinitialiseerd worden: %s" #: ../src/mn-client-session.c:396 #, c-format msgid "unable to create a SSL/TLS object: %s" msgstr "een SSL/TLS object kan niet aangemaakt worden: %s" #: ../src/mn-client-session.c:402 #, c-format msgid "unable to set the SSL/TLS file descriptor: %s" msgstr "een SSL/TLS descriptor kan niet gezet worden: %s" #: ../src/mn-client-session.c:408 #, c-format msgid "unable to perform the SSL/TLS handshake: %s" msgstr "een SSL/TLS handshake kan niet uitgevoerd worden: %s" #: ../src/mn-client-session.c:414 msgid "untrusted server" msgstr "niet-betrouwbare server" #: ../src/mn-client-session.c:418 #, c-format msgid "a SSL/TLS layer is now active (%s, %s %i-bit)" msgstr "een SSL/TLS layer is nu actief (%s, %s %i-Bit)" #: ../src/mn-client-session.c:589 msgid "server name not found in certificate" msgstr "servernaam niet gevonden in het certificaat" #: ../src/mn-client-session.c:594 #, c-format msgid "" "user-provided server name \"%s\" does not match certificate-provided server " "name \"%s\"" msgstr "" "door de gebruiker toegekende servernaam \"%s\" komt niet overeen met de " "servernaam \"%s\" toegekend door het certificaat" #: ../src/mn-client-session.c:612 #, c-format msgid "" "user-provided server name \"%s\" matches none of the certificate-provided " "server names %s" msgstr "" "door de gebruiker toegekende servernaam \"%s\" komt niet voor in de " "servernamen \"%s\" toegekend door het certificaat" #: ../src/mn-client-session.c:688 msgid "missing certificate" msgstr "missend certificaat" #: ../src/mn-client-session.c:717 #, c-format msgid "" "Mail Notification was unable to trust \"%s\" (%s). It is possible that " "someone is intercepting your communication to obtain your confidential " "information.\n" "\n" "You should only connect to the server if you are certain you are connected " "to \"%s\". If you choose to connect to the server, this message will not be " "shown again." msgstr "" "E-mail notificatie kan \"%s\" niet vertrouwen (%s). Het is mogelijk dat " "iemand uw communicatie ondesrchept om vertrouwelijke informatie te " "verkrijgen.\n" "\n" "U moet alleen verbinding maken met de server als u er zeker van bent dat u " "verbinding heeft met \"%s\". Als u er toch voor kiest om verbinding met de " "server te maken, dan zal deze boodschap niet meer getoond worden." #: ../src/mn-client-session.c:731 #, fuzzy, c-format msgid "Certificate fingerprint: %s." msgstr "Certificaat vingerafdruk: %s" #: ../src/mn-client-session.c:738 msgid "Connect to untrusted server?" msgstr "Wilt u verbinding maken met een niet-betrouwbare server?" #: ../src/mn-client-session.c:803 #, c-format msgid "response \"%s\" is not valid in current context" msgstr "het antwoord \"%s\" is niet geldig binnen de huidige context" #: ../src/mn-client-session.c:832 #, c-format msgid "unable to parse response \"%s\"" msgstr "het antwoord \"%s\" kan niet verwerkt worden" #: ../src/mn-client-session.c:882 ../src/mn-client-session.c:889 #, c-format msgid "unable to read from server: %s" msgstr "lezen van de server is niet mogelijk: %s" #: ../src/mn-client-session.c:887 msgid "unable to read from server: EOF" msgstr "lezen van de server is niet mogelijk: EOF" #: ../src/mn-client-session.c:899 #, c-format msgid "unable to decode data using SASL: %s" msgstr "de gegevens kunnen niet met behulp van SASL gedecodeerd worden: %s" #: ../src/mn-client-session.c:1044 #, c-format msgid "unable to encode data using SASL: %s" msgstr "de gegevens kunnen niet met behulp van SASL gecodeerd worden: %s" #: ../src/mn-client-session.c:1075 ../src/mn-client-session.c:1082 #, c-format msgid "unable to write to server: %s" msgstr "schrijven op de server is niet mogelijk: %s" #: ../src/mn-client-session.c:1080 msgid "unable to write to server: EOF" msgstr "schrijven op de server is niet mogelijk: EOF" #: ../src/mn-client-session.c:1111 ../src/mn-pop3-mailbox.gob:434 #, c-format msgid "unable to encode Base64: %s" msgstr "de gegevens kunnen niet met behulp van Base64 gecodeerd worden: %s" #: ../src/mn-client-session.c:1288 #, c-format msgid "unable to initialize the SASL library: %s" msgstr "De SASL-bibliotheek kan niet geinitialiseerd worden: %s" #: ../src/mn-client-session.c:1300 #, c-format msgid "unable to retrieve local address of socket: %s" msgstr "het locale adres van socket kan niet opgevraagd worden: %s" #: ../src/mn-client-session.c:1306 #, c-format msgid "unable to retrieve remote address of socket: %s" msgstr "het externe adres van socket kan niet opgevraagd worden: %s" #: ../src/mn-client-session.c:1340 #, c-format msgid "unable to set SASL security properties: %s" msgstr "de SASL-veiligheidseigenschappen kunnen niet gezet worden: %s" #: ../src/mn-client-session.c:1364 msgid "" "unable to start SASL authentication: SASL asked for something we did not know" msgstr "" "de SASL-authenticatie kan niet gestart worden: SASL vroeg naar iets waar we " "geen verstand van hebben" #: ../src/mn-client-session.c:1383 #, c-format msgid "unable to start SASL authentication: %s" msgstr "de SASL-authenticatie kan niet gestart worden: %s" #: ../src/mn-client-session.c:1387 #, c-format msgid "unable to create a SASL connection: %s" msgstr "Er kan geen SASL-verbinding worden gemaakt: %s" #: ../src/mn-client-session.c:1434 msgid "SASL asked for something we did not know, aborting SASL authentication" msgstr "" "SASL vroeg naar iets waar we geen verstand van hebben, SASL-authenticatie " "wordt afgebroken" #: ../src/mn-client-session.c:1451 #, c-format msgid "%s, aborting SASL authentication" msgstr "%s, SASL-authenticatie wordt afgebroken" #. compliance error #: ../src/mn-client-session.c:1456 #, c-format msgid "unable to decode Base64 input from server: %s" msgstr "de Base64-invoer van de server kan niet gedecodeerd worden: %s" #: ../src/mn-client-session.c:1492 #, c-format msgid "a SASL security layer of strength factor %i is now active" msgstr "de SASL-veiligheidslaag met sterkte niveau %i is nu geactiveerd" #. a security layer is active but we can't retrieve maxoutbuf -> fatal #: ../src/mn-client-session.c:1497 #, c-format msgid "unable to get SASL_MAXOUTBUF property: %s" msgstr "de waarde SASL_MAXOUTBUF kan niet worden gevonden: %s" #: ../src/mn-client-session.c:1503 #, c-format msgid "warning: unable to get SASL_SSF property: %s" msgstr "waarschuwing: de waarde SASL_SSF kan niet worden gevonden: %s" #: ../src/mn-client-session.c:1662 msgid "unknown server error" msgstr "onbekende server-fout :-(" #: ../src/mn-compact-message-view.gob:46 msgid "Mailbox" msgstr "Postbus" #: ../src/mn-compact-message-view.gob:47 msgid "From" msgstr "Van" #: ../src/mn-compact-message-view.gob:48 msgid "Subject" msgstr "Onderwerp" #: ../src/mn-compact-message-view.gob:49 msgid "Sent" msgstr "Verzonden" #: ../src/mn-conf.c:282 msgid "A directory creation error has occurred" msgstr "Bij het aanmaken van een map is een fout opgetreden" #: ../src/mn-conf.c:283 #, c-format msgid "Unable to create directory \"%s\": %s." msgstr "De map \"%s\" kan niet aangemaakt worden: %s." #: ../src/mn-conf.c:407 #, c-format msgid "recursively unsetting %s" msgstr "%s recursief terugzetten" #: ../src/mn-conf.c:411 msgid "syncing the GConf database" msgstr "synchroniseren met de GConf-database" #: ../src/mn-conf.c:414 msgid "completed" msgstr "voltooid" #: ../src/mn-custom-vfs-mailbox.gob:77 msgid "invalid location" msgstr "ongeldige locatie" #: ../src/mn-evolution-folder-tree-control.gob:69 msgid "The currently selected URI" msgstr "De huidige geselecteerde URI" #. translators: header capitalization #: ../src/mn-evolution-mailbox-properties.gob:79 msgid "Folder" msgstr "Map" #: ../src/mn-evolution-mailbox-properties.gob:204 #, fuzzy msgid "" "Mail Notification can not contact Evolution. Make sure that Evolution is " "running and that the Evolution Jean-Yves Lefort's Mail Notification plugin " "is loaded." msgstr "" "E-mail notificatie kan geen verbinding maken met Evolution. Controleer of " "Evolution gestart is en dat Jean-Yves Lefort's Mail Notification plugin geactiveerd is." #: ../src/mn-evolution-mailbox.gob:78 msgid "folder not found" msgstr "map niet gevonden" #: ../src/mn-evolution-mailbox.gob:79 msgid "message not found" msgstr "bericht niet gevonden" #: ../src/mn-evolution-mailbox.gob:220 msgid "unable to contact Evolution" msgstr "er kan geen verbinding met Evolution gemaakt worden" #: ../src/mn-evolution-plugin.c:102 ../src/mn-evolution-plugin.c:106 msgid "Unable to activate the Mail Notification plugin" msgstr "De Evolution-plugin Mail Notification kan niet geactiveerd worden" #: ../src/mn-evolution-plugin.c:102 #, c-format msgid "" "Bonobo could not locate the %s server. Please check your Mail Notification " "installation." msgstr "" "Bonobo kan de %s server niet vinden. Controleer aub de installatie van E-" "mail notificatie." #: ../src/mn-evolution-plugin.c:106 ../src/mn-main.c:523 #, c-format msgid "" "Bonobo was unable to register the %s server. Please check your Mail " "Notification installation." msgstr "" "Bonobo kan niet aanmelden bij de %s server. Controleer aub de installatie " "van E-mail notificatie." #: ../src/mn-gmail-mailbox.gob:104 msgid "invalid feed location" msgstr "ongeldig feed-adres" #: ../src/mn-gmail-mailbox.gob:118 #, c-format msgid "retrieving feed from %s" msgstr "feed wordt bij %s opgevraagd" #: ../src/mn-gmail-mailbox.gob:125 #, c-format msgid "unable to retrieve feed: %s" msgstr "de feed kan niet opgevraagd worden: %s" #: ../src/mn-gmail-mailbox.gob:140 ../src/mn-gmail-mailbox.gob:191 msgid "unable to parse feed" msgstr "de feed kan niet verwerkt worden" #: ../src/mn-gmime-stream-vfs.gob:51 #: ../src/mn-sylpheed-mailbox-backend.gob:209 #, c-format msgid "unable to read %s: %s" msgstr "%s kan niet gelezen worden: %s" #: ../src/mn-gmime-stream-vfs.gob:53 #, c-format msgid "unable to write to %s: %s" msgstr "er kan niet naar %s geschreven worden: %s" #: ../src/mn-gmime-stream-vfs.gob:55 #, c-format msgid "unable to seek in %s: %s" msgstr "er kan niet gezocht worden in in %s: %s" #: ../src/mn-gmime-stream-vfs.gob:57 #, c-format msgid "unable to tell position of %s: %s" msgstr "onmogelijk om de positie van %s vast te stellen: %s" #: ../src/mn-gmime-stream-vfs.gob:59 ../src/mn-mh-mailbox-backend.gob:174 #, c-format msgid "unable to close %s: %s" msgstr "%s kan niet gesloten worden: %s" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:118 msgid "IMAP Mailbox" msgstr "IMAP-postbus" #: ../src/mn-imap-mailbox-properties.gob:120 msgid "In_box" msgstr "In_box" #: ../src/mn-imap-mailbox-properties.gob:125 msgid "_Other:" msgstr "_Ander:" #. translators: header capitalization #: ../src/mn-imap-mailbox-properties.gob:138 msgid "Use the IDLE Extension" msgstr "Gebruik de IDLE-extensie" #: ../src/mn-imap-mailbox-properties.gob:142 #: ../ui/properties-dialog.glade.h:35 msgid "_Never" msgstr "N_ooit" #: ../src/mn-imap-mailbox-properties.gob:143 msgid "A_utodetect" msgstr "Au_tomatische detectie" #: ../src/mn-imap-mailbox-properties.gob:144 msgid "Al_ways" msgstr "Al_tijd" #: ../src/mn-imap-mailbox.gob:381 msgid "server did not send capabilities" msgstr "geen ontvangst van de server-mogelijkheden" #: ../src/mn-imap-mailbox.gob:548 msgid "server advertised LOGINDISABLED, not using LOGIN authentication" msgstr "" "de server heeft geroepen LOGINDISABLED, LOGIN-authorisatie wordt niet " "gebruikt" #: ../src/mn-imap-mailbox.gob:549 msgid "unable to login" msgstr "aanmelding mislukt" #: ../src/mn-imap-mailbox.gob:822 msgid "unable to fetch message" msgstr "bericht kon niet opgehaald worden" #: ../src/mn-imap-mailbox.gob:838 msgid "" "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, " "logging out" msgstr "" "\"Gebruik de IDLE-extensie\" wordt gezet op \"nooit\" in de postbus-" "eigenschap, afmelden" #: ../src/mn-imap-mailbox.gob:849 #, c-format msgid "the remote server runs %s, not using the IDLE extension" msgstr "de externe server gebruikt %s, de IDLE-extensie wordt niet gebruikt" #: ../src/mn-imap-mailbox.gob:854 #, c-format msgid "" "the remote server runs %s, the IDLE extension might not function properly" msgstr "" "de externe server gebruikt %s, de IDLE-extensie zou misschien niet goed " "kunnen werken" #: ../src/mn-imap-mailbox.gob:863 msgid "the remote server does not support the IDLE extension, logging out" msgstr "de externe server ondersteund de IDLE-extensie niet, er wordt afgemeld" #: ../src/mn-imap-mailbox.gob:1368 ../src/mn-pop3-mailbox.gob:297 msgid "server does not support in-band SSL/TLS" msgstr "de server ondersteund geen in-band SSL/TLS" #: ../src/mn-imap-mailbox.gob:1392 ../src/mn-pop3-mailbox.gob:956 msgid "" "a SASL authentication mechanism was selected but SASL support has not been " "compiled in" msgstr "" "u heeft authenticatie met behulp van SASL gekozen, echter SASL-ondersteuning " "is bij de aanmaak van het programma niet ingesteld" #: ../src/mn-imap-mailbox.gob:1402 ../src/mn-pop3-mailbox.gob:976 #, c-format msgid "unknown authentication mechanism \"%s\"" msgstr "onbekend authenticatie-mechanisme \"%s\"" #: ../src/mn-imap-mailbox.gob:1434 ../src/mn-pop3-mailbox.gob:1012 #, c-format msgid "disabling mechanism \"%s\" and retrying SASL authentication" msgstr "" "het mechanisme \"%s\" wordt uitgeschakeld en een nieuwe poging wordt gewaagd " "met behulp van SASL-authenticatie" #: ../src/mn-imap-mailbox.gob:1446 msgid "falling back to IMAP LOGIN authentication" msgstr "er wordt teruggevallen op authenticatie via IMAP LOGIN" #: ../src/mn-imap-mailbox.gob:1458 ../src/mn-pop3-mailbox.gob:1041 msgid "authentication failed" msgstr "authenticatie mislukt" #. translators: header capitalization #: ../src/mn-mail-icon.gob:93 msgid "_Mail Reader" msgstr "_E-mail programma" #. translators: header capitalization #: ../src/mn-mail-icon.gob:95 msgid "_Open Latest Message" msgstr "_Open laatste bericht" #. translators: header capitalization #: ../src/mn-mail-icon.gob:97 ../src/mn-mailbox-view.gob:314 msgid "_Update" msgstr "_Bijwerken" #. translators: header capitalization #: ../src/mn-mail-icon.gob:104 msgid "R_emove From Notification Area" msgstr "V_erwijderen van medelingengebied" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:95 #, c-format msgid "%s Properties" msgstr "%s Eigenschappen" #. translators: header capitalization #: ../src/mn-mailbox-properties-dialog.gob:244 msgid "Add a Mailbox" msgstr "Een postbus toevoegen" #: ../src/mn-mailbox-view.gob:250 msgid "A paste error has occurred" msgstr "Een invoegfout is opgetreden" #: ../src/mn-mailbox-view.gob:566 #, c-format msgid "unhandled %s mailbox (%s)" msgstr "onbehandelde %s-postbus (%s)" #: ../src/mn-mailbox-view.gob:571 #, c-format msgid "%s mailbox" msgstr "%s-postbus" #: ../src/mn-mailbox-view.gob:586 msgid "detecting mailbox type..." msgstr "detecteren postbustype..." #: ../src/mn-mailbox.gob:507 msgid "\"type\" attribute missing" msgstr "eigenschap \"type\" werd niet gevonden" #: ../src/mn-mailbox.gob:514 #, c-format msgid "unknown mailbox type \"%s\"" msgstr "onbekend type postbus \"%s\"" #: ../src/mn-mailbox.gob:910 #, c-format msgid "property \"%s\" has no value" msgstr "eigenschap \"%s\" heeft geen waarde" #: ../src/mn-mailboxes.gob:241 msgid "An error has occurred while importing old mailboxes" msgstr "Bij het importeren van oude postbussen is een fout opgetreden" #: ../src/mn-mailboxes.gob:267 msgid "Unable to load the mailboxes configuration" msgstr "Het is niet mogelijk de postbus-configuratie te laden" #: ../src/mn-mailboxes.gob:313 msgid "Unable to parse the XML document." msgstr "Het XML-document kan niet verwerkt worden." #: ../src/mn-mailboxes.gob:320 msgid "The root element is missing." msgstr "Het basiselement (root) is niet aanwezig." #: ../src/mn-mailboxes.gob:326 #, c-format msgid "The root element \"%s\" is invalid." msgstr "Het basiselement (root) \"%s\" is niet geldig." #: ../src/mn-mailboxes.gob:349 #, c-format msgid "On line %i: %s." msgstr "Op regel %i: %s" #: ../src/mn-mailboxes.gob:354 #, c-format msgid "On line %i: unknown element \"%s\"." msgstr "Op regel %i: onbekend element \"%s\"." #: ../src/mn-mailboxes.gob:363 msgid "An error has occurred while loading the mailboxes configuration" msgid_plural "Errors have occurred while loading the mailboxes configuration" msgstr[0] "Bij het laden van de postbusinstellingen is een fout opgetreden." msgstr[1] "" "Bij het laden van de postbusinstellingen zijn meerdere fouten opgetreden." #: ../src/mn-mailboxes.gob:388 msgid "Unable to save the mailboxes configuration" msgstr "De postbusinstellingen kunnen niet opgeslagen worden" #: ../src/mn-mailboxes.gob:430 ../src/mn-vfs.c:240 #, c-format msgid "Unable to remove %s: %s." msgstr "%s kan niet verwijderd worden: %s" #: ../src/mn-mailboxes.gob:438 #, c-format msgid "Unable to create %s: %s." msgstr "%s kan niet aangemaakt worden: %s" #: ../src/mn-mailboxes.gob:445 #, c-format msgid "Unable to open %s for writing: %s." msgstr "%s kan niet geopend worden voor schrijfactie: %s" #: ../src/mn-mailboxes.gob:452 msgid "Unable to write the XML document." msgstr "Het XML-document kan niet weggeschreven worden." #: ../src/mn-mailboxes.gob:458 #, c-format msgid "Unable to close %s: %s." msgstr "%s kan niet gesloten worden: %s" #: ../src/mn-mailboxes.gob:468 ../src/mn-mailboxes.gob:475 ../src/mn-vfs.c:258 #: ../src/mn-vfs.c:266 #, c-format msgid "Unable to rename %s to %s: %s." msgstr "%s kan niet worden hernoemd naar %s: %s" #. non fatal #: ../src/mn-mailboxes.gob:481 ../src/mn-vfs.c:276 #, c-format msgid "unable to delete %s: %s" msgstr "%s kan niet verwijderd worden: %s" #: ../src/mn-mailboxes.gob:511 #, c-format msgid "%s has %i new message" msgid_plural "%s has %i new messages" msgstr[0] "%s heeft %i nieuw bericht" msgstr[1] "%s heeft %i nieuwe berichten" #: ../src/mn-mailboxes.gob:537 #, c-format msgid "%s reported an error: %s" msgstr "%s heeft een fout gemeld: %s" #: ../src/mn-maildir-mailbox-backend.gob:129 #, c-format msgid "unable to open folder \"%s\": %s" msgstr "de map \"%s\" kan niet geopend worden: %s" #: ../src/mn-maildir-mailbox-backend.gob:178 #, c-format msgid "unable to close folder \"%s\": %s" msgstr "de map \"%s\" kan niet gesloten worden: %s" #: ../src/mn-maildir-mailbox-backend.gob:181 #, c-format msgid "error while reading folder \"%s\": %s" msgstr "fout bij het lezen van map \"%s\": %s" #: ../src/mn-main.c:110 msgid "yes" msgstr "ja" #: ../src/mn-main.c:110 msgid "no" msgstr "nee" #: ../src/mn-main.c:143 #, c-format msgid "%s version %s\n" msgstr "%s versie %s\n" #: ../src/mn-main.c:148 msgid "Mailbox backends:\n" msgstr "Postbuskoppelingen:\n" #: ../src/mn-main.c:153 msgid "POP3 and IMAP features:\n" msgstr "Ingebouwde POP3- und IMAP-mogelijkheden:\n" #: ../src/mn-main.c:158 msgid "Sylpheed features:\n" msgstr "Sylpheed-funtionaliteit:\n" #: ../src/mn-main.c:206 #, c-format msgid "A Bonobo exception (%s) has occurred in %s()." msgstr "Een Bonobo-exceptie (%s) is opgetreden in %s()." #: ../src/mn-main.c:248 #, c-format msgid "%s option ignored since Mail Notification is not already running" msgstr "optie %s wordt genegeerd omdat E-mail notificatie nog niet actief is" #: ../src/mn-main.c:268 msgid "Show version information" msgstr "Toon versie-informatie" #: ../src/mn-main.c:277 msgid "Enable informational output" msgstr "Uitvoer informatie activeren" #: ../src/mn-main.c:286 msgid "Display the properties dialog" msgstr "Toon het eigenschappenvenster" #: ../src/mn-main.c:295 msgid "Display the about dialog" msgstr "Toon het informatievenster" #: ../src/mn-main.c:304 msgid "Update the mail status" msgstr "Kijk of er nieuwe berichten zijn" #: ../src/mn-main.c:313 msgid "Print a XML mail summary" msgstr "Druk een XML-overzicht af" #: ../src/mn-main.c:322 msgid "Unset obsolete GConf configuration" msgstr "Geef overbodige GConf-configuratie vrij" #: ../src/mn-main.c:331 msgid "Quit Mail Notification" msgstr "E-mail notificatie afsluiten" #. #. * We cannot use mn_fatal_error_dialog() because gtk_init() has #. * not been called yet. #. #: ../src/mn-main.c:358 msgid "multi-threading is not available" msgstr "multi-threading wordt niet ondersteund" #: ../src/mn-main.c:412 msgid "" "Bonobo could not locate the automation object. Please check your Mail " "Notification installation." msgstr "" "Bonobo kan het automation object niet vinden. Controleer aub de installatie " "van E-mail notificatie." #: ../src/mn-main.c:418 msgid "quitting Mail Notification" msgstr "E-mail notificatie wordt afgesloten" #: ../src/mn-main.c:422 msgid "Mail Notification is not running" msgstr "E-mail notificatie is niet actief" #: ../src/mn-main.c:437 msgid "Unable to initialize the GnomeVFS library." msgstr "De GnomeVFS-bibliotheek kan niet geinitialiseerd worden." #: ../src/mn-main.c:447 msgid "An initialization error has occurred in Mail Notification" msgstr "Een initialisatiefout is opgetreden in E-mail notificatie" #: ../src/mn-main.c:448 msgid "" "Unable to initialize the notification library. Message popups will not be " "displayed." msgstr "" "De notificatiebibliotheek kan niet geinitialiseerd worden. Er zullen geen " "popupvensters getoond worden." #: ../src/mn-main.c:486 msgid "updating the mail status" msgstr "bijwerken e-mail status" #: ../src/mn-main.c:502 msgid "Mail Notification is already running" msgstr "E-mail notificatie is reeds actief" #: ../src/mn-main.c:519 #, c-format msgid "" "Bonobo could not locate the %s file. Please check your Mail Notification " "installation." msgstr "" "Bonobo kan het %s-bestand niet vinden. Controleer aub de installatie van E-" "mail notificatie." #: ../src/mn-message-mime.c:193 msgid "unable to parse MIME message" msgstr "het MIME-bericht kan niet verwerkt worden" #: ../src/mn-message.gob:145 msgid "Unknown" msgstr "Onbekend" #: ../src/mn-message.gob:208 msgid "unterminated substitution" msgstr "niet-afgesloten vervanging" #: ../src/mn-message.gob:247 #, c-format msgid "unknown substitution \"%s\"" msgstr "vervanging \"%s\" onbekend" #: ../src/mn-message.gob:250 msgid "empty substitution" msgstr "lege vervanging" #: ../src/mn-message.gob:313 ../src/mn-util.c:1427 #, c-format msgid "Unable to execute \"%s\": %s." msgstr "Niet mogelijk \"%s\" uit te voeren: %s" #: ../src/mn-mh-mailbox-backend.gob:177 #, c-format msgid "error while reading %s: %s" msgstr "fout bij het lezen van %s: %s" #: ../src/mn-mh-mailbox-backend.gob:190 #, c-format msgid "unable to open %s: %s" msgstr "%s kan niet geopend worden: %s" #: ../src/mn-pi-mailbox-properties.gob:70 msgid "_Standard" msgstr "Sta_ndaard" #: ../src/mn-pi-mailbox-properties.gob:71 msgid "In-_band SSL/TLS" msgstr "_In-band SSL/TLS" #: ../src/mn-pi-mailbox-properties.gob:72 msgid "SSL/TLS on s_eparate port" msgstr "SSL/TLS over een apa_rte poort" #: ../src/mn-pi-mailbox-properties.gob:76 msgid "_Server:" msgstr "_Server:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:96 msgid "Connection Type" msgstr "Verbindingstype:" #: ../src/mn-pi-mailbox-properties.gob:140 msgid "Port:" msgstr "Poort:" #. translators: header capitalization #: ../src/mn-pi-mailbox-properties.gob:167 msgid "Authentication" msgstr "Aanmelding" #: ../src/mn-pi-mailbox-properties.gob:171 msgid "_Mechanism:" msgstr "_Mechanisme:" #: ../src/mn-pi-mailbox-properties.gob:205 msgid "Connection" msgstr "Verbinding" #: ../src/mn-pi-mailbox.gob:154 msgid "SSL/TLS support has not been compiled in" msgstr "le support SSL/TLS n'a pas été inclus lors de la compilation" #: ../src/mn-pi-mailbox.gob:320 #, c-format msgid "" "Mail Notification was unable to log into %s mailbox %s, possibly because the " "credentials you have entered are invalid.\n" "\n" "Please re-enter your credentials." msgstr "" "E-mail notificatie kon zich niet aanmelden bij postbus %s %s Een mogelijke " "verklaring kan zijn dat de opgegeven combinatie gebruikersnaam/wachtwoord " "onjuist is. \n" "\n" "Geeft u aub opnieuw uw gebruikersnaam/wachtwoord." #: ../src/mn-pi-mailbox.gob:321 #, c-format msgid "Enter your credentials for %s mailbox %s." msgstr "Geef aub uw gebruikersnaam/wachtwoord voor postbus %s %s ." #. keep the title in sync with gnome-authentication-manager #. translators: header capitalization #: ../src/mn-pi-mailbox.gob:364 msgid "Authentication Required" msgstr "Aanmelding is verplicht" #: ../src/mn-pop3-mailbox.gob:345 msgid "invalid arguments for the LOGIN-DELAY capability" msgstr "ongeldige argumenten voor de LOGIN-DELAY functie" #. #. * Some servers violate RFC 2449 by not supporting a #. * second argument to the AUTH command. Support these #. * servers nevertheless, by retrying without the SASL #. * initial client response. #. #: ../src/mn-pop3-mailbox.gob:486 msgid "" "SASL authentication with initial client response failed, retrying without " "initial client response" msgstr "" "De SASL-authenticate met initieel client-antwoord is mislukt, er wordt een " "nieuwe poging zonder client-antwoord onedernomen" #: ../src/mn-pop3-mailbox.gob:703 msgid "unknown error" msgstr "onbekende fout" #: ../src/mn-pop3-mailbox.gob:798 #, c-format msgid "honouring LOGIN-DELAY, sleeping for %i second" msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds" msgstr[0] "LOGIN-DELAY wordt gehonoreerd, er wordt %i seconde gewacht" msgstr[1] "LOGIN-DELAY wordt gehonoreerd, er wordt %i seconden gewacht" #: ../src/mn-pop3-mailbox.gob:968 msgid "server does not support APOP authentication" msgstr "de server ondersteund geen APOP-aanmelding." #: ../src/mn-pop3-mailbox.gob:1024 msgid "falling back to APOP authentication" msgstr "er wordt teruggevallen op APOP-aanmelding" #: ../src/mn-pop3-mailbox.gob:1029 msgid "falling back to USER/PASS authentication" msgstr "er wordt teruggevallen op USER/PASS-aanmelding" #: ../src/mn-popup.gob:60 ../src/mn-standard-message-view.gob:63 msgid "Mailbox:" msgstr "Postbus:" #: ../src/mn-popup.gob:62 ../src/mn-standard-message-view.gob:65 msgid "Unreadable message:" msgstr "Message non lisible :" #: ../src/mn-popup.gob:65 ../src/mn-standard-message-view.gob:68 msgid "From:" msgstr "Van:" #: ../src/mn-popup.gob:66 ../src/mn-standard-message-view.gob:69 msgid "Subject:" msgstr "Onderwerp:" #: ../src/mn-popup.gob:128 #, c-format msgid "configuration key %s: there is no action named `%s'" msgstr "" #. translators: header capitalization #: ../src/mn-popup.gob:141 msgid "Open" msgstr "Openen" #. translators: header capitalization #: ../src/mn-popup.gob:154 msgid "Mark as Read" msgstr "Markeer als gelezen" #. translators: header capitalization #: ../src/mn-popup.gob:167 msgid "Mark as Spam" msgstr "Aanmerken als troep" #. translators: header capitalization #: ../src/mn-popup.gob:180 msgid "Delete" msgstr "Verwijderen" #: ../src/mn-popup.gob:196 msgid "Unable to open message" msgstr "Bericht kan niet geopend worden" #: ../src/mn-popup.gob:213 msgid "Unable to mark message as read" msgstr "Bericht kan niet als gelezen gemarkeerd worden" #: ../src/mn-popup.gob:230 msgid "Unable to mark message as spam" msgstr "Bericht kan niet als troep aangemerkt worden" #: ../src/mn-popup.gob:247 #, fuzzy msgid "Unable to delete message" msgstr "Bericht kan niet verwijderd worden" #: ../src/mn-popup.gob:306 #, c-format msgid "unable to show popup: %s" msgstr "popvenster kan niet getoond worden: %s" #: ../src/mn-popup.gob:323 #, c-format msgid "unable to close popup: %s" msgstr "popupvenster kan niet gesloten worden: %s" #. we set the summary here because libnotify requires it #. translators: header capitalization #: ../src/mn-popup.gob:334 msgid "New Message" msgstr "Nieuw bericht" #. translators: header capitalization #: ../src/mn-properties-dialog.gob:131 ../ui/properties-dialog.glade.h:20 msgid "Mail Notification Properties" msgstr "Eigenschappen E-mail notificatie" #. translators: "test" is an adjective, not a verb #: ../src/mn-properties-dialog.gob:136 msgid "_Test messages" msgstr "_Test berichten" #: ../src/mn-properties-dialog.gob:276 msgid "No mailbox selected." msgstr "Geen postbus geselecteerd." #: ../src/mn-properties-dialog.gob:281 #, c-format msgid "%i mailbox selected." msgid_plural "%i mailboxes selected." msgstr[0] "%i postbus geselecteerd." msgstr[1] "%i postbussen geselecteerd." #: ../src/mn-shell.gob:224 msgid "No mail reader is configured" msgstr "Er is geen e-mail programma ingesteld" #: ../src/mn-shell.gob:225 msgid "" "You can configure a mail reader by choosing System → Preferences → " "Preferred Applications." msgstr "" "U kunt een e-mail programma installen door te kiezen voor Systeem → " "Voorkeuren → Programmavoorkeuren." #: ../src/mn-shell.gob:236 ../src/mn-shell.gob:242 ../src/mn-shell.gob:534 msgid "Unable to open the latest message" msgstr "Het laatste bericht kan niet geopend worden." #: ../src/mn-shell.gob:237 #, c-format msgid "Messages of mailbox \"%s\" cannot be opened." msgstr "Berichten in postbus \"%s\" kunnen niet geopend worden." #: ../src/mn-shell.gob:243 ../src/mn-shell.gob:462 msgid "You have no new mail." msgstr "U heeft geen nieuwe e-mail berichten." #. translators: header capitalization #: ../src/mn-shell.gob:398 msgid "Mailboxes Having New Mail" msgstr "Postbussen met nieuwe e-mail berichten" #. translators: header capitalization #: ../src/mn-shell.gob:417 msgid "Errors" msgstr "Fouten" #. translators: header capitalization #: ../src/mn-shell.gob:433 msgid "Mail Summary" msgstr "Overzicht e-mail berichten" #: ../src/mn-ssl.c:159 msgid "unknown SSL/TLS error" msgstr "onbekende SSL/TLS-fout" #: ../src/mn-standard-message-view.gob:73 msgid "Sent:" msgstr "Verzonden" #. translators: header capitalization #: ../src/mn-stock.c:30 msgid "Select _All" msgstr "_Alles selecteren" #. translators: header capitalization #: ../src/mn-stock.c:32 msgid "Co_nnect" msgstr "_Verbinden" #: ../src/mn-sylpheed-mailbox-backend.gob:227 #, c-format msgid "unable to open folder: %s" msgstr "map kan niet geopend worden: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:277 #, c-format msgid "unable to close folder: %s" msgstr "map kan niet gesloten worden: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:280 #, c-format msgid "error while reading folder: %s" msgstr "fout bij het lezen van map: %s" #: ../src/mn-sylpheed-mailbox-backend.gob:424 msgid "unexpected end of file" msgstr "onverwacht einde van bestand" #: ../src/mn-sylpheed-mailbox-backend.gob:437 #, c-format msgid "incompatible file version \"%i\"" msgstr "bestandsversie is niet compatibel »%i«" #: ../src/mn-sylpheed-mailbox-backend.gob:440 msgid "file version missing" msgstr "bestandsversie is niet aanwezig" #: ../src/mn-sylpheed-mailbox-backend.gob:498 #, c-format msgid "Unable to read %s: %s." msgstr "Niet mogelijk om %s te lezen: %s." #: ../src/mn-system-vfs-mailbox-properties.gob:41 #: ../src/mn-system-vfs-mailbox-properties.gob:49 #: ../src/mn-system-vfs-mailbox.gob:46 msgid "System mailbox" msgstr "Systeempostbus" #: ../src/mn-system-vfs-mailbox-properties.gob:76 #, c-format msgid "Your system mailbox is %s." msgstr "Uw systeempostbus is %s." #: ../src/mn-system-vfs-mailbox-properties.gob:83 msgid "" "The location of your system mailbox could not be detected. Check the MAIL " "environment variable." msgstr "" "De locatie van de systeempostbus is onvindbaar. Contorleer aub de " "omgevingsvariabele MAIL." #: ../src/mn-system-vfs-mailbox.gob:73 msgid "system mailbox not found" msgstr "Systeempostbus niet gevonden" #: ../src/mn-test-mailbox.gob:40 msgid "Test mailbox" msgstr "Testpostbus" #: ../src/mn-test-mailbox.gob:59 #, c-format msgid "Test message #%i" msgstr "Testbericht %i" #. translators: header capitalization #: ../src/mn-test-mailbox.gob:65 msgid "Mail Notification Properties Dialog" msgstr "E-mail notificatie eigenschappenvenster" #: ../src/mn-util.c:351 #, c-format msgid "error loading image: %s" msgstr "fout bij laden afbeelding: %s" #: ../src/mn-util.c:367 #, c-format msgid "" "Unable to load interface \"%s\". Please check your Mail Notification " "installation." msgstr "" "Kan de \"%s\"-interface niet laden. Controleer aub de installatie van e-mail " "notificatie." #: ../src/mn-util.c:382 #, c-format msgid "" "Widget \"%s\" not found in interface \"%s\". Please check your Mail " "Notification installation." msgstr "" "Schermelement \"%s\" niet gevonden in de interface. Controleer aub de " "installatie van e-mail notificatie." #: ../src/mn-util.c:451 #, c-format msgid "Unable to open self as a module (%s)." msgstr "Kan niet zelf als een module openen (%s)." #: ../src/mn-util.c:456 #, c-format msgid "" "Signal handler \"%s\" not found. Please check your Mail Notification " "installation." msgstr "" "Signaalafhandeling \"%s\" niet gevonden. Controleer aub de installatie van e-" "mail notificatie." #: ../src/mn-util.c:607 ../src/mn-util.c:630 ../src/mn-util.c:650 #: ../src/mn-util.c:672 msgid "A drag and drop error has occurred" msgstr "Een drag'n'drop-fout is opgetreden" #: ../src/mn-util.c:608 msgid "An invalid location list has been received." msgstr "Ontvangst van een ongeldige adreslijst." #: ../src/mn-util.c:651 msgid "An invalid Mozilla location has been received." msgstr "Ontvangst van een ongeldig Mozilla-adres." #: ../src/mn-util.c:727 msgid "Unable to display help" msgstr "Kan geen helpinformatie tonen" #: ../src/mn-util.c:739 msgid "Unable to open link" msgstr "Kan link niet openen" #: ../src/mn-util.c:753 #, c-format msgid "Unable to create a thread: %s." msgstr "Kan geen thread aanmaken: %s." #: ../src/mn-util.c:930 #, c-format msgid "" "The following location is invalid:\n" "\n" "%s" msgid_plural "" "The following locations are invalid:\n" "\n" "%s" msgstr[0] "" "De volgende locatie is ongeldig:\n" "\n" "%sDe volgende locaties zijn ongeldig:\n" "\n" "%s" msgstr[1] "" "De volgende locatie is ongeldig:\n" "\n" "%sDe volgende locaties zijn ongeldig:\n" "\n" "%s" #: ../src/mn-util.c:946 msgid "A fatal error has occurred in Mail Notification" msgstr "Een fatale fout is opgetreden in E-mail notificatie " #: ../src/mn-util.c:990 #, c-format msgid "unable to get current time: %s" msgstr "kan de huidige tijd niet bepalen: %s" #: ../src/mn-util.c:1359 #, c-format msgid "%i second ago" msgid_plural "%i seconds ago" msgstr[0] "%i seconde geleden" msgstr[1] "%i seconden geleden" #: ../src/mn-util.c:1363 #, c-format msgid "about %i minute ago" msgid_plural "about %i minutes ago" msgstr[0] "ongeveer %i minuut geleden" msgstr[1] "ongeveer %i minuten geleden" #: ../src/mn-util.c:1368 #, c-format msgid "about %i hour ago" msgid_plural "about %i hours ago" msgstr[0] "ongeveer %i uur geleden" msgstr[1] "ongeveer %i uren geleden" #: ../src/mn-util.c:1373 #, c-format msgid "about %i day ago" msgid_plural "about %i days ago" msgstr[0] "ongeveer %i dag geleden" msgstr[1] "ongeveer %i dagen geleden" #: ../src/mn-util.c:1378 #, c-format msgid "about %i week ago" msgid_plural "about %i weeks ago" msgstr[0] "ongeveer %i week geleden" msgstr[1] "ongeveer %i weken geleden" #: ../src/mn-util.c:1391 msgid "unknown date" msgstr "onbekende datum" #: ../src/mn-util.c:1426 msgid "A command error has occurred in Mail Notification" msgstr "Een opdrachtfout is opgetreden in E-mail notificatie" #: ../src/mn-vfs-mailbox.gob:249 #, c-format msgid "unable to monitor %s (%s), poll mode activated" msgstr "" "%s (%s) kan niet in de gaten worden gehouden, poll modus wordt geactiveerd" #: ../src/mn-vfs-mailbox.gob:421 msgid "unknown mailbox format" msgstr "onbekend postbusformaat" #: ../src/mn-vfs-mailbox.gob:421 msgid "does not exist" msgstr "bestaat niet" #: ../src/mn-vfs.c:248 #, c-format msgid "Unable to write %s: %s." msgstr "Niet mogelijk %s te schrijven: %s." #: ../src/mn-xml.c:54 #, c-format msgid "" "property \"%s\": unable to transform string \"%s\" into a value of type \"%s" "\"" msgstr "" "eigenschap \"%s\": niet mogelijk om tekenreeks \"%s\" om te zettenin een " "waarde van het type \"%s\"" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:8 msgid "General" msgstr "Algemeen" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:2 #: ../ui/properties-dialog.glade.h:17 msgid "General" msgstr "Algemeen" #: ../ui/mailbox-properties-dialog.glade.h:3 msgid "Mailbox _name:" msgstr "Postbus_naam:" #: ../ui/mailbox-properties-dialog.glade.h:4 msgid "Mailbox _type:" msgstr "Postbus_type:" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:6 msgid "Us_e Default" msgstr "Gebr_uik standaardwaarde" #: ../ui/mailbox-properties-dialog.glade.h:7 msgid "_Delay between mail checks:" msgstr "_Wachttijd tussen controleren e-mail:" #. translators: header capitalization #: ../ui/mailbox-properties-dialog.glade.h:9 msgid "_Use Default" msgstr "Gebr_uik standaardwaarde" #: ../ui/mailbox-properties-dialog.glade.h:10 #: ../ui/properties-dialog.glade.h:41 msgid "minutes" msgstr "minuten" #: ../ui/mailbox-properties-dialog.glade.h:11 #: ../ui/properties-dialog.glade.h:42 msgid "seconds" msgstr "seconden" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:2 msgid "Click Action" msgstr "Actie bij muisklik" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:4 msgid "Commands" msgstr "Opdrachten" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:6 msgid "Expiration" msgstr "Venster sluiten" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:10 msgid "Mailbox List" msgstr "Postbuslijst" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:12 msgid "Position" msgstr "Positie" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:14 msgid "Tooltip Mail Summary" msgstr "Overzicht e-mail berichten" #: ../ui/properties-dialog.glade.h:15 msgid "A_fter:" msgstr "_Na:" #: ../ui/properties-dialog.glade.h:18 msgid "In the p_opup stack" msgstr "_In de popup-stapel" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:22 msgid "Message Popups" msgstr "Popupvenster" #. translators: header capitalization #: ../ui/properties-dialog.glade.h:24 msgid "Status Icon" msgstr "Statusicoon" #: ../ui/properties-dialog.glade.h:25 msgid "When _new mail arrives:" msgstr "Wanneer _nieuwe e-mail arriveert:" #: ../ui/properties-dialog.glade.h:26 msgid "When all mail has _been read:" msgstr "Wanneer alle e-mail is ge_lezen:" #: ../ui/properties-dialog.glade.h:27 msgid "_Always display" msgstr "Laat _altijd zien" #: ../ui/properties-dialog.glade.h:28 msgid "_Attached to the status icon" msgstr "_Gekoppeld aan de statusicoon" #: ../ui/properties-dialog.glade.h:29 msgid "_Blink on errors" msgstr "_Knipperen bij fouten" #: ../ui/properties-dialog.glade.h:30 msgid "_Desktop default" msgstr "_Standaardwaarde bureaublad" #: ../ui/properties-dialog.glade.h:31 msgid "_Display seen mail" msgstr "T_oon alle ongelezen e-mail berichten" #: ../ui/properties-dialog.glade.h:32 msgid "_Display this dialog" msgstr "Toon dit _dialoogvenster" #: ../ui/properties-dialog.glade.h:33 msgid "_Enable message popups" msgstr "_Activeer popupvenster nieuwe e-mail" #: ../ui/properties-dialog.glade.h:34 msgid "_Launch the mail reader" msgstr "Start het _e-mail programma" #: ../ui/properties-dialog.glade.h:36 msgid "_None" msgstr "_Geen" #: ../ui/properties-dialog.glade.h:37 msgid "_Open the latest message" msgstr "O_pen het laatste bericht" #: ../ui/properties-dialog.glade.h:38 msgid "_Update the mail status" msgstr "_Controleer op nieuwe e-mail berichten" #: ../ui/properties-dialog.glade.h:39 msgid "icon tooltip's mail summary layout|Co_mpact" msgstr "Co_mpact" #: ../ui/properties-dialog.glade.h:40 msgid "icon tooltip's mail summary layout|_Standard" msgstr "_Standaard" #~ msgid "server did not send all the messages we requested" #~ msgstr "de server heeft niet alle opgegeven berichten verzonden" #~ msgid "server did not send search results" #~ msgstr "de server heeft geen zoekresultaten verzonden" mail-notification-5.4.dfsg.1/jbsrc/0000755000175000001440000000000011015313025016745 5ustar evilynuxusersmail-notification-5.4.dfsg.1/jbsrc/tools/0000755000175000001440000000000011015313027020107 5ustar evilynuxusersmail-notification-5.4.dfsg.1/jbsrc/tools/config.guess0000755000175000001440000012706110707444443022454 0ustar evilynuxusers#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, # Inc. timestamp='2007-07-22' # This file 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 program 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 program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa:Linux:*:*) echo xtensa-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: mail-notification-5.4.dfsg.1/jbsrc/tools/intltool-merge.in0000644000175000001440000011474610761641102023422 0ustar evilynuxusers#!@INTLTOOL_PERL@ -w # -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*- # # The Intltool Message Merger # # Copyright (C) 2000, 2003 Free Software Foundation. # Copyright (C) 2000, 2001 Eazel, Inc # # Intltool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # version 2 published by the Free Software Foundation. # # Intltool 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 program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # # Authors: Maciej Stachowiak # Kenneth Christiansen # Darin Adler # # Proper XML UTF-8'ification written by Cyrille Chepelov # ## Release information my $PROGRAM = "intltool-merge"; my $PACKAGE = "intltool"; my $VERSION = "0.37.1"; ## Loaded modules use strict; use Getopt::Long; use Text::Wrap; use File::Basename; my $must_end_tag = -1; my $last_depth = -1; my $translation_depth = -1; my @tag_stack = (); my @entered_tag = (); my @translation_strings = (); my $leading_space = ""; ## Scalars used by the option stuff my $HELP_ARG = 0; my $VERSION_ARG = 0; my $BA_STYLE_ARG = 0; my $XML_STYLE_ARG = 0; my $KEYS_STYLE_ARG = 0; my $DESKTOP_STYLE_ARG = 0; my $SCHEMAS_STYLE_ARG = 0; my $RFC822DEB_STYLE_ARG = 0; my $QUOTED_STYLE_ARG = 0; my $QUOTEDXML_STYLE_ARG = 0; my $QUIET_ARG = 0; my $PASS_THROUGH_ARG = 0; my $UTF8_ARG = 0; my $MULTIPLE_OUTPUT = 0; my $cache_file; ## Handle options GetOptions ( "help" => \$HELP_ARG, "version" => \$VERSION_ARG, "quiet|q" => \$QUIET_ARG, "oaf-style|o" => \$BA_STYLE_ARG, ## for compatibility "ba-style|b" => \$BA_STYLE_ARG, "xml-style|x" => \$XML_STYLE_ARG, "keys-style|k" => \$KEYS_STYLE_ARG, "desktop-style|d" => \$DESKTOP_STYLE_ARG, "schemas-style|s" => \$SCHEMAS_STYLE_ARG, "rfc822deb-style|r" => \$RFC822DEB_STYLE_ARG, "quoted-style" => \$QUOTED_STYLE_ARG, "quotedxml-style" => \$QUOTEDXML_STYLE_ARG, "pass-through|p" => \$PASS_THROUGH_ARG, "utf8|u" => \$UTF8_ARG, "multiple-output|m" => \$MULTIPLE_OUTPUT, "cache|c=s" => \$cache_file ) or &error; my $PO_DIR; my $FILE; my $OUTFILE; my %po_files_by_lang = (); my %translations = (); my $iconv = $ENV{"ICONV"} || "iconv"; my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null'); sub isProgramInPath { my ($file) = @_; # If either a file exists, or when run it returns 0 exit status return 1 if ((-x $file) or (system("$file -l >$devnull") == 0)); return 0; } if (! isProgramInPath ("$iconv")) { print STDERR " *** iconv is not found on this system!\n". " *** Without it, intltool-merge can not convert encodings.\n"; exit; } # Use this instead of \w for XML files to handle more possible characters. my $w = "[-A-Za-z0-9._:]"; # XML quoted string contents my $q = "[^\\\"]*"; ## Check for options. if ($VERSION_ARG) { &print_version; } elsif ($HELP_ARG) { &print_help; } elsif ($BA_STYLE_ARG && @ARGV > 2) { &utf8_sanity_check; &preparation; &print_message; &ba_merge_translations; &finalize; } elsif ($XML_STYLE_ARG && @ARGV > 2) { &utf8_sanity_check; &preparation; &print_message; &xml_merge_output; &finalize; } elsif ($KEYS_STYLE_ARG && @ARGV > 2) { &utf8_sanity_check; &preparation; &print_message; &keys_merge_translations; &finalize; } elsif ($DESKTOP_STYLE_ARG && @ARGV > 2) { &utf8_sanity_check; &preparation; &print_message; &desktop_merge_translations; &finalize; } elsif ($SCHEMAS_STYLE_ARG && @ARGV > 2) { &utf8_sanity_check; &preparation; &print_message; &schemas_merge_translations; &finalize; } elsif ($RFC822DEB_STYLE_ARG && @ARGV > 2) { &preparation; &print_message; &rfc822deb_merge_translations; &finalize; } elsif (($QUOTED_STYLE_ARG || $QUOTEDXML_STYLE_ARG) && @ARGV > 2) { &utf8_sanity_check; &preparation; &print_message; "ed_merge_translations($QUOTEDXML_STYLE_ARG); &finalize; } else { &print_help; } exit; ## Sub for printing release information sub print_version { print <<_EOF_; ${PROGRAM} (${PACKAGE}) ${VERSION} Written by Maciej Stachowiak, Darin Adler and Kenneth Christiansen. Copyright (C) 2000-2003 Free Software Foundation, Inc. Copyright (C) 2000-2001 Eazel, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. _EOF_ exit; } ## Sub for printing usage information sub print_help { print <<_EOF_; Usage: ${PROGRAM} [OPTION]... PO_DIRECTORY FILENAME OUTPUT_FILE Generates an output file that includes some localized attributes from an untranslated source file. Mandatory options: (exactly one must be specified) -b, --ba-style includes translations in the bonobo-activation style -d, --desktop-style includes translations in the desktop style -k, --keys-style includes translations in the keys style -s, --schemas-style includes translations in the schemas style -r, --rfc822deb-style includes translations in the RFC822 style --quoted-style includes translations in the quoted string style --quotedxml-style includes translations in the quoted xml string style -x, --xml-style includes translations in the standard xml style Other options: -u, --utf8 convert all strings to UTF-8 before merging (default for everything except RFC822 style) -p, --pass-through deprecated, does nothing and issues a warning -m, --multiple-output output one localized file per locale, instead of a single file containing all localized elements -c, --cache=FILE specify cache file name (usually \$top_builddir/po/.intltool-merge-cache) -q, --quiet suppress most messages --help display this help and exit --version output version information and exit Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE") or send email to . _EOF_ exit; } ## Sub for printing error messages sub print_error { print STDERR "Try `${PROGRAM} --help' for more information.\n"; exit; } sub print_message { print "Merging translations into $OUTFILE.\n" unless $QUIET_ARG; } sub preparation { $PO_DIR = $ARGV[0]; $FILE = $ARGV[1]; $OUTFILE = $ARGV[2]; &gather_po_files; &get_translation_database; } # General-purpose code for looking up translations in .po files sub po_file2lang { my ($tmp) = @_; $tmp =~ s/^.*\/(.*)\.po$/$1/; return $tmp; } sub gather_po_files { if (my $linguas = $ENV{"LINGUAS"}) { for my $lang (split / /, $linguas) { my $po_file = $PO_DIR . "/" . $lang . ".po"; if (-e $po_file) { $po_files_by_lang{$lang} = $po_file; } } } else { if (open LINGUAS_FILE, "$PO_DIR/LINGUAS") { while () { next if /^#/; for my $lang (split) { chomp ($lang); my $po_file = $PO_DIR . "/" . $lang . ".po"; if (-e $po_file) { $po_files_by_lang{$lang} = $po_file; } } } close LINGUAS_FILE; } else { for my $po_file (glob "$PO_DIR/*.po") { $po_files_by_lang{po_file2lang($po_file)} = $po_file; } } } } sub get_local_charset { my ($encoding) = @_; my $alias_file = $ENV{"G_CHARSET_ALIAS"} || "@INTLTOOL_LIBDIR@/charset.alias"; # seek character encoding aliases in charset.alias (glib) if (open CHARSET_ALIAS, $alias_file) { while () { next if /^\#/; return $1 if (/^\s*([-._a-zA-Z0-9]+)\s+$encoding\b/i) } close CHARSET_ALIAS; } # if not found, return input string return $encoding; } sub get_po_encoding { my ($in_po_file) = @_; my $encoding = ""; open IN_PO_FILE, $in_po_file or die; while () { ## example: "Content-Type: text/plain; charset=ISO-8859-1\n" if (/Content-Type\:.*charset=([-a-zA-Z0-9]+)\\n/) { $encoding = $1; last; } } close IN_PO_FILE; if (!$encoding) { print STDERR "Warning: no encoding found in $in_po_file. Assuming ISO-8859-1\n" unless $QUIET_ARG; $encoding = "ISO-8859-1"; } system ("$iconv -f $encoding -t UTF-8 <$devnull 2>$devnull"); if ($?) { $encoding = get_local_charset($encoding); } return $encoding } sub utf8_sanity_check { print STDERR "Warning: option --pass-through has been removed.\n" if $PASS_THROUGH_ARG; $UTF8_ARG = 1; } sub get_translation_database { if ($cache_file) { &get_cached_translation_database; } else { &create_translation_database; } } sub get_newest_po_age { my $newest_age; foreach my $file (values %po_files_by_lang) { my $file_age = -M $file; $newest_age = $file_age if !$newest_age || $file_age < $newest_age; } $newest_age = 0 if !$newest_age; return $newest_age; } sub create_cache { print "Generating and caching the translation database\n" unless $QUIET_ARG; &create_translation_database; open CACHE, ">$cache_file" || die; print CACHE join "\x01", %translations; close CACHE; } sub load_cache { print "Found cached translation database\n" unless $QUIET_ARG; my $contents; open CACHE, "<$cache_file" || die; { local $/; $contents = ; } close CACHE; %translations = split "\x01", $contents; } sub get_cached_translation_database { my $cache_file_age = -M $cache_file; if (defined $cache_file_age) { if ($cache_file_age <= &get_newest_po_age) { &load_cache; return; } print "Found too-old cached translation database\n" unless $QUIET_ARG; } &create_cache; } sub create_translation_database { for my $lang (keys %po_files_by_lang) { my $po_file = $po_files_by_lang{$lang}; if ($UTF8_ARG) { my $encoding = get_po_encoding ($po_file); if (lc $encoding eq "utf-8") { open PO_FILE, "<$po_file"; } else { print "NOTICE: $po_file is not in UTF-8 but $encoding, converting...\n" unless $QUIET_ARG;; open PO_FILE, "$iconv -f $encoding -t UTF-8 $po_file|"; } } else { open PO_FILE, "<$po_file"; } my $nextfuzzy = 0; my $inmsgid = 0; my $inmsgstr = 0; my $msgid = ""; my $msgstr = ""; while () { $nextfuzzy = 1 if /^#, fuzzy/; if (/^msgid "((\\.|[^\\]+)*)"/ ) { $translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr; $msgid = ""; $msgstr = ""; if ($nextfuzzy) { $inmsgid = 0; } else { $msgid = unescape_po_string($1); $inmsgid = 1; } $inmsgstr = 0; $nextfuzzy = 0; } if (/^msgstr "((\\.|[^\\]+)*)"/) { $msgstr = unescape_po_string($1); $inmsgstr = 1; $inmsgid = 0; } if (/^"((\\.|[^\\]+)*)"/) { $msgid .= unescape_po_string($1) if $inmsgid; $msgstr .= unescape_po_string($1) if $inmsgstr; } } $translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr; } } sub finalize { } sub unescape_one_sequence { my ($sequence) = @_; return "\\" if $sequence eq "\\\\"; return "\"" if $sequence eq "\\\""; return "\n" if $sequence eq "\\n"; return "\r" if $sequence eq "\\r"; return "\t" if $sequence eq "\\t"; return "\b" if $sequence eq "\\b"; return "\f" if $sequence eq "\\f"; return "\a" if $sequence eq "\\a"; return chr(11) if $sequence eq "\\v"; # vertical tab, see ascii(7) return chr(hex($1)) if ($sequence =~ /\\x([0-9a-fA-F]{2})/); return chr(oct($1)) if ($sequence =~ /\\([0-7]{3})/); # FIXME: Is \0 supported as well? Kenneth and Rodney don't want it, see bug #48489 return $sequence; } sub unescape_po_string { my ($string) = @_; $string =~ s/(\\x[0-9a-fA-F]{2}|\\[0-7]{3}|\\.)/unescape_one_sequence($1)/eg; return $string; } sub entity_decode { local ($_) = @_; s/'/'/g; # ' s/"/"/g; # " s/<//g; s/&/&/g; return $_; } # entity_encode: (string) # # Encode the given string to XML format (encode '<' etc). sub entity_encode { my ($pre_encoded) = @_; my @list_of_chars = unpack ('C*', $pre_encoded); # with UTF-8 we only encode minimalistic return join ('', map (&entity_encode_int_minimalist, @list_of_chars)); } sub entity_encode_int_minimalist { return """ if $_ == 34; return "&" if $_ == 38; return "'" if $_ == 39; return "<" if $_ == 60; return ">" if $_ == 62; return chr $_; } sub entity_encoded_translation { my ($lang, $string) = @_; my $translation = $translations{$lang, $string}; return $string if !$translation; return entity_encode ($translation); } ## XML (bonobo-activation specific) merge code sub ba_merge_translations { my $source; { local $/; # slurp mode open INPUT, "<$FILE" or die "can't open $FILE: $!"; $source = ; close INPUT; } open OUTPUT, ">$OUTFILE" or die "can't open $OUTFILE: $!"; # Binmode so that selftest works ok if using a native Win32 Perl... binmode (OUTPUT) if $^O eq 'MSWin32'; while ($source =~ s|^(.*?)([ \t]*<\s*$w+\s+($w+\s*=\s*"$q"\s*)+/?>)([ \t]*\n)?||s) { print OUTPUT $1; my $node = $2 . "\n"; my @strings = (); $_ = $node; while (s/(\s)_($w+\s*=\s*"($q)")/$1$2/s) { push @strings, entity_decode($3); } print OUTPUT; my %langs; for my $string (@strings) { for my $lang (keys %po_files_by_lang) { $langs{$lang} = 1 if $translations{$lang, $string}; } } for my $lang (sort keys %langs) { $_ = $node; s/(\sname\s*=\s*)"($q)"/$1"$2-$lang"/s; s/(\s)_($w+\s*=\s*")($q)"/$1 . $2 . entity_encoded_translation($lang, $3) . '"'/seg; print OUTPUT; } } print OUTPUT $source; close OUTPUT; } ## XML (non-bonobo-activation) merge code # Process tag attributes # Only parameter is a HASH containing attributes -> values mapping sub getAttributeString { my $sub = shift; my $do_translate = shift || 0; my $language = shift || ""; my $result = ""; my $translate = shift; foreach my $e (reverse(sort(keys %{ $sub }))) { my $key = $e; my $string = $sub->{$e}; my $quote = '"'; $string =~ s/^[\s]+//; $string =~ s/[\s]+$//; if ($string =~ /^'.*'$/) { $quote = "'"; } $string =~ s/^['"]//g; $string =~ s/['"]$//g; if ($do_translate && $key =~ /^_/) { $key =~ s|^_||g; if ($language) { # Handle translation my $decode_string = entity_decode($string); my $translation = $translations{$language, $decode_string}; if ($translation) { $translation = entity_encode($translation); $string = $translation; } $$translate = 2; } else { $$translate = 2 if ($translate && (!$$translate)); # watch not to "overwrite" $translate } } $result .= " $key=$quote$string$quote"; } return $result; } # Returns a translatable string from XML node, it works on contents of every node in XML::Parser tree sub getXMLstring { my $ref = shift; my $spacepreserve = shift || 0; my @list = @{ $ref }; my $result = ""; my $count = scalar(@list); my $attrs = $list[0]; my $index = 1; $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/)); $spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/)); while ($index < $count) { my $type = $list[$index]; my $content = $list[$index+1]; if (! $type ) { # We've got CDATA if ($content) { # lets strip the whitespace here, and *ONLY* here $content =~ s/\s+/ /gs if (!$spacepreserve); $result .= $content; } } elsif ( "$type" ne "1" ) { # We've got another element $result .= "<$type"; $result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements if ($content) { my $subresult = getXMLstring($content, $spacepreserve); if ($subresult) { $result .= ">".$subresult . ""; } else { $result .= "/>"; } } else { $result .= "/>"; } } $index += 2; } return $result; } # Translate list of nodes if necessary sub translate_subnodes { my $fh = shift; my $content = shift; my $language = shift || ""; my $singlelang = shift || 0; my $spacepreserve = shift || 0; my @nodes = @{ $content }; my $count = scalar(@nodes); my $index = 0; while ($index < $count) { my $type = $nodes[$index]; my $rest = $nodes[$index+1]; if ($singlelang) { my $oldMO = $MULTIPLE_OUTPUT; $MULTIPLE_OUTPUT = 1; traverse($fh, $type, $rest, $language, $spacepreserve); $MULTIPLE_OUTPUT = $oldMO; } else { traverse($fh, $type, $rest, $language, $spacepreserve); } $index += 2; } } sub isWellFormedXmlFragment { my $ret = eval 'require XML::Parser'; if(!$ret) { die "You must have XML::Parser installed to run $0\n\n"; } my $fragment = shift; return 0 if (!$fragment); $fragment = "$fragment"; my $xp = new XML::Parser(Style => 'Tree'); my $tree = 0; eval { $tree = $xp->parse($fragment); }; return $tree; } sub traverse { my $fh = shift; my $nodename = shift; my $content = shift; my $language = shift || ""; my $spacepreserve = shift || 0; if (!$nodename) { if ($content =~ /^[\s]*$/) { $leading_space .= $content; } print $fh $content; } else { # element my @all = @{ $content }; my $attrs = shift @all; my $translate = 0; my $outattr = getAttributeString($attrs, 1, $language, \$translate); if ($nodename =~ /^_/) { $translate = 1; $nodename =~ s/^_//; } my $lookup = ''; $spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/)); $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/)); print $fh "<$nodename", $outattr; if ($translate) { $lookup = getXMLstring($content, $spacepreserve); if (!$spacepreserve) { $lookup =~ s/^\s+//s; $lookup =~ s/\s+$//s; } if ($lookup || $translate == 2) { my $translation = $translations{$language, $lookup} if isWellFormedXmlFragment($translations{$language, $lookup}); if ($MULTIPLE_OUTPUT && ($translation || $translate == 2)) { $translation = $lookup if (!$translation); print $fh " xml:lang=\"", $language, "\"" if $language; print $fh ">"; if ($translate == 2) { translate_subnodes($fh, \@all, $language, 1, $spacepreserve); } else { print $fh $translation; } print $fh ""; return; # this means there will be no same translation with xml:lang="$language"... # if we want them both, just remove this "return" } else { print $fh ">"; if ($translate == 2) { translate_subnodes($fh, \@all, $language, 1, $spacepreserve); } else { print $fh $lookup; } print $fh ""; } } else { print $fh "/>"; } for my $lang (sort keys %po_files_by_lang) { if ($MULTIPLE_OUTPUT && $lang ne "$language") { next; } if ($lang) { # Handle translation # my $translate = 0; my $localattrs = getAttributeString($attrs, 1, $lang, \$translate); my $translation = $translations{$lang, $lookup} if isWellFormedXmlFragment($translations{$lang, $lookup}); if ($translate && !$translation) { $translation = $lookup; } if ($translation || $translate) { print $fh "\n"; $leading_space =~ s/.*\n//g; print $fh $leading_space; print $fh "<", $nodename, " xml:lang=\"", $lang, "\"", $localattrs, ">"; if ($translate == 2) { translate_subnodes($fh, \@all, $lang, 1, $spacepreserve); } else { print $fh $translation; } print $fh ""; } } } } else { my $count = scalar(@all); if ($count > 0) { print $fh ">"; my $index = 0; while ($index < $count) { my $type = $all[$index]; my $rest = $all[$index+1]; traverse($fh, $type, $rest, $language, $spacepreserve); $index += 2; } print $fh ""; } else { print $fh "/>"; } } } } sub intltool_tree_comment { my $expat = shift; my $data = shift; my $clist = $expat->{Curlist}; my $pos = $#$clist; push @$clist, 1 => $data; } sub intltool_tree_cdatastart { my $expat = shift; my $clist = $expat->{Curlist}; my $pos = $#$clist; push @$clist, 0 => $expat->original_string(); } sub intltool_tree_cdataend { my $expat = shift; my $clist = $expat->{Curlist}; my $pos = $#$clist; $clist->[$pos] .= $expat->original_string(); } sub intltool_tree_char { my $expat = shift; my $text = shift; my $clist = $expat->{Curlist}; my $pos = $#$clist; # Use original_string so that we retain escaped entities # in CDATA sections. # if ($pos > 0 and $clist->[$pos - 1] eq '0') { $clist->[$pos] .= $expat->original_string(); } else { push @$clist, 0 => $expat->original_string(); } } sub intltool_tree_start { my $expat = shift; my $tag = shift; my @origlist = (); # Use original_string so that we retain escaped entities # in attribute values. We must convert the string to an # @origlist array to conform to the structure of the Tree # Style. # my @original_array = split /\x/, $expat->original_string(); my $source = $expat->original_string(); # Remove leading tag. # $source =~ s|^\s*<\s*(\S+)||s; # Grab attribute key/value pairs and push onto @origlist array. # while ($source) { if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/) { $source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s; push @origlist, $1; push @origlist, '"' . $2 . '"'; } elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/) { $source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s; push @origlist, $1; push @origlist, "'" . $2 . "'"; } else { last; } } my $ol = [ { @origlist } ]; push @{ $expat->{Lists} }, $expat->{Curlist}; push @{ $expat->{Curlist} }, $tag => $ol; $expat->{Curlist} = $ol; } sub readXml { my $filename = shift || return; if(!-f $filename) { die "ERROR Cannot find filename: $filename\n"; } my $ret = eval 'require XML::Parser'; if(!$ret) { die "You must have XML::Parser installed to run $0\n\n"; } my $xp = new XML::Parser(Style => 'Tree'); $xp->setHandlers(Char => \&intltool_tree_char); $xp->setHandlers(Start => \&intltool_tree_start); $xp->setHandlers(CdataStart => \&intltool_tree_cdatastart); $xp->setHandlers(CdataEnd => \&intltool_tree_cdataend); my $tree = $xp->parsefile($filename); # Hello thereHowdydo # would be: # [foo, [{}, head, [{id => "a"}, 0, "Hello ", em, [{}, 0, "there"]], bar, [{}, # 0, "Howdy", ref, [{}]], 0, "do" ] ] return $tree; } sub print_header { my $infile = shift; my $fh = shift; my $source; if(!-f $infile) { die "ERROR Cannot find filename: $infile\n"; } print $fh qq{\n}; { local $/; open DOCINPUT, "<${FILE}" or die; $source = ; close DOCINPUT; } if ($source =~ /()/s) { print $fh "$1\n"; } elsif ($source =~ /(]*>)/s) { print $fh "$1\n"; } } sub parseTree { my $fh = shift; my $ref = shift; my $language = shift || ""; my $name = shift @{ $ref }; my $cont = shift @{ $ref }; while (!$name || "$name" eq "1") { $name = shift @{ $ref }; $cont = shift @{ $ref }; } my $spacepreserve = 0; my $attrs = @{$cont}[0]; $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/)); traverse($fh, $name, $cont, $language, $spacepreserve); } sub xml_merge_output { my $source; if ($MULTIPLE_OUTPUT) { for my $lang (sort keys %po_files_by_lang) { if ( ! -d $lang ) { mkdir $lang or -d $lang or die "Cannot create subdirectory $lang: $!\n"; } open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n"; binmode (OUTPUT) if $^O eq 'MSWin32'; my $tree = readXml($FILE); print_header($FILE, \*OUTPUT); parseTree(\*OUTPUT, $tree, $lang); close OUTPUT; print "CREATED $lang/$OUTFILE\n" unless $QUIET_ARG; } if ( ! -d "C" ) { mkdir "C" or -d "C" or die "Cannot create subdirectory C: $!\n"; } open OUTPUT, ">C/$OUTFILE" or die "Cannot open C/$OUTFILE: $!\n"; binmode (OUTPUT) if $^O eq 'MSWin32'; my $tree = readXml($FILE); print_header($FILE, \*OUTPUT); parseTree(\*OUTPUT, $tree); close OUTPUT; print "CREATED C/$OUTFILE\n" unless $QUIET_ARG; } else { open OUTPUT, ">$OUTFILE" or die "Cannot open $OUTFILE: $!\n"; binmode (OUTPUT) if $^O eq 'MSWin32'; my $tree = readXml($FILE); print_header($FILE, \*OUTPUT); parseTree(\*OUTPUT, $tree); close OUTPUT; print "CREATED $OUTFILE\n" unless $QUIET_ARG; } } sub keys_merge_translation { my ($lang) = @_; if ( ! -d $lang && $MULTIPLE_OUTPUT) { mkdir $lang or -d $lang or die "Cannot create subdirectory $lang: $!\n"; } open INPUT, "<${FILE}" or die "Cannot open ${FILE}: $!\n"; open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n"; binmode (OUTPUT) if $^O eq 'MSWin32'; while () { if (s/^(\s*)_(\w+=(.*))/$1$2/) { my $string = $3; if (!$MULTIPLE_OUTPUT) { print OUTPUT; my $non_translated_line = $_; for my $lang (sort keys %po_files_by_lang) { my $translation = $translations{$lang, $string}; next if !$translation; $_ = $non_translated_line; s/(\w+)=.*/[$lang]$1=$translation/; print OUTPUT; } } else { my $non_translated_line = $_; my $translation = $translations{$lang, $string}; $translation = $string if !$translation; $_ = $non_translated_line; s/(\w+)=.*/$1=$translation/; print OUTPUT; } } else { print OUTPUT; } } close OUTPUT; close INPUT; print "CREATED $lang/$OUTFILE\n" unless $QUIET_ARG; } sub keys_merge_translations { if ($MULTIPLE_OUTPUT) { for my $lang (sort keys %po_files_by_lang) { keys_merge_translation ($lang); } keys_merge_translation ("C"); } else { keys_merge_translation ("."); } } sub desktop_merge_translations { open INPUT, "<${FILE}" or die; open OUTPUT, ">${OUTFILE}" or die; binmode (OUTPUT) if $^O eq 'MSWin32'; while () { if (s/^(\s*)_(\w+=(.*))/$1$2/) { my $string = $3; print OUTPUT; my $non_translated_line = $_; for my $lang (sort keys %po_files_by_lang) { my $translation = $translations{$lang, $string}; next if !$translation; $_ = $non_translated_line; s/(\w+)=.*/${1}[$lang]=$translation/; print OUTPUT; } } else { print OUTPUT; } } close OUTPUT; close INPUT; } sub schemas_merge_translations { my $source; { local $/; # slurp mode open INPUT, "<$FILE" or die "can't open $FILE: $!"; $source = ; close INPUT; } open OUTPUT, ">$OUTFILE" or die; binmode (OUTPUT) if $^O eq 'MSWin32'; # FIXME: support attribute translations # Empty nodes never need translation, so unmark all of them. # For example, <_foo/> is just replaced by . $source =~ s|<\s*_($w+)\s*/>|<$1/>|g; while ($source =~ s/ (.*?) (\s+)((\s*) (\s*(?:\s*)?(.*?)\s*<\/default>)?(\s*) (\s*(?:\s*)?(.*?)\s*<\/short>)?(\s*) (\s*(?:\s*)?(.*?)\s*<\/long>)?(\s*) <\/locale>) //sx) { print OUTPUT $1; my $locale_start_spaces = $2 ? $2 : ''; my $default_spaces = $4 ? $4 : ''; my $short_spaces = $7 ? $7 : ''; my $long_spaces = $10 ? $10 : ''; my $locale_end_spaces = $13 ? $13 : ''; my $c_default_block = $3 ? $3 : ''; my $default_string = $6 ? $6 : ''; my $short_string = $9 ? $9 : ''; my $long_string = $12 ? $12 : ''; print OUTPUT "$locale_start_spaces$c_default_block"; $default_string =~ s/\s+/ /g; $default_string = entity_decode($default_string); $short_string =~ s/\s+/ /g; $short_string = entity_decode($short_string); $long_string =~ s/\s+/ /g; $long_string = entity_decode($long_string); for my $lang (sort keys %po_files_by_lang) { my $default_translation = $translations{$lang, $default_string}; my $short_translation = $translations{$lang, $short_string}; my $long_translation = $translations{$lang, $long_string}; next if (!$default_translation && !$short_translation && !$long_translation); print OUTPUT "\n$locale_start_spaces"; print OUTPUT "$default_spaces"; if ($default_translation) { $default_translation = entity_encode($default_translation); print OUTPUT "$default_translation"; } print OUTPUT "$short_spaces"; if ($short_translation) { $short_translation = entity_encode($short_translation); print OUTPUT "$short_translation"; } print OUTPUT "$long_spaces"; if ($long_translation) { $long_translation = entity_encode($long_translation); print OUTPUT "$long_translation"; } print OUTPUT "$locale_end_spaces"; } } print OUTPUT $source; close OUTPUT; } sub rfc822deb_merge_translations { my %encodings = (); for my $lang (keys %po_files_by_lang) { $encodings{$lang} = ($UTF8_ARG ? 'UTF-8' : get_po_encoding($po_files_by_lang{$lang})); } my $source; $Text::Wrap::huge = 'overflow'; $Text::Wrap::break = qr/\n|\s(?=\S)/; { local $/; # slurp mode open INPUT, "<$FILE" or die "can't open $FILE: $!"; $source = ; close INPUT; } open OUTPUT, ">${OUTFILE}" or die; binmode (OUTPUT) if $^O eq 'MSWin32'; while ($source =~ /(^|\n+)(_*)([^:\s]+)(:[ \t]*)(.*?)(?=\n[\S\n]|$)/sg) { my $sep = $1; my $non_translated_line = $3.$4; my $string = $5; my $underscore = length($2); next if $underscore eq 0 && $non_translated_line =~ /^#/; # Remove [] dummy strings my $stripped = $string; $stripped =~ s/\[\s[^\[\]]*\],/,/g if $underscore eq 2; $stripped =~ s/\[\s[^\[\]]*\]$//; $non_translated_line .= $stripped; print OUTPUT $sep.$non_translated_line; if ($underscore) { my @str_list = rfc822deb_split($underscore, $string); for my $lang (sort keys %po_files_by_lang) { my $is_translated = 1; my $str_translated = ''; my $first = 1; for my $str (@str_list) { my $translation = $translations{$lang, $str}; if (!$translation) { $is_translated = 0; last; } # $translation may also contain [] dummy # strings, mostly to indicate an empty string $translation =~ s/\[\s[^\[\]]*\]$//; if ($first) { if ($underscore eq 2) { $str_translated .= $translation; } else { $str_translated .= Text::Tabs::expand($translation) . "\n"; } } else { if ($underscore eq 2) { $str_translated .= ', ' . $translation; } else { $str_translated .= Text::Tabs::expand( Text::Wrap::wrap(' ', ' ', $translation)) . "\n .\n"; } } $first = 0; # To fix some problems with Text::Wrap::wrap $str_translated =~ s/(\n )+\n/\n .\n/g; } next unless $is_translated; $str_translated =~ s/\n \.\n$//; $str_translated =~ s/\s+$//; $_ = $non_translated_line; s/^(\w+):\s*.*/$sep${1}-$lang.$encodings{$lang}: $str_translated/s; print OUTPUT; } } } print OUTPUT "\n"; close OUTPUT; close INPUT; } sub rfc822deb_split { # Debian defines a special way to deal with rfc822-style files: # when a value contain newlines, it consists of # 1. a short form (first line) # 2. a long description, all lines begin with a space, # and paragraphs are separated by a single dot on a line # This routine returns an array of all paragraphs, and reformat # them. # When first argument is 2, the string is a comma separated list of # values. my $type = shift; my $text = shift; $text =~ s/^[ \t]//mg; return (split(/, */, $text, 0)) if $type ne 1; return ($text) if $text !~ /\n/; $text =~ s/([^\n]*)\n//; my @list = ($1); my $str = ''; for my $line (split (/\n/, $text)) { chomp $line; if ($line =~ /^\.\s*$/) { # New paragraph $str =~ s/\s*$//; push(@list, $str); $str = ''; } elsif ($line =~ /^\s/) { # Line which must not be reformatted $str .= "\n" if length ($str) && $str !~ /\n$/; $line =~ s/\s+$//; $str .= $line."\n"; } else { # Continuation line, remove newline $str .= " " if length ($str) && $str !~ /\n$/; $str .= $line; } } $str =~ s/\s*$//; push(@list, $str) if length ($str); return @list; } sub quoted_translation { my ($xml_mode, $lang, $string) = @_; $string = entity_decode($string) if $xml_mode; $string =~ s/\\\"/\"/g; my $translation = $translations{$lang, $string}; $translation = $string if !$translation; $translation = entity_encode($translation) if $xml_mode; $translation =~ s/\"/\\\"/g; return $translation } sub quoted_merge_translations { my ($xml_mode) = @_; if (!$MULTIPLE_OUTPUT) { print "Quoted only supports Multiple Output.\n"; exit(1); } for my $lang (sort keys %po_files_by_lang) { if ( ! -d $lang ) { mkdir $lang or -d $lang or die "Cannot create subdirectory $lang: $!\n"; } open INPUT, "<${FILE}" or die; open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n"; binmode (OUTPUT) if $^O eq 'MSWin32'; while () { s/\"(([^\"]|\\\")*[^\\\"])\"/"\"" . "ed_translation($xml_mode, $lang, $1) . "\""/ge; print OUTPUT; } close OUTPUT; close INPUT; } } mail-notification-5.4.dfsg.1/jbsrc/tools/config.sub0000755000175000001440000007772410707444443022131 0ustar evilynuxusers#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, # Inc. timestamp='2007-06-28' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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 program 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 program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: mail-notification-5.4.dfsg.1/jbsrc/lib/0000755000175000001440000000000011015313025017513 5ustar evilynuxusersmail-notification-5.4.dfsg.1/jbsrc/lib/COPYING0000644000175000001440000010451310756670527020602 0ustar evilynuxusers GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program 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 3 of the License, or (at your option) any later version. This program 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 program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . mail-notification-5.4.dfsg.1/jbsrc/lib/src/0000755000175000001440000000000011015313026020303 5ustar evilynuxusersmail-notification-5.4.dfsg.1/jbsrc/lib/src/core/0000755000175000001440000000000011015313027021234 5ustar evilynuxusersmail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-action.h0000644000175000001440000000505411005110777023265 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_ACTION_H #define _JB_ACTION_H #include #include #include /* package callbacks, should be defined in jbsrc/jb.c */ void jb_package_init (void); void jb_package_configure (void); void jb_package_add_resources (void); void jb_action_help (void); void jb_action_configure (void); void jb_action_build (GSList *group_names); void jb_action_install (GSList *group_names); void jb_action_makedist (void); void jb_action_clean (GSList *group_names); void jb_action_distclean (GSList *group_names); void jb_action_maintainerclean (GSList *group_names); void jb_action_exec (const char *str, ...) G_GNUC_NULL_TERMINATED; void jb_action_install_file (const char *srcfile, const char *dstdir, const char *owner, const char *group, mode_t mode); void jb_action_install_to_file (const char *srcfile, const char *dstfile, const char *owner, const char *group, mode_t mode); void jb_action_install_data (const char *srcfile, const char *dstdir); void jb_action_install_data_to_file (const char *srcfile, const char *dstfile); void jb_action_install_data_list (GSList *srcfiles, const char *dstdir); void jb_action_install_program (const char *srcfile, const char *dstdir); void jb_action_install_library (const char *srcfile, const char *dstdir); void jb_action_rm (const char *file); void jb_action_rm_array (char **files, int len); void jb_action_rm_list (GSList *files); void jb_action_rmdir (const char *dir); void jb_action_rmdir_list (GSList *dirs); void jb_action_add_to_dist (const char *file); void jb_action_add_to_dist_list (GSList *files); void jb_action_add_to_dist_string_list (const char *files); const char *jb_action_get_distdir (void); #endif /* _JB_ACTION_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-group.h0000644000175000001440000000510411005111000023114 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_GROUP_H #define _JB_GROUP_H #include #include #include "jb-decls.h" #include "jb-util.h" #include "jb-compile-options.h" #define JB_TYPE_GROUP (jb_group_get_type()) #define JB_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_GROUP, JBGroup)) #define JB_IS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_GROUP)) struct JBGroup { GObject parent; char *name; char *srcdir; char *builddir; JBCompileOptions *compile_options; GSList *resources; }; typedef struct { GObjectClass parent_class; } JBGroupClass; extern GSList *jb_groups; extern JBStringHashSet *jb_templates; GType jb_group_get_type (void); JBGroup *jb_group_new (const char *name); void jb_group_add (JBGroup *group); JBGroup *jb_group_get (const char *name); void jb_group_add_resource (JBGroup *self, JBGroupResource *res); void jb_group_add_data_file (JBGroup *self, const char *file, const char *installdir); void jb_group_add_data_files (JBGroup *self, const char *file, ...) G_GNUC_NULL_TERMINATED; void jb_group_add_data_files_list (JBGroup *self, GSList *files, const char *installdir); void jb_group_add_data_files_pattern (JBGroup *self, const char *pattern, const char *installdir); void jb_group_add_dist_file (JBGroup *self, const char *file); void jb_group_add_dist_files (JBGroup *self, const char *file, ...) G_GNUC_NULL_TERMINATED; void jb_group_add_desktop_file (JBGroup *self, const char *filename, const char *installdir); void jb_group_add_gconf_schemas (JBGroup *self, const char *filename); void jb_group_add_bonobo_server (JBGroup *self, const char *filename); void jb_group_add_translations (JBGroup *self, const char *languages); #endif /* _JB_GROUP_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-main.c0000644000175000001440000002040111005111000022674 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include "jb-action.h" #include "jb-feature.h" #include "jb-util.h" #include "jb-variable.h" #include "jb-compile-options.h" char *jb_topsrcdir = NULL; static gboolean parse_variable (const char *pair, char **name, char **value) { char *p; char *_name = NULL; p = strchr(pair, '='); if (! p) return FALSE; _name = g_strndup(pair, p - pair); if (*_name == '\0') return FALSE; *name = _name; *value = g_strdup(p + 1); return TRUE; } static void handle_variable (const char *pair) { char *name; char *value; JBVariable *variable; GError *err = NULL; if (! parse_variable(pair, &name, &value)) jb_error("invalid variable specification \"%s\"", pair); variable = jb_variable_get_variable(name); if (variable == NULL || (variable->flags & JB_VARIABLE_USER_SETTABLE) == 0) jb_error("unknown variable \"%s\"", name); if (! jb_variable_set_from_string(variable, value, &err)) jb_error("invalid value \"%s\" for %s variable \"%s\": %s", value, variable->type->name, name, err->message); variable->user_set = TRUE; } static GSList * parse_group_args (int argc, char **argv) { GSList *group_names = NULL; int i; for (i = 0; i < argc; i++) group_names = g_slist_append(group_names, g_strdup(argv[i])); return group_names; } static void parse_args (int argc, char **argv) { GSList *group_names; int i = 1; if (argc >= 2) { if (! strcmp(argv[1], "help") || ! strcmp(argv[1], "--help") || ! strcmp(argv[1], "-h") || ! strcmp(argv[1], "-?")) { if (argc != 2) jb_error("too many arguments for \"help\" action; run \"./jb help\" for an usage summary"); jb_action_help(); } else if (! strcmp(argv[1], "configure")) { for (i++; i < argc; i++) handle_variable(argv[i]); jb_action_configure(); } else if (! strcmp(argv[1], "build")) { group_names = parse_group_args(argc - 2, argv + 2); jb_action_build(group_names); } else if (! strcmp(argv[1], "install")) { group_names = parse_group_args(argc - 2, argv + 2); jb_action_install(group_names); } else if (! strcmp(argv[1], "makedist")) { if (argc != 2) jb_error("too many arguments for \"makedist\" action; run \"./jb help\" for an usage summary"); jb_action_makedist(); } else if (! strcmp(argv[1], "clean")) { group_names = parse_group_args(argc - 2, argv + 2); jb_action_clean(group_names); } else if (! strcmp(argv[1], "distclean")) { group_names = parse_group_args(argc - 2, argv + 2); jb_action_distclean(group_names); } else if (! strcmp(argv[1], "maintainerclean")) { group_names = parse_group_args(argc - 2, argv + 2); jb_action_maintainerclean(group_names); } else jb_error("unknown action \"%s\"; run \"./jb help\" for an usage summary", argv[1]); } else jb_error("not enough arguments; run \"./jb help\" for an usage summary"); } void jb_main (int argc, char **argv, const char *package, const char *version, const char *human_package, const JBFeature **features, int num_features) { setlocale(LC_ALL, ""); g_log_set_fatal_mask(G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL); g_type_init(); jb_topsrcdir = g_get_current_dir(); jb_set_log_file("build/jb.log"); jb_variable_init(); jb_compile_options = jb_compile_options_new("package"); jb_feature_set_list(features, num_features); /* these flags are needed by the JB GOB2 build mechanism */ jb_compile_options_add_gob2flags(jb_compile_options, "--always-private-header --no-touch"); jb_variable_set_string("package", package); jb_variable_set_string("version", version); jb_variable_set_string("human-package", human_package); jb_variable_add_string("cc", "C compiler command", jb_variable_group_compiler_options, 0, "cc"); jb_variable_add_string("cflags", "C compiler flags", jb_variable_group_compiler_options, 0, "-O2"); jb_variable_add_string("cppflags", "C preprocessor flags", jb_variable_group_compiler_options, 0, NULL); jb_variable_add_string("ldflags", "C linker flags", jb_variable_group_compiler_options, 0, NULL); jb_variable_add_string("libs", "C -l flags", jb_variable_group_compiler_options, 0, NULL); jb_variable_add_bool("cc-dependency-tracking", "enable C compiler dependency tracking", jb_variable_group_compiler_options, 0, TRUE); jb_variable_add_string("destdir", "destination directory", jb_variable_group_installation_options, 0, NULL); jb_variable_add_string("prefix", "installation prefix", jb_variable_group_installation_options, 0, "/usr/local"); jb_variable_add_string("bindir", "user executables directory", jb_variable_group_installation_options, 0, "$prefix/bin"); jb_variable_add_string("libdir", "shared libraries directory", jb_variable_group_installation_options, 0, "$prefix/lib"); jb_variable_add_string("libexecdir", "private executables directory", jb_variable_group_installation_options, 0, "$prefix/libexec"); jb_variable_add_string("datadir", "read-only architecture-independent data directory", jb_variable_group_installation_options, 0, "$prefix/share"); jb_variable_add_string("sysconfdir", "per-machine configuration directory", jb_variable_group_installation_options, 0, "$prefix/etc"); jb_variable_add_string("localstatedir", "per-machine state directory", jb_variable_group_installation_options, 0, "$prefix/var"); jb_variable_set_string("pkglibdir", "$libdir/$package"); jb_variable_set_string("pkgdatadir", "$datadir/$package"); jb_variable_set_string("pkgsysconfdir", "$sysconfdir/$package"); jb_variable_add_mode("data-mode", "data file permissions (octal)", jb_variable_group_installation_options, 0, 0644); jb_variable_add_string("data-owner", "data file owner", jb_variable_group_installation_options, 0, NULL); jb_variable_add_string("data-group", "data file group", jb_variable_group_installation_options, 0, NULL); jb_variable_add_mode("program-mode", "program file permissions (octal)", jb_variable_group_installation_options, 0, 0755); jb_variable_add_string("program-owner", "program file owner", jb_variable_group_installation_options, 0, NULL); jb_variable_add_string("program-group", "program file group", jb_variable_group_installation_options, 0, NULL); jb_variable_add_mode("library-mode", "library file permissions (octal)", jb_variable_group_installation_options, 0, 0644); jb_variable_add_string("library-owner", "library file owner", jb_variable_group_installation_options, 0, NULL); jb_variable_add_string("library-group", "library file group", jb_variable_group_installation_options, 0, NULL); jb_feature_init(); jb_package_init(); parse_args(argc, argv); } void jb_set_prefix_from_program (const char *name) { char *program; g_return_if_fail(name != NULL); program = g_find_program_in_path(name); if (program != NULL) { char *parent; char *prefix; parent = g_path_get_dirname(program); g_free(program); prefix = g_path_get_dirname(parent); g_free(parent); jb_variable_set_string("prefix", prefix); g_free(prefix); } } mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-decls.h0000644000175000001440000000176711005110777023111 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_DECLS_H #define _JB_DECLS_H typedef struct JBGroup JBGroup; typedef struct JBGroupResource JBGroupResource; typedef struct JBObject JBObject; #endif /* _JB_DECLS_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-tests.h0000644000175000001440000000514111005111000023123 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_TESTS_H #define _JB_TESTS_H #include #include #include "jb-variable.h" void jb_check_host_system (void); void jb_register_program (const char *name, JBVariableFlags flags); gboolean jb_check_program (const char *name); void jb_require_program (const char *name); gboolean jb_test_compile (const char *filename, const char *cflags, const char *cppflags); gboolean jb_test_compile_string (const char *str, const char *cflags, const char *cppflags); gboolean jb_test_link (const char *filename, const char *cflags, const char *cppflags, const char *ldflags, const char *libs); gboolean jb_test_link_string (const char *str, const char *cflags, const char *cppflags, const char *ldflags, const char *libs); gboolean jb_test_run (const char *filename, const char *cflags, const char *cppflags, const char *ldflags, const char *libs); gboolean jb_test_run_string (const char *str, const char *cflags, const char *cppflags, const char *ldflags, const char *libs); gboolean jb_check_functions (const char *functions, const char *libname); gboolean jb_check_packages (const char *group_name, const char *varprefix, const char *packages); void jb_check_packages_for_options (const char *group_name, const char *varprefix, const char *packages, ...) G_GNUC_NULL_TERMINATED; void jb_require_packages (const char *group_name, const char *varprefix, const char *packages); char *jb_get_package_variable (const char *package, const char *variable); void jb_check_cc_dependency_style (void); void jb_check_glibc (void); void jb_check_reentrant_dns_resolver (void); #endif /* _JB_TESTS_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-install-options.h0000644000175000001440000000376711005111000025134 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_INSTALL_OPTIONS_H #define _JB_INSTALL_OPTIONS_H #include #include typedef struct { char *installdir; char *owner; char *group; mode_t extra_mode; } JBInstallOptions; JBInstallOptions *jb_install_options_new (void); void jb_install_options_set_installdir (JBInstallOptions *self, const char *installdir); void jb_install_options_set_owner (JBInstallOptions *self, const char *owner); void jb_install_options_set_group (JBInstallOptions *self, const char *group); void jb_install_options_set_extra_mode (JBInstallOptions *self, mode_t extra_mode); void jb_install_options_install (JBInstallOptions *self, const char *srcfile, const char *dstfile, const char *default_owner, const char *default_group, mode_t default_mode); void jb_install_options_install_data (JBInstallOptions *self, const char *srcfile, const char *dstfile); void jb_install_options_install_program (JBInstallOptions *self, const char *srcfile, const char *dstfile); void jb_install_options_install_library (JBInstallOptions *self, const char *srcfile, const char *dstfile); #endif /* _JB_INSTALL_OPTIONS_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-action.c0000644000175000001440000004633711005110777023271 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include #include #include "jb-group.h" #include "jb-resource.h" #include "jb-tests.h" #include "jb-feature.h" #include "jb-config.h" #include "jb-action.h" static const char *standard_distfiles[] = { "jb", "jbsrc/jb.c", "jbsrc/lib/COPYING", "jbsrc/lib/README", "jbsrc/tools/config.guess", "jbsrc/tools/config.sub", JB_PACKAGE_SOURCES, JB_SOURCES }; static const char *optional_distfiles[] = { "AUTHORS", "COPYING", "COPYING-DOCS", "INSTALL", "NEWS", "README", "TODO", "TRANSLATING", "po/POTFILES.in", "po/POTFILES.skip" }; static const char *distcleanfiles[] = { JB_CONFIG_FILE, "build/jb", "build/jb.c", "build/jbsrc/jb", "build/jbsrc/jb.c" }; static const char *maintainercleanfiles[] = { "jb", "jbsrc/lib", "jbsrc/tools/config.guess", "jbsrc/tools/config.sub" }; static GSList * get_groups (GSList *group_names) { GSList *l; GSList *groups = NULL; if (group_names == NULL) groups = g_slist_copy(jb_groups); else JB_LIST_FOREACH(l, group_names) { const char *name = l->data; JBGroup *group; group = jb_group_get(name); if (group == NULL) jb_error("unknown group \"%s\"", name); groups = g_slist_append(groups, group); } return groups; } static void perform_action (GSList *groups, void (*perform) (JBResource *res)) { GSList *la; JB_LIST_FOREACH(la, groups) { JBGroup *group = la->data; GSList *lb; JB_LIST_FOREACH(lb, group->resources) { JBResource *res = lb->data; perform(res); } } } static void core_configure (void) { jb_check_cc_dependency_style(); } static void report_variable_group (const JBVariableGroup *group, int varname_len) { GSList *l; jb_message(""); jb_message(" %s:", group->name); jb_message(""); JB_LIST_FOREACH(l, jb_variables) { JBVariable *variable = l->data; if (variable->group == group && (variable->flags & JB_VARIABLE_NO_REPORT) == 0) { char *varname; char *value; varname = g_strdup_printf("%s:", variable->name); value = jb_variable_to_string(variable); jb_message(" %-*s %s", varname_len, varname, value); g_free(varname); g_free(value); } } } static int get_longest_displayable_variable_name_len (void) { GSList *l; int longest = 0; JB_LIST_FOREACH(l, jb_variables) { JBVariable *variable = l->data; int len; if (variable->group == NULL) continue; len = strlen(variable->name) + 1; /* +1 for the semicolon */ if (len > longest) longest = len; } return longest; } static void print_configure_report (void) { int varname_len; GSList *l; jb_message(""); jb_message_expand("$human-package $version was configured successfully.", NULL); jb_message("The following variables are in effect:"); varname_len = get_longest_displayable_variable_name_len(); JB_LIST_FOREACH(l, jb_variable_groups) report_variable_group(l->data, varname_len); jb_message(""); jb_message_expand("Type \"./jb build\" to build $human-package $version.", NULL); } static void show_variable_group_help (const JBVariableGroup *group) { GSList *l; jb_message(""); jb_message(" %s:", group->name); JB_LIST_FOREACH(l, jb_variables) { JBVariable *variable = l->data; char *value; if (variable->group != group) continue; jb_message(""); jb_message(" variable: %s (%s)", variable->name, jb_variable_get_type_name(variable)); jb_message(" description: %s", variable->description); value = jb_variable_to_string(variable); jb_message(" default value: %s", value); g_free(value); } } void jb_action_help (void) { GSList *l; jb_message("Usage:"); jb_message(""); jb_message(" ./jb help"); jb_message(" ./jb configure [VARIABLE=VALUE...]"); jb_message(" ./jb build [GROUP...]"); jb_message(" ./jb install [GROUP...]"); jb_message(" ./jb makedist"); jb_message(" ./jb clean [GROUP...]"); jb_message(" ./jb distclean [GROUP...]"); jb_message(" ./jb maintainerclean [GROUP...]"); jb_message(""); jb_message("Variables:"); JB_LIST_FOREACH(l, jb_variable_groups) show_variable_group_help(l->data); } static void configure_real (void) { jb_set_log_file("build/configure.log"); jb_feature_configure(); core_configure(); jb_package_configure(); /* remove our temporary test files */ unlink("build/test"); unlink("build/test.c"); unlink("build/test.o"); unlink("build/test.o.deps"); jb_config_save(); } void jb_action_configure (void) { configure_real(); print_configure_report(); } static void ensure_configure (void) { if (g_file_test(JB_CONFIG_FILE, G_FILE_TEST_EXISTS)) jb_config_load(); else { jb_message_expand("configuring $human-package $version with default values since \"./jb configure\" was not run...", NULL); configure_real(); } } static void build_real (GSList *groups) { jb_set_log_file("build/build.log"); perform_action(groups, jb_resource_pre_build); perform_action(groups, jb_resource_build); } void jb_action_build (GSList *group_names) { GSList *groups; ensure_configure(); jb_package_add_resources(); groups = get_groups(group_names); build_real(groups); jb_message(""); jb_message_expand("$human-package $version was built successfully.", NULL); jb_message_expand("Type \"sudo ./jb install\" to install $human-package $version.", NULL); g_slist_free(groups); } static void install_real (GSList *groups) { jb_set_log_file("build/install.log"); perform_action(groups, jb_resource_install); } void jb_action_install (GSList *group_names) { GSList *groups; ensure_configure(); jb_package_add_resources(); groups = get_groups(group_names); build_real(groups); install_real(groups); jb_message(""); jb_message_expand("$human-package $version was installed successfully.", NULL); g_slist_free(groups); } static void add_standard_distfiles_to_dist (void) { int i; for (i = 0; i < G_N_ELEMENTS(standard_distfiles); i++) jb_action_add_to_dist_string_list(standard_distfiles[i]); } static void add_optional_distfiles_to_dist (void) { int i; for (i = 0; i < G_N_ELEMENTS(optional_distfiles); i++) { const char *file = optional_distfiles[i]; if (g_file_test(file, G_FILE_TEST_EXISTS)) jb_action_add_to_dist(file); } } static void makedist_real (GSList *groups) { jb_set_log_file("build/makedist.log"); /* just in case */ jb_rmtree(jb_action_get_distdir()); add_standard_distfiles_to_dist(); add_optional_distfiles_to_dist(); perform_action(groups, jb_resource_makedist); } void jb_action_makedist (void) { GSList *groups; char *tarball; ensure_configure(); jb_package_add_resources(); groups = get_groups(NULL); build_real(groups); makedist_real(groups); tarball = jb_variable_expand("${package}-$version.tar.bz2", NULL); jb_message("creating build/%s", tarball); jb_action_exec("cd build && tar -chof - ${package}-$version | bzip2 -9 -c >$tarball", "tarball", tarball, NULL); jb_rmtree(jb_action_get_distdir()); jb_message(""); jb_message("build/%s was created successfully.", tarball); g_slist_free(groups); g_free(tarball); } static void clean_real (GSList *groups) { jb_set_log_file("build/clean.log"); perform_action(groups, jb_resource_clean); } void jb_action_clean (GSList *group_names) { GSList *groups; ensure_configure(); jb_package_add_resources(); groups = get_groups(group_names); clean_real(groups); jb_message(""); jb_message_expand("$human-package $version was cleaned successfully.", NULL); g_slist_free(groups); } static void distclean_real (GSList *groups) { jb_set_log_file("build/distclean.log"); perform_action(groups, jb_resource_distclean); jb_action_rm_array((char **) distcleanfiles, G_N_ELEMENTS(distcleanfiles)); } void jb_action_distclean (GSList *group_names) { GSList *groups; ensure_configure(); jb_package_add_resources(); groups = get_groups(group_names); clean_real(groups); distclean_real(groups); jb_message(""); jb_message_expand("$human-package $version was dist-cleaned successfully.", NULL); g_slist_free(groups); } static void maintainerclean_real (GSList *groups) { jb_set_log_file("build/maintainerclean.log"); perform_action(groups, jb_resource_maintainerclean); jb_action_rm_array((char **) maintainercleanfiles, G_N_ELEMENTS(maintainercleanfiles)); } void jb_action_maintainerclean (GSList *group_names) { GSList *groups; ensure_configure(); jb_package_add_resources(); groups = get_groups(group_names); clean_real(groups); distclean_real(groups); maintainerclean_real(groups); jb_message(""); jb_message_expand("$human-package $version was maintainer-cleaned successfully.", NULL); g_slist_free(groups); } void jb_action_exec (const char *str, ...) { va_list args; char *command; gboolean can_fail = FALSE; char *standard_output; char *standard_error; g_return_if_fail(str != NULL); va_start(args, str); command = jb_variable_expandv(str, args); va_end(args); if (command[0] == '-') { char *tmp; can_fail = TRUE; tmp = g_strdup(command + 1); g_free(command); command = tmp; } if (! jb_exec(&standard_output, &standard_error, "%s", command) && ! can_fail) { g_printerr("%s\n", command); if (*standard_output != '\0' && *standard_error != '\0') { g_printerr("standard output:\n"); g_printerr("%s\n", standard_output); g_printerr("standard error:\n"); g_printerr("%s\n", standard_error); } else if (*standard_output != '\0') g_printerr("%s\n", standard_output); else if (*standard_error != '\0') g_printerr("%s\n", standard_error); jb_error("command failed"); } g_free(command); } /* * Doing this internally is much faster than using an external program * (install or cp), and also more portable. */ static gboolean install_file_real (const char *srcfile, const char *dstfile, const char *owner, const char *group, mode_t mode, GError **err) { int in; int out; in = open(srcfile, O_RDONLY); if (in < 0) { g_set_error(err, 0, 0, "cannot open %s for reading: %s", srcfile, g_strerror(errno)); return FALSE; } out = open(dstfile, O_CREAT | O_WRONLY | O_TRUNC, mode); if (out < 0) { /* * Unlink the file and try again, in case the file could not be * opened because it already existed and was not writable. Do * this unconditionally without testing EPERM, since it might * not be portable. */ unlink(dstfile); out = open(dstfile, O_CREAT | O_WRONLY | O_TRUNC, mode); if (out < 0) { g_set_error(err, 0, 0, "cannot open %s for writing: %s", dstfile, g_strerror(errno)); goto error; } } while (TRUE) { char buf[4096]; ssize_t bytes_read; ssize_t bytes_written; bytes_read = read(in, buf, sizeof(buf)); if (bytes_read < 0) { g_set_error(err, 0, 0, "cannot read from %s: %s", srcfile, g_strerror(errno)); goto error; } if (bytes_read == 0) break; bytes_written = write(out, buf, bytes_read); if (bytes_written < 0) { g_set_error(err, 0, 0, "cannot write to %s: %s", dstfile, g_strerror(errno)); goto error; } if (bytes_written != bytes_read) { g_set_error(err, 0, 0, "cannot write to %s", dstfile); goto error; } } /* * The Linux manpage of fchmod() mentions that "as a security * measure, depending on the file system, the set-user-ID and * set-group-ID execution bits may be turned off if a file is * written", so set the ownership and permissions after writing the * file. */ if (owner != NULL || group != NULL) { GError *tmp_err = NULL; if (! jb_fchown_by_name(out, owner, group, &tmp_err)) { if (owner != NULL && group != NULL) g_set_error(err, 0, 0, "cannot chown %s to %s:%s: %s", dstfile, owner, group, tmp_err->message); else if (owner != NULL) g_set_error(err, 0, 0, "cannot chown %s to owner %s: %s", dstfile, owner, tmp_err->message); else g_set_error(err, 0, 0, "cannot chown %s to group %s: %s", dstfile, group, tmp_err->message); g_error_free(tmp_err); goto error; } } /* * Set the permissions after chowning the file, since the chown can * clear the setuid/setgid bits. */ if (fchmod(out, mode) < 0) { g_set_error(err, 0, 0, "cannot chmod %s to " JB_MODE_FORMAT ": %s", dstfile, (unsigned int) mode, g_strerror(errno)); goto error; } if (close(out) < 0) { g_set_error(err, 0, 0, "cannot close %s: %s", dstfile, g_strerror(errno)); goto error; } close(in); return TRUE; error: close(in); close(out); return FALSE; } void jb_action_install_file (const char *srcfile, const char *dstdir, const char *owner, const char *group, mode_t mode) { char *srcfile_basename; char *dstfile; g_return_if_fail(srcfile != NULL); g_return_if_fail(dstdir != NULL); srcfile_basename = g_path_get_basename(srcfile); dstfile = g_strdup_printf("%s/%s", dstdir, srcfile_basename); g_free(srcfile_basename); jb_action_install_to_file(srcfile, dstfile, owner, group, mode); g_free(dstfile); } void jb_action_install_to_file (const char *srcfile, const char *dstfile, const char *owner, const char *group, mode_t mode) { char *real_dstfile; GError *err = NULL; g_return_if_fail(srcfile != NULL); g_return_if_fail(dstfile != NULL); real_dstfile = jb_variable_expand("$destdir$dstfile", "dstfile", dstfile, NULL); jb_message("installing %s", real_dstfile); jb_mkdir_of_file(real_dstfile); if (! install_file_real(srcfile, real_dstfile, owner, group, mode, &err)) jb_error("%s", err->message); g_free(real_dstfile); } void jb_action_install_data (const char *srcfile, const char *dstdir) { g_return_if_fail(srcfile != NULL); g_return_if_fail(dstdir != NULL); jb_action_install_file(srcfile, dstdir, jb_variable_get_string_or_null("data-owner"), jb_variable_get_string_or_null("data-group"), jb_variable_get_mode("data-mode")); } void jb_action_install_data_to_file (const char *srcfile, const char *dstfile) { g_return_if_fail(srcfile != NULL); g_return_if_fail(dstfile != NULL); jb_action_install_to_file(srcfile, dstfile, jb_variable_get_string_or_null("data-owner"), jb_variable_get_string_or_null("data-group"), jb_variable_get_mode("data-mode")); } void jb_action_install_data_list (GSList *srcfiles, const char *dstdir) { GSList *l; g_return_if_fail(dstdir != NULL); JB_LIST_FOREACH(l, srcfiles) { const char *srcfile = l->data; jb_action_install_data(srcfile, dstdir); } } void jb_action_install_program (const char *srcfile, const char *dstdir) { g_return_if_fail(srcfile != NULL); g_return_if_fail(dstdir != NULL); jb_action_install_file(srcfile, dstdir, jb_variable_get_string_or_null("program-owner"), jb_variable_get_string_or_null("program-group"), jb_variable_get_mode("program-mode")); } void jb_action_install_library (const char *srcfile, const char *dstdir) { g_return_if_fail(srcfile != NULL); g_return_if_fail(dstdir != NULL); jb_action_install_file(srcfile, dstdir, jb_variable_get_string_or_null("library-owner"), jb_variable_get_string_or_null("library-group"), jb_variable_get_mode("library-mode")); } void jb_action_rm (const char *file) { g_return_if_fail(file != NULL); if (g_file_test(file, G_FILE_TEST_EXISTS)) { jb_message("removing %s", file); unlink(file); } /* if the parent directories were created by JB, also remove them */ if (g_str_has_prefix(file, "jbsrc/tools/")) jb_action_rmdir("jbsrc/tools"); else if (g_str_has_prefix(file, "build/")) { GSList *parentdirs = NULL; char *dir; dir = g_path_get_dirname(file); while (TRUE) { parentdirs = g_slist_append(parentdirs, dir); if (! strcmp(dir, "build")) break; dir = g_path_get_dirname(dir); g_assert(strcmp(dir, "/")); } jb_action_rmdir_list(parentdirs); jb_g_slist_free_deep(parentdirs); } } void jb_action_rm_array (char **files, int len) { int i; for (i = 0; i < len; i++) jb_action_rm(files[i]); } void jb_action_rm_list (GSList *files) { GSList *l; JB_LIST_FOREACH(l, files) jb_action_rm(l->data); } static gboolean dir_is_empty (const char *dir) { GDir *gdir; gboolean is_empty; gdir = g_dir_open(dir, 0, NULL); if (gdir == NULL) return TRUE; is_empty = g_dir_read_name(gdir) == NULL; g_dir_close(gdir); return is_empty; } void jb_action_rmdir (const char *dir) { g_return_if_fail(dir != NULL); if (g_file_test(dir, G_FILE_TEST_EXISTS) && dir_is_empty(dir)) { jb_message("removing directory %s", dir); rmdir(dir); } } void jb_action_rmdir_list (GSList *dirs) { GSList *l; JB_LIST_FOREACH(l, dirs) jb_action_rmdir(l->data); } static gboolean add_to_hash_set (JBStringHashSet **hash_set, const char *value) { if (*hash_set == NULL) *hash_set = jb_string_hash_set_new(); if (! jb_string_hash_set_add(*hash_set, value)) return FALSE; return TRUE; } void jb_action_add_to_dist (const char *file) { static JBStringHashSet *distfiles = NULL; char *dir; char *distdir; g_return_if_fail(file != NULL); g_return_if_fail(*file != '\0'); if (! add_to_hash_set(&distfiles, file)) return; jb_message("adding %s to dist", file); dir = g_path_get_dirname(file); distdir = g_strdup_printf("%s/%s", jb_action_get_distdir(), dir); g_free(dir); jb_mkdir(distdir); jb_action_exec("cp -p $file $distdir", "file", file, "distdir", distdir, NULL); g_free(distdir); } void jb_action_add_to_dist_list (GSList *files) { GSList *l; JB_LIST_FOREACH(l, files) { const char *file = l->data; jb_action_add_to_dist(file); } } void jb_action_add_to_dist_string_list (const char *files) { int i; char **array; g_return_if_fail(files != NULL); array = g_strsplit(files, " ", 0); for (i = 0; array[i] != NULL; i++) { const char *file = array[i]; /* the files array can contain extra spaces */ if (*file != '\0') jb_action_add_to_dist(array[i]); } g_strfreev(array); } const char * jb_action_get_distdir (void) { static char *distdir = NULL; if (distdir == NULL) distdir = jb_variable_expand("build/${package}-$version", NULL); return distdir; } mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-config.h0000644000175000001440000000174611005110777023261 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_CONFIG_H #define _JB_CONFIG_H #define JB_CONFIG_FILE "build/config" void jb_config_save (void); void jb_config_load (void); #endif /* _JB_CONFIG_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-compile-options.c0000644000175000001440000001516111005110777025124 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "jb-compile-options.h" #include "jb-feature.h" #include "jb-util.h" #include "jb-variable.h" JBCompileOptions *jb_compile_options = NULL; /* * We store the data in variables so that it can be set in configure * (since variables are saved to the config file). */ static char * get_variable_name (JBCompileOptions *self, const char *name) { return g_strdup_printf("_compile-options-%s-%s", self->name, name); } static void init_variable (JBCompileOptions *self, const char *name) { char *varname; varname = get_variable_name(self, name); jb_variable_set_string(varname, NULL); g_free(varname); } static void add_to_variable (JBCompileOptions *self, const char *name, const char *value) { char *varname; const char *old_value; varname = get_variable_name(self, name); old_value = jb_variable_get_string_or_null(varname); if (old_value == NULL) jb_variable_set_string(varname, value); else { char *new_value; new_value = g_strdup_printf("%s %s", old_value, value); jb_variable_set_string(varname, new_value); g_free(new_value); } g_free(varname); } static const char * get_variable (JBCompileOptions *self, const char *name) { char *varname; const char *value; varname = get_variable_name(self, name); value = jb_variable_get_string_or_null(varname); g_free(varname); return value; } JBCompileOptions * jb_compile_options_new (const char *name) { JBCompileOptions *self; g_return_val_if_fail(name != NULL, NULL); self = g_new0(JBCompileOptions, 1); self->name = g_strdup(name); init_variable(self, "cflags"); init_variable(self, "cppflags"); init_variable(self, "ldflags"); init_variable(self, "libs"); init_variable(self, "gob2flags"); return self; } void jb_compile_options_add_cflags (JBCompileOptions *self, const char *cflags) { g_return_if_fail(self != NULL); g_return_if_fail(cflags != NULL); add_to_variable(self, "cflags", cflags); } const char * jb_compile_options_get_cflags (JBCompileOptions *self) { g_return_val_if_fail(self != NULL, NULL); return get_variable(self, "cflags"); } void jb_compile_options_add_cppflags (JBCompileOptions *self, const char *cppflags) { g_return_if_fail(self != NULL); g_return_if_fail(cppflags != NULL); add_to_variable(self, "cppflags", cppflags); } const char * jb_compile_options_get_cppflags (JBCompileOptions *self) { GString *cppflags; GSList *l; g_return_val_if_fail(self != NULL, NULL); if (self->cppflags != NULL) return self->cppflags; cppflags = g_string_new(get_variable(self, "cppflags")); /* add variable defines if working on the global JBCompileOptions */ if (self == jb_compile_options) JB_LIST_FOREACH(l, jb_variables) { JBVariable *variable = l->data; char *symbol; if ((variable->flags & JB_VARIABLE_C_DEFINE) == 0) continue; g_assert(variable->type == jb_variable_type_bool); symbol = g_strdelimit(g_ascii_strup(variable->name, -1), "-", '_'); g_string_append_printf(cppflags, " -DWITH_%s=%i", symbol, g_value_get_boolean(&variable->value) ? 1 : 0); g_free(symbol); } self->cppflags = g_string_free(cppflags, FALSE); return self->cppflags; } void jb_compile_options_add_ldflags (JBCompileOptions *self, const char *ldflags) { g_return_if_fail(self != NULL); g_return_if_fail(ldflags != NULL); add_to_variable(self, "ldflags", ldflags); } const char * jb_compile_options_get_ldflags (JBCompileOptions *self) { g_return_val_if_fail(self != NULL, NULL); return get_variable(self, "ldflags"); } void jb_compile_options_add_libs (JBCompileOptions *self, const char *libs) { g_return_if_fail(self != NULL); g_return_if_fail(libs != NULL); add_to_variable(self, "libs", libs); } const char * jb_compile_options_get_libs (JBCompileOptions *self) { g_return_val_if_fail(self != NULL, NULL); return get_variable(self, "libs"); } void jb_compile_options_add_gob2flags (JBCompileOptions *self, const char *gob2flags) { g_return_if_fail(self != NULL); g_return_if_fail(gob2flags != NULL); g_return_if_fail(jb_feature_is_enabled(&jb_gob2_feature)); add_to_variable(self, "gob2flags", gob2flags); } const char * jb_compile_options_get_gob2flags (JBCompileOptions *self) { g_return_val_if_fail(self != NULL, NULL); return get_variable(self, "gob2flags"); } void jb_compile_options_add_package (JBCompileOptions *self, const char *name) { char *value; g_return_if_fail(self != NULL); g_return_if_fail(name != NULL); value = g_strdup_printf("$%s-cflags", name); jb_compile_options_add_cflags(self, value); g_free(value); value = g_strdup_printf("$%s-cppflags", name); jb_compile_options_add_cppflags(self, value); g_free(value); value = g_strdup_printf("$%s-ldflags", name); jb_compile_options_add_ldflags(self, value); g_free(value); value = g_strdup_printf("$%s-libs", name); jb_compile_options_add_libs(self, value); g_free(value); } /* evaluates the provided values immediately */ void jb_compile_options_add_string_defines (JBCompileOptions *self, const char *name, ...) { va_list args; g_return_if_fail(self != NULL); va_start(args, name); while (name != NULL) { const char *value; char *evaluated; char *c_quoted; char *shell_quoted; char *cppflags; value = va_arg(args, const char *); g_assert(value != NULL); /* expand variables since we need to quote the value */ evaluated = jb_variable_expand(value, NULL); c_quoted = jb_c_quote(evaluated); g_free(evaluated); shell_quoted = g_shell_quote(c_quoted); g_free(c_quoted); cppflags = g_strdup_printf("-D%s=%s", name, shell_quoted); g_free(shell_quoted); jb_compile_options_add_cppflags(self, cppflags); g_free(cppflags); name = va_arg(args, const char *); } va_end(args); } mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-feature.c0000644000175000001440000002244011005110777023434 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include "jb-util.h" #include "jb-variable.h" #include "jb-tests.h" #include "jb-feature.h" typedef struct { int major; int minor; int micro; } Version; static const JBFeature **_features = NULL; static int _num_features = 0; gboolean jb_intltool_use_xml = TRUE; void jb_feature_set_list (const JBFeature **features, int num_features) { g_return_if_fail(features != NULL); _features = features; _num_features = num_features; } gboolean jb_feature_is_enabled (JBFeature *feature) { int i; g_return_val_if_fail(feature != NULL, FALSE); for (i = 0; i < _num_features; i++) if (_features[i] == feature) return TRUE; return FALSE; } void jb_feature_init (void) { int i; for (i = 0; i < _num_features; i++) { const JBFeature *feature = _features[i]; if (feature->init) feature->init(); } } void jb_feature_configure (void) { int i; for (i = 0; i < _num_features; i++) { const JBFeature *feature = _features[i]; if (feature->configure) feature->configure(); } } static void pkg_config_init (void) { /* NO_REPORT since it is only used in configure */ jb_register_program("pkg-config", JB_VARIABLE_NO_REPORT); } static void gettext_init (void) { jb_register_program("msgfmt", 0); } static void gettext_configure (void) { static const char *functions = "ngettext dgettext bind_textdomain_codeset"; if (jb_check_functions(functions, NULL)) jb_variable_set_package_flags("gettext", NULL, "-DENABLE_NLS", NULL, NULL); else if (jb_check_functions(functions, "intl")) jb_variable_set_package_flags("gettext", NULL, "-DENABLE_NLS", NULL, "-lintl"); else jb_error("gettext found neither in libc nor in libintl"); jb_require_program("msgfmt"); } static void intltool_init (void) { jb_register_program("perl", 0); } static void intltool_configure (void) { jb_require_program("perl"); if (jb_intltool_use_xml) { gboolean result; jb_message_checking("for XML::Parser"); result = jb_exec_expand(NULL, NULL, "$perl -e 'require XML::Parser'", NULL); jb_message_result_bool(result); if (! result) jb_error("intltool requires the XML::Parser Perl module"); } } static void gconf_init (void) { jb_register_program("gconftool-2", 0); jb_variable_add_string("gconf-config-source", "GConf configuration source address", jb_variable_group_installation_options, 0, "autodetect"); jb_variable_add_string("gconf-schemas-dir", "GConf schemas installation directory", jb_variable_group_installation_options, 0, "$sysconfdir/gconf/schemas"); jb_variable_add_bool("install-gconf-schemas", "install GConf schemas", jb_variable_group_installation_options, 0, TRUE); } static void gconf_configure (void) { JBVariable *variable; jb_require_program("gconftool-2"); if (! strcmp(jb_variable_get_string("gconf-config-source"), "autodetect")) { char *config_source; if (! jb_exec_expand(&config_source, NULL, "$gconftool-2 --get-default-source", NULL)) jb_error("unable to detect the GConf configuration source address"); jb_variable_set_string("gconf-config-source", config_source); g_free(config_source); } /* fix the default schemas dir on Ubuntu */ variable = jb_variable_get_variable_or_error("gconf-schemas-dir"); if (! variable->user_set) { static const char *ubuntu_dir = "$datadir/gconf/schemas"; char *expanded; expanded = jb_variable_expand(ubuntu_dir, NULL); if (g_file_test(expanded, G_FILE_TEST_IS_DIR)) jb_variable_set_string("gconf-schemas-dir", ubuntu_dir); g_free(expanded); } } static void gnome_help_init (void) { /* NO_REPORT since it is only used in configure */ jb_register_program("scrollkeeper-config", JB_VARIABLE_NO_REPORT); jb_register_program("scrollkeeper-preinstall", 0); jb_register_program("scrollkeeper-update", 0); jb_variable_add_string("help-dir", "GNOME help directory", jb_variable_group_installation_options, 0, "$datadir/gnome/help"); jb_variable_add_string("omf-dir", "OMF directory", jb_variable_group_installation_options, 0, "autodetect"); jb_variable_add_string("scrollkeeper-dir", "ScrollKeeper database directory", jb_variable_group_installation_options, 0, "autodetect"); } static void gnome_help_check_dir (const char *name, const char *description, const char *scrollkeeper_config_arg) { const char *dir; char *result; dir = jb_variable_get_string(name); if (strcmp(dir, "autodetect")) return; jb_require_program("scrollkeeper-config"); jb_message_checking("for the %s", description); if (jb_exec_expand(&result, NULL, "$scrollkeeper-config $arg", "arg", scrollkeeper_config_arg, NULL)) { jb_message_result_string(result); jb_variable_set_string(name, result); } else { jb_message_result_string("not found"); jb_error("unable to autodetect the %s", description); } g_free(result); } static void gnome_help_configure (void) { jb_require_program("scrollkeeper-preinstall"); jb_require_program("scrollkeeper-update"); gnome_help_check_dir("omf-dir", "OMF directory", "--omfdir"); gnome_help_check_dir("scrollkeeper-dir", "ScrollKeeper database directory", "--pkglocalstatedir"); } static gboolean parse_version (const char *version_string, Version *version) { int _major; int _minor; int _micro; switch (sscanf(version_string, "%d.%d.%d", &_major, &_minor, &_micro)) { case 1: version->major = _major; version->minor = 0; version->micro = 0; return TRUE; case 2: version->major = _major; version->minor = _minor; version->micro = 0; return TRUE; case 3: version->major = _major; version->minor = _minor; version->micro = _micro; return TRUE; default: return FALSE; } } static int version_to_int (Version *version) { return (version->major << 16) + (version->minor << 8) + version->micro; } static void gob2_init (void) { jb_register_program("gob2", 0); jb_variable_set_string("gob2-minversion", "2.0"); } static gboolean parse_gob2_version_output (char *str, char **version_string, Version *version) { char *space; char *_version_string; space = strrchr(str, ' '); if (space == NULL) return FALSE; _version_string = space + 1; if (parse_version(_version_string, version)) { *version_string = _version_string; return TRUE; } return FALSE; } static char * get_gob2_not_found_error (const char *minversion) { return g_strdup_printf("One or more .gob source files were modified but gob2 was not found. Please install gob2 >= %s and run configure again.", minversion); } static void gob2_configure (void) { const char *minversion_string; Version minversion; char *error = NULL; minversion_string = jb_variable_get_string("gob2-minversion"); if (! parse_version(minversion_string, &minversion)) g_error("invalid gob2-minversion \"%s\"", minversion_string); if (jb_check_program("gob2")) { char *output; gboolean result = FALSE; jb_message_checking("for gob2 >= %s", minversion_string); if (jb_exec_expand(NULL, &output, "$gob2 --version", NULL)) { char *version_string; Version version; if (parse_gob2_version_output(output, &version_string, &version)) { if (version_to_int(&version) >= version_to_int(&minversion)) result = TRUE; else error = g_strdup_printf("One or more .gob source files were modified but the version of gob2 (%s) is too old. Please install gob2 >= %s and run configure again.", version_string, minversion_string); } else error = get_gob2_not_found_error(minversion_string); } else error = get_gob2_not_found_error(minversion_string); g_free(output); jb_message_result_bool(result); } else error = get_gob2_not_found_error(minversion_string); jb_variable_set_string("gob2-error", error); g_free(error); } JBFeature jb_pkg_config_feature = { pkg_config_init, NULL }; JBFeature jb_gettext_feature = { gettext_init, gettext_configure }; JBFeature jb_intltool_feature = { intltool_init, intltool_configure }; JBFeature jb_gconf_feature = { gconf_init, gconf_configure }; JBFeature jb_gnome_help_feature = { gnome_help_init, gnome_help_configure }; JBFeature jb_gob2_feature = { gob2_init, gob2_configure }; mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-resource.c0000644000175000001440000013331111005111000023604 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include "jb-resource.h" #include "jb-group.h" #include "jb-variable.h" #include "jb-util.h" #include "jb-feature.h" #include "jb-action.h" #define INTLTOOL_MERGE_IN "jbsrc/tools/intltool-merge.in" #define INTLTOOL_MERGE_OUT "build/jbsrc/tools/intltool-merge" #define INTLTOOL_MERGE_CACHE "build/jbsrc/tools/intltool-merge-cache" static gboolean has_template (const char *filename) { char *template_input; gboolean result; if (jb_templates == NULL) return FALSE; template_input = g_strdup_printf("%s.in", filename); result = jb_string_hash_set_contains(jb_templates, template_input); g_free(template_input); return result; } static char * get_input_file (const char *filename) { if (has_template(filename)) return g_strdup_printf("build/%s", filename); else return g_strdup(filename); } static char * get_output_file (const char *filename) { char *tmp; char *result; g_return_val_if_fail(filename != NULL, NULL); g_return_val_if_fail(g_str_has_suffix(filename, ".in"), NULL); tmp = jb_strip_extension(filename); /* * If the input file is already in build/, do not put the output * file in build/build/. */ if (g_str_has_prefix(tmp, "build/")) result = g_strdup(tmp); else result = g_strdup_printf("build/%s", tmp); g_free(tmp); return result; } G_DEFINE_ABSTRACT_TYPE(JBResource, jb_resource, G_TYPE_OBJECT) char * jb_resource_to_string (JBResource *self) { JBResourceClass *class; g_return_val_if_fail(JB_IS_RESOURCE(self), NULL); class = JB_RESOURCE_GET_CLASS(self); if (class->to_string != NULL) return class->to_string(self); else { g_error("to_string() not implemented for resource type %s", G_OBJECT_TYPE_NAME(self)); return NULL; } } void jb_resource_pre_build (JBResource *self) { JBResourceClass *class; g_return_if_fail(JB_IS_RESOURCE(self)); class = JB_RESOURCE_GET_CLASS(self); if (class->pre_build != NULL) class->pre_build(self); } void jb_resource_build (JBResource *self) { JBResourceClass *class; g_return_if_fail(JB_IS_RESOURCE(self)); class = JB_RESOURCE_GET_CLASS(self); if (class->build != NULL) class->build(self); } void jb_resource_install (JBResource *self) { JBResourceClass *class; g_return_if_fail(JB_IS_RESOURCE(self)); class = JB_RESOURCE_GET_CLASS(self); if (class->install != NULL) class->install(self); } void jb_resource_makedist (JBResource *self) { JBResourceClass *class; g_return_if_fail(JB_IS_RESOURCE(self)); class = JB_RESOURCE_GET_CLASS(self); if (class->makedist != NULL) class->makedist(self); } void jb_resource_clean (JBResource *self) { JBResourceClass *class; g_return_if_fail(JB_IS_RESOURCE(self)); class = JB_RESOURCE_GET_CLASS(self); if (class->clean != NULL) class->clean(self); } void jb_resource_distclean (JBResource *self) { JBResourceClass *class; g_return_if_fail(JB_IS_RESOURCE(self)); class = JB_RESOURCE_GET_CLASS(self); if (class->distclean != NULL) class->distclean(self); } void jb_resource_maintainerclean (JBResource *self) { JBResourceClass *class; g_return_if_fail(JB_IS_RESOURCE(self)); class = JB_RESOURCE_GET_CLASS(self); if (class->maintainerclean != NULL) class->maintainerclean(self); } static void resource_action_message (JBResource *self, const char *action) { char *repr; g_return_if_fail(JB_IS_RESOURCE(self)); g_return_if_fail(action != NULL); repr = jb_resource_to_string(self); jb_message("%s %s", action, repr); g_free(repr); } void jb_resource_message_building (JBResource *self) { g_return_if_fail(JB_IS_RESOURCE(self)); resource_action_message(self, "building"); } static void jb_resource_init (JBResource *self) { } static void jb_resource_class_init (JBResourceClass *class) { } G_DEFINE_ABSTRACT_TYPE(JBGroupResource, jb_group_resource, JB_TYPE_RESOURCE) static void jb_group_resource_init (JBGroupResource *self) { } static void jb_group_resource_class_init (JBGroupResourceClass *class) { } G_DEFINE_ABSTRACT_TYPE(JBObjectResource, jb_object_resource, JB_TYPE_RESOURCE) static void jb_object_resource_init (JBObjectResource *self) { } static void jb_object_resource_class_init (JBObjectResourceClass *class) { } static char * object_resource_get_object_file (JBObjectResource *self) { JBObjectResourceClass *class; g_return_val_if_fail(JB_IS_OBJECT_RESOURCE(self), NULL); class = JB_OBJECT_RESOURCE_GET_CLASS(self); if (class->get_object_file != NULL) return class->get_object_file(self); else { g_error("get_object_file() not implemented for object resource type %s", G_OBJECT_TYPE_NAME(self)); return NULL; } } G_DEFINE_TYPE(JBTemplate, jb_template, JB_TYPE_GROUP_RESOURCE) JBTemplate * jb_template_new (const char *filename) { JBTemplate *self; g_return_val_if_fail(filename != NULL, NULL); g_return_val_if_fail(g_str_has_suffix(filename, ".in"), NULL); self = g_object_new(JB_TYPE_TEMPLATE, NULL); self->filename = g_strdup(filename); return self; } static char * template_to_string (JBResource *res) { JBTemplate *self = JB_TEMPLATE(res); return g_strdup_printf("template %s", self->filename); } static void template_get_files (JBTemplate *self, char **infile, char **outfile) { JBGroupResource *gres = JB_GROUP_RESOURCE(self); if (infile != NULL) *infile = g_strdup_printf("%s/%s", gres->group->srcdir, self->filename); if (outfile != NULL) { char *tmp; tmp = jb_strip_extension(self->filename); *outfile = g_strdup_printf("%s/%s", gres->group->builddir, tmp); g_free(tmp); } } static void template_build (JBResource *res) { JBTemplate *self = JB_TEMPLATE(res); char *infile; char *outfile; template_get_files(self, &infile, &outfile); if (! jb_is_uptodate(outfile, infile)) { static GHashTable *variables = NULL; jb_resource_message_building(res); if (variables == NULL) { GSList *l; variables = g_hash_table_new(g_str_hash, g_str_equal); JB_LIST_FOREACH(l, jb_variables) { JBVariable *variable = l->data; g_hash_table_insert(variables, variable->name, jb_variable_evaluate(variable)); } } jb_mkdir_of_file(outfile); jb_subst(infile, outfile, variables); } g_free(infile); g_free(outfile); } static void template_makedist (JBResource *res) { JBTemplate *self = JB_TEMPLATE(res); char *infile; template_get_files(self, &infile, NULL); jb_action_add_to_dist(infile); g_free(infile); } static void template_clean (JBResource *res) { JBTemplate *self = JB_TEMPLATE(res); char *outfile; template_get_files(self, NULL, &outfile); jb_action_rm(outfile); g_free(outfile); } static void jb_template_init (JBTemplate *self) { } static void jb_template_class_init (JBTemplateClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); rclass->to_string = template_to_string; rclass->build = template_build; rclass->makedist = template_makedist; rclass->clean = template_clean; } G_DEFINE_TYPE(JBDataFile, jb_data_file, JB_TYPE_GROUP_RESOURCE) JBDataFile * jb_data_file_new (const char *filename) { JBDataFile *self; g_return_val_if_fail(filename != NULL, NULL); self = g_object_new(JB_TYPE_DATA_FILE, NULL); self->filename = g_strdup(filename); return self; } static char * data_file_to_string (JBResource *res) { JBDataFile *self = JB_DATA_FILE(res); return g_strdup_printf("data file %s", self->filename); } static void data_file_install (JBResource *res) { JBDataFile *self = JB_DATA_FILE(res); JBGroupResource *gres = JB_GROUP_RESOURCE(res); char *srcfile; char *real_srcfile; char *dstfile; srcfile = g_strdup_printf("%s/%s", gres->group->srcdir, self->filename); real_srcfile = get_input_file(srcfile); dstfile = g_path_get_basename(self->filename); jb_install_options_install_data(self->install_options, real_srcfile, dstfile); g_free(srcfile); g_free(real_srcfile); g_free(dstfile); } static void data_file_makedist (JBResource *res) { JBDataFile *self = JB_DATA_FILE(res); JBGroupResource *gres = JB_GROUP_RESOURCE(res); char *file; file = g_strdup_printf("%s/%s", gres->group->srcdir, self->filename); if (! has_template(file)) jb_action_add_to_dist(file); g_free(file); } static void jb_data_file_init (JBDataFile *self) { self->install_options = jb_install_options_new(); } static void jb_data_file_class_init (JBDataFileClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); rclass->to_string = data_file_to_string; rclass->install = data_file_install; rclass->makedist = data_file_makedist; } static GSList * parse_depsfile (const char *depsfile) { char *contents; char **lines; GSList *deps = NULL; int i; contents = jb_read_file(depsfile, NULL); if (contents == NULL) return NULL; /* depsfile is optional */ lines = g_strsplit(contents, "\n", 0); g_free(contents); for (i = 0; lines[i] != NULL; i++) { char *p; char **files; int j; p = strchr(lines[i], ':'); if (p != NULL) p++; else p = lines[i]; files = g_strsplit(p, " ", 0); for (j = 0; files[j] != NULL; j++) { char *work; char *file; work = g_strdup(files[j]); file = g_strstrip(work); if (*file != '\0' && *file != '\\') deps = g_slist_prepend(deps, g_strdup(file)); g_free(work); } g_strfreev(files); } return deps; } static char * object_file_get_depsfile (const char *ofile) { return g_strdup_printf("%s.deps", ofile); } static gboolean object_file_is_uptodate (const char *ofile, const char *cfile) { char *depsfile; GSList *deps; if (! jb_variable_get_bool("cc-dependency-tracking")) return FALSE; if (! jb_is_uptodate(ofile, cfile)) return FALSE; depsfile = object_file_get_depsfile(ofile); deps = parse_depsfile(depsfile); g_free(depsfile); if (deps != NULL) { gboolean is_uptodate; is_uptodate = jb_is_uptodate_list(ofile, deps); jb_g_slist_free_deep(deps); return is_uptodate; } else return TRUE; } static void object_file_build (JBObject *object, const char *ofile, const char *cfile) { JBGroupResource *gres = JB_GROUP_RESOURCE(object); JBObjectClass *object_class; char *depsfile; char *depsflags = NULL; object_class = JB_OBJECT_GET_CLASS(object); depsfile = object_file_get_depsfile(ofile); if (jb_variable_get_bool("cc-dependency-tracking")) depsflags = jb_variable_expand(" -MT $ofile -MD -MP -MF $depsfile", "ofile", ofile, "depsfile", depsfile, NULL); jb_mkdir_of_file(ofile); jb_action_exec("$cc -c -o $ofile" " $package-cflags $group-cflags $object-cflags $stock-cflags $cflags" " $package-cppflags $group-cppflags $object-cppflags $stock-cppflags $cppflags" " $depsflags $cfile", "package-cflags", jb_compile_options_get_cflags(jb_compile_options), "group-cflags", jb_compile_options_get_cflags(gres->group->compile_options), "object-cflags", jb_compile_options_get_cflags(object->compile_options), "stock-cflags", object_class->stock_cflags, "package-cppflags", jb_compile_options_get_cppflags(jb_compile_options), "group-cppflags", jb_compile_options_get_cppflags(gres->group->compile_options), "object-cppflags", jb_compile_options_get_cppflags(object->compile_options), "stock-cppflags", object_class->stock_cppflags, "depsflags", depsflags, "ofile", ofile, "cfile", cfile, NULL); g_free(depsfile); g_free(depsflags); } static void object_file_clean (const char *ofile) { char *depsfile; depsfile = object_file_get_depsfile(ofile); jb_action_rm(ofile); jb_action_rm(depsfile); g_free(depsfile); } G_DEFINE_TYPE(JBSource, jb_source, JB_TYPE_OBJECT_RESOURCE) JBSource * jb_source_new (const char *filename) { JBSource *self; g_return_val_if_fail(filename != NULL, NULL); self = g_object_new(JB_TYPE_SOURCE, NULL); self->filename = g_strdup(filename); return self; } static char * source_to_string (JBResource *res) { JBSource *self = JB_SOURCE(res); char *base_filename; char *str; base_filename = g_path_get_basename(self->filename); str = g_strdup_printf("C source %s", base_filename); g_free(base_filename); return str; } static void source_get_files (JBSource *self, char **ofile, char **cfile) { JBObjectResource *ores = JB_OBJECT_RESOURCE(self); JBGroupResource *gres = JB_GROUP_RESOURCE(ores->object); char *base_filename; char *base_prefix; base_filename = g_path_get_basename(self->filename); base_prefix = jb_strip_extension(base_filename); if (ofile != NULL) *ofile = g_strdup_printf("%s/%s-%s.o", gres->group->builddir, ores->object->name, base_prefix); if (cfile != NULL) *cfile = g_strdup_printf("%s/%s", gres->group->srcdir, self->filename); g_free(base_filename); g_free(base_prefix); } static void source_build (JBResource *res) { JBObjectResource *ores = JB_OBJECT_RESOURCE(res); JBSource *self = JB_SOURCE(res); char *ofile; char *cfile; source_get_files(self, &ofile, &cfile); if (! object_file_is_uptodate(ofile, cfile)) { jb_resource_message_building(res); object_file_build(ores->object, ofile, cfile); } g_free(ofile); g_free(cfile); } static void source_makedist (JBResource *res) { JBSource *self = JB_SOURCE(res); char *cfile; source_get_files(self, NULL, &cfile); jb_action_add_to_dist(cfile); g_free(cfile); } static void source_clean (JBResource *res) { JBSource *self = JB_SOURCE(res); char *ofile; source_get_files(self, &ofile, NULL); object_file_clean(ofile); g_free(ofile); } static char * source_get_object_file (JBObjectResource *res) { JBSource *self = JB_SOURCE(res); char *ofile; source_get_files(self, &ofile, NULL); return ofile; } static void jb_source_init (JBSource *self) { } static void jb_source_class_init (JBSourceClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); JBObjectResourceClass *orclass = JB_OBJECT_RESOURCE_CLASS(class); rclass->to_string = source_to_string; rclass->build = source_build; rclass->makedist = source_makedist; rclass->clean = source_clean; orclass->get_object_file = source_get_object_file; } G_DEFINE_TYPE(JBGobClass, jb_gob_class, JB_TYPE_OBJECT_RESOURCE) JBGobClass * jb_gob_class_new (const char *name) { JBGobClass *self; g_return_val_if_fail(name != NULL, NULL); g_return_val_if_fail(jb_feature_is_enabled(&jb_gob2_feature), NULL); self = g_object_new(JB_TYPE_GOB_CLASS, NULL); self->name = g_strdup(name); return self; } static void gob_class_get_gob_files (JBGobClass *self, char **gobfile, char **stamp) { JBGroupResource *gres = JB_GROUP_RESOURCE(JB_OBJECT_RESOURCE(self)->object); char *prefix; prefix = g_strdelimit(g_ascii_strdown(self->name, -1), ":", '-'); if (gobfile != NULL) *gobfile = g_strdup_printf("%s/%s.gob", gres->group->srcdir, prefix); if (stamp != NULL) *stamp = g_strdup_printf("%s/%s.gob.stamp", gres->group->builddir, prefix); g_free(prefix); } static void gob_class_pre_build (JBResource *res) { JBGobClass *self = JB_GOB_CLASS(res); char *gobfile; char *stamp; gob_class_get_gob_files(self, &gobfile, &stamp); if (! jb_is_uptodate(stamp, gobfile)) { JBObjectResource *ores = JB_OBJECT_RESOURCE(res); JBGroupResource *gres = JB_GROUP_RESOURCE(ores->object); const char *error; error = jb_variable_get_string_or_null("gob2-error"); if (error != NULL) jb_error("%s", error); jb_message("building GOB class %s", self->name); jb_mkdir(gres->group->builddir); jb_action_exec("$gob2 $package-gob2flags $group-gob2flags $object-gob2flags $gobfile", "package-gob2flags", jb_compile_options_get_gob2flags(jb_compile_options), "group-gob2flags", jb_compile_options_get_gob2flags(gres->group->compile_options), "object-gob2flags", jb_compile_options_get_gob2flags(ores->object->compile_options), "gobfile", gobfile, NULL); jb_action_exec("touch $stamp", "stamp", stamp, NULL); } g_free(gobfile); g_free(stamp); } static void gob_class_get_c_files (JBGobClass *self, char **ofile, char **cfile, char **hfile, char **phfile) { JBObjectResource *ores = JB_OBJECT_RESOURCE(self); JBGroupResource *gres = JB_GROUP_RESOURCE(ores->object); char *prefix; prefix = g_strdelimit(g_ascii_strdown(self->name, -1), ":", '-'); if (ofile != NULL) *ofile = g_strdup_printf("%s/%s-%s.o", gres->group->builddir, ores->object->name, prefix); if (cfile != NULL) *cfile = g_strdup_printf("%s/%s.c", gres->group->builddir, prefix); if (hfile != NULL) *hfile = g_strdup_printf("%s/%s.h", gres->group->builddir, prefix); if (phfile != NULL) *phfile = g_strdup_printf("%s/%s-private.h", gres->group->builddir, prefix); g_free(prefix); } static void gob_class_build (JBResource *res) { JBGobClass *self = JB_GOB_CLASS(res); char *ofile; char *cfile; gob_class_get_c_files(self, &ofile, &cfile, NULL, NULL); if (! object_file_is_uptodate(ofile, cfile)) { JBObjectResource *ores = JB_OBJECT_RESOURCE(res); char *class_name; class_name = jb_strip_chars(self->name, ":"); jb_message("building class %s", class_name); g_free(class_name); object_file_build(ores->object, ofile, cfile); } g_free(ofile); g_free(cfile); } static void gob_class_makedist (JBResource *res) { JBGobClass *self = JB_GOB_CLASS(res); char *gobfile; char *stamp; char *cfile; char *hfile; char *phfile; gob_class_get_gob_files(self, &gobfile, &stamp); gob_class_get_c_files(self, NULL, &cfile, &hfile, &phfile); jb_action_add_to_dist(gobfile); jb_action_add_to_dist(stamp); jb_action_add_to_dist(cfile); jb_action_add_to_dist(hfile); jb_action_add_to_dist(phfile); g_free(gobfile); g_free(stamp); g_free(cfile); g_free(hfile); g_free(phfile); } static void gob_class_clean (JBResource *res) { JBGobClass *self = JB_GOB_CLASS(res); char *ofile; gob_class_get_c_files(self, &ofile, NULL, NULL, NULL); object_file_clean(ofile); g_free(ofile); } static void gob_class_maintainerclean (JBResource *res) { JBGobClass *self = JB_GOB_CLASS(res); char *stamp; char *cfile; char *hfile; char *phfile; gob_class_get_gob_files(self, NULL, &stamp); gob_class_get_c_files(self, NULL, &cfile, &hfile, &phfile); jb_action_rm(stamp); jb_action_rm(cfile); jb_action_rm(hfile); jb_action_rm(phfile); g_free(stamp); g_free(cfile); g_free(hfile); g_free(phfile); } static char * gob_class_get_object_file (JBObjectResource *res) { JBGobClass *self = JB_GOB_CLASS(res); char *ofile; gob_class_get_c_files(self, &ofile, NULL, NULL, NULL); return ofile; } static void jb_gob_class_init (JBGobClass *self) { } static void jb_gob_class_class_init (JBGobClassClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); JBObjectResourceClass *orclass = JB_OBJECT_RESOURCE_CLASS(class); rclass->pre_build = gob_class_pre_build; rclass->build = gob_class_build; rclass->makedist = gob_class_makedist; rclass->clean = gob_class_clean; rclass->maintainerclean = gob_class_maintainerclean; orclass->get_object_file = gob_class_get_object_file; } G_DEFINE_TYPE(JBIntltoolFile, jb_intltool_file, JB_TYPE_GROUP_RESOURCE) JBIntltoolFile * jb_intltool_file_new (const char *type, const char *filename, const char *merge_flags) { JBIntltoolFile *self; g_return_val_if_fail(type != NULL, NULL); g_return_val_if_fail(filename != NULL, NULL); g_return_val_if_fail(g_str_has_suffix(filename, ".in"), NULL); g_return_val_if_fail(merge_flags != NULL, NULL); self = g_object_new(JB_TYPE_INTLTOOL_FILE, NULL); self->type = g_strdup(type); self->filename = g_strdup(filename); self->merge_flags = g_strdup(merge_flags); return self; } static char * intltool_file_to_string (JBResource *res) { JBIntltoolFile *self = JB_INTLTOOL_FILE(res); return g_strdup_printf("%s %s", self->type, self->filename); } static void intltool_file_get_files (JBIntltoolFile *self, char **infile, char **outfile) { JBGroupResource *gres = JB_GROUP_RESOURCE(self); char *filename; filename = g_strdup_printf("%s/%s", gres->group->srcdir, self->filename); if (infile != NULL) *infile = get_input_file(filename); if (outfile != NULL) *outfile = get_output_file(filename); g_free(filename); } static void intltool_file_build (JBResource *res) { JBIntltoolFile *self = JB_INTLTOOL_FILE(res); char *infile; char *outfile; GSList *deps = NULL; if (! jb_is_uptodate(INTLTOOL_MERGE_OUT, INTLTOOL_MERGE_IN)) { GHashTable *variables; jb_message("building intltool-merge"); jb_mkdir_of_file(INTLTOOL_MERGE_OUT); variables = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free); g_hash_table_insert(variables, "INTLTOOL_PERL", jb_variable_expand("$perl", NULL)); g_hash_table_insert(variables, "INTLTOOL_LIBDIR", jb_variable_expand("$perl", NULL)); jb_subst(INTLTOOL_MERGE_IN, INTLTOOL_MERGE_OUT, variables); g_hash_table_destroy(variables); jb_chmod(INTLTOOL_MERGE_OUT, 0755); } intltool_file_get_files(self, &infile, &outfile); deps = g_slist_append(deps, g_strdup(infile)); deps = g_slist_append(deps, g_strdup(INTLTOOL_MERGE_OUT)); deps = g_slist_concat(deps, jb_match_files("po/*.po")); if (! jb_is_uptodate_list(outfile, deps)) { jb_resource_message_building(res); jb_mkdir_of_file(outfile); jb_mkdir_of_file(INTLTOOL_MERGE_CACHE); jb_action_exec("LC_ALL=C " INTLTOOL_MERGE_OUT " $merge-flags -u -c " INTLTOOL_MERGE_CACHE " po $infile $outfile", "merge-flags", self->merge_flags, "infile", infile, "outfile", outfile, NULL); } g_free(infile); g_free(outfile); jb_g_slist_free_deep(deps); } static void intltool_file_install (JBResource *res) { JBIntltoolFile *self = JB_INTLTOOL_FILE(res); char *outfile; intltool_file_get_files(self, NULL, &outfile); jb_install_options_install_data(self->install_options, outfile, NULL); g_free(outfile); } static void intltool_file_makedist (JBResource *res) { JBIntltoolFile *self = JB_INTLTOOL_FILE(res); JBGroupResource *gres = JB_GROUP_RESOURCE(res); char *filename; filename = g_strdup_printf("%s/%s", gres->group->srcdir, self->filename); jb_action_add_to_dist(INTLTOOL_MERGE_IN); if (! has_template(filename)) jb_action_add_to_dist(filename); g_free(filename); } static void intltool_file_clean (JBResource *res) { JBIntltoolFile *self = JB_INTLTOOL_FILE(res); char *outfile; intltool_file_get_files(self, NULL, &outfile); jb_action_rm(INTLTOOL_MERGE_OUT); jb_action_rm(INTLTOOL_MERGE_CACHE); jb_action_rm(outfile); g_free(outfile); } static void intltool_file_maintainerclean (JBResource *res) { jb_action_rm(INTLTOOL_MERGE_IN); } static void jb_intltool_file_init (JBIntltoolFile *self) { self->install_options = jb_install_options_new(); } static void jb_intltool_file_class_init (JBIntltoolFileClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); rclass->to_string = intltool_file_to_string; rclass->build = intltool_file_build; rclass->install = intltool_file_install; rclass->makedist = intltool_file_makedist; rclass->clean = intltool_file_clean; rclass->maintainerclean = intltool_file_maintainerclean; } G_DEFINE_TYPE(JBGConfSchemas, jb_gconf_schemas, JB_TYPE_INTLTOOL_FILE) JBGConfSchemas * jb_gconf_schemas_new (const char *filename) { JBGConfSchemas *self; JBIntltoolFile *intltool_file; self = g_object_new(JB_TYPE_GCONF_SCHEMAS, NULL); intltool_file = JB_INTLTOOL_FILE(self); intltool_file->type = g_strdup("GConf schemas"); intltool_file->filename = g_strdup(filename); intltool_file->merge_flags = g_strdup("-s"); return self; } static void gconf_schemas_install (JBResource *res) { JBIntltoolFile *intltool_file = JB_INTLTOOL_FILE(res); JB_RESOURCE_CLASS(jb_gconf_schemas_parent_class)->install(res); if (jb_variable_get_bool("install-gconf-schemas")) { char *outfile; char *filename; intltool_file_get_files(intltool_file, NULL, &outfile); filename = g_path_get_basename(outfile); jb_message("installing GConf schemas %s", filename); g_free(filename); jb_action_exec("GCONF_CONFIG_SOURCE=$gconf-config-source $gconftool-2 --makefile-install-rule $outfile", "outfile", outfile, NULL); g_free(outfile); } } static void jb_gconf_schemas_init (JBGConfSchemas *self) { JBIntltoolFile *intltool_file = JB_INTLTOOL_FILE(self); jb_install_options_set_installdir(intltool_file->install_options, "$gconf-schemas-dir"); } static void jb_gconf_schemas_class_init (JBGConfSchemasClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); rclass->install = gconf_schemas_install; } G_DEFINE_TYPE(JBGnomeHelp, jb_gnome_help, JB_TYPE_GROUP_RESOURCE) JBGnomeHelp * jb_gnome_help_new (const char *lang, const char *entities) { JBGnomeHelp *self; g_return_val_if_fail(lang != NULL, NULL); g_return_val_if_fail(jb_feature_is_enabled(&jb_gnome_help_feature), NULL); self = g_object_new(JB_TYPE_GNOME_HELP, NULL); self->name = g_strdup(jb_variable_get_string("package")); self->lang = g_strdup(lang); self->entities = g_strsplit(entities != NULL ? entities : "", " ", 0); return self; } static char * gnome_help_to_string (JBResource *res) { JBGnomeHelp *self = JB_GNOME_HELP(res); return g_strdup_printf("GNOME help %s [%s]", self->name, self->lang); } static void gnome_help_get_files (JBGnomeHelp *self, char **inomf, char **outomf, char **helpdir, char **xmlfile, GSList **entities, GSList **figures) { JBGroupResource *gres = JB_GROUP_RESOURCE(self); char *_inomf; _inomf = g_strdup_printf("%s/%s/%s-%s.omf.in", gres->group->srcdir, self->lang, self->name, self->lang); if (inomf != NULL) *inomf = g_strdup(_inomf); if (outomf != NULL) *outomf = get_output_file(_inomf); if (helpdir != NULL) *helpdir = jb_variable_expand("$help-dir/$name/$lang", "name", self->name, "lang", self->lang, NULL); if (xmlfile != NULL) *xmlfile = g_strdup_printf("%s/%s/%s.xml", gres->group->srcdir, self->lang, self->name); if (entities != NULL) { int i; GSList *list = NULL; for (i = 0; self->entities[i] != NULL; i++) list = g_slist_append(list, g_strdup_printf("%s/%s/%s", gres->group->srcdir, self->lang, self->entities[i])); *entities = list; } if (figures != NULL) { char *pattern; pattern = g_strdup_printf("%s/%s/figures/*.png", gres->group->srcdir, self->lang); *figures = jb_match_files(pattern); g_free(pattern); } g_free(_inomf); } static void gnome_help_build (JBResource *res) { JBGnomeHelp *self = JB_GNOME_HELP(res); char *inomf; char *outomf; char *helpdir; gnome_help_get_files(self, &inomf, &outomf, &helpdir, NULL, NULL, NULL); if (! jb_is_uptodate(outomf, inomf)) { jb_resource_message_building(res); jb_mkdir_of_file(outomf); jb_action_exec("$scrollkeeper-preinstall \"$helpdir/$helpname.xml\" $inomf $outomf", "helpdir", helpdir, "helpname", self->name, "inomf", inomf, "outomf", outomf, NULL); } g_free(inomf); g_free(outomf); g_free(helpdir); } static void gnome_help_install (JBResource *res) { JBGnomeHelp *self = JB_GNOME_HELP(res); char *outomf; char *helpdir; char *omfdir; char *xmlfile; GSList *entities; GSList *figures; char *figdir; gnome_help_get_files(self, NULL, &outomf, &helpdir, &xmlfile, &entities, &figures); omfdir = g_strdup_printf("$omf-dir/%s", self->name); figdir = g_strdup_printf("%s/figures", helpdir); jb_action_install_data(xmlfile, helpdir); jb_action_install_data_list(entities, helpdir); jb_action_install_data_list(figures, figdir); jb_action_install_data(outomf, omfdir); jb_action_exec("-$scrollkeeper-update -p \"$destdir$scrollkeeper-dir\" -o \"$destdir$omfdir\"", "omfdir", omfdir, NULL); g_free(outomf); g_free(helpdir); g_free(omfdir); g_free(xmlfile); jb_g_slist_free_deep(entities); jb_g_slist_free_deep(figures); g_free(figdir); } static void gnome_help_makedist (JBResource *res) { JBGnomeHelp *self = JB_GNOME_HELP(res); char *inomf; char *xmlfile; GSList *entities; GSList *figures; gnome_help_get_files(self, &inomf, NULL, NULL, &xmlfile, &entities, &figures); jb_action_add_to_dist(inomf); jb_action_add_to_dist(xmlfile); jb_action_add_to_dist_list(entities); jb_action_add_to_dist_list(figures); g_free(inomf); g_free(xmlfile); jb_g_slist_free_deep(entities); jb_g_slist_free_deep(figures); } static void gnome_help_clean (JBResource *res) { JBGnomeHelp *self = JB_GNOME_HELP(res); char *outomf; gnome_help_get_files(self, NULL, &outomf, NULL, NULL, NULL, NULL); jb_action_rm(outomf); g_free(outomf); } static void jb_gnome_help_init (JBGnomeHelp *self) { } static void jb_gnome_help_class_init (JBGnomeHelpClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); rclass->to_string = gnome_help_to_string; rclass->build = gnome_help_build; rclass->install = gnome_help_install; rclass->makedist = gnome_help_makedist; rclass->clean = gnome_help_clean; } G_DEFINE_TYPE(JBTranslations, jb_translations, JB_TYPE_GROUP_RESOURCE) static void translations_get_files (JBTranslations *self, char **infile, char **outfile) { JBGroupResource *gres = JB_GROUP_RESOURCE(self); if (infile != NULL) *infile = g_strdup_printf("%s/%s.po", gres->group->srcdir, self->lang); if (outfile != NULL) *outfile = g_strdup_printf("%s/%s.mo", gres->group->builddir, self->lang); } JBTranslations * jb_translations_new (const char *lang) { JBTranslations *self; g_return_val_if_fail(lang != NULL, NULL); g_return_val_if_fail(jb_feature_is_enabled(&jb_gettext_feature), NULL); self = g_object_new(JB_TYPE_TRANSLATIONS, NULL); self->lang = g_strdup(lang); return self; } static char * translations_to_string (JBResource *res) { JBTranslations *self = JB_TRANSLATIONS(res); return g_strdup_printf("%s translations", self->lang); } static void translations_build (JBResource *res) { JBTranslations *self = JB_TRANSLATIONS(res); char *infile; char *outfile; translations_get_files(self, &infile, &outfile); if (! jb_is_uptodate(outfile, infile)) { jb_resource_message_building(res); jb_mkdir_of_file(outfile); jb_action_exec("$msgfmt -o $outfile.tmp $infile && mv -f $outfile.tmp $outfile", "outfile", outfile, "infile", infile, NULL); } g_free(infile); g_free(outfile); } static void translations_install (JBResource *res) { JBTranslations *self = JB_TRANSLATIONS(res); char *outfile; char *installfile; translations_get_files(self, NULL, &outfile); installfile = g_strdup_printf("$prefix/share/locale/%s/LC_MESSAGES/$package.mo", self->lang); jb_action_install_data_to_file(outfile, installfile); g_free(outfile); g_free(installfile); } static void translations_makedist (JBResource *res) { JBTranslations *self = JB_TRANSLATIONS(res); char *infile; translations_get_files(self, &infile, NULL); jb_action_add_to_dist(infile); g_free(infile); } static void translations_clean (JBResource *res) { JBTranslations *self = JB_TRANSLATIONS(res); char *outfile; translations_get_files(self, NULL, &outfile); jb_action_rm(outfile); g_free(outfile); } static void jb_translations_init (JBTranslations *self) { } static void jb_translations_class_init (JBTranslationsClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); rclass->to_string = translations_to_string; rclass->build = translations_build; rclass->install = translations_install; rclass->makedist = translations_makedist; rclass->clean = translations_clean; } G_DEFINE_TYPE(JBRule, jb_rule, JB_TYPE_GROUP_RESOURCE) JBRule * jb_rule_new (void) { return g_object_new(JB_TYPE_RULE, NULL); } /* * This could be inferred by mapping input files to the resources that * produce them, but it would require a more complex JBResource * design. For now this is good enough. */ void jb_rule_add_dependency (JBRule *self, JBGroupResource *res) { g_return_if_fail(JB_IS_RULE(self)); g_return_if_fail(JB_IS_GROUP_RESOURCE(res)); self->dependencies = g_slist_append(self->dependencies, g_object_ref(res)); } void jb_rule_add_input_file (JBRule *self, const char *format, ...) { char *file; g_return_if_fail(JB_IS_RULE(self)); g_return_if_fail(format != NULL); JB_STRDUP_VPRINTF(file, format); self->input_files = g_slist_append(self->input_files, file); } void jb_rule_add_output_file (JBRule *self, const char *format, ...) { char *file; g_return_if_fail(JB_IS_RULE(self)); g_return_if_fail(format != NULL); JB_STRDUP_VPRINTF(file, format); self->output_files = g_slist_append(self->output_files, file); } void jb_rule_set_build_message (JBRule *self, const char *format, ...) { g_return_if_fail(JB_IS_RULE(self)); g_return_if_fail(format != NULL); g_free(self->build_message); JB_STRDUP_VPRINTF(self->build_message, format); } void jb_rule_add_build_command (JBRule *self, const char *format, ...) { char *command; g_return_if_fail(JB_IS_RULE(self)); g_return_if_fail(format != NULL); JB_STRDUP_VPRINTF(command, format); self->build_commands = g_slist_append(self->build_commands, command); } void jb_rule_set_install_message (JBRule *self, const char *format, ...) { g_return_if_fail(JB_IS_RULE(self)); g_return_if_fail(format != NULL); g_free(self->install_message); JB_STRDUP_VPRINTF(self->install_message, format); } void jb_rule_add_install_command (JBRule *self, const char *format, ...) { char *command; g_return_if_fail(JB_IS_RULE(self)); g_return_if_fail(format != NULL); JB_STRDUP_VPRINTF(command, format); self->install_commands = g_slist_append(self->install_commands, command); } static GSList * rule_expand_variables (JBRule *self, GSList *strings) { JBGroupResource *gres = JB_GROUP_RESOURCE(self); GSList *result = NULL; GSList *l; JB_LIST_FOREACH(l, strings) { const char *str = l->data; char *expanded; expanded = jb_variable_expand(str, "srcdir", gres->group->srcdir, "builddir", gres->group->builddir, NULL); result = g_slist_append(result, expanded); } return result; } static void rule_perform (JBRule *self, const char *message, GSList *commands) { JBGroupResource *gres = JB_GROUP_RESOURCE(self); GSList *l; if (commands == NULL) return; jb_message("%s", message); JB_LIST_FOREACH(l, commands) { const char *command = l->data; jb_action_exec(command, "srcdir", gres->group->srcdir, "builddir", gres->group->builddir, NULL); } } static void rule_build (JBResource *res) { JBRule *self = JB_RULE(res); GSList *l; JB_LIST_FOREACH(l, self->dependencies) { JBResource *dep = l->data; jb_resource_build(dep); } if (self->output_files != NULL) { GSList *input_files; GSList *output_files; gboolean is_uptodate; input_files = rule_expand_variables(self, self->input_files); output_files = rule_expand_variables(self, self->output_files); is_uptodate = jb_is_uptodate_list_list(output_files, input_files); jb_g_slist_free_deep(input_files); jb_g_slist_free_deep(output_files); if (is_uptodate) return; } rule_perform(self, self->build_message, self->build_commands); } static void rule_install (JBResource *res) { JBRule *self = JB_RULE(res); rule_perform(self, self->install_message, self->install_commands); } static void rule_clean (JBResource *res) { JBRule *self = JB_RULE(res); GSList *output_files; output_files = rule_expand_variables(self, self->output_files); jb_action_rm_list(output_files); jb_g_slist_free_deep(output_files); } static void jb_rule_init (JBRule *self) { } static void jb_rule_class_init (JBRuleClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); rclass->build = rule_build; rclass->install = rule_install; rclass->clean = rule_clean; } G_DEFINE_ABSTRACT_TYPE(JBObject, jb_object, JB_TYPE_GROUP_RESOURCE) static void object_construct (JBObject *self, const char *name) { self->name = g_strdup(name); self->compile_options = jb_compile_options_new(name); self->install_options = jb_install_options_new(); } static char * object_to_string (JBResource *res) { JBObject *self = JB_OBJECT(res); JBObjectClass *class = JB_OBJECT_GET_CLASS(self); return g_strdup_printf("%s %s", class->type, self->name); } static char * object_get_output_file (JBObject *self) { JBObjectClass *class; g_return_val_if_fail(JB_IS_OBJECT(self), NULL); class = JB_OBJECT_GET_CLASS(self); if (class->get_output_file != NULL) return class->get_output_file(self); else { g_error("get_output_file() not implemented for object type %s", G_OBJECT_TYPE_NAME(self)); return NULL; } } static GSList * object_get_object_files (JBObject *self) { GSList *list = NULL; GSList *l; JB_LIST_FOREACH(l, self->resources) list = g_slist_append(list, object_resource_get_object_file(l->data)); return list; } static GSList * object_get_headers (JBObject *self) { JBGroupResource *gres = JB_GROUP_RESOURCE(self); GSList *list = NULL; GSList *l; JB_LIST_FOREACH(l, self->headers) { const char *header = l->data; list = g_slist_append(list, g_strdup_printf("%s/%s", gres->group->srcdir, header)); } return list; } static void object_pre_build (JBResource *res) { JBObject *self = JB_OBJECT(res); GSList *l; JB_LIST_FOREACH(l, self->resources) jb_resource_pre_build(l->data); } static void object_build (JBResource *res) { JBObject *self = JB_OBJECT(res); char *outfile; GSList *object_files_list; GSList *l; JB_LIST_FOREACH(l, self->resources) jb_resource_build(l->data); outfile = object_get_output_file(self); object_files_list = object_get_object_files(self); if (! jb_is_uptodate_list(outfile, object_files_list)) { JBGroupResource *gres = JB_GROUP_RESOURCE(self); JBObjectClass *object_class; char *object_files; jb_resource_message_building(res); object_class = JB_OBJECT_GET_CLASS(self); object_files = jb_string_list_join(object_files_list, " "); jb_mkdir(gres->group->builddir); jb_action_exec("$cc -o $outfile" " $package-cflags $group-cflags $object-cflags $stock-cflags $cflags" " $package-ldflags $group-ldflags $object-ldflags $stock-ldflags $ldflags" " $object-files" " $package-libs $group-libs $object-libs $stock-libs $libs", "package-cflags", jb_compile_options_get_cflags(jb_compile_options), "group-cflags", jb_compile_options_get_cflags(gres->group->compile_options), "object-cflags", jb_compile_options_get_cflags(self->compile_options), "stock-cflags", object_class->stock_cflags, "package-ldflags", jb_compile_options_get_ldflags(jb_compile_options), "group-ldflags", jb_compile_options_get_ldflags(gres->group->compile_options), "object-ldflags", jb_compile_options_get_ldflags(self->compile_options), "stock-ldflags", object_class->stock_ldflags, "package-libs", jb_compile_options_get_libs(jb_compile_options), "group-libs", jb_compile_options_get_libs(gres->group->compile_options), "object-libs", jb_compile_options_get_libs(self->compile_options), "stock-libs", object_class->stock_libs, "outfile", outfile, "object-files", object_files, NULL); g_free(object_files); } g_free(outfile); jb_g_slist_free_deep(object_files_list); } static void object_makedist (JBResource *res) { JBObject *self = JB_OBJECT(res); GSList *l; GSList *headers; JB_LIST_FOREACH(l, self->resources) jb_resource_makedist(l->data); headers = object_get_headers(self); jb_action_add_to_dist_list(headers); jb_g_slist_free_deep(headers); } static void object_clean (JBResource *res) { JBObject *self = JB_OBJECT(res); GSList *l; char *outfile; JB_LIST_FOREACH(l, self->resources) jb_resource_clean(l->data); outfile = object_get_output_file(self); jb_action_rm(outfile); g_free(outfile); } static void object_distclean (JBResource *res) { JBObject *self = JB_OBJECT(res); GSList *l; JB_LIST_FOREACH(l, self->resources) jb_resource_distclean(l->data); } static void object_maintainerclean (JBResource *res) { JBObject *self = JB_OBJECT(res); GSList *l; JB_LIST_FOREACH(l, self->resources) jb_resource_maintainerclean(l->data); } static void object_add_resource (JBObject *self, JBObjectResource *res) { g_return_if_fail(JB_IS_OBJECT(self)); g_return_if_fail(JB_IS_OBJECT_RESOURCE(res)); g_return_if_fail(res->object == NULL); res->object = self; self->resources = g_slist_append(self->resources, res); } static void object_add_header (JBObject *self, const char *filename) { g_return_if_fail(JB_IS_OBJECT(self)); g_return_if_fail(filename != NULL); self->headers = g_slist_append(self->headers, g_strdup(filename)); } void jb_object_add_source (JBObject *self, const char *name) { g_return_if_fail(JB_IS_OBJECT(self)); g_return_if_fail(name != NULL); if (strchr(name, ':') != NULL) object_add_resource(self, JB_OBJECT_RESOURCE(jb_gob_class_new(name))); else if (strchr(name, '.') == NULL) { char *cfile; char *hfile; cfile = g_strdup_printf("%s.c", name); hfile = g_strdup_printf("%s.h", name); object_add_resource(self, JB_OBJECT_RESOURCE(jb_source_new(cfile))); object_add_header(self, hfile); g_free(cfile); g_free(hfile); } else { if (g_str_has_suffix(name, ".c")) object_add_resource(self, JB_OBJECT_RESOURCE(jb_source_new(name))); else if (g_str_has_suffix(name, ".h")) object_add_header(self, name); else g_error("the extension of source file \"%s\" is not .c or .h", name); } } void jb_object_add_sources (JBObject *self, const char *name, ...) { va_list args; g_return_if_fail(JB_IS_OBJECT(self)); va_start(args, name); while (name != NULL) { jb_object_add_source(self, name); name = va_arg(args, const char *); } va_end(args); } static void jb_object_init (JBObject *self) { } static void jb_object_class_init (JBObjectClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); rclass->to_string = object_to_string; rclass->pre_build = object_pre_build; rclass->build = object_build; rclass->makedist = object_makedist; rclass->clean = object_clean; rclass->distclean = object_distclean; rclass->maintainerclean = object_maintainerclean; } G_DEFINE_TYPE(JBProgram, jb_program, JB_TYPE_OBJECT) JBProgram * jb_program_new (const char *name) { JBProgram *self; JBObject *object; g_return_val_if_fail(name != NULL, NULL); self = g_object_new(JB_TYPE_PROGRAM, NULL); object = JB_OBJECT(self); object_construct(object, name); jb_install_options_set_installdir(object->install_options, "$bindir"); return self; } static void program_install (JBResource *res) { JBObject *object = JB_OBJECT(res); char *outfile; outfile = object_get_output_file(object); jb_install_options_install_program(object->install_options, outfile, NULL); g_free(outfile); } static char * program_get_output_file (JBObject *object) { JBGroupResource *gres = JB_GROUP_RESOURCE(object); return g_strdup_printf("%s/%s", gres->group->builddir, object->name); } static void jb_program_init (JBProgram *self) { } static void jb_program_class_init (JBProgramClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); JBObjectClass *oclass = JB_OBJECT_CLASS(class); rclass->install = program_install; oclass->type = "program"; oclass->get_output_file = program_get_output_file; } G_DEFINE_TYPE(JBModule, jb_module, JB_TYPE_OBJECT) JBModule * jb_module_new (const char *name) { JBModule *self; JBObject *object; g_return_val_if_fail(name != NULL, NULL); self = g_object_new(JB_TYPE_MODULE, NULL); object = JB_OBJECT(self); object_construct(object, name); jb_install_options_set_installdir(object->install_options, "$pkglibdir"); return self; } static void module_install (JBResource *res) { JBObject *object = JB_OBJECT(res); char *outfile; outfile = object_get_output_file(object); jb_install_options_install_library(object->install_options, outfile, NULL); g_free(outfile); } static char * module_get_output_file (JBObject *object) { JBGroupResource *gres = JB_GROUP_RESOURCE(object); return g_strdup_printf("%s/%s.so", gres->group->builddir, object->name); } static void jb_module_init (JBModule *self) { } static void jb_module_class_init (JBModuleClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); JBObjectClass *oclass = JB_OBJECT_CLASS(class); rclass->install = module_install; oclass->type = "module"; oclass->stock_cflags = "-fPIC"; oclass->stock_cppflags = "-DPIC"; oclass->stock_ldflags = "-shared"; oclass->get_output_file = module_get_output_file; } mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-feature.h0000644000175000001440000000327711005111000023424 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_FEATURE_H #define _JB_FEATURE_H #include /* * A JBFeature is a modular chunk that must be brought in by the * package if it uses a certain JB functionality. For instance it must * reference jb_gconf_feature if it uses jb_group_add_gconf_schemas(). */ typedef struct { void (*init) (void); void (*configure) (void); } JBFeature; /* ordered from least to most specific (roughly) */ extern JBFeature jb_pkg_config_feature; extern JBFeature jb_gettext_feature; extern JBFeature jb_intltool_feature; extern JBFeature jb_gconf_feature; extern JBFeature jb_gnome_help_feature; extern JBFeature jb_gob2_feature; extern gboolean jb_intltool_use_xml; void jb_feature_set_list (const JBFeature **features, int num_features); gboolean jb_feature_is_enabled (JBFeature *feature); void jb_feature_init (void); void jb_feature_configure (void); #endif /* _JB_FEATURE_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-group.c0000644000175000001440000001571511005111000023120 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include "jb-group.h" #include "jb-feature.h" #include "jb-variable.h" #include "jb-util.h" #include "jb-resource.h" #include "jb-main.h" GSList *jb_groups = NULL; JBStringHashSet *jb_templates = NULL; G_DEFINE_TYPE(JBGroup, jb_group, G_TYPE_OBJECT) static void jb_group_init (JBGroup *self) { } static void jb_group_class_init (JBGroupClass *class) { } JBGroup * jb_group_new (const char *name) { JBGroup *self; char *cppflags; char *gob2flags; g_return_val_if_fail(name != NULL, NULL); self = g_object_new(JB_TYPE_GROUP, NULL); self->name = g_strdup(name); self->srcdir = g_strdup(name); self->builddir = g_strdup_printf("build/%s", self->srcdir); self->compile_options = jb_compile_options_new(name); /* srcdir for the C headers, builddir for the generated C headers */ cppflags = g_strdup_printf("-I%s -I%s", self->srcdir, self->builddir); jb_compile_options_add_cppflags(self->compile_options, cppflags); g_free(cppflags); gob2flags = g_strdup_printf("--output-dir=%s", self->builddir); jb_compile_options_add_gob2flags(self->compile_options, gob2flags); g_free(gob2flags); return self; } void jb_group_add (JBGroup *group) { GSList *l; g_return_if_fail(JB_IS_GROUP(group)); JB_LIST_FOREACH(l, group->resources) { JBResource *res = l->data; if (JB_IS_TEMPLATE(res)) { JBTemplate *template = JB_TEMPLATE(res); char *filename; filename = g_strdup_printf("%s/%s", group->srcdir, template->filename); if (jb_templates == NULL) jb_templates = jb_string_hash_set_new(); if (! jb_string_hash_set_add(jb_templates, filename)) g_error("template file \"%s\" specified multiple times", filename); g_free(filename); } } jb_groups = g_slist_append(jb_groups, group); } JBGroup * jb_group_get (const char *name) { GSList *l; g_return_val_if_fail(name != NULL, NULL); JB_LIST_FOREACH(l, jb_groups) { JBGroup *group = l->data; if (! strcmp(group->name, name)) return group; } return NULL; } void jb_group_add_resource (JBGroup *self, JBGroupResource *res) { g_return_if_fail(JB_IS_GROUP(self)); g_return_if_fail(JB_IS_GROUP_RESOURCE(res)); g_return_if_fail(res->group == NULL); res->group = self; self->resources = g_slist_append(self->resources, res); } void jb_group_add_data_file (JBGroup *self, const char *file, const char *installdir) { JBDataFile *data_file; g_return_if_fail(JB_IS_GROUP(self)); g_return_if_fail(file != NULL); data_file = jb_data_file_new(file); jb_install_options_set_installdir(data_file->install_options, installdir); jb_group_add_resource(self, JB_GROUP_RESOURCE(data_file)); } void jb_group_add_data_files (JBGroup *self, const char *file, ...) { va_list args; g_return_if_fail(JB_IS_GROUP(self)); va_start(args, file); while (file != NULL) { const char *installdir; installdir = va_arg(args, const char *); g_assert(installdir != NULL); jb_group_add_data_file(self, file, installdir); file = va_arg(args, const char *); } va_end(args); } void jb_group_add_data_files_list (JBGroup *self, GSList *files, const char *installdir) { GSList *l; g_return_if_fail(JB_IS_GROUP(self)); JB_LIST_FOREACH(l, files) { const char *file = l->data; jb_group_add_data_file(self, file, installdir); } } void jb_group_add_data_files_pattern (JBGroup *self, const char *pattern, const char *installdir) { GSList *files; g_return_if_fail(JB_IS_GROUP(self)); g_return_if_fail(pattern != NULL); /* * We must chdir to srcdir for matching, because the file list must * be relative to srcdir. */ jb_chdir(self->srcdir); files = jb_match_files(pattern); jb_chdir(jb_topsrcdir); jb_group_add_data_files_list(self, files, installdir); jb_g_slist_free_deep(files); } void jb_group_add_dist_file (JBGroup *self, const char *file) { g_return_if_fail(JB_IS_GROUP(self)); g_return_if_fail(file != NULL); jb_group_add_data_file(self, file, NULL); } void jb_group_add_dist_files (JBGroup *self, const char *file, ...) { va_list args; g_return_if_fail(JB_IS_GROUP(self)); va_start(args, file); while (file != NULL) { jb_group_add_dist_file(self, file); file = va_arg(args, const char *); } va_end(args); } static void add_intltool_file (JBGroup *self, const char *type, const char *filename, const char *merge_flags, const char *installdir) { JBIntltoolFile *file; file = jb_intltool_file_new(type, filename, merge_flags); jb_install_options_set_installdir(file->install_options, installdir); jb_group_add_resource(self, JB_GROUP_RESOURCE(file)); } void jb_group_add_desktop_file (JBGroup *self, const char *filename, const char *installdir) { g_return_if_fail(JB_IS_GROUP(self)); g_return_if_fail(filename != NULL); g_return_if_fail(installdir != NULL); add_intltool_file(self, "desktop file", filename, "-d", installdir); } void jb_group_add_gconf_schemas (JBGroup *self, const char *filename) { JBGConfSchemas *schemas; g_return_if_fail(JB_IS_GROUP(self)); g_return_if_fail(filename != NULL); g_return_if_fail(jb_feature_is_enabled(&jb_gconf_feature)); g_return_if_fail(jb_feature_is_enabled(&jb_intltool_feature)); g_return_if_fail(jb_intltool_use_xml); schemas = jb_gconf_schemas_new(filename); jb_group_add_resource(self, JB_GROUP_RESOURCE(schemas)); } void jb_group_add_bonobo_server (JBGroup *self, const char *filename) { g_return_if_fail(JB_IS_GROUP(self)); g_return_if_fail(filename != NULL); g_return_if_fail(jb_feature_is_enabled(&jb_intltool_feature)); g_return_if_fail(jb_intltool_use_xml); add_intltool_file(self, "Bonobo server", filename, "-b", "$libdir/bonobo/servers"); } void jb_group_add_translations (JBGroup *self, const char *languages) { char **array; int i; g_return_if_fail(self != NULL); g_return_if_fail(jb_feature_is_enabled(&jb_gettext_feature)); array = g_strsplit(languages, " ", 0); for (i = 0; array[i] != NULL; i++) jb_group_add_resource(self, JB_GROUP_RESOURCE(jb_translations_new(array[i]))); g_strfreev(array); } mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb.h0000644000175000001440000000212111005111000021756 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_H #define _JB_H #include "jb-compile-options.h" #include "jb-feature.h" #include "jb-group.h" #include "jb-install-options.h" #include "jb-main.h" #include "jb-resource.h" #include "jb-tests.h" #include "jb-util.h" #include "jb-variable.h" #endif /* _JB_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-install-options.c0000644000175000001440000000747611005111000025130 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "jb-install-options.h" #include "jb-action.h" #include "jb-variable.h" JBInstallOptions * jb_install_options_new (void) { return g_new0(JBInstallOptions, 1); } void jb_install_options_set_installdir (JBInstallOptions *self, const char *installdir) { g_return_if_fail(self != NULL); g_free(self->installdir); self->installdir = g_strdup(installdir); } void jb_install_options_set_owner (JBInstallOptions *self, const char *owner) { g_return_if_fail(self != NULL); g_free(self->owner); self->owner = g_strdup(owner); } void jb_install_options_set_group (JBInstallOptions *self, const char *group) { g_return_if_fail(self != NULL); g_free(self->group); self->group = g_strdup(group); } void jb_install_options_set_extra_mode (JBInstallOptions *self, mode_t extra_mode) { g_return_if_fail(self != NULL); self->extra_mode = extra_mode; } void jb_install_options_install (JBInstallOptions *self, const char *srcfile, const char *dstfile, const char *default_owner, const char *default_group, mode_t default_mode) { const char *owner; const char *group; mode_t mode; g_return_if_fail(self != NULL); g_return_if_fail(srcfile != NULL); if (self->installdir == NULL) return; owner = self->owner != NULL ? self->owner : default_owner; group = self->group != NULL ? self->group : default_group; mode = default_mode | self->extra_mode; if (dstfile == NULL) jb_action_install_file(srcfile, self->installdir, owner, group, mode); else { char *full_dstfile; full_dstfile = g_strdup_printf("%s/%s", self->installdir, dstfile); jb_action_install_to_file(srcfile, full_dstfile, owner, group, mode); g_free(full_dstfile); } } void jb_install_options_install_data (JBInstallOptions *self, const char *srcfile, const char *dstfile) { g_return_if_fail(self != NULL); g_return_if_fail(srcfile != NULL); jb_install_options_install(self, srcfile, dstfile, jb_variable_get_string_or_null("data-owner"), jb_variable_get_string_or_null("data-group"), jb_variable_get_mode("data-mode")); } void jb_install_options_install_program (JBInstallOptions *self, const char *srcfile, const char *dstfile) { g_return_if_fail(self != NULL); g_return_if_fail(srcfile != NULL); jb_install_options_install(self, srcfile, dstfile, jb_variable_get_string_or_null("program-owner"), jb_variable_get_string_or_null("program-group"), jb_variable_get_mode("program-mode")); } void jb_install_options_install_library (JBInstallOptions *self, const char *srcfile, const char *dstfile) { g_return_if_fail(self != NULL); g_return_if_fail(srcfile != NULL); jb_install_options_install(self, srcfile, dstfile, jb_variable_get_string_or_null("library-owner"), jb_variable_get_string_or_null("library-group"), jb_variable_get_mode("library-mode")); } mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-main.h0000644000175000001440000000272511005111000022712 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_MAIN_H #define _JB_MAIN_H #include "jb-feature.h" extern char *jb_topsrcdir; void jb_main (int argc, char **argv, const char *package, const char *version, const char *human_package, const JBFeature **features, int num_features); #define JB_MAIN(package, version, human_package) \ int main (int argc, char **argv) \ { \ jb_main(argc, \ argv, \ package, \ version, \ human_package, \ jb_features, \ G_N_ELEMENTS(jb_features)); \ return 0; \ } void jb_set_prefix_from_program (const char *name); #endif /* _JB_MAIN_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-tests.c0000644000175000001440000003403611005111000023123 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include "jb-util.h" #include "jb-variable.h" #include "jb-compile-options.h" #include "jb-tests.h" #include "jb-feature.h" void jb_check_host_system (void) { char *output; gboolean status = FALSE; if (jb_variable_get_variable("host-cpu") != NULL) return; /* already checked */ jb_message_checking("the host system type"); if (jb_exec(&output, NULL, "jbsrc/tools/config.sub `jbsrc/tools/config.guess`")) { char **fields; int len; fields = g_strsplit(output, "-", 0); len = g_strv_length(fields); if (len == 3) { jb_variable_set_string("host-cpu", fields[0]); jb_variable_set_string("host-manufacturer", fields[1]); jb_variable_set_string("host-kernel", NULL); jb_variable_set_string("host-os", fields[2]); status = TRUE; } else if (len == 4) { jb_variable_set_string("host-cpu", fields[0]); jb_variable_set_string("host-manufacturer", fields[1]); jb_variable_set_string("host-kernel", fields[2]); jb_variable_set_string("host-os", fields[3]); status = TRUE; } g_strfreev(fields); } if (status) jb_message_result_string(output); else jb_message_result_string("unknown"); g_free(output); if (! status) jb_error("unable to determine host system type"); } void jb_register_program (const char *name, JBVariableFlags flags) { char *description; char *program; g_return_if_fail(name != NULL); description = g_strdup_printf("%s program", name); program = g_find_program_in_path(name); jb_variable_add_string(name, description, jb_variable_group_external_programs, flags, program); g_free(description); g_free(program); } /* the program must have been registered with jb_register_program() */ gboolean jb_check_program (const char *name) { static GHashTable *checked_programs = NULL; JBVariable *variable; const char *program; gboolean result = FALSE; g_return_val_if_fail(name != NULL, FALSE); /* do not check for the same program twice */ if (checked_programs != NULL) { gpointer checked_result; if (g_hash_table_lookup_extended(checked_programs, name, NULL, &checked_result)) return GPOINTER_TO_INT(checked_result); } else checked_programs = g_hash_table_new(g_str_hash, g_str_equal); jb_message_checking("for %s", name); variable = jb_variable_get_variable_or_error(name); program = g_value_get_string(&variable->value); if (variable->user_set) { char *absolute_program; absolute_program = g_find_program_in_path(program); if (absolute_program != NULL) { jb_message_result_string(absolute_program); g_value_take_string(&variable->value, absolute_program); result = TRUE; } else { jb_message_result_string_format("not found (\"%s\" was specified but was not found, is a directory or is not executable)", program); g_value_set_string(&variable->value, NULL); } } else { if (program != NULL) { jb_message_result_string(program); result = TRUE; } else jb_message_result_string("not found"); } g_hash_table_insert(checked_programs, g_strdup(name), GINT_TO_POINTER(result)); return result; } void jb_require_program (const char *name) { g_return_if_fail(name != NULL); if (! jb_check_program(name)) jb_error("required program \"%s\" not found", name); } static void log_c_test (const char *filename, const char *action) { char *source; char **lines; int i; source = jb_read_file_or_exit(filename); lines = g_strsplit(source, "\n", 0); g_free(source); jb_log("attempting to %s program %s:", action, filename); for (i = 0; lines[i] != NULL; i++) { const char *line = lines[i]; /* do not output a spurious empty last line */ if (*line == '\0' && lines[i + 1] == NULL) break; jb_log("%4i %s", i + 1, lines[i]); } jb_log(JB_SEPARATOR); g_strfreev(lines); } gboolean jb_test_compile (const char *filename, const char *cflags, const char *cppflags) { g_return_val_if_fail(filename != NULL, FALSE); log_c_test(filename, "compile"); return jb_exec_expand(NULL, NULL, "$cc -c -o build/test.o" " $cflags $extra-cflags" " $cppflags $extra-cppflags" " $filename", "extra-cflags", cflags, "extra-cppflags", cppflags, "filename", filename, NULL); } gboolean jb_test_compile_string (const char *str, const char *cflags, const char *cppflags) { g_return_val_if_fail(str != NULL, FALSE); jb_write_file_or_exit("build/test.c", str); return jb_test_compile("build/test.c", cflags, cppflags); } gboolean jb_test_link (const char *filename, const char *cflags, const char *cppflags, const char *ldflags, const char *libs) { g_return_val_if_fail(filename != NULL, FALSE); log_c_test(filename, "link"); return jb_exec_expand(NULL, NULL, "$cc -o build/test" " $cflags $extra-cflags" " $cppflags $extra-cppflags" " $ldflags $extra-ldflags" " $filename" " $libs $extra-libs", "filename", filename, "extra-cflags", cflags, "extra-cppflags", cppflags, "extra-ldflags", ldflags, "extra-libs", libs, NULL); } gboolean jb_test_link_string (const char *str, const char *cflags, const char *cppflags, const char *ldflags, const char *libs) { g_return_val_if_fail(str != NULL, FALSE); jb_write_file_or_exit("build/test.c", str); return jb_test_link("build/test.c", cflags, cppflags, ldflags, libs); } gboolean jb_test_run (const char *filename, const char *cflags, const char *cppflags, const char *ldflags, const char *libs) { g_return_val_if_fail(filename != NULL, FALSE); if (! jb_test_link(filename, cflags, cppflags, ldflags, libs)) return FALSE; return jb_exec(NULL, NULL, "build/test"); } gboolean jb_test_run_string (const char *str, const char *cflags, const char *cppflags, const char *ldflags, const char *libs) { g_return_val_if_fail(str != NULL, FALSE); jb_write_file_or_exit("build/test.c", str); return jb_test_run("build/test.c", cflags, cppflags, ldflags, libs); } gboolean jb_check_functions (const char *functions, const char *libname) { char **functions_array; int i; GString *checking_message; GString *program; char *libs = NULL; gboolean result; g_return_val_if_fail(functions != NULL, FALSE); functions_array = g_strsplit(functions, " ", 0); checking_message = g_string_new("for "); for (i = 0; functions_array[i] != NULL; i++) { if (i != 0) g_string_append_printf(checking_message, ", "); g_string_append_printf(checking_message, "%s()", functions_array[i]); } if (libname) g_string_append_printf(checking_message, " in -l%s", libname); else g_string_append(checking_message, " in libc"); jb_message_checking("%s", checking_message->str); g_string_free(checking_message, TRUE); program = g_string_new(NULL); /* * Quoting c.m4 in autoconf: "Override any GCC internal prototype to * avoid an error. Use char because int might match the return type * of a GCC builtin and then its argument prototype would still * apply." */ for (i = 0; functions_array[i] != NULL; i++) g_string_append_printf(program, "char %s ();\n", functions_array[i]); g_string_append(program, "int main () {"); for (i = 0; functions_array[i] != NULL; i++) g_string_append_printf(program, " %s();", functions_array[i]); g_string_append(program, " }\n"); if (libname) libs = g_strdup_printf("-l%s", libname); result = jb_test_link_string(program->str, NULL, NULL, NULL, libs); g_string_free(program, TRUE); g_free(libs); jb_message_result_bool(result); return result; } gboolean jb_check_packages (const char *group_name, const char *varprefix, const char *packages) { char *quoted_packages; char *cflags = NULL; char *libs = NULL; char *error = NULL; gboolean status; g_return_val_if_fail(group_name != NULL, FALSE); g_return_val_if_fail(varprefix != NULL, FALSE); g_return_val_if_fail(packages != NULL, FALSE); g_return_val_if_fail(jb_feature_is_enabled(&jb_pkg_config_feature), FALSE); jb_require_program("pkg-config"); jb_message_checking("for %s", group_name); quoted_packages = g_shell_quote(packages); status = jb_exec_expand(&cflags, NULL, "$pkg-config --cflags $packages", "packages", quoted_packages, NULL) && jb_exec_expand(&libs, NULL, "$pkg-config --libs $packages", "packages", quoted_packages, NULL); if (status) jb_variable_set_package_flags(varprefix, cflags, NULL, NULL, libs); else jb_exec_expand(NULL, &error, "$pkg-config --print-errors $packages", "packages", quoted_packages, NULL); g_free(quoted_packages); g_free(cflags); g_free(libs); jb_message_result_bool(status); if (error != NULL) { jb_warning("%s", error); g_free(error); } return status; } /* * If one or more options (bool variables) in the provided * NULL-terminated list are enabled, checks for the specified * packages. If the packages are not found, disable the provided * options. */ void jb_check_packages_for_options (const char *group_name, const char *varprefix, const char *packages, ...) { GSList *options = NULL; va_list args; const char *option; gboolean needs_packages = FALSE; g_return_if_fail(group_name != NULL); g_return_if_fail(varprefix != NULL); g_return_if_fail(packages != NULL); g_return_if_fail(jb_feature_is_enabled(&jb_pkg_config_feature)); va_start(args, packages); while ((option = va_arg(args, const char *)) != NULL) { options = g_slist_append(options, (gpointer) option); if (jb_variable_get_bool(option)) needs_packages = TRUE; } va_end(args); if (needs_packages && ! jb_check_packages(group_name, varprefix, packages)) { GSList *l; JB_LIST_FOREACH(l, options) { option = l->data; if (jb_variable_get_bool(option)) { jb_warning("disabling option \"%s\" since %s was not found", option, group_name); jb_variable_set_bool(option, FALSE); } } } g_slist_free(options); } void jb_require_packages (const char *group_name, const char *varprefix, const char *packages) { g_return_if_fail(group_name != NULL); g_return_if_fail(varprefix != NULL); g_return_if_fail(packages != NULL); g_return_if_fail(jb_feature_is_enabled(&jb_pkg_config_feature)); if (! jb_check_packages(group_name, varprefix, packages)) jb_error("unable to find %s", group_name); } char * jb_get_package_variable (const char *package, const char *variable) { char *value; g_return_val_if_fail(package != NULL, NULL); g_return_val_if_fail(variable != NULL, NULL); g_return_val_if_fail(jb_feature_is_enabled(&jb_pkg_config_feature), FALSE); jb_require_program("pkg-config"); if (! jb_exec_expand(&value, NULL, "$pkg-config --variable=$variable $package", "variable", variable, "package", package, NULL)) { g_free(value); value = NULL; } return value; } void jb_check_cc_dependency_style (void) { if (! jb_variable_get_bool("cc-dependency-tracking")) return; /* we don't need to know since we will not use it */ jb_message_checking("the C compiler dependency style"); /* make sure they do not exist beforehand */ unlink("build/test.o"); unlink("build/test.o.deps"); if (jb_test_compile_string("#include \n" "int main () {}\n", "-MT build/test.o -MD -MP -MF build/test.o.deps", NULL) && g_file_test("build/test.o", G_FILE_TEST_IS_REGULAR) && g_file_test("build/test.o.deps", G_FILE_TEST_IS_REGULAR)) jb_message_result_string("GCC"); else { jb_message_result_string("unknown, disabling dependency tracking"); jb_variable_set_bool("cc-dependency-tracking", FALSE); } } void jb_check_glibc (void) { gboolean result; jb_message_checking("for the GNU C library"); result = jb_test_compile_string("#include \n" "int main() {\n" "#ifndef __GLIBC__\n" "#error \"glibc not found\"\n" "#endif\n" "}\n", NULL, NULL); jb_message_result_bool(result); jb_variable_set_bool("glibc", result); } static gboolean check_reentrant_resolver_real (gboolean *result) { const char *os; int freebsd_major; int freebsd_minor; if (! strcmp(jb_variable_get_string("host-kernel"), "linux")) { *result = TRUE; return TRUE; } os = jb_variable_get_string("host-os"); if (sscanf(os, "freebsd%d.%d", &freebsd_major, &freebsd_minor) == 2) { /* FreeBSD >= 5.3 */ *result = (freebsd_major == 5 && freebsd_minor >= 3) || freebsd_major >= 6; return TRUE; } if (g_str_has_prefix(os, "netbsd") || g_str_has_prefix(os, "openbsd")) { *result = FALSE; return TRUE; } return FALSE; /* unknown */ } void jb_check_reentrant_dns_resolver (void) { gboolean result; jb_check_host_system(); jb_message_checking("if the DNS resolver is reentrant"); if (check_reentrant_resolver_real(&result)) { jb_message_result_bool(result); if (result) jb_compile_options_add_cppflags(jb_compile_options, "-DHAVE_REENTRANT_RESOLVER"); } else jb_message_result_string("unknown, assuming it is not"); } mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-variable.c0000644000175000001440000003437211005111000023551 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include "jb-variable.h" #include "jb-util.h" static GHashTable *variable_types = NULL; static GHashTable *variables_hash_table = NULL; GSList *jb_variables = NULL; GSList *jb_variable_groups = NULL; JBVariableGroup *jb_variable_group_compiler_options = NULL; JBVariableGroup *jb_variable_group_installation_options = NULL; JBVariableGroup *jb_variable_group_external_programs = NULL; JBVariableType *jb_variable_type_bool = NULL; JBVariableType *jb_variable_type_string = NULL; JBVariableType *jb_variable_type_mode = NULL; static JBVariableType * variable_type_new (const char *name, GType gtype, gboolean (*from_string) (const char *str, GValue *value, GError **err), char * (*to_string) (const GValue *value)) { JBVariableType *self; self = g_new0(JBVariableType, 1); self->name = g_strdup(name); self->gtype = gtype; self->from_string = from_string; self->to_string = to_string; return self; } static JBVariableType * variable_type_add (const char *name, GType gtype, gboolean (*from_string) (const char *str, GValue *value, GError **err), char * (*to_string) (const GValue *value)) { JBVariableType *type; type = variable_type_new(name, gtype, from_string, to_string); g_hash_table_insert(variable_types, type->name, type); return type; } static gboolean bool_from_string (const char *str, GValue *value, GError **err) { if (! strcmp(str, "yes")) g_value_set_boolean(value, TRUE); else if (! strcmp(str, "no")) g_value_set_boolean(value, FALSE); else { g_set_error(err, 0, 0, "\"yes\" or \"no\" expected"); return FALSE; } return TRUE; } static char * bool_to_string (const GValue *value) { if (g_value_get_boolean(value)) return g_strdup("yes"); else return g_strdup("no"); } static gboolean string_from_string (const char *str, GValue *value, GError **err) { g_value_set_string(value, *str == '\0' ? NULL : str); return TRUE; } static char * string_to_string (const GValue *value) { char *str; str = g_value_dup_string(value); return str == NULL ? g_strdup("") : str; } static gboolean mode_from_string (const char *str, GValue *value, GError **err) { guint32 mode; if (! jb_parse_uint32(str, 8, &mode, err)) return FALSE; if ((mode & ~07777) != 0) { g_set_error(err, 0, 0, "mode out of range"); return FALSE; } g_value_set_uint(value, mode); return TRUE; } static char * mode_to_string (const GValue *value) { unsigned int mode; mode = g_value_get_uint(value); return g_strdup_printf(JB_MODE_FORMAT, mode); } void jb_variable_init (void) { variable_types = g_hash_table_new(g_str_hash, g_str_equal); variables_hash_table = g_hash_table_new(g_str_hash, g_str_equal); jb_variable_group_compiler_options = jb_variable_add_group("Compiler options"); jb_variable_group_installation_options = jb_variable_add_group("Installation options"); jb_variable_group_external_programs = jb_variable_add_group("External programs"); jb_variable_type_bool = variable_type_add("bool", G_TYPE_BOOLEAN, bool_from_string, bool_to_string); jb_variable_type_string = variable_type_add("string", G_TYPE_STRING, string_from_string, string_to_string); jb_variable_type_mode = variable_type_add("mode", G_TYPE_UINT, mode_from_string, mode_to_string); } JBVariableGroup * jb_variable_add_group (const char *name) { JBVariableGroup *group; group = g_new0(JBVariableGroup, 1); group->name = g_strdup(name); jb_variable_groups = g_slist_append(jb_variable_groups, group); return group; } JBVariableType * jb_variable_get_type (const char *name) { g_return_val_if_fail(name != NULL, NULL); return g_hash_table_lookup(variable_types, name); } static JBVariable * variable_new (JBVariableType *type, const char *name, const char *description, JBVariableGroup *group, JBVariableFlags flags) { JBVariable *variable; g_return_val_if_fail(type != NULL, NULL); g_return_val_if_fail(name != NULL, NULL); variable = g_new0(JBVariable, 1); variable->type = type; variable->name = g_strdup(name); variable->description = g_strdup(description); variable->group = group; variable->flags = flags; g_value_init(&variable->value, type->gtype); return variable; } static void add_variable (JBVariable *variable) { g_return_if_fail(variable != NULL); g_return_if_fail(g_hash_table_lookup(variables_hash_table, variable->name) == NULL); g_hash_table_insert(variables_hash_table, variable->name, variable); jb_variables = g_slist_append(jb_variables, variable); } JBVariable * jb_variable_get_variable (const char *name) { g_return_val_if_fail(name != NULL, NULL); return g_hash_table_lookup(variables_hash_table, name); } JBVariable * jb_variable_get_variable_or_error (const char *name) { JBVariable *variable; g_return_val_if_fail(name != NULL, NULL); variable = jb_variable_get_variable(name); if (variable == NULL) g_error("variable \"%s\" does not exist", name); return variable; } JBVariable * ensure_variable (JBVariableType *type, const char *name) { JBVariable *variable; g_return_val_if_fail(name != NULL, NULL); variable = jb_variable_get_variable(name); if (variable == NULL) { variable = variable_new(type, name, NULL, NULL, 0); add_variable(variable); } return variable; } JBVariable * jb_variable_add (JBVariableType *type, const char *name, const char *description, JBVariableGroup *group, JBVariableFlags flags) { JBVariable *variable; g_return_val_if_fail(type != NULL, NULL); g_return_val_if_fail(name != NULL, NULL); variable = variable_new(type, name, description, group, flags | JB_VARIABLE_USER_SETTABLE); add_variable(variable); return variable; } void jb_variable_add_bool (const char *name, const char *description, JBVariableGroup *group, JBVariableFlags flags, gboolean default_value) { JBVariable *variable; g_return_if_fail(name != NULL); variable = jb_variable_add(jb_variable_type_bool, name, description, group, flags); g_value_set_boolean(&variable->value, default_value); } void jb_variable_add_string (const char *name, const char *description, JBVariableGroup *group, JBVariableFlags flags, const char *default_value) { JBVariable *variable; g_return_if_fail(name != NULL); variable = jb_variable_add(jb_variable_type_string, name, description, group, flags); g_value_set_string(&variable->value, default_value); } void jb_variable_add_mode (const char *name, const char *description, JBVariableGroup *group, JBVariableFlags flags, mode_t default_value) { JBVariable *variable; g_return_if_fail(name != NULL); variable = jb_variable_add(jb_variable_type_mode, name, description, group, flags); g_value_set_uint(&variable->value, default_value); } gboolean jb_variable_get_bool (const char *name) { JBVariable *variable; g_return_val_if_fail(name != NULL, FALSE); variable = jb_variable_get_variable_or_error(name); g_return_val_if_fail(variable->type == jb_variable_type_bool, FALSE); return g_value_get_boolean(&variable->value); } void jb_variable_set_bool (const char *name, gboolean value) { JBVariable *variable; g_return_if_fail(name != NULL); variable = ensure_variable(jb_variable_type_bool, name); g_value_set_boolean(&variable->value, value); } const char * jb_variable_get_string (const char *name) { const char *value; g_return_val_if_fail(name != NULL, FALSE); value = jb_variable_get_string_or_null(name); return value != NULL ? value : ""; } const char * jb_variable_get_string_or_null (const char *name) { JBVariable *variable; g_return_val_if_fail(name != NULL, FALSE); variable = jb_variable_get_variable_or_error(name); g_return_val_if_fail(variable->type == jb_variable_type_string, FALSE); return g_value_get_string(&variable->value); } void jb_variable_set_string (const char *name, const char *value) { JBVariable *variable; g_return_if_fail(name != NULL); variable = ensure_variable(jb_variable_type_string, name); g_value_set_string(&variable->value, value); } mode_t jb_variable_get_mode (const char *name) { JBVariable *variable; g_return_val_if_fail(name != NULL, FALSE); variable = jb_variable_get_variable_or_error(name); g_return_val_if_fail(variable->type == jb_variable_type_mode, FALSE); return g_value_get_uint(&variable->value); } void jb_variable_set_mode (const char *name, mode_t value) { JBVariable *variable; g_return_if_fail(name != NULL); variable = ensure_variable(jb_variable_type_mode, name); g_value_set_uint(&variable->value, value); } void jb_variable_set_package_flags (const char *name, const char *cflags, const char *cppflags, const char *ldflags, const char *libs) { char *cflags_var; char *cppflags_var; char *ldflags_var; char *libs_var; g_return_if_fail(name != NULL); cflags_var = g_strdup_printf("%s-cflags", name); jb_variable_set_string(cflags_var, cflags); g_free(cflags_var); cppflags_var = g_strdup_printf("%s-cppflags", name); jb_variable_set_string(cppflags_var, cppflags); g_free(cppflags_var); ldflags_var = g_strdup_printf("%s-ldflags", name); jb_variable_set_string(ldflags_var, ldflags); g_free(ldflags_var); libs_var = g_strdup_printf("%s-libs", name); jb_variable_set_string(libs_var, libs); g_free(libs_var); } gboolean jb_variable_set_from_string (JBVariable *self, const char *value, GError **err) { g_return_val_if_fail(self != NULL, FALSE); g_return_val_if_fail(value != NULL, FALSE); return self->type->from_string(value, &self->value, err); } char * jb_variable_to_string (JBVariable *self) { g_return_val_if_fail(self != NULL, NULL); return self->type->to_string(&self->value); } static char * get_expansion (const char *varname, GHashTable *extra_variables) { JBVariable *variable; if (extra_variables != NULL) { const char *extra_value; if (g_hash_table_lookup_extended(extra_variables, varname, NULL, (gpointer) &extra_value)) return g_strdup(extra_value != NULL ? extra_value : ""); } variable = jb_variable_get_variable(varname); if (variable != NULL) return jb_variable_evaluate(variable); jb_error("unknown variable \"%s\"", varname); } static char * expand_real (const char *str, GHashTable *extra_variables) { GString *result; const char *p; g_return_val_if_fail(str != NULL, NULL); result = g_string_new(NULL); for (p = str; *p != '\0';) { char c = *p; if (c == '$') { char *name; char *value; char *expanded_value; if (p[1] == '$') { g_string_append_c(result, '$'); p += 2; continue; } if (p[1] == '{') { char *end; p += 2; end = strchr(p, '}'); if (end == NULL) jb_error("unterminated variable reference"); if (end == p + 1) jb_error("empty variable reference"); name = g_strndup(p, end - p); p = end + 1; } else { const char *end; p++; end = p + 1; while (g_ascii_isalnum(*end) || *end == '-') end++; if (end == p) jb_error("empty variable reference"); name = g_strndup(p, end - p); p = end; } value = get_expansion(name, extra_variables); /* do not pass the extra variables to the recursive expansion */ expanded_value = expand_real(value, NULL); g_free(value); g_string_append(result, expanded_value); g_free(expanded_value); } else { g_string_append_c(result, c); p++; } } return g_string_free(result, FALSE); } char * jb_variable_evaluate (JBVariable *variable) { static GSList *evaluation_stack = NULL; char *str; char *value; g_return_val_if_fail(variable != NULL, NULL); if (evaluation_stack != NULL && evaluation_stack->data == variable) jb_error("variable \"%s\" references itself", variable->name); if (g_slist_find(evaluation_stack, variable) != NULL) jb_error("variable \"%s\" indirectly references itself", variable->name); evaluation_stack = g_slist_prepend(evaluation_stack, variable); str = jb_variable_to_string(variable); value = expand_real(str, NULL); g_free(str); evaluation_stack = g_slist_delete_link(evaluation_stack, evaluation_stack); return value; } char * jb_variable_expand (const char *str, ...) { va_list args; char *expanded; va_start(args, str); expanded = jb_variable_expandv(str, args); va_end(args); return expanded; } char * jb_variable_expandv (const char *str, va_list args) { GHashTable *extra_variables; const char *extra_name; char *expanded; g_return_val_if_fail(str != NULL, NULL); extra_variables = g_hash_table_new(g_str_hash, g_str_equal); while ((extra_name = va_arg(args, const char *)) != NULL) { const char *extra_value; extra_value = va_arg(args, const char *); /* * For consistency, extra_value can be NULL, since variables can * be NULL as well. */ if (g_hash_table_lookup(extra_variables, extra_name) != NULL) g_error("extra variable \"%s\" specified twice", extra_name); g_hash_table_insert(extra_variables, (gpointer) extra_name, (gpointer) extra_value); } expanded = expand_real(str, extra_variables); g_hash_table_destroy(extra_variables); return expanded; } const char * jb_variable_get_type_name (JBVariable *self) { g_return_val_if_fail(self != NULL, NULL); return self->type->name; } mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-resource.h0000644000175000001440000002501711005111000023614 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_RESOURCE_H #define _JB_RESOURCE_H #include #include #include "jb-decls.h" #include "jb-compile-options.h" #include "jb-install-options.h" #define JB_TYPE_RESOURCE (jb_resource_get_type()) #define JB_RESOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_RESOURCE, JBResource)) #define JB_RESOURCE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST((class), JB_TYPE_RESOURCE, JBResourceClass)) #define JB_IS_RESOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_RESOURCE)) #define JB_RESOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JB_TYPE_RESOURCE, JBResourceClass)) typedef struct { GObject parent; } JBResource; typedef struct { GObjectClass parent; char * (*to_string) (JBResource *self); void (*pre_build) (JBResource *self); void (*build) (JBResource *self); void (*install) (JBResource *self); void (*makedist) (JBResource *self); void (*clean) (JBResource *self); void (*distclean) (JBResource *self); void (*maintainerclean) (JBResource *self); } JBResourceClass; GType jb_resource_get_type (void); char *jb_resource_to_string (JBResource *self); void jb_resource_pre_build (JBResource *self); void jb_resource_build (JBResource *self); void jb_resource_install (JBResource *self); void jb_resource_makedist (JBResource *self); void jb_resource_clean (JBResource *self); void jb_resource_distclean (JBResource *self); void jb_resource_maintainerclean (JBResource *self); void jb_resource_message_building (JBResource *self); #define JB_TYPE_GROUP_RESOURCE (jb_group_resource_get_type()) #define JB_GROUP_RESOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_GROUP_RESOURCE, JBGroupResource)) #define JB_IS_GROUP_RESOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_GROUP_RESOURCE)) struct JBGroupResource { JBResource parent; JBGroup *group; }; typedef struct { JBResourceClass parent; } JBGroupResourceClass; GType jb_group_resource_get_type (void); #define JB_TYPE_OBJECT_RESOURCE (jb_object_resource_get_type()) #define JB_OBJECT_RESOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_OBJECT_RESOURCE, JBObjectResource)) #define JB_OBJECT_RESOURCE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST((class), JB_TYPE_OBJECT_RESOURCE, JBObjectResourceClass)) #define JB_IS_OBJECT_RESOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_OBJECT_RESOURCE)) #define JB_OBJECT_RESOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JB_TYPE_OBJECT_RESOURCE, JBObjectResourceClass)) typedef struct { JBResource parent; JBObject *object; } JBObjectResource; typedef struct { JBResourceClass parent; char * (*get_object_file) (JBObjectResource *self); } JBObjectResourceClass; GType jb_object_resource_get_type (void); #define JB_TYPE_TEMPLATE (jb_template_get_type()) #define JB_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_TEMPLATE, JBTemplate)) #define JB_IS_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_TEMPLATE)) typedef struct { JBGroupResource parent; char *filename; } JBTemplate; typedef struct { JBGroupResourceClass parent; } JBTemplateClass; GType jb_template_get_type (void); JBTemplate *jb_template_new (const char *filename); #define JB_TYPE_DATA_FILE (jb_data_file_get_type()) #define JB_DATA_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_DATA_FILE, JBDataFile)) #define JB_IS_DATA_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_DATA_FILE)) typedef struct { JBGroupResource parent; char *filename; JBInstallOptions *install_options; } JBDataFile; typedef struct { JBGroupResourceClass parent; } JBDataFileClass; GType jb_data_file_get_type (void); JBDataFile *jb_data_file_new (const char *filename); #define JB_TYPE_SOURCE (jb_source_get_type()) #define JB_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_SOURCE, JBSource)) #define JB_IS_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_SOURCE)) typedef struct { JBObjectResource parent; char *filename; } JBSource; typedef struct { JBObjectResourceClass parent; } JBSourceClass; GType jb_source_get_type (void); JBSource *jb_source_new (const char *filename); #define JB_TYPE_GOB_CLASS (jb_gob_class_get_type()) #define JB_GOB_CLASS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_GOB_CLASS, JBGobClass)) #define JB_IS_GOB_CLASS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_GOB_CLASS)) typedef struct { JBObjectResource parent; char *name; /* Foo:Bar */ } JBGobClass; typedef struct { JBObjectResourceClass parent; } JBGobClassClass; GType jb_gob_class_get_type (void); JBGobClass *jb_gob_class_new (const char *name); #define JB_TYPE_INTLTOOL_FILE (jb_intltool_file_get_type()) #define JB_INTLTOOL_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_INTLTOOL_FILE, JBIntltoolFile)) #define JB_IS_INTLTOOL_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_INTLTOOL_FILE)) typedef struct { JBGroupResource parent; char *type; char *filename; char *merge_flags; JBInstallOptions *install_options; } JBIntltoolFile; typedef struct { JBGroupResourceClass parent; } JBIntltoolFileClass; GType jb_intltool_file_get_type (void); JBIntltoolFile *jb_intltool_file_new (const char *type, const char *filename, const char *merge_flags); #define JB_TYPE_GCONF_SCHEMAS (jb_gconf_schemas_get_type()) #define JB_GCONF_SCHEMAS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_GCONF_SCHEMAS, JBGConfSchemas)) #define JB_IS_GCONF_SCHEMAS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_GCONF_SCHEMAS)) typedef struct { JBIntltoolFile parent; } JBGConfSchemas; typedef struct { JBIntltoolFileClass parent; } JBGConfSchemasClass; GType jb_gconf_schemas_get_type (void); JBGConfSchemas *jb_gconf_schemas_new (const char *filename); #define JB_TYPE_GNOME_HELP (jb_gnome_help_get_type()) #define JB_GNOME_HELP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_GNOME_HELP, JBGnomeHelp)) #define JB_IS_GNOME_HELP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_GNOME_HELP)) typedef struct { JBGroupResource parent; char *name; char *lang; char **entities; } JBGnomeHelp; typedef struct { JBGroupResourceClass parent; } JBGnomeHelpClass; GType jb_gnome_help_get_type (void); JBGnomeHelp *jb_gnome_help_new (const char *lang, const char *entities); #define JB_TYPE_TRANSLATIONS (jb_translations_get_type()) #define JB_TRANSLATIONS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_TRANSLATIONS, JBTranslations)) #define JB_IS_TRANSLATIONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_TRANSLATIONS)) typedef struct { JBGroupResource parent; char *lang; } JBTranslations; typedef struct { JBGroupResourceClass parent; } JBTranslationsClass; GType jb_translations_get_type (void); JBTranslations *jb_translations_new (const char *lang); #define JB_TYPE_RULE (jb_rule_get_type()) #define JB_RULE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_RULE, JBRule)) #define JB_IS_RULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_RULE)) typedef struct { JBGroupResource parent; GSList *dependencies; GSList *output_files; GSList *input_files; char *build_message; GSList *build_commands; char *install_message; GSList *install_commands; } JBRule; typedef struct { JBGroupResourceClass parent; } JBRuleClass; GType jb_rule_get_type (void); JBRule *jb_rule_new (void); void jb_rule_add_dependency (JBRule *self, JBGroupResource *res); void jb_rule_add_input_file (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3); void jb_rule_add_output_file (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3); void jb_rule_set_build_message (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3); void jb_rule_add_build_command (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3); void jb_rule_set_install_message (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3); void jb_rule_add_install_command (JBRule *self, const char *format, ...) G_GNUC_PRINTF(2, 3); #define JB_TYPE_OBJECT (jb_object_get_type()) #define JB_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_OBJECT, JBObject)) #define JB_OBJECT_CLASS(class) (G_TYPE_CHECK_CLASS_CAST((class), JB_TYPE_OBJECT, JBObjectClass)) #define JB_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_OBJECT)) #define JB_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JB_TYPE_OBJECT, JBObjectClass)) struct JBObject { JBGroupResource parent; char *name; JBCompileOptions *compile_options; JBInstallOptions *install_options; GSList *resources; GSList *headers; }; typedef struct { JBGroupResourceClass parent; const char *type; /* these fields can be NULL */ const char *stock_cflags; const char *stock_cppflags; const char *stock_ldflags; const char *stock_libs; char * (*get_output_file) (JBObject *self); } JBObjectClass; GType jb_object_get_type (void); void jb_object_add_source (JBObject *self, const char *name); void jb_object_add_sources (JBObject *self, const char *name, ...) G_GNUC_NULL_TERMINATED; #define JB_TYPE_PROGRAM (jb_program_get_type()) #define JB_PROGRAM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_PROGRAM, JBProgram)) #define JB_IS_PROGRAM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_PROGRAM)) typedef struct { JBObject parent; } JBProgram; typedef struct { JBObjectClass parent; } JBProgramClass; GType jb_program_get_type (void); JBProgram *jb_program_new (const char *name); #define JB_TYPE_MODULE (jb_module_get_type()) #define JB_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_MODULE, JBModule)) #define JB_IS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_MODULE)) typedef struct { JBObject parent; } JBModule; typedef struct { JBObjectClass parent; } JBModuleClass; GType jb_module_get_type (void); JBModule *jb_module_new (const char *name); #endif /* _JB_RESOURCE_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-util.h0000644000175000001440000001111611005111000022735 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_UTIL_H #define _JB_UTIL_H #include #include #include #define JB_SEPARATOR "===============================================================================" #define JB_MODE_FORMAT "0%03o" void jb_set_log_file (const char *filename); void jb_log (const char *format, ...) G_GNUC_PRINTF(1, 2); void jb_message (const char *format, ...) G_GNUC_PRINTF(1, 2); void jb_message_expand (const char *str, ...) G_GNUC_NULL_TERMINATED; void jb_message_action (const char *format, ...) G_GNUC_PRINTF(1, 2); void jb_message_checking (const char *format, ...) G_GNUC_PRINTF(1, 2); void jb_message_result_bool (gboolean result); void jb_message_result_string (const char *result); void jb_message_result_string_format (const char *format, ...) G_GNUC_PRINTF(1, 2); void jb_warning (const char *format, ...) G_GNUC_PRINTF(1, 2); void jb_warning_expand (const char *str, ...) G_GNUC_NULL_TERMINATED; /* * Do not use this function to report errors that are caused by an * invalid jb.c. They are programming errors, use g_error(). */ void jb_error (const char *format, ...) G_GNUC_PRINTF(1, 2) G_GNUC_NORETURN; void jb_error_expand (const char *str, ...) G_GNUC_NULL_TERMINATED G_GNUC_NORETURN; #define JB_LIST_FOREACH(var, head) \ for ((var) = (head); \ (var) != NULL; \ (var) = (var)->next) void jb_g_slist_free_deep (GSList *list); void jb_g_slist_free_deep_custom (GSList *list, GFunc element_free_func, gpointer user_data); #define JB_STRDUP_VPRINTF(result, format) \ G_STMT_START{ \ va_list _jb_strdup_vprintf_args; \ \ va_start(_jb_strdup_vprintf_args, format); \ result = g_strdup_vprintf(format, _jb_strdup_vprintf_args); \ va_end(_jb_strdup_vprintf_args); \ }G_STMT_END char *jb_strdelimit (const char *str, const char *delimiters, char new_delimiter); char *jb_strip_newline (const char *str); char *jb_c_quote (const char *str); char *jb_strip_extension (const char *filename); char *jb_strip_chars (const char *str, const char *chars); char *jb_utf8_escape (const char *str); gboolean jb_parse_uint32 (const char *str, int base, guint32 *value, GError **err); gboolean jb_parse_uint64 (const char *str, int base, guint64 *value, GError **err); gboolean jb_write_file (const char *filename, const char *contents, GError **err); void jb_write_file_or_exit (const char *filename, const char *contents); char *jb_read_file (const char *filename, GError **err); char *jb_read_file_or_exit (const char *filename); GSList *jb_match_files (const char *pattern); void jb_chdir (const char *path); void jb_mkdir (const char *pathname); void jb_mkdir_of_file (const char *filename); void jb_rename (const char *oldpath, const char *newpath); void jb_chmod (const char *path, mode_t mode); gboolean jb_fchown_by_name (int fd, const char *owner, const char *group, GError **err); void jb_rmtree (const char *dir); void jb_subst (const char *infile, const char *outfile, GHashTable *variables); gboolean jb_exec (char **standard_output, char **standard_error, const char *format, ...) G_GNUC_PRINTF(3, 4); gboolean jb_exec_expand (char **standard_output, char **standard_error, const char *str, ...) G_GNUC_NULL_TERMINATED; typedef GHashTable JBStringHashSet; JBStringHashSet *jb_string_hash_set_new (void); gboolean jb_string_hash_set_add (JBStringHashSet *set, const char *value); gboolean jb_string_hash_set_contains (JBStringHashSet *set, const char *value); gboolean jb_is_uptodate (const char *dst, const char *src); gboolean jb_is_uptodate_list (const char *dst, GSList *src_list); gboolean jb_is_uptodate_list_list (GSList *dst_list, GSList *src_list); char *jb_string_list_join (GSList *list, const char *separator); #endif /* _JB_UTIL_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-util.c0000644000175000001440000005030211005111000022730 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include #include #include #include #include #include #include #include "jb-util.h" #include "jb-variable.h" #include "jb-main.h" static char *log_file = NULL; static gboolean printing_action = FALSE; void jb_set_log_file (const char *filename) { g_return_if_fail(filename != NULL); g_free(log_file); log_file = g_strdup(filename); } void jb_log (const char *format, ...) { static gboolean logging = FALSE; static GIOChannel *log_channel = NULL; static char *current_log_file = NULL; char *message; char *with_nl; GError *err = NULL; gsize bytes_written; g_return_if_fail(format != NULL); g_return_if_fail(log_file != NULL); if (logging) return; logging = TRUE; if (log_channel != NULL) { if (strcmp(current_log_file, log_file)) { if (g_io_channel_shutdown(log_channel, TRUE, &err) != G_IO_STATUS_NORMAL) jb_error("unable to write to %s: %s", current_log_file, err->message); g_io_channel_unref(log_channel); log_channel = NULL; g_free(current_log_file); } } if (log_channel == NULL) { current_log_file = g_strdup(log_file); log_channel = g_io_channel_new_file(log_file, "w", &err); if (log_channel == NULL) jb_error("unable to open %s for writing: %s", log_file, err->message); } JB_STRDUP_VPRINTF(message, format); with_nl = g_strdup_printf("%s\n", message); g_free(message); if (g_io_channel_write_chars(log_channel, with_nl, -1, &bytes_written, &err) != G_IO_STATUS_NORMAL || g_io_channel_flush(log_channel, &err) != G_IO_STATUS_NORMAL) jb_error("unable to write to %s: %s", log_file, err->message); g_free(with_nl); logging = FALSE; } void jb_message (const char *format, ...) { char *message; g_return_if_fail(format != NULL); g_return_if_fail(! printing_action); JB_STRDUP_VPRINTF(message, format); g_print("%s\n", message); jb_log("%s", message); g_free(message); } void jb_message_expand (const char *str, ...) { va_list args; char *message; g_return_if_fail(str != NULL); va_start(args, str); message = jb_variable_expandv(str, args); va_end(args); jb_message("%s", message); g_free(message); } void jb_message_action (const char *format, ...) { char *message; g_return_if_fail(format != NULL); g_return_if_fail(! printing_action); JB_STRDUP_VPRINTF(message, format); g_print("%s...", message); jb_log("%s", message); g_free(message); printing_action = TRUE; } void jb_message_checking (const char *format, ...) { char *message; g_return_if_fail(format != NULL); g_return_if_fail(! printing_action); JB_STRDUP_VPRINTF(message, format); jb_message_action("checking %s", message); g_free(message); } void jb_message_result_bool (gboolean result) { g_return_if_fail(printing_action); jb_message_result_string(result ? "yes" : "no"); } void jb_message_result_string (const char *result) { g_return_if_fail(result != NULL); g_return_if_fail(printing_action); g_print(" %s\n", result); jb_log("result: %s", result); jb_log(""); printing_action = FALSE; } static void finish_printing_action (void) { if (printing_action) { g_print("\n"); printing_action = FALSE; } } void jb_message_result_string_format (const char *format, ...) { char *message; g_return_if_fail(format != NULL); g_return_if_fail(printing_action); JB_STRDUP_VPRINTF(message, format); jb_message_result_string(message); g_free(message); } static void print_warning_or_error (const char *prefix, const char *format, va_list args) { char *message; char **lines; int i; /* * We allow to interrupt an action print, in case the caller is a * library function which does not know that an action is in * progress. */ finish_printing_action(); message = g_strdup_vprintf(format, args); lines = g_strsplit(message, "\n", 0); g_free(message); for (i = 0; lines[i] != NULL; i++) { const char *line = lines[i]; g_printerr("%s: %s\n", prefix, line); jb_log("%s: %s", prefix, line); } g_strfreev(lines); } void jb_warning (const char *format, ...) { va_list args; g_return_if_fail(format != NULL); va_start(args, format); print_warning_or_error("WARNING", format, args); va_end(args); } void jb_warning_expand (const char *str, ...) { va_list args; char *message; g_return_if_fail(str != NULL); va_start(args, str); message = jb_variable_expandv(str, args); va_end(args); jb_warning("%s", message); g_free(message); } void jb_error (const char *format, ...) { va_list args; g_assert(format != NULL); va_start(args, format); print_warning_or_error("ERROR", format, args); va_end(args); exit(1); } void jb_error_expand (const char *str, ...) { va_list args; char *message; g_assert(str != NULL); va_start(args, str); message = jb_variable_expandv(str, args); va_end(args); jb_error("%s", message); g_free(message); } void jb_g_slist_free_deep (GSList *list) { jb_g_slist_free_deep_custom(list, (GFunc) g_free, NULL); } void jb_g_slist_free_deep_custom (GSList *list, GFunc element_free_func, gpointer user_data) { g_slist_foreach(list, element_free_func, user_data); g_slist_free(list); } char * jb_strdelimit (const char *str, const char *delimiters, char new_delimiter) { char *result; g_return_val_if_fail(str != NULL, NULL); g_return_val_if_fail(delimiters != NULL, NULL); result = g_strdup(str); g_strdelimit(result, delimiters, new_delimiter); return result; } char * jb_strip_newline (const char *str) { int len; g_return_val_if_fail(str != NULL, NULL); len = strlen(str); if (len > 0 && str[len - 1] == '\n') return g_strndup(str, len - 1); else return g_strdup(str); } char * jb_c_quote (const char *str) { GString *result; const char *p; g_return_val_if_fail(str != NULL, NULL); result = g_string_new("\""); for (p = str; *p != '\0'; p++) { char c = *p; switch (c) { case '\\': g_string_append(result, "\\\\"); break; case '"': g_string_append(result, "\\\""); break; case '\r': g_string_append(result, "\\r"); break; case '\n': g_string_append(result, "\\n"); break; case '\t': g_string_append(result, "\\t"); break; default: g_string_append_c(result, c); break; } } g_string_append_c(result, '"'); return g_string_free(result, FALSE); } char * jb_strip_extension (const char *filename) { char *p; p = strrchr(filename, '.'); if (p != NULL) return g_strndup(filename, p - filename); else return g_strdup(filename); } char * jb_strip_chars (const char *str, const char *chars) { const char *p; GString *result; g_return_val_if_fail(str != NULL, NULL); g_return_val_if_fail(chars != NULL, NULL); result = g_string_new(NULL); for (p = str; *p != '\0'; p++) { char c = *p; if (strchr(chars, c) == NULL) g_string_append_c(result, c); } return g_string_free(result, FALSE); } char * jb_utf8_escape (const char *str) { GString *escaped; g_return_val_if_fail(str != NULL, NULL); escaped = g_string_new(NULL); while (*str != '\0') { gunichar c; c = g_utf8_get_char_validated(str, -1); if (c != (gunichar) -2 && c != (gunichar) -1) { g_string_append_unichar(escaped, c); str = g_utf8_next_char(str); } else { g_string_append_printf(escaped, "\\x%02x", (unsigned int) (unsigned char) *str); str++; } } return g_string_free(escaped, FALSE); } gboolean jb_parse_uint32 (const char *str, int base, guint32 *value, GError **err) { guint64 v; g_return_val_if_fail(str != NULL, FALSE); if (! jb_parse_uint64(str, base, &v, err)) return FALSE; if (v > G_MAXUINT32) { g_set_error(err, 0, 0, "number out of range"); return FALSE; } *value = v; return TRUE; } gboolean jb_parse_uint64 (const char *str, int base, guint64 *value, GError **err) { guint64 v; char *end; g_return_val_if_fail(str != NULL, FALSE); v = g_ascii_strtoull(str, &end, base); if (*end != '\0') { g_set_error(err, 0, 0, "invalid number"); return FALSE; } if (v == G_MAXUINT64 && errno == ERANGE) { g_set_error(err, 0, 0, "number out of range"); return FALSE; } *value = v; return TRUE; } gboolean jb_write_file (const char *filename, const char *contents, GError **err) { GIOChannel *channel; gsize bytes_written; gboolean status = FALSE; g_return_val_if_fail(filename != NULL, FALSE); g_return_val_if_fail(contents != NULL, FALSE); channel = g_io_channel_new_file(filename, "w", err); if (channel == NULL) return FALSE; if (g_io_channel_write_chars(channel, contents, -1, &bytes_written, err) == G_IO_STATUS_NORMAL) { if (g_io_channel_shutdown(channel, TRUE, err) == G_IO_STATUS_NORMAL) status = TRUE; } else g_io_channel_shutdown(channel, FALSE, NULL); g_io_channel_unref(channel); return status; } void jb_write_file_or_exit (const char *filename, const char *contents) { GError *err = NULL; if (! jb_write_file(filename, contents, &err)) jb_error("cannot write %s: %s", filename, err->message); } char * jb_read_file (const char *filename, GError **err) { GIOChannel *channel; char *contents = NULL; gsize length; g_return_val_if_fail(filename != NULL, FALSE); channel = g_io_channel_new_file(filename, "r", err); if (channel == NULL) return NULL; g_io_channel_read_to_end(channel, &contents, &length, err); g_io_channel_shutdown(channel, FALSE, NULL); g_io_channel_unref(channel); return contents; } char * jb_read_file_or_exit (const char *filename) { GError *err = NULL; char *contents; contents = jb_read_file(filename, &err); if (contents == NULL) jb_error("cannot read %s: %s", filename, err->message); return contents; } GSList * jb_match_files (const char *pattern) { glob_t glob_result; g_return_val_if_fail(pattern != NULL, NULL); if (glob(pattern, 0, NULL, &glob_result) == 0) { int i; GSList *files = NULL; for (i = 0; i < glob_result.gl_pathc; i++) files = g_slist_append(files, g_strdup(glob_result.gl_pathv[i])); globfree(&glob_result); return files; } else return NULL; } void jb_chdir (const char *path) { g_return_if_fail(path != NULL); if (chdir(path) < 0) jb_error("cannot change directory to %s: %s", path, g_strerror(errno)); } void jb_mkdir (const char *pathname) { g_return_if_fail(pathname != NULL); if (g_mkdir_with_parents(pathname, 0755) < 0) jb_error("cannot create directory %s: %s", pathname, g_strerror(errno)); } void jb_mkdir_of_file (const char *filename) { char *dir; g_return_if_fail(filename != NULL); dir = g_path_get_dirname(filename); jb_mkdir(dir); g_free(dir); } void jb_rename (const char *oldpath, const char *newpath) { g_return_if_fail(oldpath != NULL); g_return_if_fail(newpath != NULL); if (rename(oldpath, newpath) < 0) jb_error("cannot rename %s to %s: %s", oldpath, newpath, g_strerror(errno)); } void jb_chmod (const char *path, mode_t mode) { g_return_if_fail(path != NULL); if (chmod(path, mode) < 0) jb_error("cannot chmod %s to " JB_MODE_FORMAT ": %s", path, (unsigned int) mode, g_strerror(errno)); } gboolean jb_fchown_by_name (int fd, const char *owner, const char *group, GError **err) { uid_t uid = -1; gid_t gid = -1; g_return_val_if_fail(fd >= 0, FALSE); g_return_val_if_fail(owner != NULL || group != NULL, FALSE); if (owner != NULL) { struct passwd *info; info = getpwnam(owner); if (info == NULL) { g_set_error(err, 0, 0, "unknown user \"%s\"", owner); return FALSE; } uid = info->pw_uid; } if (group != NULL) { struct group *info; info = getgrnam(group); if (group == NULL) { g_set_error(err, 0, 0, "unknown group \"%s\"", group); return FALSE; } gid = info->gr_gid; } if (fchown(fd, uid, gid) < 0) { g_set_error(err, 0, 0, "%s", g_strerror(errno)); return FALSE; } return TRUE; } void jb_rmtree (const char *dir) { /* * Be paranoid and refuse abberant inputs. These tests are not * assertions to make sure that they won't be compiled out. */ if (dir == NULL) g_error("dir is NULL"); if (g_path_is_absolute(dir)) g_error("refusing to rmtree an absolute path"); jb_exec(NULL, NULL, "rm -rf %s", dir); } static char * subst_real (const char *str, GHashTable *variables) { GString *result; const char *p; result = g_string_new(NULL); for (p = str; *p != '\0';) { char c = *p; if (c == '@') { const char *start; char *end; start = p + 1; end = strpbrk(start, "@\n"); if (end != NULL && *end == '@') { char *name; const char *value; name = g_strndup(start, end - start); value = g_hash_table_lookup(variables, name); g_free(name); if (value != NULL) { g_string_append(result, value); p = end + 1; continue; } } } g_string_append_c(result, c); p++; } return g_string_free(result, FALSE); } void jb_subst (const char *infile, const char *outfile, GHashTable *variables) { char *contents; char *result; char *tmp_outfile; g_return_if_fail(infile != NULL); g_return_if_fail(outfile != NULL); g_return_if_fail(variables != NULL); contents = jb_read_file_or_exit(infile); result = subst_real(contents, variables); g_free(contents); tmp_outfile = g_strdup_printf("%s.tmp", outfile); jb_write_file_or_exit(tmp_outfile, result); g_free(result); jb_rename(tmp_outfile, outfile); g_free(tmp_outfile); } static char * convert_process_output (const char *output) { char *utf8; char *no_nl; if (g_utf8_validate(output, -1, NULL)) utf8 = g_strdup(output); else { utf8 = g_locale_to_utf8(output, -1, NULL, NULL, NULL); if (utf8 == NULL) utf8 = jb_utf8_escape(output); } no_nl = jb_strip_newline(utf8); g_free(utf8); return no_nl; } /* * Returns TRUE if the command exited with status 0. * * The trailing newline of @standard_output and @standard_error will * be stripped. * * @standard_output and @standard_error will be set even if FALSE is * returned, since a command can produce an output even if it exits * with a non-zero status. */ gboolean jb_exec (char **standard_output, char **standard_error, const char *format, ...) { char *command; int command_status; gboolean status = FALSE; char *_stdout; char *_stderr; char *converted_stdout = NULL; char *converted_stderr = NULL; char *shell_argv[4]; GError *err = NULL; g_return_val_if_fail(format != NULL, FALSE); JB_STRDUP_VPRINTF(command, format); shell_argv[0] = "/bin/sh"; shell_argv[1] = "-c"; shell_argv[2] = command; shell_argv[3] = NULL; if (g_spawn_sync(NULL, shell_argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, &_stdout, &_stderr, &command_status, &err)) { converted_stdout = convert_process_output(_stdout); g_free(_stdout); converted_stderr = convert_process_output(_stderr); g_free(_stderr); if (WIFEXITED(command_status)) { int exit_status; exit_status = WEXITSTATUS(command_status); if (exit_status == 0) { jb_log("command \"%s\" succeeded", command); status = TRUE; } else jb_log("command \"%s\" failed with status %i", command, exit_status); if (*converted_stdout != '\0') { jb_log("standard output:"); jb_log("%s", converted_stdout); jb_log(JB_SEPARATOR); } if (*converted_stderr != '\0') { jb_log("standard error output:"); jb_log("%s", converted_stderr); jb_log(JB_SEPARATOR); } } else jb_log("command exited abnormally"); } else /* fatal error: it should not happend since we exec the shell */ jb_error("cannot execute command \"%s\": %s", command, err->message); g_free(command); if (standard_output) *standard_output = converted_stdout; else g_free(converted_stdout); if (standard_error) *standard_error = converted_stderr; else g_free(converted_stderr); return status; } gboolean jb_exec_expand (char **standard_output, char **standard_error, const char *str, ...) { va_list args; char *command; gboolean result; g_return_val_if_fail(str != NULL, FALSE); va_start(args, str); command = jb_variable_expandv(str, args); va_end(args); result = jb_exec(standard_output, standard_error, "%s", command); g_free(command); return result; } JBStringHashSet * jb_string_hash_set_new (void) { return g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); } gboolean jb_string_hash_set_add (JBStringHashSet *set, const char *value) { g_return_val_if_fail(set != NULL, FALSE); g_return_val_if_fail(value != NULL, FALSE); if (g_hash_table_lookup(set, value) != NULL) return FALSE; g_hash_table_insert(set, g_strdup(value), GINT_TO_POINTER(TRUE)); return TRUE; } gboolean jb_string_hash_set_contains (JBStringHashSet *set, const char *value) { g_return_val_if_fail(set != NULL, FALSE); g_return_val_if_fail(value != NULL, FALSE); return g_hash_table_lookup_extended(set, value, NULL, NULL); } gboolean jb_is_uptodate (const char *dst, const char *src) { struct stat dst_sb; struct stat src_sb; g_return_val_if_fail(dst != NULL, FALSE); g_return_val_if_fail(src != NULL, FALSE); if (stat(dst, &dst_sb) < 0) return FALSE; if (stat(src, &src_sb) < 0) g_error("%s (dependency of %s) does not exist", src, dst); return dst_sb.st_mtime >= src_sb.st_mtime; } gboolean jb_is_uptodate_list (const char *dst, GSList *src_list) { struct stat dst_sb; GSList *l; g_return_val_if_fail(dst != NULL, FALSE); g_return_val_if_fail(src_list != NULL, FALSE); if (stat(dst, &dst_sb) < 0) return FALSE; JB_LIST_FOREACH(l, src_list) { const char *src = l->data; struct stat src_sb; if (stat(src, &src_sb) < 0) g_error("%s (dependency of %s) does not exist", src, dst); if (dst_sb.st_mtime < src_sb.st_mtime) return FALSE; } return TRUE; } gboolean jb_is_uptodate_list_list (GSList *dst_list, GSList *src_list) { GArray *dst_mtimes; GSList *l; gboolean result = TRUE; const char *filename; struct stat sb; dst_mtimes = g_array_new(FALSE, FALSE, sizeof(time_t)); JB_LIST_FOREACH(l, dst_list) { filename = l->data; if (stat(filename, &sb) < 0) { result = FALSE; goto end; } g_array_append_val(dst_mtimes, sb.st_mtime); } JB_LIST_FOREACH(l, src_list) { int i; filename = l->data; if (stat(filename, &sb) < 0) g_error("%s (dependency of %s) does not exist", filename, jb_string_list_join(dst_list, " ")); for (i = 0; i < dst_mtimes->len; i++) { time_t dst_mtime = g_array_index(dst_mtimes, time_t, i); if (dst_mtime < sb.st_mtime) { result = FALSE; goto end; } } } end: g_array_free(dst_mtimes, TRUE); return result; } char * jb_string_list_join (GSList *list, const char *separator) { GString *result; GSList *l; g_return_val_if_fail(separator != NULL, NULL); result = g_string_new(NULL); JB_LIST_FOREACH(l, list) { const char *str = l->data; g_string_append(result, str); if (l->next != NULL) g_string_append(result, separator); } return g_string_free(result, FALSE); } mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-compile-options.h0000644000175000001440000000414711005110777025133 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_COMPILE_OPTIONS_H #define _JB_COMPILE_OPTIONS_H #include #include typedef struct { char *name; char *cppflags; /* private, use accessor */ } JBCompileOptions; extern JBCompileOptions *jb_compile_options; JBCompileOptions *jb_compile_options_new (const char *name); void jb_compile_options_add_cflags (JBCompileOptions *self, const char *cflags); const char *jb_compile_options_get_cflags (JBCompileOptions *self); void jb_compile_options_add_cppflags (JBCompileOptions *self, const char *cppflags); const char *jb_compile_options_get_cppflags (JBCompileOptions *self); void jb_compile_options_add_ldflags (JBCompileOptions *self, const char *ldflags); const char *jb_compile_options_get_ldflags (JBCompileOptions *self); void jb_compile_options_add_libs (JBCompileOptions *self, const char *libs); const char *jb_compile_options_get_libs (JBCompileOptions *self); void jb_compile_options_add_gob2flags (JBCompileOptions *self, const char *gob2flags); const char *jb_compile_options_get_gob2flags (JBCompileOptions *self); void jb_compile_options_add_package (JBCompileOptions *self, const char *name); void jb_compile_options_add_string_defines (JBCompileOptions *self, const char *name, ...) G_GNUC_NULL_TERMINATED; #endif /* _JB_COMPILE_OPTIONS_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-config.c0000644000175000001440000000552311005110777023251 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include "jb-config.h" #include "jb-variable.h" #include "jb-util.h" void jb_config_save (void) { GString *config; GSList *l; config = g_string_new(NULL); JB_LIST_FOREACH(l, jb_variables) { JBVariable *variable = l->data; char *value; char *escaped; value = jb_variable_to_string(variable); escaped = g_strescape(value, NULL); g_free(value); g_string_append_printf(config, "%s|%s|%i|%s\n", variable->name, jb_variable_get_type_name(variable), variable->flags, escaped); g_free(escaped); } jb_write_file_or_exit(JB_CONFIG_FILE, config->str); g_string_free(config, TRUE); } void jb_config_load (void) { char *config; char **lines; int i; config = jb_read_file_or_exit(JB_CONFIG_FILE); lines = g_strsplit(config, "\n", 0); g_free(config); for (i = 0; lines[i] != NULL; i++) { int lineno = i + 1; char **fields; JBVariable *variable; JBVariableType *type; char *unescaped; GError *err = NULL; if (*lines[i] == '\0') continue; fields = g_strsplit(lines[i], "|", 4); if (g_strv_length(fields) != 4) jb_error("%s:%i: cannot parse line", JB_CONFIG_FILE, lineno); type = jb_variable_get_type(fields[1]); if (type == NULL) jb_error("%s:%i: invalid type \"%s\"", JB_CONFIG_FILE, lineno, fields[1]); variable = jb_variable_get_variable(fields[0]); if (variable == NULL) variable = jb_variable_add(type, fields[0], NULL, NULL, atoi(fields[2])); else { if (type != variable->type) jb_error("%s:%i: inconsistent type \"%s\" (type \"%s\" expected)", JB_CONFIG_FILE, lineno, type->name, variable->type->name); } unescaped = g_strcompress(fields[3]); if (! jb_variable_set_from_string(variable, unescaped, &err)) jb_error("%s:%i: invalid value for type \"%s\": %s", JB_CONFIG_FILE, lineno, type->name, err->message); g_free(unescaped); } g_strfreev(lines); } mail-notification-5.4.dfsg.1/jbsrc/lib/src/core/jb-variable.h0000644000175000001440000001007111005111000023544 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_VARIABLE_H #define _JB_VARIABLE_H #include #include #include #include typedef enum { /* allow the user to set it on the command line */ JB_VARIABLE_USER_SETTABLE = 1 << 0, /* add -DWITH_name=0|1 (bool variables only) */ JB_VARIABLE_C_DEFINE = 1 << 1, /* omit it from the configure report */ JB_VARIABLE_NO_REPORT = 1 << 2 } JBVariableFlags; typedef struct { char *name; } JBVariableGroup; typedef struct { char *name; GType gtype; gboolean (*from_string) (const char *str, GValue *value, GError **err); char * (*to_string) (const GValue *value); } JBVariableType; typedef struct { JBVariableType *type; char *name; /* can be NULL if the group is NULL */ char *description; /* if NULL, the variable is omitted from the help and report */ JBVariableGroup *group; JBVariableFlags flags; GValue value; int user_set : 1; } JBVariable; extern GSList *jb_variables; extern GSList *jb_variable_groups; extern JBVariableGroup *jb_variable_group_compiler_options; extern JBVariableGroup *jb_variable_group_installation_options; extern JBVariableGroup *jb_variable_group_external_programs; extern JBVariableType *jb_variable_type_bool; extern JBVariableType *jb_variable_type_string; extern JBVariableType *jb_variable_type_mode; void jb_variable_init (void); JBVariableGroup *jb_variable_add_group (const char *name); JBVariableType *jb_variable_get_type (const char *name); JBVariable *jb_variable_get_variable (const char *name); JBVariable *jb_variable_get_variable_or_error (const char *name); JBVariable *jb_variable_add (JBVariableType *type, const char *name, const char *description, JBVariableGroup *group, JBVariableFlags flags); void jb_variable_add_bool (const char *name, const char *description, JBVariableGroup *group, JBVariableFlags flags, gboolean default_value); void jb_variable_add_string (const char *name, const char *description, JBVariableGroup *group, JBVariableFlags flags, const char *default_value); void jb_variable_add_mode (const char *name, const char *description, JBVariableGroup *group, JBVariableFlags flags, mode_t default_value); gboolean jb_variable_get_bool (const char *name); void jb_variable_set_bool (const char *name, gboolean value); const char *jb_variable_get_string (const char *name); const char *jb_variable_get_string_or_null (const char *name); void jb_variable_set_string (const char *name, const char *value); mode_t jb_variable_get_mode (const char *name); void jb_variable_set_mode (const char *name, mode_t value); void jb_variable_set_package_flags (const char *name, const char *cflags, const char *cppflags, const char *ldflags, const char *libs); gboolean jb_variable_set_from_string (JBVariable *self, const char *value, GError **err); char *jb_variable_to_string (JBVariable *self); char *jb_variable_evaluate (JBVariable *variable); char *jb_variable_expand (const char *str, ...) G_GNUC_NULL_TERMINATED; char *jb_variable_expandv (const char *str, va_list args); const char *jb_variable_get_type_name (JBVariable *self); #endif /* _JB_VARIABLE_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/0000755000175000001440000000000011015313026021611 5ustar evilynuxusersmail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-dbus.c0000644000175000001440000001651011005111017023301 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "jb-dbus.h" #include "jb-tests.h" #include "jb-util.h" #include "jb-group.h" #include "jb-action.h" static void dbus_init (void) { jb_register_program("dbus-binding-tool", 0); } static void dbus_configure (void) { jb_require_program("dbus-binding-tool"); } JBFeature jb_dbus_feature = { dbus_init, dbus_configure }; G_DEFINE_TYPE(JBDBusInterfaceClient, jb_dbus_interface_client, JB_TYPE_GROUP_RESOURCE) JBDBusInterfaceClient * jb_dbus_interface_client_new (const char *name, const char *client) { JBDBusInterfaceClient *self; g_return_val_if_fail(name != NULL, NULL); g_return_val_if_fail(client != NULL, NULL); g_return_val_if_fail(jb_feature_is_enabled(&jb_dbus_feature), NULL); self = g_object_new(JB_TYPE_DBUS_INTERFACE_CLIENT, NULL); self->name = g_strdup(name); self->client = g_strdup(client); return self; } static char * dbus_interface_client_to_string (JBResource *res) { JBDBusInterfaceClient *self = JB_DBUS_INTERFACE_CLIENT(res); return g_strdup_printf("client of D-Bus interface %s", self->name); } static void dbus_interface_client_get_files (JBDBusInterfaceClient *self, char **xmlfile, char **clientfile) { JBGroupResource *gres = JB_GROUP_RESOURCE(self); char *cprefix; cprefix = jb_strdelimit(self->name, ".", '-'); if (xmlfile != NULL) *xmlfile = g_strdup_printf("%s/%s.xml", gres->group->srcdir, cprefix); if (clientfile != NULL) *clientfile = g_strdup_printf("%s/%s", gres->group->builddir, self->client); g_free(cprefix); } static void dbus_interface_client_pre_build (JBResource *res) { JBDBusInterfaceClient *self = JB_DBUS_INTERFACE_CLIENT(res); char *xmlfile; char *clientfile; dbus_interface_client_get_files(self, &xmlfile, &clientfile); if (! jb_is_uptodate(clientfile, xmlfile)) { JBGroupResource *gres = JB_GROUP_RESOURCE(res); jb_resource_message_building(res); jb_mkdir(gres->group->builddir); jb_action_exec("$dbus-binding-tool --mode=glib-client $xmlfile > $clientfile.tmp && mv -f $clientfile.tmp $clientfile", "xmlfile", xmlfile, "clientfile", clientfile, NULL); } g_free(xmlfile); g_free(clientfile); } static void dbus_interface_client_makedist (JBResource *res) { JBDBusInterfaceClient *self = JB_DBUS_INTERFACE_CLIENT(res); char *xmlfile; dbus_interface_client_get_files(self, &xmlfile, NULL); jb_action_add_to_dist(xmlfile); g_free(xmlfile); } static void dbus_interface_client_clean (JBResource *res) { JBDBusInterfaceClient *self = JB_DBUS_INTERFACE_CLIENT(res); char *clientfile; dbus_interface_client_get_files(self, NULL, &clientfile); jb_action_rm(clientfile); g_free(clientfile); } static void jb_dbus_interface_client_init (JBDBusInterfaceClient *self) { } static void jb_dbus_interface_client_class_init (JBDBusInterfaceClientClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); rclass->to_string = dbus_interface_client_to_string; rclass->pre_build = dbus_interface_client_pre_build; rclass->makedist = dbus_interface_client_makedist; rclass->clean = dbus_interface_client_clean; } G_DEFINE_TYPE(JBDBusInterfaceServer, jb_dbus_interface_server, JB_TYPE_GROUP_RESOURCE) JBDBusInterfaceServer * jb_dbus_interface_server_new (const char *name, const char *server, const char *server_prefix) { JBDBusInterfaceServer *self; g_return_val_if_fail(name != NULL, NULL); g_return_val_if_fail(server != NULL, NULL); g_return_val_if_fail(server_prefix != NULL, NULL); g_return_val_if_fail(jb_feature_is_enabled(&jb_dbus_feature), NULL); self = g_object_new(JB_TYPE_DBUS_INTERFACE_SERVER, NULL); self->name = g_strdup(name); self->server = g_strdup(server); self->server_prefix = g_strdup(server_prefix); return self; } static char * dbus_interface_server_to_string (JBResource *res) { JBDBusInterfaceServer *self = JB_DBUS_INTERFACE_SERVER(res); return g_strdup_printf("server of D-Bus interface %s", self->name); } static void dbus_interface_server_get_files (JBDBusInterfaceServer *self, char **xmlfile, char **serverfile) { JBGroupResource *gres = JB_GROUP_RESOURCE(self); char *cprefix; cprefix = jb_strdelimit(self->name, ".", '-'); if (xmlfile != NULL) *xmlfile = g_strdup_printf("%s/%s.xml", gres->group->srcdir, cprefix); if (serverfile != NULL) *serverfile = g_strdup_printf("%s/%s", gres->group->builddir, self->server); g_free(cprefix); } static void dbus_interface_server_pre_build (JBResource *res) { JBDBusInterfaceServer *self = JB_DBUS_INTERFACE_SERVER(res); char *xmlfile; char *serverfile; dbus_interface_server_get_files(self, &xmlfile, &serverfile); if (! jb_is_uptodate(serverfile, xmlfile)) { JBGroupResource *gres = JB_GROUP_RESOURCE(res); jb_resource_message_building(res); jb_mkdir(gres->group->builddir); jb_action_exec("$dbus-binding-tool --mode=glib-server --prefix=$server-prefix $xmlfile > $serverfile.tmp && mv -f $serverfile.tmp $serverfile", "server-prefix", self->server_prefix, "xmlfile", xmlfile, "serverfile", serverfile, NULL); } g_free(xmlfile); g_free(serverfile); } static void dbus_interface_server_makedist (JBResource *res) { JBDBusInterfaceServer *self = JB_DBUS_INTERFACE_SERVER(res); char *xmlfile; dbus_interface_server_get_files(self, &xmlfile, NULL); jb_action_add_to_dist(xmlfile); g_free(xmlfile); } static void dbus_interface_server_clean (JBResource *res) { JBDBusInterfaceServer *self = JB_DBUS_INTERFACE_SERVER(res); char *serverfile; dbus_interface_server_get_files(self, NULL, &serverfile); jb_action_rm(serverfile); g_free(serverfile); } static void jb_dbus_interface_server_init (JBDBusInterfaceServer *self) { } static void jb_dbus_interface_server_class_init (JBDBusInterfaceServerClass *class) { JBResourceClass *rclass = JB_RESOURCE_CLASS(class); rclass->to_string = dbus_interface_server_to_string; rclass->pre_build = dbus_interface_server_pre_build; rclass->makedist = dbus_interface_server_makedist; rclass->clean = dbus_interface_server_clean; } void jb_group_add_dbus_interface (JBGroup *self, const char *name, const char *client, const char *server, const char *server_prefix) { g_return_if_fail(JB_IS_GROUP(self)); g_return_if_fail(name != NULL); if (client != NULL) jb_group_add_resource(self, JB_GROUP_RESOURCE(jb_dbus_interface_client_new(name, client))); if (server != NULL) jb_group_add_resource(self, JB_GROUP_RESOURCE(jb_dbus_interface_server_new(name, server, server_prefix))); } mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-sasl2.c0000644000175000001440000000450611005111017023372 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include "jb-tests.h" #include "jb-variable.h" #include "jb-util.h" #define JB_SASL2_CFLAGS NULL #define JB_SASL2_CPPFLAGS NULL #define JB_SASL2_LDFLAGS NULL #define JB_SASL2_LIBS "-lsasl2" gboolean jb_sasl2_check (const char *minversion) { gboolean result; char *cppflags; int major; int minor; int step = 0; int patch = 0; if (! minversion) minversion = "2.0"; jb_message_checking("for Cyrus SASL >= %s", minversion); if (sscanf(minversion, "%d.%d.%d.%d", &major, &minor, &step, &patch) < 2) g_error("invalid version string `%s'", minversion); cppflags = g_strdup_printf("-DJB_SASL2_MAJOR=%i -DJB_SASL2_MINOR=%i -DJB_SASL2_STEP=%i -DJB_SASL2_PATCH=%i", major, minor, step, patch); result = jb_test_run_string("#include \n" "int main () {\n" " int major, minor, step, patch;\n" " sasl_version_info(0, 0, &major, &minor, &step, &patch);\n" " if ((major << 24) + (minor << 16) + (step << 8) + patch\n" " < (JB_SASL2_MAJOR << 24) + (JB_SASL2_MINOR << 16) + (JB_SASL2_STEP << 8) + JB_SASL2_PATCH)\n" " exit(2); /* version too old */\n" " exit(0);\n" "}\n", JB_SASL2_CFLAGS, cppflags, JB_SASL2_LDFLAGS, JB_SASL2_LIBS); g_free(cppflags); jb_message_result_bool(result); if (result) jb_variable_set_package_flags("sasl2", JB_SASL2_CFLAGS, JB_SASL2_CPPFLAGS, JB_SASL2_LDFLAGS, JB_SASL2_LIBS); return result; } mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-sasl2.h0000644000175000001440000000171011005111017023371 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_SASL2_H #define _JB_SASL2_H #include gboolean jb_sasl2_check (const char *minversion); #endif /* _JB_SASL2_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-endianness.h0000644000175000001440000000166311005111017024503 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_ENDIANNESS_H #define _JB_ENDIANNESS_H void jb_endianness_check (void); #endif /* _JB_ENDIANNESS_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-dbus.h0000644000175000001440000000471111005111017023306 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_DBUS_H #define _JB_DBUS_H #include "jb-resource.h" #include "jb-feature.h" extern JBFeature jb_dbus_feature; #define JB_TYPE_DBUS_INTERFACE_CLIENT (jb_dbus_interface_client_get_type()) #define JB_DBUS_INTERFACE_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_DBUS_INTERFACE_CLIENT, JBDBusInterfaceClient)) #define JB_IS_DBUS_INTERFACE_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_DBUS_INTERFACE_CLIENT)) typedef struct { JBGroupResource parent; char *name; char *client; } JBDBusInterfaceClient; typedef struct { JBGroupResourceClass parent; } JBDBusInterfaceClientClass; GType jb_dbus_interface_client_get_type (void); JBDBusInterfaceClient *jb_dbus_interface_client_new (const char *name, const char *client); #define JB_TYPE_DBUS_INTERFACE_SERVER (jb_dbus_interface_server_get_type()) #define JB_DBUS_INTERFACE_SERVER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JB_TYPE_DBUS_INTERFACE_SERVER, JBDBusInterfaceServer)) #define JB_IS_DBUS_INTERFACE_SERVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JB_TYPE_DBUS_INTERFACE_SERVER)) typedef struct { JBGroupResource parent; char *name; char *server; char *server_prefix; } JBDBusInterfaceServer; typedef struct { JBGroupResourceClass parent; } JBDBusInterfaceServerClass; GType jb_dbus_interface_server_get_type (void); JBDBusInterfaceServer *jb_dbus_interface_server_new (const char *name, const char *server, const char *server_prefix); void jb_group_add_dbus_interface (JBGroup *self, const char *name, const char *client, const char *server, const char *server_prefix); #endif /* _JB_DBUS_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-string-arch-unaligned.c0000644000175000001440000000264311005111017026533 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include "jb-tests.h" #include "jb-variable.h" #include "jb-compile-options.h" /* based on a similar test in glibc */ void jb_string_arch_unaligned_check (void) { const char *cpu; jb_check_host_system(); cpu = jb_variable_get_string("host-cpu"); if (! strcmp(cpu, "i386") || ! strcmp(cpu, "i486") || ! strcmp(cpu, "i586") || ! strcmp(cpu, "i686") || ! strcmp(cpu, "i786") || ! strcmp(cpu, "x86_64") || ! strcmp(cpu, "s390") || ! strcmp(cpu, "s390x")) jb_compile_options_add_cppflags(jb_compile_options, "-DSTRING_ARCH_UNALIGNED"); } mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-endianness.c0000644000175000001440000000240711005111017024473 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "jb-util.h" #include "jb-compile-options.h" static gboolean is_bigendian (void) { int i = 1; return ((char *) &i)[sizeof(int) - 1] == 1; } void jb_endianness_check (void) { jb_message_checking("the host CPU endianness"); if (is_bigendian()) { jb_message_result_string("big-endian"); jb_compile_options_add_cppflags(jb_compile_options, "-DWORDS_BIGENDIAN"); } else jb_message_result_string("little-endian"); } mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-string-arch-unaligned.h0000644000175000001440000000173711005111017026543 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_STRING_ARCH_UNALIGNED_H #define _JB_STRING_ARCH_UNALIGNED_H void jb_string_arch_unaligned_check (void); #endif /* _JB_STRING_ARCH_UNALIGNED_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-openssl.h0000644000175000001440000000176511005111017024042 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_OPENSSL_H #define _JB_OPENSSL_H #include gboolean jb_openssl_check (const char *minversion); gboolean jb_openssl_check_mt (void); #endif /* _JB_OPENSSL_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-evolution-plugin.h0000644000175000001440000000203211005111017025663 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _JB_EVOLUTION_PLUGIN_H #define _JB_EVOLUTION_PLUGIN_H #include void jb_evolution_plugin_init (void); gboolean jb_evolution_plugin_check (const char *minversion); #endif /* _JB_EVOLUTION_PLUGIN_H */ mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-openssl.c0000644000175000001440000000563111005111017024031 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include "jb-tests.h" #include "jb-variable.h" #include "jb-util.h" #define JB_OPENSSL_CFLAGS NULL #define JB_OPENSSL_CPPFLAGS NULL #define JB_OPENSSL_LDFLAGS NULL #define JB_OPENSSL_LIBS "-lssl -lcrypto" gboolean jb_openssl_check (const char *minversion) { gboolean result; char *cppflags; int major; int minor; int fix; int patch = 0; char cpatch; if (! minversion) /* the OPENSSL_VERSION_NUMBER format we use appeared in 0.9.5b */ minversion = "0.9.5b"; jb_message_checking("for OpenSSL >= %s", minversion); if (sscanf(minversion, "%d.%d.%d%c", &major, &minor, &fix, &cpatch) < 3) g_error("invalid version string `%s'", minversion); if (cpatch) patch = cpatch - 96; /* letter -> number */ cppflags = g_strdup_printf("-DJB_OPENSSL_MAJOR=%i -DJB_OPENSSL_MINOR=%i -DJB_OPENSSL_FIX=%i -DJB_OPENSSL_PATCH=%i", major, minor, fix, patch); result = jb_test_run_string("#include \n" "int main () {\n" " if (OPENSSL_VERSION_NUMBER <\n" " (JB_OPENSSL_MAJOR << 28)\n" " + (JB_OPENSSL_MINOR << 20)\n" " + (JB_OPENSSL_FIX << 12)\n" " + (JB_OPENSSL_PATCH << 4))\n" " exit(1); /* version too old */\n" " exit(0); /* ok */\n" "}\n", JB_OPENSSL_CFLAGS, cppflags, JB_OPENSSL_LDFLAGS, JB_OPENSSL_LIBS); g_free(cppflags); jb_message_result_bool(result); if (result) jb_variable_set_package_flags("openssl", JB_OPENSSL_CFLAGS, JB_OPENSSL_CPPFLAGS, JB_OPENSSL_LDFLAGS, JB_OPENSSL_LIBS); return result; } gboolean jb_openssl_check_mt (void) { gboolean result; jb_message_checking("whether OpenSSL supports multi-threading"); result = jb_test_compile_string("#define OPENSSL_THREAD_DEFINES\n" "#include \n" "int main () {\n" "#ifndef OPENSSL_THREADS\n" "#error \"no thread support\"\n" "#endif\n" "}\n", JB_OPENSSL_CFLAGS, JB_OPENSSL_CPPFLAGS); jb_message_result_bool(result); return result; } mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-evolution-plugin.c0000644000175000001440000000363011005111017025663 0ustar evilynuxusers/* * JB, the Jean-Yves Lefort's Build System * Copyright (C) 2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include "jb-tests.h" #include "jb-util.h" #include "jb-variable.h" void jb_evolution_plugin_init (void) { jb_variable_add_string("evolution-plugin-dir", "Evolution plugin installation directory", jb_variable_group_installation_options, 0, "autodetect"); } gboolean jb_evolution_plugin_check (const char *minversion) { char *packages; gboolean result; if (! minversion) minversion = "2.12"; packages = g_strdup_printf("evolution-plugin >= %s", minversion); result = jb_check_packages("Evolution", "evolution-plugin", packages); g_free(packages); if (! result) return FALSE; if (! strcmp(jb_variable_get_string("evolution-plugin-dir"), "autodetect")) { char *plugindir; jb_message_checking("for the Evolution plugin directory"); plugindir = jb_get_package_variable("evolution-plugin", "plugindir"); jb_message_result_string(plugindir ? plugindir : "not found"); if (! plugindir) return FALSE; jb_variable_set_string("evolution-plugin-dir", plugindir); g_free(plugindir); } return TRUE; } mail-notification-5.4.dfsg.1/jbsrc/lib/README0000644000175000001440000000456411004461013020403 0ustar evilynuxusers=============================================================================== JB, the Jean-Yves Lefort's Build System =============================================================================== Index 0. About this document 1. Motivation 2. Dependencies 3. Customizing the bootstrap compilation 4. Log files 5. Redirecting the installation 0. About this document $Id: README,v 1.3 2008-04-25 22:58:19 jylefort Exp $ Copyright (C) 2008 Jean-Yves Lefort. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.2 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at http://www.gnu.org/licenses/fdl.html or in the file COPYING-DOCS distributed with this manual. 1. Motivation JB is the result of my long-standing dissatisfaction with the GNU Autotools. It makes my programmer's life easier, for reasons that I will not bother enumerating here. 2. Dependencies Regardless of the package dependencies, JB requires a C compiler and the GLib library (version 2.8 or superior). 3. Customizing the bootstrap compilation The first time ./jb is run, it bootstraps itself by compiling the real JB program, which is written in C. If you need to influence the way this program is compiled, you can set the jb_cc, jb_cflags, jb_cppflags, jb_ldflags and jb_libs environment variables, for instance: jb_cc=gcc jb_cflags=-g ./jb configure Note that these environment variables are only used to compile the JB program. To specify compilation options for the package, use: ./jb configure cc=gcc cflags=-g 4. Log files You can check what JB is doing by reviewing the build/*.log files. Each action has its own log file (configure.log, build.log, ...). 5. Redirecting the installation A number of packaging systems rely on the Automake DESTDIR facility, which allows to install the package in a temporary directory rather than directly in its final location. JB supports that functionality. To redirect the installation to a different directory, pass the destdir variable to the configure stage, for instance: ./jb configure destdir=/my/temp/dir As with Automake, the destdir setting does not influence the idea that the package has of its installation location. mail-notification-5.4.dfsg.1/jbsrc/jb.c0000644000175000001440000005112711015312570017516 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "jb.h" #jb_include #jb_include #jb_include #jb_include #jb_include #jb_include #define MN_WARNING_CFLAGS \ "-Wall " \ "-Wformat-y2k " \ "-Wformat-security " \ "-Wno-unused-parameter " \ "-Wfloat-equal " \ "-Wdeclaration-after-statement " \ "-Wendif-labels " \ "-Wpointer-arith " \ "-Wcast-align " \ "-Waggregate-return " \ "-Wmissing-noreturn " \ "-Wmissing-format-attribute " \ "-Wpacked " \ "-Wredundant-decls " \ "-Wnested-externs " \ "-Winline " \ "-Wno-pointer-sign " \ "-Wshadow " static const JBFeature *jb_features[] = { &jb_pkg_config_feature, &jb_gettext_feature, &jb_intltool_feature, &jb_gconf_feature, &jb_gnome_help_feature, &jb_dbus_feature, &jb_gob2_feature }; void jb_package_init (void) { JBVariableGroup *backends_group; JBVariableGroup *pi_group; /* by default, use the GNOME prefix */ jb_set_prefix_from_program("gnome-open"); /* * At the time of this writing, gob2 2.0.16 is not yet * released. What is required is gob2 2.0.15 + my patches (see the * gob mailing list), which should eventually become gob2 2.0.16. */ jb_variable_set_string("gob2-minversion", "2.0.16"); jb_evolution_plugin_init(); backends_group = jb_variable_add_group("Mailbox backends"); pi_group = jb_variable_add_group("IMAP and POP3 features"); /* mailbox backends */ jb_variable_add_bool("evolution", "enable Evolution mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("gmail", "enable Gmail mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("hotmail", "enable Hotmail mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("imap", "enable IMAP mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("maildir", "enable Maildir mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("mbox", "enable mbox mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("mh", "enable MH mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("mozilla", "enable Mozilla products mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("pop3", "enable POP3 mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("sylpheed", "enable Sylpheed mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("yahoo", "enable Yahoo! Mail mailbox support", backends_group, JB_VARIABLE_C_DEFINE, TRUE); /* POP3 and IMAP features */ jb_variable_add_bool("ipv6", "enable IPv6 support", pi_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("sasl", "enable SASL authentication support", pi_group, JB_VARIABLE_C_DEFINE, TRUE); jb_variable_add_bool("ssl", "enable SSL/TLS support", pi_group, JB_VARIABLE_C_DEFINE, TRUE); /* misc */ jb_variable_add_bool("compile-warnings", NULL, NULL, 0, FALSE); jb_variable_add_bool("debug", NULL, NULL, 0, FALSE); jb_variable_add_bool("regression-tests", NULL, NULL, 0, FALSE); jb_variable_add_bool("gconf-sanity-check", NULL, NULL, JB_VARIABLE_C_DEFINE, TRUE); } void jb_package_configure (void) { jb_check_glibc(); jb_require_packages("GNOME", "gnome", "glib-2.0 >= 2.14 gthread-2.0 gconf-2.0 >= 2.4.0 gtk+-2.0 >= 2.12 libgnomeui-2.0 >= 2.14.0 gnome-vfs-2.0 libglade-2.0 libxml-2.0 libnotify >= 0.4.1"); jb_require_packages("D-Bus", "dbus", "dbus-glib-1"); jb_check_packages_for_options("GMime", "gmime", "gmime-2.0 >= 2.2.7", "hotmail", "imap", "maildir", "mbox", "mh", "mozilla", "pop3", "sylpheed", "yahoo", NULL); jb_check_packages_for_options("GNOME Keyring", "gnome-keyring", "gnome-keyring-1", "pop3", "imap", "gmail", "yahoo", "hotmail", NULL); if (jb_variable_get_bool("pop3") || jb_variable_get_bool("imap")) { jb_check_reentrant_dns_resolver(); if (jb_variable_get_bool("pop3")) { /* needed by mn-md5.c */ jb_endianness_check(); jb_string_arch_unaligned_check(); } } else { if (jb_variable_get_bool("ipv6")) { jb_warning("disabling option \"ipv6\" since options \"pop3\" and \"imap\" are disabled"); jb_variable_set_bool("ipv6", FALSE); } if (jb_variable_get_bool("sasl")) { jb_warning("disabling option \"sasl\" since options \"pop3\" and \"imap\" are disabled"); jb_variable_set_bool("sasl", FALSE); } if (jb_variable_get_bool("ssl")) { jb_warning("disabling option \"ssl\" since options \"pop3\" and \"imap\" are disabled"); jb_variable_set_bool("ssl", FALSE); } } if (jb_variable_get_bool("sasl")) { if (! jb_sasl2_check(NULL)) { jb_warning("disabling option \"sasl\" since Cyrus SASL was not found"); jb_variable_set_bool("sasl", FALSE); } } if (jb_variable_get_bool("ssl")) { if (jb_openssl_check("0.9.6")) { if (! jb_openssl_check_mt()) { jb_warning("disabling option \"ssl\" since OpenSSL does not support multi-threading"); jb_variable_set_bool("ssl", FALSE); } } else { jb_warning("disabling option \"ssl\" since OpenSSL was not found"); jb_variable_set_bool("ssl", FALSE); } } if (jb_variable_get_bool("evolution")) { if (! jb_evolution_plugin_check(NULL)) { jb_warning("disabling option \"evolution\" since Evolution was not found"); jb_variable_set_bool("evolution", FALSE); } } if (jb_variable_get_bool("gmail")) { if (jb_check_functions("timegm", NULL)) jb_compile_options_add_cppflags(jb_compile_options, "-DHAVE_TIMEGM"); else jb_warning("timegm() not available, Gmail message dates will not be displayed"); } } static void add_vfs_test (JBGroup *group, const char *name, int block_size) { JBObject *object; char *program_name; char *cppflags; int i; program_name = g_strdup_printf("test-vfs-read-line-%s", name); object = JB_OBJECT(jb_program_new(program_name)); jb_install_options_set_installdir(object->install_options, NULL); jb_object_add_sources(object, "../src/mn-vfs.c", "test-vfs-read-line.c", NULL); cppflags = g_strdup_printf("-Isrc -DREAD_LINE_BLOCK_SIZE=%i -DMN_REGRESSION_TEST", block_size); jb_compile_options_add_cppflags(object->compile_options, cppflags); g_free(cppflags); jb_compile_options_add_package(object->compile_options, "gnome"); jb_group_add_resource(group, JB_GROUP_RESOURCE(object)); for (i = 1; i < 3; i++) { JBRule *rule; char *outfile; char *infile; char *expected; outfile = g_strdup_printf("test-vfs-read-line%i-%s.output", i, name); infile = g_strdup_printf("test-vfs-read-line%i.input", i); expected = g_strdup_printf("test-vfs-read-line%i.expected", i); rule = jb_rule_new(); jb_rule_add_dependency(rule, JB_GROUP_RESOURCE(object)); jb_rule_add_input_file(rule, "$builddir/%s", program_name); jb_rule_add_input_file(rule, "$srcdir/%s", infile); jb_rule_add_input_file(rule, "$srcdir/%s", expected); jb_rule_add_output_file(rule, "$builddir/%s", outfile); jb_rule_set_build_message(rule, "running VFS test %i-%s", i, name); jb_rule_add_build_command(rule, "$builddir/%s file://`pwd`/$srcdir/%s > $builddir/%s", program_name, infile, outfile); jb_rule_add_build_command(rule, "cmp $builddir/%s $srcdir/%s", outfile, expected); jb_group_add_resource(group, JB_GROUP_RESOURCE(rule)); jb_group_add_dist_files(group, infile, expected, NULL); g_free(outfile); g_free(infile); g_free(expected); } g_free(program_name); } void jb_package_add_resources (void) { JBGroup *group; JBRule *rule; JBObject *object; if (jb_variable_get_bool("compile-warnings")) jb_compile_options_add_cflags(jb_compile_options, MN_WARNING_CFLAGS " -Werror"); if (! jb_variable_get_bool("debug")) jb_compile_options_add_cflags(jb_compile_options, "-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"); jb_compile_options_add_gob2flags(jb_compile_options, "--exit-on-warn"); /*** art *******************************************************************/ group = jb_group_new("art"); jb_group_add_data_files(group, "16x16/apps/mail-notification.png", "$datadir/icons/hicolor/16x16/apps", "22x22/apps/mail-notification.png", "$datadir/icons/hicolor/22x22/apps", "24x24/apps/mail-notification.png", "$datadir/icons/hicolor/24x24/apps", "32x32/apps/mail-notification.png", "$datadir/icons/hicolor/32x32/apps", "48x48/apps/mail-notification.png", "$datadir/icons/hicolor/48x48/apps", "scalable/apps/mail-notification.svg", "$datadir/icons/hicolor/scalable/apps", NULL); jb_group_add_data_file(group, "logo.png", "$pkgdatadir"); if (jb_variable_get_bool("gmail")) jb_group_add_data_file(group, "gmail.png", "$pkgdatadir"); if (jb_variable_get_bool("yahoo")) jb_group_add_data_file(group, "yahoo.png", "$pkgdatadir"); if (jb_variable_get_bool("hotmail")) jb_group_add_data_file(group, "hotmail.png", "$pkgdatadir"); rule = jb_rule_new(); jb_rule_set_install_message(rule, "updating the GTK+ icon cache"); jb_rule_add_install_command(rule, "-gtk-update-icon-cache -f -t $datadir/icons/hicolor"); jb_group_add_resource(group, JB_GROUP_RESOURCE(rule)); jb_group_add(group); /*** data ******************************************************************/ group = jb_group_new("data"); jb_group_add_desktop_file(group, "mail-notification-properties.desktop.in", "$datadir/applications"); jb_group_add_desktop_file(group, "mail-notification.desktop.in", "$sysconfdir/xdg/autostart"); jb_group_add_resource(group, JB_GROUP_RESOURCE(jb_template_new("mail-notification.schemas.in.in"))); jb_group_add_gconf_schemas(group, "mail-notification.schemas.in"); jb_group_add_data_file(group, "new-mail.wav", "$pkgdatadir"); jb_group_add_dist_file(group, "sylpheed-locking.diff"); jb_group_add(group); /*** help ******************************************************************/ group = jb_group_new("help"); jb_group_add_resource(group, JB_GROUP_RESOURCE(jb_gnome_help_new("C", "documentation-license.xml software-license.xml"))); jb_group_add(group); /*** po ********************************************************************/ group = jb_group_new("po"); jb_group_add_translations(group, "bg ca cs de es fr ja nl pl pt pt_BR ru sr sr@Latn sv"); jb_group_add(group); /*** src *******************************************************************/ group = jb_group_new("src"); jb_compile_options_add_string_defines(group->compile_options, "GETTEXT_PACKAGE", "$package", NULL); object = JB_OBJECT(jb_program_new("mail-notification")); if (jb_variable_get_bool("glibc")) { /* * We need -std=c99 for lround(), ... * We need _BSD_SOURCE (which requires -lbsd-compat) for fchmod(), ... * We need _POSIX_C_SOURCE for fdopen(), ... */ jb_compile_options_add_cflags(object->compile_options, "-std=c99"); jb_compile_options_add_cppflags(object->compile_options, "-D_BSD_SOURCE -D_POSIX_C_SOURCE=199309L"); jb_compile_options_add_libs(object->compile_options, "-lbsd-compat"); } jb_compile_options_add_string_defines(object->compile_options, "PACKAGE", "$package", "VERSION", "$version", "PREFIX", "$prefix", "SYSCONFDIR", "$sysconfdir", "DATADIR", "$datadir", "PKGDATADIR", "$pkgdatadir", "LIBDIR", "$libdir", "GNOMELOCALEDIR", "$datadir/locale", NULL); /* * We need --export-dynamic because because libglade needs to * resolve symbols from our own binary in order to autoconnect * signal handlers. */ jb_compile_options_add_ldflags(object->compile_options, "-Wl,--export-dynamic"); jb_compile_options_add_libs(object->compile_options, "-lm"); jb_compile_options_add_package(object->compile_options, "gettext"); jb_compile_options_add_package(object->compile_options, "gnome"); jb_compile_options_add_package(object->compile_options, "dbus"); jb_group_add_dbus_interface(group, "org.gnome.MailNotification", "mn-client-dbus.h", "mn-server-dbus.h", "mn_server"); jb_object_add_sources(object, "MN:About:Dialog", "MN:Autodetect:Mailbox:Properties", "MN:Compact:Message:View", "MN:Dialog", "MN:File:Chooser:Button", "MN:Mail:Icon", "MN:Mail:Icon:Widget", "MN:Mailbox", "MN:Mailbox:Properties", "MN:Mailbox:Properties:Dialog", "MN:Mailbox:View", "MN:Mailboxes", "MN:Message", "MN:Message:View", "MN:Popup", "MN:Popups", "MN:Properties:Dialog", "MN:Server", "MN:Shell", "MN:Sound:File:Chooser:Dialog", "MN:Sound:Player", "MN:Standard:Message:View", "MN:Test:Mailbox", "MN:Text:Table", "MN:Tooltips", "eggtrayicon", "mn-conf", "mn-decls.h", "mn-locked-callback", "mn-main.c", "mn-non-linear-range", "mn-stock", "mn-util", "mn-vfs", "mn-xml", "nautilus-cell-renderer-pixbuf-emblem", NULL); if (jb_variable_get_bool("mbox")) jb_object_add_source(object, "MN:Mbox:Mailbox:Backend"); if (jb_variable_get_bool("mozilla")) jb_object_add_source(object, "MN:Mozilla:Mailbox:Backend"); if (jb_variable_get_bool("mbox") || jb_variable_get_bool("mozilla")) jb_object_add_source(object, "MN:Base:Mbox:Mailbox:Backend"); if (jb_variable_get_bool("mh")) jb_object_add_source(object, "MN:MH:Mailbox:Backend"); if (jb_variable_get_bool("maildir")) jb_object_add_sources(object, "MN:Maildir:Mailbox:Backend", "MN:Maildir:Message", NULL); if (jb_variable_get_bool("pop3")) jb_object_add_sources(object, "MN:POP3:Mailbox", "MN:POP3:Mailbox:Properties", "mn-md5", NULL); if (jb_variable_get_bool("imap")) jb_object_add_sources(object, "MN:IMAP:Mailbox", "MN:IMAP:Mailbox:Properties", NULL); if (jb_variable_get_bool("pop3") || jb_variable_get_bool("imap")) jb_object_add_sources(object, "MN:Auth:Combo:Box", "MN:PI:Mailbox", "MN:PI:Mailbox:Properties", "mn-client-session", NULL); if (jb_variable_get_bool("pop3") || jb_variable_get_bool("imap") || jb_variable_get_bool("gmail") || jb_variable_get_bool("yahoo") || jb_variable_get_bool("hotmail")) { jb_compile_options_add_package(object->compile_options, "gnome-keyring"); jb_object_add_sources(object, "MN:Authenticated:Mailbox", "MN:Authenticated:Mailbox:Properties", "mn-keyring", NULL); } if (jb_variable_get_bool("sylpheed")) jb_object_add_sources(object, "MN:Sylpheed:Mailbox:Backend", "MN:Sylpheed:Message", NULL); if (jb_variable_get_bool("maildir") || jb_variable_get_bool("sylpheed")) jb_object_add_source(object, "MN:VFS:Message"); if (jb_variable_get_bool("gmail")) jb_object_add_sources(object, "MN:Gmail:Mailbox", "MN:Gmail:Mailbox:Properties", NULL); if (jb_variable_get_bool("yahoo")) jb_object_add_sources(object, "MN:Yahoo:Mailbox", "MN:Yahoo:Mailbox:Properties", NULL); if (jb_variable_get_bool("hotmail")) jb_object_add_sources(object, "MN:Hotmail:Mailbox", "MN:Hotmail:Mailbox:Properties", NULL); if (jb_variable_get_bool("yahoo") || jb_variable_get_bool("hotmail")) jb_object_add_sources(object, "MN:Webmail:Mailbox", "MN:Webmail:Mailbox:Properties", NULL); if (jb_variable_get_bool("mbox") || jb_variable_get_bool("mozilla") || jb_variable_get_bool("mh") || jb_variable_get_bool("maildir") || jb_variable_get_bool("sylpheed")) jb_object_add_sources(object, "MN:Custom:VFS:Mailbox", "MN:Reentrant:Mailbox", "MN:System:VFS:Mailbox", "MN:System:VFS:Mailbox:Properties", "MN:VFS:Mailbox", "MN:VFS:Mailbox:Backend", NULL); if (jb_variable_get_bool("hotmail") || jb_variable_get_bool("imap") || jb_variable_get_bool("maildir") || jb_variable_get_bool("mbox") || jb_variable_get_bool("mh") || jb_variable_get_bool("mozilla") || jb_variable_get_bool("pop3") || jb_variable_get_bool("sylpheed") || jb_variable_get_bool("yahoo")) { jb_compile_options_add_cppflags(object->compile_options, "-DWITH_GMIME=1"); jb_compile_options_add_package(object->compile_options, "gmime"); jb_object_add_sources(object, "mn-message-mime", "MN:GMime:Stream:VFS", NULL); } if (jb_variable_get_bool("ssl")) { jb_compile_options_add_package(object->compile_options, "openssl"); jb_object_add_source(object, "mn-ssl"); } if (jb_variable_get_bool("sasl")) { jb_compile_options_add_package(object->compile_options, "sasl2"); jb_object_add_source(object, "mn-sasl"); } if (jb_variable_get_bool("evolution")) { JBObject *plugin; jb_group_add_resource(group, JB_GROUP_RESOURCE(jb_template_new("org-jylefort-mail-notification.eplug.in"))); jb_group_add_data_file(group, "org-jylefort-mail-notification.eplug", "$evolution-plugin-dir"); jb_compile_options_add_cflags(object->compile_options, "$evolution-plugin-cflags"); jb_group_add_dbus_interface(group, "org.freedesktop.DBus.Properties", "mn-dbus-properties-client-dbus.h", NULL, NULL); jb_group_add_dbus_interface(group, "org.gnome.MailNotification.Evolution", "mn-evolution-client-dbus.h", NULL, NULL); jb_object_add_sources(object, "MN:Evolution:Client", "MN:Evolution:Folder:Tree:Client", "MN:Evolution:Mailbox", "MN:Evolution:Mailbox:Properties", "MN:Evolution:Message", "mn-evolution.h", NULL); plugin = JB_OBJECT(jb_module_new("liborg-jylefort-mail-notification")); jb_install_options_set_installdir(plugin->install_options, "$evolution-plugin-dir"); jb_compile_options_add_package(plugin->compile_options, "gettext"); jb_compile_options_add_package(plugin->compile_options, "evolution-plugin"); jb_compile_options_add_package(plugin->compile_options, "dbus"); jb_group_add_dbus_interface(group, "org.gnome.MailNotification.Evolution", NULL, "mn-evolution-server-dbus.h", "mn_evolution_server"); jb_group_add_dbus_interface(group, "org.gnome.MailNotification.Evolution.FolderTree", NULL, "mn-evolution-folder-tree-server-dbus.h", "mn_evolution_folder_tree_server"); jb_object_add_sources(plugin, "MN:Evolution:Folder:Tree:Server", "MN:Evolution:Server", "mn-evolution-plugin", "mn-evolution.h", NULL); jb_group_add_resource(group, JB_GROUP_RESOURCE(plugin)); } jb_group_add_resource(group, JB_GROUP_RESOURCE(object)); jb_group_add(group); /*** ui ********************************************************************/ group = jb_group_new("ui"); jb_group_add_data_files(group, "mailbox-properties-dialog.glade", "$pkgdatadir", "properties-dialog.glade", "$pkgdatadir", NULL); jb_group_add(group); if (jb_variable_get_bool("regression-tests")) { group = jb_group_new("tests"); add_vfs_test(group, "smallblock", 4); add_vfs_test(group, "largeblock", 16384); jb_group_add(group); } } JB_MAIN("mail-notification", "5.4", "Mail Notification") mail-notification-5.4.dfsg.1/jb0000755000175000001440000000701111004460753016173 0ustar evilynuxusers#!/bin/sh # # JB, the Jean-Yves Lefort's Build System # Copyright (C) 2008 Jean-Yves Lefort # # This program 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 3 of the License, or # (at your option) any later version. # # This program 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 program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. maintainer_cflags="-g -fstrict-aliasing -Wall -Werror \ -Wformat-y2k \ -Wformat-security \ -Wno-format-zero-length \ -Wno-unused-parameter \ -Wfloat-equal \ -Wdeclaration-after-statement \ -Wendif-labels \ -Wpointer-arith \ -Wcast-align \ -Waggregate-return \ -Wmissing-noreturn \ -Wmissing-format-attribute \ -Wpacked \ -Wredundant-decls \ -Wnested-externs \ -Winline \ -Wno-pointer-sign \ -Wshadow" if test -z $jb_cc; then jb_cc=cc fi if test -n $enable_maintainer_mode; then jb_cflags="$jb_cflags $maintainer_cflags" fi if test -f jbsrc/jb.c; then build=false jb_c_sources= for f in jb-action.c jb-compile-options.c jb-config.c jb-feature.c jb-group.c jb-install-options.c jb-main.c jb-resource.c jb-tests.c jb-util.c jb-variable.c; do jb_c_sources="$jb_c_sources jbsrc/lib/src/core/$f" done jb_h_sources= for f in jb-action.h jb-compile-options.h jb-config.h jb-decls.h jb-feature.h jb-group.h jb-install-options.h jb-main.h jb-resource.h jb-tests.h jb.h jb-util.h jb-variable.h; do jb_h_sources="$jb_h_sources jbsrc/lib/src/core/$f" done jb_c_package_sources= jb_h_package_sources= # core includes for f in `grep "^#jb_include <.*>" jbsrc/jb.c | sed -e 's|^#jb_include <\(.*\)>|\1|'`; do jb_c_package_sources="$jb_c_package_sources jbsrc/lib/src/extras/$f.c" jb_h_package_sources="$jb_h_package_sources jbsrc/lib/src/extras/$f.h" done # package includes for f in `grep "^#jb_include \".*\"" jbsrc/jb.c | sed -e 's|^#jb_include "\(.*\)"|\1|'`; do jb_c_package_sources="$jb_c_package_sources jbsrc/$f.c" jb_h_package_sources="$jb_h_package_sources jbsrc/$f.h" done if test -f build/jbsrc/jb; then for f in jbsrc/jb.c $jb_c_sources $jb_h_sources $jb_c_package_sources $jb_h_package_sources; do if test $f -nt build/jbsrc/jb; then build=true break fi done else build=true fi if test $build = true; then echo "building jb..." mkdir -p build/jbsrc || exit 1 if ! gobject_cflags_libs=`pkg-config --cflags --libs 'gobject-2.0 >= 2.8.0' 2>/dev/null`; then echo "ERROR: the GLib library was not found" >&2 exit 1 fi sed -e 's|^#jb_include ["<]\(.*\)[">]|#include "\1.h"|' \ jbsrc/jb.c > build/jbsrc/jb.c || exit 1 if ! $jb_cc \ -o build/jbsrc/jb \ -Ijbsrc/lib/src/core -Ijbsrc/lib/src/extras -Ijbsrc \ -DG_LOG_DOMAIN="\"jb\"" \ -DJB_SOURCES="\"$jb_c_sources $jb_h_sources\"" \ -DJB_PACKAGE_SOURCES="\"$jb_c_package_sources $jb_h_package_sources\"" \ $gobject_cflags_libs \ $jb_cflags \ $jb_cppflags \ $jb_ldflags \ build/jbsrc/jb.c \ $jb_c_sources \ $jb_c_package_sources \ $jb_libs; then echo "ERROR: cannot build jb" >&2 exit 1 fi fi exec build/jbsrc/jb "$@" else echo "ERROR: jb must be run from the toplevel directory" >&2 exit 1 fi mail-notification-5.4.dfsg.1/NEWS0000644000175000001440000010233111015312205016340 0ustar evilynuxusers5.4 May 22, 2008 * Core changes: * Messages that the user has considered as read are now remembered across sessions (#229167) * IMAP changes: * A regression introduced in 5.1 caused some read messages to be reported as unread: fixed (#230425) * Updated translations: * French * Polish (Tomasz Sałaciński) 5.3 April 27, 2008 * Core changes: * Compile options are now passed to the C compiler in the appropriate order, fixing the build with options such as -Wl,--as-needed (#214450) * The "connection to the D-Bus session was lost" error dialog is no longer displayed on logout * The .desktop files have been improved (#204466) * IMAP, Maildir and POP3 changes: * The message caching code introduced in 5.1 sometimes caused a crash: fixed (#210915) * Evolution changes: * A regression introduced in 5.1 caused a crash on 64-bit systems: fixed (#208149) * Windows Live Hotmail changes: * Spanish inbox support has been fixed (#214986) * Updated translations: * Spanish (Nacho Hermoso de Mendoza) 5.2 March 20, 2008 * Core changes: * GConf default values were no longer registered: fixed * The GConf sanity check code (which caused MN to refuse to run if some GConf default values are missing) was no longer compiled in: fixed 5.1 March 20, 2008 * Core changes: * The message count of the status icon was sometimes not properly redrawn: fixed (#185999) * Time settings are now entered using sliders; these sliders are non-linear and allow to easily choose an appropriate value without having to use the keyboard * The "mailbox name" and "delay between mail checks" mailbox settings have been moved to a separate tab, and are no longer modified as a side effect of modifying other settings (it could be confusing) * The cancel button of the mailbox properties dialog now works in a standard way: if the apply button was used, these changes are undone * The number of messages of the tooltip mail summary is now limited, via the /apps/mail-notification/popups/limit GConf key (#184487) * The transparency issue of the tooltip mail summary (https://savannah.nongnu.org/bugs/?19104) was still present: fixed * The interprocess communication code now uses D-Bus rather than Bonobo. This move was made because Bonobo suffers from a number of bugs and limitations, and is deprecated. * libeel is no longer used since its API is not stable (#180400) * The build system has been changed from the GNU Autotools to JB (the Jean-Yves Lefort's Build System) * IMAP, Maildir, mbox, MH, Mozilla, POP3, Sylpheed, Windows Live Hotmail and Yahoo! Mail changes: * The GConf setting /apps/mail-notification/fallback-charsets has been added. This setting is used when attempting to convert invalidly encoded message headers to UTF-8. Previously, the hardcoded fallback encoding was ISO8859-1, but changes in GMime 2.2.7 broke the fallback code. * IMAP, Maildir and POP3 changes: * Bandwidth usage has been reduced (message headers are now cached) * IMAP and POP3 changes: * SSL/TLS error messages are now more detailed * Sylpheed and Maildir changes: * Message popup actions are now executed in a separate thread, to avoid blocking the user interface * Maildir changes: * The "delete message" dialog (which is displayed when a message cannot be moved to the trash) could disappear if the mailbox changed: fixed * MH changes: * xmh mailboxes containing no new mail are now properly detected as MH mailboxes (#196929, patch by Peter Kjellerstedt) * Windows Live Hotmail changes: * Account languages other than English are now supported. Support was added for Brazilian Portuguese, Danish, Dutch, Finnish, French, German, Italian, Norwegian, Polish, Portuguese, Spanish, Swedish (#185993). * Folder names containing non-ASCII characters are now handled properly * Yahoo! Mail changes: * Folder names containing ISO8859-1 characters in the range 128-255 are now handled properly * Evolution changes: * When Evolution is not running, it is now monitored passively rather than checked every second. This change was made possible by the switch from Bonobo to D-Bus. * The "delay between mail checks" option is no longer used (previously, it was only used when the Evolution folder was not found, but not even that is necessary) * Updated translations: * French * Serbian (Filip Miletic) * Spanish (Nacho Hermoso de Mendoza) * Swedish (Daniel Nylander) 5.0 January 4, 2008 * Core changes: * The tooltip mail summary now respects the GTK+ theme colors (#177067) * The "Sent:" fields of the tooltip are now updated only once per second, when the second changes (previously, they were updated twice per second at no precise point in time, so they could lag behind the clock for as much as half a second) * IMAP and POP3 changes: * The build no longer fails when SSL/TLS is disabled * Updated translations: * Serbian (Filip Miletic) * Swedish (Daniel Nylander) * New translations: * Spanish (Nacho Hermoso de Mendoza) --- Note: below, bug numbers refer to the old bug tracker (https://savannah.nongnu.org/bugs/?group=mailnotify). --- 5.0 Release Candidate 1 November 27, 2007 * Core changes: * A "Play a sound when new mail arrives" option has been added * Yahoo! Mail support has been added (requires fetchyahoo) * Windows Live Hotmail support has been added (requires GetLive) * A "consider new mail as read" action has been added (#18241) * An optional message count has been added over the icon (#18241) * The "Display the properties dialog" click action was not very useful and has been removed * The size of the status icon is now dynamically adjusted when the size of the notification area changes * The mailbox list icon selection algorithm has been made more coherent; the "timer" icon was confusing and has been removed * In order to simplify the properties dialog, several options have been removed (they are however still available in GConf) * The "Delay between mail checks" spin buttons did not retain a value typed in manually: fixed (#19379) * If a mailbox was added or removed while the "Test messages" option was enabled, a bogus mailbox was added to the configuration file: fixed * If some GConf default values are missing, MN will now refuse to run. This ensures that MN will not behave unexpectedly because of unproper installation. * The simultaneous number of popups is now limited (/apps/mail-notification/popups/limit) * New messages are no longer cleared when a mailbox error occurs. This way, already shown message popups will not unduly reappear after the error is unset (https://bugs.launchpad.net/ubuntu/+source/mail-notification/+bug/78487). * Message popups are now closed when MN exits * Minor bugs have been fixed (#20266, #20352, #20353) * Mail Notification is now licensed under the terms of the GNU General Public License version 3 * The documentation is now licensed under the terms of the GNU Free Documentation License version 1.2 * Gmail, IMAP and POP3 changes: * Passwords are now encrypted, using GNOME Keyring. Note that I do not endorse the flawed GNOME Keyring approach of granting passwords an encryption-worth status while ignoring other sensitive data. Furthermore, at the time of this writing, GNOME Keyring does not seem to prevent the memory it uses for storing the passwords from being swapped out to disk. However, despite these flaws, it has been observed that GNOME Keyring has beneficial psychological effects on some users. For increased psychological well-being, MN even moves the plain text passwords it finds in mailboxes.xml to the keyring. * Filling in the username in the mailbox properties is now mandatory again (it had been optional since 2.0) * IMAP and POP3 changes: * The "Connect to untrusted server?" dialog is now closed when the mailbox is removed * Gmail changes: * Label support has been added * IMAP changes: * IMAP URLs (RFC 2192) having no path component are now handled properly again * POP3 changes: * The RSA MD5 implementation has been replaced by the glibc implementation because the RSA license is incompatible with the GPL (#21138) * Maildir changes: * The delete message action has been implemented * MH changes: * Race conditions with the MDA and MUA are now avoided, using a delay-based workaround * Evolution changes: * The Evolution 2.12 API change which caused the build to fail has been adapted to; as a consequence, MN now requires Evolution 2.12 or superior (#20904) * The configure script now properly uses the unversioned evolution-plugin package which was introduced with Evolution 2.10 (#20904, #20124) * Sylpheed changes: * The delay-based race condition avoidance code now works regardless of the underlying file monitor implementation * Claws Mail mailboxes (which contain both a .mh_sequences and a .sylpheed_mark file) are now detected as Sylpheed mailboxes rather than as MH mailboxes: this removes the need to use rcvstore from procmail * The --enable-sylpheed-locking configure option has been removed: the appropriate race condition avoidance strategy is now automatically detected at runtime * Updated translations: * French * Polish (Tomasz Sałaciński) 4.1 June 26, 2007 * Core changes: * The at-spi breakage which caused MN to hang at startup has been worked around (#19189) * The order and presence of the message popup actions is now configurable via the /apps/mail-notification/popups/actions GConf key * A delete message action has been added (#19696, based on a patch by David Woodhouse) * Command line options are now parsed with the GOption framework * The tooltip mail summary is now truly transparent (#19104) * The src/automake.xml file is now distributed * The documentation is now licensed under the terms of the GNU Free Documentation License * mbox, MH, Maildir, POP3, IMAP, Mozilla and Sylpheed changes: * Messages marked as spam (by SpamAssassin or bogofilter) are now ignored * MH, Maildir and Sylpheed changes: * Mailbox type change events are now properly handled on all systems, regardless of the underlying file monitor implementation * POP3 and IMAP changes: * If SSL/TLS support is not compiled in but a mailbox is configured to use SSL/TLS, MN now refuses to login (#20131) * OpenSSL is now instructed to lookup CA certificates from default locations (#19578) * The SSL/TLS certificate verification code now checks if the user-provided server name matches one of the certificate-provided server names (RFC 3501 11.1) * OpenSSL locking is now enabled, and the configure script now ensures that OpenSSL supports multi-threading (#19643) * POP3 changes: * An interoperability issue has been fixed (#19934) * IMAP changes: * Two interoperability issues have been fixed (#18865, #20132) * Uncompliant servers which do not send an untagged SEARCH response are now tolerated (#18876) * Evolution changes: * The 2.11/2.12 branch is now supported, and the mail-notification plugin has been renamed so that it does not conflict with the new Evolution plugin of the same name (#20124) * Updated translations: * French * Czech (Pav Lucistnik) * Dutch (Marcel J. Zwiebel) * Swedish (Daniel Nylander) * Serbian (Filip Miletic) 4.0 January 17, 2007 No major changes. 4.0 Release Candidate 2 December 7, 2006 * Evolution changes: * An infinite loop has been fixed (see https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=208774, thanks to David Woodhouse for his help) * Updated translations: * Serbian (Filip Miletic) * Czech (Pav Lucistnik) * Dutch (Marcel J. Zwiebel) * Brazilian Portuguese (Claudio André) 4.0 Release Candidate 1 November 27, 2006 * Core changes: * The mail summary popup has been replaced by libnotify message popups. These new message popups also provide actions such as "Open" and "Mark as Spam" * Mozilla products (Mozilla, SeaMonkey, Thunderbird, ...) mailboxes are now supported * The mailbox properties dialog has been redesigned * A new click action has been added: open the latest message * A MN icon set has been designed by Josef Vybíral (#18198) * A --print-summary command line argument has been added, allowing to access message data from an external program * A mail-changed GConf command setting has been added (it is executed when new mail is received or when a message is read) * Handling of the GNOME mail reader command: instead of stripping %s, the first word of the command is now used; moreover, mozilla and evolution are now handled specially (#18257) * The /desktop/gnome/url-handlers/mailto/needs_terminal GConf key is now respected * Could no longer close the about dialog with recent GTK+ versions: fixed (#18252) * POP3 changes: * Messages kept on the server but marked as read are now discarded. Note that this only works with servers which send Status headers; most don't (#18164). * Evolution changes: * All mailboxes now share the same CORBA connection to Evolution (reduces resource usage) * A mailbox properties dialog crash has been fixed (#18228) * Some memory leaks have been fixed * Support for the Evolution 2.9/2.10 branch has been added * The Evolution 2.2 branch is no longer supported * Updated translations: * French * Serbian (Filip Miletic) * New translations: * Catalan (Topi) 3.0 June 14, 2006 * Updated translations: * Japanese (Hiroshi Hasebe) 3.0 Release Candidate 2 May 18, 2006 * Evolution changes: * Evolution crashed when a message without Subject or From header was received: fixed * Mail Notification could crash when removing an Evolution mailbox: fixed * Updated translations: * Japanese (Hiroshi Hasebe) * Czech (Pav Lucistnik) * Dutch (Marcel J. Zwiebel) * New translations: * Swedish (Daniel Nylander) 3.0 Release Candidate 1 May 16, 2006 * Core changes: * An alternate, compact mail summary has been added * A "Display seen messages" option has been added * The status icon can now be displayed permanently * The "Delay between mail checks" option is now mailbox-specific * The properties dialog has been reorganized * The main window has been removed * The status icon is now activated with a single click (http://bugzilla.gnome.org/show_bug.cgi?id=148829) * The GTK+ bugs (http://bugzilla.gnome.org/show_bug.cgi?id=321886) which caused occasional crashes have been worked around * If the MAIL environment variable is not defined or invalid, the system mailbox is now looked up in /var/spool/mail/username and /var/mail/username (based on a patch from Benoît Rouits) * Since ~/.gnome2/mail-notification/mailboxes.xml may contain sensitive information, it is now saved with permissions set to 0600 (useful for systems where home directories have lax permissions) * The "cannot enable immediate notification" error dialog has been removed * The --list-features command line option has been removed (feature information is now displayed in the output of the --version option) * The message handling performance has been improved * If there are no mailboxes on startup, the properties dialog is now displayed * The "Start Mail Notification on GNOME login" option no longer worked with GNOME >= 2.14 and has been removed: a .desktop file is now installed in the xdg autostart directory instead * Since support for non-system sound events has been removed from GNOME 2.14, the mail-notification.soundlist file is no longer installed * The mail reader setting has been removed; the mail reader configured in GNOME (Desktop -> Preferences -> Preferred Applications) will now be used * The tooltip width is now limited to the screen width * When coupled with a patched GNOME Panel (as shipped by FreeBSD and Debian, for instance), the status icon now supports panel transparency (patch forwarded by Bernat Tallaferro) * mbox, Maildir, POP3, IMAP, Evolution and Sylpheed changes: * Messages are now classified as unseen and seen; seen messages can be ignored by unchecking the "Display seen mail" option * mbox changes: * Compressed mailboxes (gzip and bzip2) are now handled transparently, and support immediate notification * POP3, IMAP and Gmail changes: * A regression which allowed mail checks to overlap has been fixed * POP3 and IMAP changes: * If the server advertises the STLS/STARTTLS capability but replies ERR/BAD when the STLS/STARTTLS command is issued, Mail Notification now logs out instead of proceeding * If multiple mailboxes have the same type, hostname, port, connection type and username, Mail Notification will now detect that the mailboxes share the same account and will only prompt for the password once per session (when the password is not entered in the properties dialog, that is) * POP3 changes: * Non-UTF-8 server responses are now accepted * IMAP changes: * Non-ASCII server responses are now accepted (these responses violate RFC 3501, but we follow the RFC 793 robustness principle "be liberal in what you accept"); fixes connection problems with internationalized Exchange servers, which violate RFC 3501 by sending non-ASCII characters in their greeting message * Empty continuation responses are now allowed (fixes authentication with some SASL mechanisms) * Play nice with uncompliant servers by using BODY.PEEK rather than BODY, so that they do not set the \Seen flag (patch from Jacob Berkman) * The IDLE mode is now cycled every 29 minutes, as advised by RFC 2177 * Evolution changes: * Support for the Evolution 2.4 and 2.6 branches has been added; untested support for the Evolution 2.7/2.8 branch has been added; the Evolution source tree is no longer needed for Evolution >= 2.4 * Sylpheed changes: * With the help of a Sylpheed patch, Mail Notification can now reliably avoid race conditions which could occur when Sylpheed was running (see the --enable-sylpheed-locking discussion in the INSTALL file) * Updated translations: * French * New translations: * Czech (Pav Lucistnik) * Brazilian Portuguese (Claudio André) * Dutch (Marcel J. Zwiebel) * Japanese (Hiroshi Hasebe) 2.0 August 9, 2005 * Core changes: * Evolution support has been added * Mailboxes can now be assigned a custom name * For greater flexibility, mailboxes configuration is now stored in ~/.gnome2/mail-notification/mailboxes.xml (previously, it was stored in the GConf database) * The mailbox list widget has been redesigned * The mailbox properties dialog has been redesigned * Copying a mailbox to the clipboard does not make it available to Nautilus anymore: that behaviour was confusing and useless. However, pasting files copied from Nautilus still works. * If a mailbox requires authentication and the necessary credentials are not provided in the mailbox properties dialog, Mail Notification now lets GNOME prompt the user for the credentials * A test popup can now be displayed from the Mail Summary Popup properties tab * The --report command line option has been removed * The Mail Notification item is now also listed in the GNOME >= 2.10 Preferences menu * The welcome dialog has been removed * A few icons have been modified * The third-party libegg code has been updated * Now requires GTK+ version 2.6.0 or superior * Minor fixes and cleanups * mbox, MH, Maildir and Sylpheed changes: * Immediate notification did not work properly with fast kernel notifiers (kqueue, inotify, dnotify, ...): fixed * Unseekable files are now supported * Mailbox type changes are now detected and handled (previously, Mail Notification had to be restarted if a mailbox changed type) * The location of the system mailbox is now resolved at runtime rather than when the mailbox is added (eases sharing the Mail Notification settings across multiple computers) * mbox changes: * When immediate notification is not available, the mailbox is now also checked when its size or ctime changes (previously, it was only checked if its mtime had changed) * Sylpheed changes: * Mail Notification now tries to avoid race conditions which may occur while Sylpheed is being used * Mark file errors are not ignored anymore * A memory leak has been fixed * POP3, IMAP and Gmail changes: * The username can now also be left out, and will be prompted when needed * POP3 and IMAP changes: * Non-UTF-8 characters are now escaped from uncompliant server responses before being displayed in the user interface * If the system resolver is not reentrant, getaddrinfo()/getnameinfo() calls are now serialized * The Cyrus SASL library is now initialized only once, since multiple sasl_client_init()/sasl_done() invocations may cause problems (another benefit is that it allows the SASL library to use the POP3 initial client response feature, which saves a roundtrip during the SASL authentication exchange) * When the authentication mechanism option is set to "autodetect", Mail Notification will now try to authenticate using each server-supported SASL mechanism * Mail Notification was incorrectly disallowing empty SASL server challenges, although they are legit: fixed * POP3 changes: * The TOP optional command is now supported. This solves some issues with POP3 servers (for instance, pop.gmail.com) which incorrectly archive mails that have been accessed using the RETR command. * Initial SASL client responses are now handled properly (passed as an argument to the AUTH command rather than in the SASL authentication exchange) * IMAP changes: * If, while idling, the server abruptly drops the connection, Mail Notification now reconnects rather than considering it an error * When idling, Mail Notification now only wakes up if it receives a response indicating that the mailbox might have changed * By default, Mail Notification now avoids using the IDLE extension if the remote server software is known to have a broken IDLE implementation * UTF-8 mailbox names are now converted to modified UTF-7, as required by RFC 3501 * Gmail changes: * Functionality has been restored after the Gmail web site was modified; to prevent future disruptions and simplify the source code, the Gmail Atom feed (https://mail.google.com/mail/feed/atom) is now used * Now works even if the Gmail account language is not set to English * libsoup and ICU are no longer required * Updated translations: * French * Serbian (Filip Miletic) * German (Hendrik Brandt, Jens Seidel) 1.1 March 6, 2005 * IMAP changes: * is more tolerant towards uncompliant FETCH responses * ignores case of responses (RFC 3501) * makes sure the server responses are valid ASCII (RFC 3501) * Gmail changes: * properly converts timestamps (requires ICU) * handles timestamps from previous years * displays all the messages of a conversation * POP3 and IMAP changes: * does not loop infinitely when no password is specified, an authentication mechanism is specified and authentication fails * does not abort when a SASL authentication mechanism is specified and the server does not support any SASL authentication mechanism * POP3 and Gmail changes: * makes sure the server responses are valid UTF-8 * The mail summary dialog has been replaced by a main window, for controlling Mail Notification when the status icon is hidden * Added "update the mail status" double-click action * The tooltip mailbox lists (Mailboxes Having New Mail, Errors, Unsupported Mailboxes) are now sorted * GMime is now mandatory for mbox, MH, Maildir, Sylpheed, POP3 and IMAP mailbox support * The --quit command line argument has been added * Minor fixes and cleanups * Updated translations: * Polish (Maurycy Pawłowski-Wieroński) * Serbian (Filip Miletic) * Portuguese (Duarte Henriques) * German (Hendrik Brandt) 1.0 November 25, 2004 * Some minor IMAP issues have been fixed * Some IMAP servers did not properly support the IDLE extension, so it can now be disabled in the mailbox properties * If the POP3 or IMAP password is left blank, it will now be prompted only if needed * When MIME support was disabled, the Sylpheed backend was not considering unread messages as new: fixed * Updated translations: * Serbian (Filip Miletic) * German (Hendrik Brandt) * Portuguese (Duarte Henriques) * New translations: * Polish (Tomasz Sarota-Raczek) 0.99 November 15, 2004 * The IMAP capabilities sent in a PREAUTH, AUTHENTICATE or LOGIN response were ignored, and a CAPABILITY command was not re-issued after a successful authentication: fixed * Added a "Display mail summary in tooltip" option 0.8.1 November 4, 2004 * Mail summary popup changes: * do not recreate it when updating its contents: removes some flicker * added a workaround for a Metacity bug which sometimes misplaced the popup * the text fonts can now be configured from the properties dialog * Now compiles cleanly even when -fstrict-aliasing is in use * Some additional workarounds for http://bugzilla.gnome.org/show_bug.cgi?id=64764 have been added: fixes a few random crashes * Some widgets have been named, so that they can easily be matched in a GTK+ resource file * The status icon could not be customized from a resource file: fixed * Updated translations: * Serbian (Filip Miletic) 0.8.0 October 31, 2004 * The double-click action can now be customized * A mail reader can now be launched * IMAP IDLE support has been implemented * The mail summary layout has been improved * The mail summary is now also displayed in the tooltip * The tooltip now supports keyboard activation * A mail summary popup option allowing to only display recent mail has been added * A bug which caused SASL authentication to sometimes fail has been fixed * The Gmail parser was getting confused by special strings embedded in message fields: fixed 0.7.1 October 25, 2004 * Gmail changes: * does not crash when a GNOME proxy is set * handles starred and labelled messages * ignores non-inbox messages * messages were considered unseen on each check and the mail summary was always popped up: fixed * The POP3/IMAP/Gmail password can now be left blank (in such case, it will be prompted when needed and not be saved to permanent storage) * A command can now be executed when all mail has been read * The user interface now displays the IMAP folder name (unless it is inbox) * The tooltip now displays message counts * Minor fixes and cleanups * Updated translations: * Serbian (Filip Miletic) * German (Hendrik Brandt) * Portuguese (Duarte Henriques) 0.7.0 October 6, 2004 * Binaries compiled with GCC 3.4.x were crashing in various places: fixed * Fixed a vulnerability in the IMAP code (a malicious IMAP server could trigger a null pointer dereference by sending an invalid reply) * Fixed a vulnerability in the Gmail code (a man in the middle attack could, with some libsoup configurations, trigger a null pointer indirection) * The properties dialog has been split into tabs * A mail summary has been added (requires GMime version 2.0 or superior) * Double-clicking on the icon now displays the mail summary (the double-clicked command has been removed) * The "new mail" command is now executed every time a mailbox receives one or more new messages * Tracks the latest Gmail change (reported by Vincent Noel) * Gmail support now requires libsoup version 2.2 or superior (which is part of GNOME 2.8) * The manual is now installed in the proper location (Pascal Giard, Christian Krause) * The --with-gconf-schema-file-dir configure argument was ignored: fixed (Julio M. Merino Vidal) * A few minor issues have been fixed * Some cleanups have been performed * The German translations have been updated (Hendrik Brandt) * Added Serbian translations (Filip Miletic) * Added Bulgarian translations (Vladimir Petkov) 0.6.2 September 9, 2004 * Added STARTTLS support to the IMAP backend * Added STLS support to the POP3 backend * Now prompts the user before connecting to untrusted SSL/TLS servers * Added a "Start Mail Notification on GNOME login" option * Added a "Blink on errors" option * Commands are now executed in the user's shell * The Gmail log is now dumped when --enable-info is in use * Added a --unset-obsolete-configuration command line argument * An obsolete mailbox list is now handled without being rewritten (a step towards full forward compatibility of GConf keys) * "SSL" is now called "SSL/TLS", as we provide SSLv2, SSLv3 and TLSv1 support * Fixed a typo in the MD5 code which prevented builds on some platforms (reported by Andy Shaw) * Automatic mailboxes were also polled: fixed * Added German translations (Hendrik Brandt) * Added Portuguese translations (Duarte Henriques) * A few minor issues have been fixed * Some cleanups have been performed * Now requires GNOME version 2.6 or superior 0.6.1 August 19, 2004 * File descriptor leaks in the Sylpheed and Maildir backends have been fixed * It was not possible to use some special characters (such as '@') in usernames, passwords etc (reported by Ronny Schoebel): now escapes URIs * Now properly quotes arguments to the IMAP LOGIN and STATUS commands * Gmail support didn't work in all situations: fixed (thanks to Phil Nelson for his help) * A first startup dialog has been added * A memory leak has been fixed * A few minor issues have been fixed 0.6.0 August 16, 2004 * Added IMAP support * Added SSL support for POP3 and IMAP (requires OpenSSL) * Added SASL authentication support for POP3 and IMAP (requires Cyrus SASL 2) * Added APOP authentication support * Gmail support has been fixed * If there is no new mail, the icon is now hidden * Now complies with the HIG 2.0 * Now installs a GNOME sound event * The user interface has been improved * The mail icon is now taken from the icon theme * The command line arguments have been modified * The POP3 handler now honours the LOGIN-DELAY capability * Objects are now generated with GOB * Some cleanups have been performed * A few minor bugs have been fixed * Does not depend on GNet anymore 0.5.0 July 21, 2004 * Added Gmail support (requires libsoup) * The user interface has been improved * Now supports IPv6 POP3 servers even if given as an IPv6 address rather than as a hostname * Now uses intltool * The manual has been improved * Added Russian translations for the .desktop file (submitted by Dan Korostelev) * The output of ./configure has been cleaned up * ChangeLog files were not being accurately maintained and are not shipped anymore 0.4.0 June 29, 2004 * Fixed a vulnerability in the POP3 code (a malicious POP3 server could overflow the stack with an invalid STAT reply) * Now uses automatic notification if available (requires FAM) * Now uses GnomeVFS for all I/O operations * Now supports drag and drop * The user interface has been improved * mbox detection is now stricter * Now handles non-Unicode filenames * Tries harder to hide POP3 passwords from the interface * A few minor bugs have been fixed * A few memory leaks have been fixed * Some code cleanups have been performed * Switched to Autoconf 2.59 and Automake 1.8.4 * Now requires GTK+ version 2.4.0 or superior 0.3.4 March 19, 2004 * Some minor UI tweaks have been performed * A minor bug has been fixed 0.3.3 March 12, 2004 * A bug in the mbox checking code has been fixed (reported by Pau Artigas) * A few minor bugs have been fixed * A few memory leaks have been fixed 0.3.2 December 24, 2003 * A bug in the Sylpheed checking code has been fixed * Restarting notification-area-applet is now handled properly * libglade is now used instead of code generation * Some code cleanups have been performed 0.3.1 October 20, 2003 * A few minor bugs have been fixed 0.3.0 October 2, 2003 * Major code cleanup * Implemented Sylpheed and POP3 support * The file selection dialog now remembers its last path * Speed optimizations * In order to maintain UI responsiveness during mail checks, the application is now multi-threaded * Error messages are now displayed in a dialog box if the check has been launched interactively 0.2.0 September 24, 2003 * Implemented mbox and MH support * Added exhaustive error reporting * Enriched the documentation 0.1.0 September 18, 2003 * Is now a GNOME application * Added a graphical user interface (preferences dialog and popup menu) * Internationalization has been performed, and a French translation is already available * Switched to Autoconf 2.57 and Automake 1.7.5 0.0.1 July 20, 2003 * Initial release mail-notification-5.4.dfsg.1/COPYING-DOCS0000644000175000001440000004766310722400157017452 0ustar evilynuxusers GNU Free Documentation License Version 1.2, November 2002 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements". 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. mail-notification-5.4.dfsg.1/COPYING0000644000175000001440000010451310722320634016711 0ustar evilynuxusers GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program 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 3 of the License, or (at your option) any later version. This program 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 program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . mail-notification-5.4.dfsg.1/TRANSLATING0000644000175000001440000000703310747645102017375 0ustar evilynuxusers=============================================================================== Translating Mail Notification =============================================================================== Index 0. About this document 1. Correctness 2. Starting up 3. Comments 4. Formatting 5. Capitalization 6. Context 7. Access keys 8. Application name 0. About this document $Id: TRANSLATING,v 1.7 2008-01-04 15:38:21 jylefort Exp $ Copyright (C) 2005-2008 Jean-Yves Lefort. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.2 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at http://www.gnu.org/licenses/fdl.html or in the file COPYING-DOCS distributed with this manual. 1. Correctness To translate Mail Notification, you should have a good understanding of the English language, and excellent writing skills in the target language. Grammatical, spelling and semantic errors should be avoided as much as possible. 2. Starting up To generate a new .po template, type the following commands: cd po intltool-update -p msginit -l LL_CC LL must be a language code, and CC must be a country code, for instance: msginit -l it_IT Consult the gettext and intltool documentation for more informations. 3. Comments Translator hints are prefixed with "translators:". Other comments must be ignored (the extraction tools blindly copy source code comments which precede translatable messages). 4. Formatting Newlines (\n) must be preserved. Formatting elements must be copied literally, but their content must be translated. For instance, the message: Fonts translates to French as: Polices de caractères 5. Capitalization Mail Notification follows the GNOME capitalization guidelines: http://developer.gnome.org/projects/gup/hig/2.0/design-text-labels.html#layout-capitalization Messages which use header capitalization are marked with the comment "translators: header capitalization". The header capitalization rule of the target language, if any, must be applied to these messages. 6. Context Some messages are prefixed with context information (separated from the actual message by the pipe character, "|"), for instance: msgid "icon tooltip's mail summary layout|Co_mpact" The purpose of the context information is to allow different translations of the same English message. The context must be removed from the translations, as in: msgid "icon tooltip's mail summary layout|Co_mpact" msgstr "_Compact" msgid "popup's mail summary layout|Co_mpact" msgstr "_Compacte" 7. Access keys Characters following an underline are access keys. The user can activate the control labelled by the message by pressing Alt-x, where x is the character following the underline. When a message contains an access key, assign an appropriate access key to the translation by consulting the "Choosing Access Keys" section of the GNOME Human Interface Guidelines: http://developer.gnome.org/projects/gup/hig/2.0/input-keyboard.html#choosing-access-keys 8. Application name The application name ("Mail Notification") should be translated. For historical reasons, in English, it is treated as a proper noun and capitalized accordingly. However, in the target language, it should be translated as a common noun (such as "the washing machine" or "the mail notifier"). mail-notification-5.4.dfsg.1/build/0000755000175000001440000000000011015313030016735 5ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/0000755000175000001440000000000011015313037017533 5ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-imap-mailbox.c0000644000175000001440000025171611015312646022707 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include "mn-imap-mailbox.h" #include "mn-imap-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 42 "src/mn-imap-mailbox.gob" #include #include #include #include #include #include #include "mn-mailbox-private.h" #include "mn-authenticated-mailbox-private.h" #include "mn-pi-mailbox-private.h" #include "mn-util.h" #include "mn-message-mime.h" #define HAS_CURRENT_TAG(response, priv) (! strcmp((response)->tag, (priv)->tag)) #define IS(response, token) (! g_ascii_strcasecmp((response)->response, (token))) #define IS_OK(response) IS(response, "OK") #define IS_NO(response) IS(response, "NO") #define IS_BAD(response) IS(response, "BAD") #define IS_BYE(response) IS(response, "BYE") enum { STATE_GREETING = MN_CLIENT_SESSION_INITIAL_STATE, STATE_CAPABILITY, #if WITH_SSL STATE_STARTTLS, #endif #if WITH_SASL STATE_AUTHENTICATE, #endif STATE_LOGIN, STATE_EXAMINE, STATE_SEARCH_UNSEEN, STATE_SEARCH_RECENT, STATE_FETCH_UID, STATE_FETCH, STATE_IDLE, STATE_LOGOUT }; typedef enum { IDLE_STATE_PRE_IDLE, IDLE_STATE_IDLE, IDLE_STATE_POST_IDLE } IdleState; struct _MNClientSessionPrivate { MN_PI_MAILBOX_SESSION_PRIVATE; MNIMAPMailbox *self; const char *server_software; gboolean server_software_supports_idle; int numeric_tag; char tag[5]; char **capabilities; GSList *auth_mechanisms; gboolean authenticated; /* * RFC 3501 specifies that UIDVALIDITY is a 32-bit number, but we do * not need it to be one. Use a string for interoperability purposes * (in case some server vendors did not read the RFC properly). */ char *uidvalidity; int num_errors; GHashTable *messages; #if WITH_SSL gboolean starttls_completed; #endif #if WITH_SASL GSList *sasl_remaining_mechanisms; const char *sasl_mechanism; #endif IdleState idle_state; unsigned int idle_inactivity_timeout_id; gboolean idle_inactivity; gboolean could_idle; /* could idle at least once */ }; struct _MNClientSessionResponse { char *continuation; char *tag; char *response; char *code; char *arguments; }; typedef struct { MNMessage *message; char *mid; int number; MNMessageFlags flags; } MessageInfo; int mn_imap_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES] = { 143, 143, 993 }; /* variable taken from Evolution (camel-utf8.c) */ static const char *utf7_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,"; #line 133 "mn-imap-mailbox.c" static const GEnumValue _mn_imap_mailbox_use_idle_values[] = { { MN_IMAP_MAILBOX_USE_IDLE_NEVER, (char *)"MN_IMAP_MAILBOX_USE_IDLE_NEVER", (char *)"never" }, { MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT, (char *)"MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT", (char *)"autodetect" }, { MN_IMAP_MAILBOX_USE_IDLE_ALWAYS, (char *)"MN_IMAP_MAILBOX_USE_IDLE_ALWAYS", (char *)"always" }, { 0, NULL, NULL } }; GType mn_imap_mailbox_use_idle_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) type = g_enum_register_static ("MNIMAPMailboxUseIDLE", _mn_imap_mailbox_use_idle_values); return type; } /* self casting macros */ #define SELF(x) MN_IMAP_MAILBOX(x) #define SELF_CONST(x) MN_IMAP_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_IMAP_MAILBOX(x) #define TYPE_SELF MN_TYPE_IMAP_MAILBOX #define SELF_CLASS(x) MN_IMAP_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_IMAP_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNIMAPMailbox Self; typedef MNIMAPMailboxClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 179 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_class_init (MNIMAPMailboxClass * class); #line 168 "mn-imap-mailbox.c" #line 185 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_init (MNIMAPMailbox * self); #line 171 "mn-imap-mailbox.c" #line 190 "src/mn-imap-mailbox.gob" static void ___3_mn_imap_mailbox_seal (MNMailbox * mailbox); #line 174 "mn-imap-mailbox.c" #line 219 "src/mn-imap-mailbox.gob" static MNMailbox * ___4_mn_imap_mailbox_parse_uri (MNMailbox * dummy, const char * uri); #line 177 "mn-imap-mailbox.c" #line 289 "src/mn-imap-mailbox.gob" static gboolean mn_imap_mailbox_split_uri_location (const char * location, int maxlen, char * hostport, char * path, gboolean * has_path); #line 180 "mn-imap-mailbox.c" #line 316 "src/mn-imap-mailbox.gob" static void ___6_mn_imap_mailbox_removed (MNMailbox * mailbox); #line 183 "mn-imap-mailbox.c" #line 332 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 186 "mn-imap-mailbox.c" #line 362 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 189 "mn-imap-mailbox.c" #line 369 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 192 "mn-imap-mailbox.c" #line 404 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 195 "mn-imap-mailbox.c" #line 416 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 198 "mn-imap-mailbox.c" #line 452 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 201 "mn-imap-mailbox.c" #line 485 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 204 "mn-imap-mailbox.c" #line 545 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 207 "mn-imap-mailbox.c" #line 574 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 210 "mn-imap-mailbox.c" #line 602 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 213 "mn-imap-mailbox.c" #line 620 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 216 "mn-imap-mailbox.c" #line 662 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_search_unseen_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 219 "mn-imap-mailbox.c" #line 676 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_search_unseen_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 222 "mn-imap-mailbox.c" #line 733 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_search_recent_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 225 "mn-imap-mailbox.c" #line 740 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_search_recent_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 228 "mn-imap-mailbox.c" #line 800 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_fetch_uid_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 231 "mn-imap-mailbox.c" #line 820 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_build_fetch_uid_set_cb (gpointer key, gpointer value, gpointer user_data); #line 234 "mn-imap-mailbox.c" #line 832 "src/mn-imap-mailbox.gob" static char * mn_imap_mailbox_parse_fetch_uid_response (const char * response); #line 237 "mn-imap-mailbox.c" #line 855 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_fetch_uid_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 240 "mn-imap-mailbox.c" #line 925 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 243 "mn-imap-mailbox.c" #line 949 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_build_fetch_set_cb (gpointer key, gpointer value, gpointer user_data); #line 246 "mn-imap-mailbox.c" #line 964 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 249 "mn-imap-mailbox.c" #line 1060 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 252 "mn-imap-mailbox.c" #line 1103 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 255 "mn-imap-mailbox.c" #line 1201 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 258 "mn-imap-mailbox.c" #line 1208 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 261 "mn-imap-mailbox.c" #line 1228 "src/mn-imap-mailbox.gob" static void ___21_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox); #line 264 "mn-imap-mailbox.c" #line 1337 "src/mn-imap-mailbox.gob" static MNClientSessionResponse * mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv); #line 267 "mn-imap-mailbox.c" #line 1413 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 270 "mn-imap-mailbox.c" #line 1426 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_default_handler (MNClientSessionResponse * response, MNClientSessionPrivate * priv, int error_code_when_bye); #line 273 "mn-imap-mailbox.c" #line 1437 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 276 "mn-imap-mailbox.c" #line 1458 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 279 "mn-imap-mailbox.c" #line 1475 "src/mn-imap-mailbox.gob" static gboolean mn_imap_mailbox_idle_inactivity_timeout_cb (gpointer data); #line 282 "mn-imap-mailbox.c" #line 1496 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...) G_GNUC_PRINTF(2, 3); #line 285 "mn-imap-mailbox.c" #line 1516 "src/mn-imap-mailbox.gob" static gboolean mn_imap_mailbox_session_handle_capability_code (MNClientSessionPrivate * priv, MNClientSessionResponse * response); #line 288 "mn-imap-mailbox.c" #line 1537 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities); #line 291 "mn-imap-mailbox.c" #line 1564 "src/mn-imap-mailbox.gob" static gboolean mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const char * capability); #line 294 "mn-imap-mailbox.c" #line 1579 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv); #line 297 "mn-imap-mailbox.c" #line 1603 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv); #line 300 "mn-imap-mailbox.c" #line 1643 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_login); #line 303 "mn-imap-mailbox.c" #line 1689 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSessionResponse * greeting_response, MNClientSessionPrivate * priv); #line 306 "mn-imap-mailbox.c" #line 1713 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_session_got_messages (MNClientSessionPrivate * priv); #line 309 "mn-imap-mailbox.c" #line 1751 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_get_messages_list_cb (gpointer key, gpointer value, gpointer user_data); #line 312 "mn-imap-mailbox.c" #line 1761 "src/mn-imap-mailbox.gob" static MessageInfo * mn_imap_mailbox_session_get_message_info (MNClientSessionPrivate * priv, int number); #line 315 "mn-imap-mailbox.c" #line 1768 "src/mn-imap-mailbox.gob" static MessageInfo * mn_imap_mailbox_session_ensure_message_info (MNClientSessionPrivate * priv, int number); #line 318 "mn-imap-mailbox.c" #line 1784 "src/mn-imap-mailbox.gob" static MessageInfo * mn_imap_mailbox_message_info_new (int number); #line 321 "mn-imap-mailbox.c" #line 1795 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_message_info_free (MessageInfo * info); #line 324 "mn-imap-mailbox.c" #line 1812 "src/mn-imap-mailbox.gob" static char * mn_imap_mailbox_quote (const char * str); #line 327 "mn-imap-mailbox.c" #line 1837 "src/mn-imap-mailbox.gob" static char * mn_imap_mailbox_utf8_to_imap_utf7 (const char * str); #line 330 "mn-imap-mailbox.c" #line 1896 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_imap_utf7_closeb64 (GString * out, guint32 v, guint32 i); #line 333 "mn-imap-mailbox.c" #line 1932 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_lock (MNIMAPMailbox * self); #line 336 "mn-imap-mailbox.c" #line 1938 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_unlock (MNIMAPMailbox * self); #line 339 "mn-imap-mailbox.c" enum { PROP_0, PROP_MAILBOX, PROP_USE_IDLE_EXTENSION }; /* pointer to the class of our parent */ static MNPIMailboxClass *parent_class = NULL; /* Short form macros */ #define self_split_uri_location mn_imap_mailbox_split_uri_location #define self_handle_greeting_cb mn_imap_mailbox_handle_greeting_cb #define self_enter_capability_cb mn_imap_mailbox_enter_capability_cb #define self_handle_capability_cb mn_imap_mailbox_handle_capability_cb #define self_enter_starttls_cb mn_imap_mailbox_enter_starttls_cb #define self_handle_starttls_cb mn_imap_mailbox_handle_starttls_cb #define self_enter_authenticate_cb mn_imap_mailbox_enter_authenticate_cb #define self_handle_authenticate_cb mn_imap_mailbox_handle_authenticate_cb #define self_enter_login_cb mn_imap_mailbox_enter_login_cb #define self_handle_login_cb mn_imap_mailbox_handle_login_cb #define self_enter_examine_cb mn_imap_mailbox_enter_examine_cb #define self_handle_examine_cb mn_imap_mailbox_handle_examine_cb #define self_enter_search_unseen_cb mn_imap_mailbox_enter_search_unseen_cb #define self_handle_search_unseen_cb mn_imap_mailbox_handle_search_unseen_cb #define self_enter_search_recent_cb mn_imap_mailbox_enter_search_recent_cb #define self_handle_search_recent_cb mn_imap_mailbox_handle_search_recent_cb #define self_enter_fetch_uid_cb mn_imap_mailbox_enter_fetch_uid_cb #define self_build_fetch_uid_set_cb mn_imap_mailbox_build_fetch_uid_set_cb #define self_parse_fetch_uid_response mn_imap_mailbox_parse_fetch_uid_response #define self_handle_fetch_uid_cb mn_imap_mailbox_handle_fetch_uid_cb #define self_enter_fetch_cb mn_imap_mailbox_enter_fetch_cb #define self_build_fetch_set_cb mn_imap_mailbox_build_fetch_set_cb #define self_handle_fetch_cb mn_imap_mailbox_handle_fetch_cb #define self_enter_idle_cb mn_imap_mailbox_enter_idle_cb #define self_handle_idle_cb mn_imap_mailbox_handle_idle_cb #define self_enter_logout_cb mn_imap_mailbox_enter_logout_cb #define self_handle_logout_cb mn_imap_mailbox_handle_logout_cb #define self_response_new_cb mn_imap_mailbox_response_new_cb #define self_response_free_cb mn_imap_mailbox_response_free_cb #define self_default_handler mn_imap_mailbox_default_handler #define self_pre_read_cb mn_imap_mailbox_pre_read_cb #define self_post_read_cb mn_imap_mailbox_post_read_cb #define self_idle_inactivity_timeout_cb mn_imap_mailbox_idle_inactivity_timeout_cb #define self_session_write mn_imap_mailbox_session_write #define self_session_handle_capability_code mn_imap_mailbox_session_handle_capability_code #define self_session_parse_capabilities mn_imap_mailbox_session_parse_capabilities #define self_session_has_capability mn_imap_mailbox_session_has_capability #define self_session_after_capability mn_imap_mailbox_session_after_capability #define self_session_authenticate mn_imap_mailbox_session_authenticate #define self_session_authenticate_fallback mn_imap_mailbox_session_authenticate_fallback #define self_session_detect_imapd mn_imap_mailbox_session_detect_imapd #define self_session_got_messages mn_imap_mailbox_session_got_messages #define self_get_messages_list_cb mn_imap_mailbox_get_messages_list_cb #define self_session_get_message_info mn_imap_mailbox_session_get_message_info #define self_session_ensure_message_info mn_imap_mailbox_session_ensure_message_info #define self_message_info_new mn_imap_mailbox_message_info_new #define self_message_info_free mn_imap_mailbox_message_info_free #define self_quote mn_imap_mailbox_quote #define self_utf8_to_imap_utf7 mn_imap_mailbox_utf8_to_imap_utf7 #define self_imap_utf7_closeb64 mn_imap_mailbox_imap_utf7_closeb64 #define self_build_name mn_imap_mailbox_build_name #define self_lock mn_imap_mailbox_lock #define self_unlock mn_imap_mailbox_unlock GType mn_imap_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNIMAPMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_imap_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNIMAPMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_imap_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_PI_MAILBOX, "MNIMAPMailbox", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNIMAPMailbox *)g_object_new(mn_imap_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNIMAPMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNIMAPMailbox * GET_NEW_VARG (const char *first, ...) { MNIMAPMailbox *ret; va_list ap; va_start (ap, first); ret = (MNIMAPMailbox *)g_object_new_valist (mn_imap_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::finalize" MNIMAPMailbox *self G_GNUC_UNUSED = MN_IMAP_MAILBOX (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 160 "src/mn-imap-mailbox.gob" if(self->_priv->mutex) { g_mutex_free ((gpointer) self->_priv->mutex); self->_priv->mutex = NULL; } #line 457 "mn-imap-mailbox.c" #line 164 "src/mn-imap-mailbox.gob" if(self->mailbox) { g_free ((gpointer) self->mailbox); self->mailbox = NULL; } #line 460 "mn-imap-mailbox.c" } #undef __GOB_FUNCTION__ #line 179 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED) { #line 468 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class; MNAuthenticatedMailboxClass *mn_authenticated_mailbox_class = (MNAuthenticatedMailboxClass *)class; g_type_class_add_private(class,sizeof(MNIMAPMailboxPrivate)); parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX); #line 190 "src/mn-imap-mailbox.gob" mn_mailbox_class->seal = ___3_mn_imap_mailbox_seal; #line 219 "src/mn-imap-mailbox.gob" mn_mailbox_class->parse_uri = ___4_mn_imap_mailbox_parse_uri; #line 316 "src/mn-imap-mailbox.gob" mn_mailbox_class->removed = ___6_mn_imap_mailbox_removed; #line 1228 "src/mn-imap-mailbox.gob" mn_authenticated_mailbox_class->authenticated_check = ___21_mn_imap_mailbox_authenticated_check; #line 486 "mn-imap-mailbox.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_string ("mailbox" /* name */, NULL /* nick */, NULL /* blurb */, "INBOX" /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_IGNORE_CASE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_LOAD_SAVE | G_PARAM_CONSTRUCT)); g_object_class_install_property (g_object_class, PROP_MAILBOX, param_spec); param_spec = g_param_spec_enum ("use_idle_extension" /* name */, NULL /* nick */, NULL /* blurb */, MN_TYPE_IMAP_MAILBOX_USE_IDLE /* enum_type */, MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE | G_PARAM_CONSTRUCT)); g_object_class_install_property (g_object_class, PROP_USE_IDLE_EXTENSION, param_spec); } { #line 180 "src/mn-imap-mailbox.gob" MN_MAILBOX_CLASS(class)->type = "imap"; MN_PI_MAILBOX_CLASS(class)->default_ports = mn_imap_mailbox_default_ports; #line 519 "mn-imap-mailbox.c" } } #undef __GOB_FUNCTION__ #line 185 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_init (MNIMAPMailbox * self G_GNUC_UNUSED) { #line 527 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_IMAP_MAILBOX,MNIMAPMailboxPrivate); #line 160 "src/mn-imap-mailbox.gob" self->_priv->mutex = g_mutex_new(); #line 532 "mn-imap-mailbox.c" { #line 186 "src/mn-imap-mailbox.gob" mn_mailbox_set_format(MN_MAILBOX(self), "IMAP"); #line 538 "mn-imap-mailbox.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::set_property" { MNIMAPMailbox *self G_GNUC_UNUSED; self = MN_IMAP_MAILBOX (object); switch (property_id) { case PROP_MAILBOX: { #line 165 "src/mn-imap-mailbox.gob" { char *old = self->mailbox; self->mailbox = g_value_dup_string (VAL); g_free (old); } #line 559 "mn-imap-mailbox.c" } break; case PROP_USE_IDLE_EXTENSION: { #line 173 "src/mn-imap-mailbox.gob" self->use_idle_extension = g_value_get_enum (VAL); #line 566 "mn-imap-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::get_property" { MNIMAPMailbox *self G_GNUC_UNUSED; self = MN_IMAP_MAILBOX (object); switch (property_id) { case PROP_MAILBOX: { #line 165 "src/mn-imap-mailbox.gob" g_value_set_string (VAL, self->mailbox); #line 597 "mn-imap-mailbox.c" } break; case PROP_USE_IDLE_EXTENSION: { #line 173 "src/mn-imap-mailbox.gob" g_value_set_enum (VAL, self->use_idle_extension); #line 604 "mn-imap-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 190 "src/mn-imap-mailbox.gob" static void ___3_mn_imap_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED) #line 624 "mn-imap-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->seal) \ (* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); } { #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::seal" { #line 192 "src/mn-imap-mailbox.gob" MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (! mailbox->runtime_name) mailbox->runtime_name = self_build_name(MN_AUTHENTICATED_MAILBOX(mailbox)->username, MN_PI_MAILBOX(mailbox)->hostname, self->mailbox); #if WITH_SSL if (MN_PI_MAILBOX(self)->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL) auth_mailbox->keyring_protocol = g_strdup("imaps"); else #endif auth_mailbox->keyring_protocol = g_strdup("imap"); }} #line 650 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 219 "src/mn-imap-mailbox.gob" static MNMailbox * ___4_mn_imap_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri) #line 657 "mn-imap-mailbox.c" #define PARENT_HANDLER(___dummy,___uri) \ ((MN_MAILBOX_CLASS(parent_class)->parse_uri)? \ (* MN_MAILBOX_CLASS(parent_class)->parse_uri)(___dummy,___uri): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::parse_uri" { #line 221 "src/mn-imap-mailbox.gob" int len; int buflen; char *username = NULL; char *authmech = NULL; char *hostname; char *path = NULL; int port; MNMailbox *mailbox; len = strlen(uri); buflen = len + 1; { char scheme_buf[buflen]; char auth_buf[buflen]; char location_buf[buflen]; char hostport_buf[buflen]; char path_buf[buflen]; char username_buf[buflen]; char authmech_buf[buflen]; char hostname_buf[buflen]; gboolean has_path; gboolean has_authmech = FALSE; if (! mn_pi_mailbox_split_uri(uri, len, scheme_buf, auth_buf, location_buf)) return NULL; if (strcmp(scheme_buf, "imap")) return NULL; if (! self_split_uri_location(location_buf, len, hostport_buf, path_buf, &has_path)) return NULL; if (! mn_pi_mailbox_split_uri_auth(auth_buf, len, username_buf, authmech_buf, &has_authmech)) return NULL; if (has_authmech && ! strcmp(authmech_buf, "*")) has_authmech = FALSE; mn_pi_mailbox_split_uri_hostport(hostport_buf, len, hostname_buf, &port); username = gnome_vfs_unescape_string(username_buf, NULL); if (has_authmech) authmech = gnome_vfs_unescape_string(authmech_buf, NULL); hostname = gnome_vfs_unescape_string(hostname_buf, NULL); if (has_path) path = gnome_vfs_unescape_string(path_buf, NULL); } mailbox = mn_mailbox_new("imap", "username", username, "authmech", authmech, "hostname", hostname, "port", port, NULL); if (path) g_object_set(mailbox, MN_IMAP_MAILBOX_PROP_MAILBOX(path), NULL); g_free(username); g_free(authmech); g_free(hostname); g_free(path); return mailbox; }} #line 733 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 289 "src/mn-imap-mailbox.gob" static gboolean mn_imap_mailbox_split_uri_location (const char * location, int maxlen, char * hostport, char * path, gboolean * has_path) { #line 741 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::split_uri_location" #line 289 "src/mn-imap-mailbox.gob" g_return_val_if_fail (location != NULL, (gboolean )0); #line 289 "src/mn-imap-mailbox.gob" g_return_val_if_fail (hostport != NULL, (gboolean )0); #line 289 "src/mn-imap-mailbox.gob" g_return_val_if_fail (path != NULL, (gboolean )0); #line 289 "src/mn-imap-mailbox.gob" g_return_val_if_fail (has_path != NULL, (gboolean )0); #line 751 "mn-imap-mailbox.c" { #line 295 "src/mn-imap-mailbox.gob" char *pat; int n; pat = g_strdup_printf("%%%i[^/]/%%%is", maxlen, maxlen); n = sscanf(location, pat, hostport, path); g_free(pat); g_return_val_if_fail(n >= 1, FALSE); *has_path = n == 2; if (*has_path) { /* we only handle enc_mailbox (see the RFC 2192 ABNF) */ if (strspn(path, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),%&=~:@/") != strlen(path)) return FALSE; /* more than enc_mailbox, unhandled */ } return TRUE; }} #line 774 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 316 "src/mn-imap-mailbox.gob" static void ___6_mn_imap_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED) #line 780 "mn-imap-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->removed) \ (* MN_MAILBOX_CLASS(parent_class)->removed)(___mailbox); } { #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::removed" { #line 318 "src/mn-imap-mailbox.gob" Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); self_lock(self); if (selfp->idle_session) { mn_client_session_write(selfp->idle_session->session, "DONE"); selfp->idle_session->idle_state = IDLE_STATE_POST_IDLE; } self_unlock(self); }} #line 801 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 332 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 809 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_greeting_cb" { #line 336 "src/mn-imap-mailbox.gob" priv->session = session; if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (! response->tag && IS_OK(response)) { self_session_detect_imapd(session, response, priv); return self_session_handle_capability_code(priv, response) ? self_session_after_capability(priv) : STATE_CAPABILITY; } else if (! response->tag && IS(response, "PREAUTH")) { priv->authenticated = TRUE; self_session_detect_imapd(session, response, priv); return self_session_handle_capability_code(priv, response) ? self_session_after_capability(priv) : STATE_CAPABILITY; } else if (! response->tag && IS_BYE(response)) return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; }} #line 838 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 362 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 845 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_capability_cb" { #line 365 "src/mn-imap-mailbox.gob" return self_session_write(priv, "CAPABILITY"); }} #line 852 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 369 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 859 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_capability_cb" { #line 373 "src/mn-imap-mailbox.gob" if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { return priv->capabilities ? self_session_after_capability(priv) : mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send capabilities")); } else if (IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (IS(response, "CAPABILITY")) { self_session_parse_capabilities(priv, response->arguments); return MN_CLIENT_SESSION_RESULT_CONTINUE; } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); }} #line 893 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 404 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 900 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_starttls_cb" { #line 407 "src/mn-imap-mailbox.gob" #if WITH_SSL return self_session_write(priv, "STARTTLS"); #else g_assert_not_reached(); return 0; #endif /* WITH_SSL */ }} #line 912 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 416 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 919 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_starttls_cb" { #line 420 "src/mn-imap-mailbox.gob" #if WITH_SSL if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { priv->starttls_completed = TRUE; return mn_client_session_enable_ssl(session) ? STATE_CAPABILITY : MN_CLIENT_SESSION_RESULT_DISCONNECT; } else if (IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); #else g_assert_not_reached(); return 0; #endif /* WITH_SSL */ }} #line 954 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 452 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 961 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_authenticate_cb" { #line 455 "src/mn-imap-mailbox.gob" #if WITH_SASL priv->sasl_mechanism = NULL; if (mn_client_session_sasl_authentication_start(priv->session, "imap", priv->sasl_remaining_mechanisms, priv->pi_mailbox->authmech, &priv->sasl_mechanism, NULL, /* [1] */ NULL)) /* [1] */ { g_assert(priv->sasl_mechanism != NULL); return self_session_write(priv, "AUTHENTICATE %s", priv->sasl_mechanism); } else return priv->auth_mailbox->auth_cancelled ? STATE_LOGOUT : self_session_authenticate_fallback(priv, FALSE); /* * [1] RFC 3501 6.2.2 specifies that the IMAP protocol does not * support the initial client response feature of SASL. */ #else g_assert_not_reached(); return 0; #endif /* WITH_SASL */ }} #line 994 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 485 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1001 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_authenticate_cb" { #line 489 "src/mn-imap-mailbox.gob" #if WITH_SASL if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { if (mn_client_session_sasl_authentication_done(session)) { priv->authenticated = TRUE; /* * RFC 3501 2.2.2: * * A server MAY include a CAPABILITY response code * in the tagged OK response of a successful * AUTHENTICATE command in order to send * capabilities automatically. It is unnecessary * for a client to send a separate CAPABILITY * command if it recognizes these automatic * capabilities. This should only be done if a * security layer was not negotiated by the * AUTHENTICATE command, because the tagged OK * response as part of an AUTHENTICATE command is * not protected by encryption/integrity checking. * [SASL] requires the client to re-issue a * CAPABILITY command in this case. */ return self_session_handle_capability_code(priv, response) && mn_client_session_sasl_get_ssf(session) ? STATE_EXAMINE : STATE_CAPABILITY; } else return MN_CLIENT_SESSION_RESULT_DISCONNECT; } else if (IS_NO(response) || IS_BAD(response)) { return priv->auth_mailbox->auth_cancelled ? STATE_LOGOUT : self_session_authenticate_fallback(priv, FALSE); } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (response->continuation) return mn_client_session_sasl_authentication_step(session, response->continuation); return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); #else g_assert_not_reached(); return 0; #endif /* WITH_SASL */ }} #line 1060 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 545 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1067 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_login_cb" { #line 548 "src/mn-imap-mailbox.gob" if (self_session_has_capability(priv, "LOGINDISABLED")) { mn_client_session_notice(session, _("server advertised LOGINDISABLED, not using LOGIN authentication")); mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to login")); return STATE_LOGOUT; } else { char *quoted_username; char *quoted_password; int result; if (! mn_authenticated_mailbox_fill_password(priv->auth_mailbox, TRUE)) return STATE_LOGOUT; quoted_username = self_quote(priv->auth_mailbox->username); quoted_password = self_quote(priv->auth_mailbox->runtime_password); result = self_session_write(priv, "LOGIN %s %s", quoted_username, quoted_password); g_free(quoted_username); g_free(quoted_password); return result; } }} #line 1096 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 574 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1103 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_login_cb" { #line 578 "src/mn-imap-mailbox.gob" if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { priv->authenticated = TRUE; return self_session_handle_capability_code(priv, response) ? STATE_EXAMINE : STATE_CAPABILITY; } else if (IS_NO(response) || IS_BAD(response)) return self_session_authenticate_fallback(priv, TRUE); else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); }} #line 1130 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 602 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1137 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_examine_cb" { #line 605 "src/mn-imap-mailbox.gob" char *utf7_mailbox; char *quoted_mailbox; int result; utf7_mailbox = self_utf8_to_imap_utf7(priv->self->mailbox); quoted_mailbox = self_quote(utf7_mailbox); g_free(utf7_mailbox); result = self_session_write(priv, "EXAMINE %s", quoted_mailbox); g_free(quoted_mailbox); return result; }} #line 1155 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 620 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1162 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_examine_cb" { #line 624 "src/mn-imap-mailbox.gob" if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) return STATE_SEARCH_UNSEEN; else if (IS_NO(response) || IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (IS(response, "OK")) { if (response->code) { char **fields; fields = g_strsplit(response->code, " ", 0); if (g_strv_length(fields) == 2 && ! g_ascii_strcasecmp(fields[0], "UIDVALIDITY")) { g_free(priv->uidvalidity); priv->uidvalidity = g_strdup(fields[1]); } g_strfreev(fields); } } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); }} #line 1203 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 662 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_search_unseen_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1210 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_search_unseen_cb" { #line 665 "src/mn-imap-mailbox.gob" priv->num_errors = 0; if (priv->messages) g_hash_table_remove_all(priv->messages); else priv->messages = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) self_message_info_free); return self_session_write(priv, "SEARCH UNSEEN"); }} #line 1224 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 676 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_search_unseen_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1231 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_search_unseen_cb" { #line 680 "src/mn-imap-mailbox.gob" if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { /* * Some uncompliant IMAP server implementations do not * send an untagged SEARCH response when there are no * search results (#18876). We are tolerant. */ if (g_hash_table_size(priv->messages) != 0) return STATE_SEARCH_RECENT; else return self_session_got_messages(priv); } else if (IS_NO(response) || IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (IS(response, "SEARCH")) { if (response->arguments) { char **strings; int i; strings = g_strsplit(response->arguments, " ", 0); for (i = 0; strings[i]; i++) if (mn_str_isnumeric(strings[i])) { int n = atoi(strings[i]); self_session_ensure_message_info(priv, n); } g_strfreev(strings); } return MN_CLIENT_SESSION_RESULT_CONTINUE; } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); }} #line 1287 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 733 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_search_recent_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1294 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_search_recent_cb" { #line 736 "src/mn-imap-mailbox.gob" return self_session_write(priv, "SEARCH RECENT"); }} #line 1301 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 740 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_search_recent_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1308 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_search_recent_cb" { #line 744 "src/mn-imap-mailbox.gob" if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { if (priv->uidvalidity) return STATE_FETCH_UID; else return STATE_FETCH; } else if (IS_NO(response) || IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (IS(response, "SEARCH")) { if (response->arguments) { char **strings; int i; strings = g_strsplit(response->arguments, " ", 0); for (i = 0; strings[i]; i++) if (mn_str_isnumeric(strings[i])) { int n = atoi(strings[i]); MessageInfo *info; info = self_session_get_message_info(priv, n); if (info) info->flags |= MN_MESSAGE_NEW; /* * Otherwise the message is recent but not unseen, * and we must ignore it (fixes #230425). */ } g_strfreev(strings); } return MN_CLIENT_SESSION_RESULT_CONTINUE; } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); }} #line 1367 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 800 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_fetch_uid_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1374 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_fetch_uid_cb" { #line 802 "src/mn-imap-mailbox.gob" GString *set; int result; g_assert(priv->messages != NULL); g_assert(g_hash_table_size(priv->messages) > 0); set = g_string_new(NULL); g_hash_table_foreach(priv->messages, self_build_fetch_uid_set_cb, set); result = self_session_write(priv, "FETCH %s UID", set->str); g_string_free(set, TRUE); return result; }} #line 1395 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 820 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_build_fetch_uid_set_cb (gpointer key, gpointer value, gpointer user_data) { #line 1402 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::build_fetch_uid_set_cb" { #line 822 "src/mn-imap-mailbox.gob" MessageInfo *info = value; GString *set = user_data; if (*set->str) g_string_append_c(set, ','); g_string_append_printf(set, "%i", info->number); }} #line 1415 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 832 "src/mn-imap-mailbox.gob" static char * mn_imap_mailbox_parse_fetch_uid_response (const char * response) { #line 1422 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::parse_fetch_uid_response" #line 832 "src/mn-imap-mailbox.gob" g_return_val_if_fail (response != NULL, (char * )0); #line 1426 "mn-imap-mailbox.c" { #line 834 "src/mn-imap-mailbox.gob" char *start; char *end; start = mn_ascii_strcasestr_span(response, "UID "); if (! start) return NULL; /* * The UID should be the only list element, but we are tolerant * and allow a space in case other elements are present, eg: * * * 1 FETCH (UID 17 OTHER_ELEMENT) */ end = strpbrk(start, " )"); if (! end || end == start) return NULL; return g_strndup(start, end - start); }} #line 1449 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 855 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_fetch_uid_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1456 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_fetch_uid_cb" { #line 859 "src/mn-imap-mailbox.gob" if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { /* a failure (NO or BAD) is not fatal */ if (IS_OK(response) || IS_NO(response) || IS_BAD(response)) return STATE_FETCH; else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (mn_str_isnumeric(response->response) && response->arguments && mn_ascii_str_case_has_prefix(response->arguments, "FETCH ")) { char *uid; uid = self_parse_fetch_uid_response(response->arguments); if (uid) { int n; MessageInfo *info; n = atoi(response->response); info = self_session_get_message_info(priv, n); if (info && ! info->mid) { MNMessage *message; g_assert(info->message == NULL); /* * RFC 3501 specifies that UID is a 32-bit number, * but we do not need it to be one. Use a string * for interoperability purposes (in case some * server vendors did not read the RFC properly). */ info->mid = g_strdup_printf("%s:%s", priv->uidvalidity, uid); message = mn_mailbox_get_message_from_mid(priv->mailbox, info->mid); if (message) /* * We create a new instance rather than reusing * the existing one since the flags might be * different and a MNMessage is immutable (so we * cannot change the flags of the existing * message). */ info->message = mn_g_object_clone(message, MN_MESSAGE_PROP_FLAGS(info->flags), NULL); } g_free(uid); } return MN_CLIENT_SESSION_RESULT_CONTINUE; } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); }} #line 1525 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 925 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1532 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_fetch_cb" { #line 927 "src/mn-imap-mailbox.gob" GString *set; int result; g_assert(priv->messages != NULL); g_assert(g_hash_table_size(priv->messages) > 0); set = g_string_new(NULL); g_hash_table_foreach(priv->messages, self_build_fetch_set_cb, set); if (*set->str) result = self_session_write(priv, "FETCH %s BODY.PEEK[HEADER]", set->str); else /* all the unseen messages were cached, no message to fetch */ result = self_session_got_messages(priv); g_string_free(set, TRUE); return result; }} #line 1557 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 949 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_build_fetch_set_cb (gpointer key, gpointer value, gpointer user_data) { #line 1564 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::build_fetch_set_cb" { #line 951 "src/mn-imap-mailbox.gob" MessageInfo *info = value; GString *set = user_data; if (! info->message) { if (*set->str) g_string_append_c(set, ','); g_string_append_printf(set, "%i", info->number); } }} #line 1580 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 964 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1587 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_fetch_cb" { #line 968 "src/mn-imap-mailbox.gob" if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { /* * Note that in previous versions we required the * fetch results to include all the unseen messages, * but it caused problems in some cases (#20132). */ return self_session_got_messages(priv); } else if (IS_NO(response) || IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (mn_str_isnumeric(response->response) && response->arguments && mn_ascii_str_case_has_prefix(response->arguments, "FETCH ") && (mn_ascii_strcasestr(response->arguments, "BODY[HEADER]") || mn_ascii_strcasestr(response->arguments, "BODY[HEADER "))) /* [1] */ /* * [1] Non-compliant response (see RFC 3501 BNF), sent by Binc * IMAP and maybe others. We are tolerant. */ { int n; MessageInfo *info; n = atoi(response->response); info = self_session_get_message_info(priv, n); if (info && ! info->message) { char *p; int len; /* we assume the header string will be in literal form */ p = strrchr(response->arguments, '{'); if (p && sscanf(p, "{%d}", &len) == 1 && len >= 0) { gconstpointer buf; GError *err = NULL; buf = mn_client_session_read(session, len); if (! buf) return MN_CLIENT_SESSION_RESULT_DISCONNECT; info->message = mn_message_new_from_buffer(priv->mailbox, buf, len, info->mid, info->flags, FALSE, &err); if (err) { mn_client_session_warning(session, "cannot read message %i: %s", n, err->message); g_error_free(err); priv->num_errors++; } /* read end of line (after literal) */ if (! mn_client_session_read_line(session)) return MN_CLIENT_SESSION_RESULT_DISCONNECT; } else { mn_client_session_warning(session, "cannot retrieve message %i", n); priv->num_errors++; } return MN_CLIENT_SESSION_RESULT_CONTINUE; } } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); }} #line 1682 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1060 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1689 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_idle_cb" { #line 1063 "src/mn-imap-mailbox.gob" if (mn_mailbox_get_active(priv->mailbox)) { if (priv->self->use_idle_extension == MN_IMAP_MAILBOX_USE_IDLE_NEVER) mn_client_session_notice(session, _("\"Use the IDLE extension\" set to \"never\" in the mailbox properties, logging out")); else { if (self_session_has_capability(priv, "IDLE")) { switch (priv->self->use_idle_extension) { case MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT: if (priv->server_software_supports_idle) goto idle; else mn_client_session_notice(session, _("the remote server runs %s, not using the IDLE extension"), priv->server_software); break; case MN_IMAP_MAILBOX_USE_IDLE_ALWAYS: if (! priv->server_software_supports_idle) mn_client_session_warning(session, _("the remote server runs %s, the IDLE extension might not function properly"), priv->server_software); goto idle; break; default: g_assert_not_reached(); } } else mn_client_session_notice(session, _("the remote server does not support the IDLE extension, logging out")); } } return STATE_LOGOUT; idle: priv->idle_state = IDLE_STATE_PRE_IDLE; return self_session_write(priv, "IDLE"); }} #line 1732 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1103 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1739 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_idle_cb" { #line 1107 "src/mn-imap-mailbox.gob" switch (priv->idle_state) { case IDLE_STATE_PRE_IDLE: if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_NO(response) || IS_BAD(response)) /* * The server advertised IDLE but does not actually * support it. * * Although strictly speaking this can be considered a * compliance fault, we'll be tolerant and just logout * without setting an error. */ return STATE_LOGOUT; else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (response->continuation) { /* we're now in the idle loop */ priv->idle_state = IDLE_STATE_IDLE; priv->idle_inactivity = FALSE; priv->could_idle = TRUE; GDK_THREADS_ENTER(); mn_mailbox_set_poll(priv->mailbox, FALSE); gdk_flush(); GDK_THREADS_LEAVE(); return MN_CLIENT_SESSION_RESULT_CONTINUE; } break; case IDLE_STATE_IDLE: if (response->continuation || response->tag) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; if (IS_BYE(response)) { priv->idle_state = IDLE_STATE_POST_IDLE; return MN_CLIENT_SESSION_RESULT_DISCONNECT; /* we'll reconnect */ } else if (response->arguments && mn_str_isnumeric(response->response) && (! g_ascii_strcasecmp(response->arguments, "EXISTS") || ! g_ascii_strcasecmp(response->arguments, "RECENT") || ! g_ascii_strcasecmp(response->arguments, "EXPUNGE") || mn_ascii_str_case_has_prefix(response->arguments, "FETCH "))) { priv->idle_state = IDLE_STATE_POST_IDLE; return mn_client_session_write(session, "DONE"); /* wake up */ } break; case IDLE_STATE_POST_IDLE: if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { if (! mn_mailbox_get_active(priv->mailbox)) return STATE_LOGOUT; else if (priv->idle_inactivity) return STATE_IDLE; /* anti-inactivity, re-enter */ else return STATE_SEARCH_UNSEEN; } else if (IS_NO(response) || IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; break; default: g_assert_not_reached(); break; } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); }} #line 1836 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1201 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1843 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_logout_cb" { #line 1204 "src/mn-imap-mailbox.gob" return self_session_write(priv, "LOGOUT"); }} #line 1850 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1208 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1857 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_logout_cb" { #line 1212 "src/mn-imap-mailbox.gob" if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag && HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) return MN_CLIENT_SESSION_RESULT_DISCONNECT; else if (IS_BAD(response)) return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } else return MN_CLIENT_SESSION_RESULT_CONTINUE; }} #line 1876 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1228 "src/mn-imap-mailbox.gob" static void ___21_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED) #line 1882 "mn-imap-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check) \ (* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::authenticated_check" { #line 1230 "src/mn-imap-mailbox.gob" Self *self = SELF(mailbox); static const MNClientSessionState states[] = { { STATE_GREETING, NULL, self_handle_greeting_cb }, { STATE_CAPABILITY, self_enter_capability_cb, self_handle_capability_cb }, #if WITH_SSL { STATE_STARTTLS, self_enter_starttls_cb, self_handle_starttls_cb }, #endif #if WITH_SASL { STATE_AUTHENTICATE, self_enter_authenticate_cb, self_handle_authenticate_cb }, #endif { STATE_LOGIN, self_enter_login_cb, self_handle_login_cb }, { STATE_EXAMINE, self_enter_examine_cb, self_handle_examine_cb }, { STATE_SEARCH_UNSEEN, self_enter_search_unseen_cb, self_handle_search_unseen_cb }, { STATE_SEARCH_RECENT, self_enter_search_recent_cb, self_handle_search_recent_cb }, { STATE_FETCH_UID, self_enter_fetch_uid_cb, self_handle_fetch_uid_cb }, { STATE_FETCH, self_enter_fetch_cb, self_handle_fetch_cb }, { STATE_IDLE, self_enter_idle_cb, self_handle_idle_cb }, { STATE_LOGOUT, self_enter_logout_cb, self_handle_logout_cb }, MN_CLIENT_SESSION_STATES_END }; static const MNClientSessionCallbacks callbacks = { mn_pi_mailbox_notice_cb, mn_pi_mailbox_warning_cb, self_response_new_cb, self_response_free_cb, self_pre_read_cb, self_post_read_cb, #if WITH_SASL mn_pi_mailbox_sasl_get_credentials_cb, #endif #if WITH_SSL mn_pi_mailbox_ssl_trust_server_cb, #endif }; MNClientSessionPrivate priv; gboolean status; GError *err = NULL; PARENT_HANDLER(mailbox); /* check if the parent handler has disabled the mailbox */ if (! mn_mailbox_get_poll(MN_MAILBOX(self))) return; again: g_clear_error(&err); memset(&priv, 0, sizeof(priv)); mn_pi_mailbox_session_private_init(MN_PI_MAILBOX(self), &priv); priv.self = self; priv.server_software_supports_idle = TRUE; /* assume it does */ status = mn_client_session_run(states, &callbacks, #if WITH_SSL priv.pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL, #endif priv.pi_mailbox->hostname, priv.pi_mailbox->runtime_port, &priv, &err); g_strfreev(priv.capabilities); mn_g_slist_free_deep(priv.auth_mechanisms); g_free(priv.uidvalidity); if (priv.messages) g_hash_table_destroy(priv.messages); #if WITH_SASL g_slist_free(priv.sasl_remaining_mechanisms); #endif if (priv.could_idle && mn_mailbox_get_active(priv.mailbox)) { if (status) goto again; /* some servers abruptly disconnect for inactivity */ else if (g_error_matches(err, MN_CLIENT_SESSION_ERROR, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST)) { /* g_log() escapes unsafe and non UTF-8 characters, so this is safe */ mn_mailbox_notice(priv.mailbox, "%s", err->message); goto again; } } GDK_THREADS_ENTER(); mn_mailbox_set_poll(MN_MAILBOX(self), TRUE); if (! status) { char *escaped; escaped = mn_utf8_escape(err->message); g_error_free(err); mn_mailbox_set_error(MN_MAILBOX(self), "%s", escaped); g_free(escaped); } gdk_flush(); GDK_THREADS_LEAVE(); }} #line 1996 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 1337 "src/mn-imap-mailbox.gob" static MNClientSessionResponse * mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv) { #line 2004 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_new_cb" { #line 1341 "src/mn-imap-mailbox.gob" MNClientSessionResponse *response = NULL; /* * About character set handling: * * RFC 3501 section 1.2 specifies that "characters are 7-bit * US-ASCII unless otherwise specified", and the ABNF formal * syntax found in section 9 confirms it. However, we follow the * RFC 793 robustness principle ("be liberal in what you accept") * and do not require responses to be valid 7-bit US-ASCII. * * Safety: * - we ensure that GTK+ will only receive UTF-8 data by * escaping error messages in authenticated_check() * - responses ending up in mn_mailbox_notice() need not be * valid UTF-8, since g_log() escapes unsafe and non UTF-8 * characters * - messages do not go through this function; they are handled * in handle_fetch_cb() and passed to our mn-message-mime * implementation, which handles character set conversions */ if (! strcmp(input, "+")) { response = g_new0(MNClientSessionResponse, 1); response->continuation = g_strdup(""); } else if (g_str_has_prefix(input, "+ ")) { response = g_new0(MNClientSessionResponse, 1); response->continuation = g_strdup(input + 2); } else { char **tokens; tokens = g_strsplit(input, " ", 3); if (tokens[0] && tokens[1]) { if (tokens[2] && tokens[2][0] == '[') { char *code_start; char *code_end; code_start = tokens[2] + 1; code_end = strchr(code_start, ']'); if (code_end) { response = g_new0(MNClientSessionResponse, 1); response->code = g_strndup(code_start, code_end - code_start); response->arguments = code_end[1] ? g_strdup(code_end + 2) : NULL; } } else { response = g_new0(MNClientSessionResponse, 1); response->arguments = g_strdup(tokens[2]); } if (response) { response->tag = ! strcmp(tokens[0], "*") ? NULL : g_strdup(tokens[0]); response->response = g_strdup(tokens[1]); } } g_strfreev(tokens); } return response; }} #line 2079 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1413 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 2086 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_free_cb" { #line 1417 "src/mn-imap-mailbox.gob" g_free(response->continuation); g_free(response->tag); g_free(response->response); g_free(response->code); g_free(response->arguments); g_free(response); }} #line 2098 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1426 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_default_handler (MNClientSessionResponse * response, MNClientSessionPrivate * priv, int error_code_when_bye) { #line 2105 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::default_handler" #line 1426 "src/mn-imap-mailbox.gob" g_return_val_if_fail (response != NULL, (int )0); #line 1426 "src/mn-imap-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 2111 "mn-imap-mailbox.c" { #line 1430 "src/mn-imap-mailbox.gob" if (! response->tag && IS_BYE(response)) return mn_client_session_set_error_from_response(priv->session, error_code_when_bye, response->arguments); else return MN_CLIENT_SESSION_RESULT_CONTINUE; }} #line 2120 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1437 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 2127 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::pre_read_cb" { #line 1440 "src/mn-imap-mailbox.gob" if (priv->idle_state == IDLE_STATE_IDLE) { Self *self = priv->self; self_lock(self); selfp->idle_session = priv; /* cycle IDLE in 29 minutes, as advised by RFC 2177 */ g_assert(priv->idle_inactivity_timeout_id == 0); priv->idle_inactivity_timeout_id = g_timeout_add(60 * 29 * 1000, self_idle_inactivity_timeout_cb, self); self_unlock(self); } }} #line 2148 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1458 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 2155 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::post_read_cb" { #line 1461 "src/mn-imap-mailbox.gob" Self *self = priv->self; self_lock(self); if (priv->idle_state >= IDLE_STATE_IDLE) { selfp->idle_session = NULL; mn_source_clear(&priv->idle_inactivity_timeout_id); } self_unlock(self); }} #line 2172 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1475 "src/mn-imap-mailbox.gob" static gboolean mn_imap_mailbox_idle_inactivity_timeout_cb (gpointer data) { #line 2179 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::idle_inactivity_timeout_cb" { #line 1477 "src/mn-imap-mailbox.gob" Self *self = data; self_lock(self); if (selfp->idle_session) { mn_client_session_write(selfp->idle_session->session, "DONE"); selfp->idle_session->idle_state = IDLE_STATE_POST_IDLE; selfp->idle_session->idle_inactivity = TRUE; selfp->idle_session->idle_inactivity_timeout_id = 0; } self_unlock(self); return FALSE; }} #line 2200 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1496 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...) { #line 2207 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_write" #line 1496 "src/mn-imap-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 1496 "src/mn-imap-mailbox.gob" g_return_val_if_fail (format != NULL, (int )0); #line 2213 "mn-imap-mailbox.c" { #line 1500 "src/mn-imap-mailbox.gob" char *command; int result; MN_STRDUP_VPRINTF(command, format); if (priv->numeric_tag == 1000) priv->numeric_tag = 0; sprintf(priv->tag, "a%03i", priv->numeric_tag++); result = mn_client_session_write(priv->session, "%s %s", priv->tag, command); g_free(command); return result; }} #line 2231 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1516 "src/mn-imap-mailbox.gob" static gboolean mn_imap_mailbox_session_handle_capability_code (MNClientSessionPrivate * priv, MNClientSessionResponse * response) { #line 2238 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_handle_capability_code" #line 1516 "src/mn-imap-mailbox.gob" g_return_val_if_fail (priv != NULL, (gboolean )0); #line 1516 "src/mn-imap-mailbox.gob" g_return_val_if_fail (response != NULL, (gboolean )0); #line 2244 "mn-imap-mailbox.c" { #line 1519 "src/mn-imap-mailbox.gob" if (response->code) { if (! g_ascii_strcasecmp(response->code, "CAPABILITY")) { self_session_parse_capabilities(priv, NULL); return TRUE; } else if (mn_ascii_str_case_has_prefix(response->code, "CAPABILITY ")) { self_session_parse_capabilities(priv, response->code + 11); return TRUE; } } return FALSE; }} #line 2264 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1537 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities) { #line 2271 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_parse_capabilities" #line 1537 "src/mn-imap-mailbox.gob" g_return_if_fail (priv != NULL); #line 2275 "mn-imap-mailbox.c" { #line 1540 "src/mn-imap-mailbox.gob" g_strfreev(priv->capabilities); priv->capabilities = NULL; mn_g_slist_clear_deep(&priv->auth_mechanisms); #if WITH_SASL mn_g_slist_clear(&priv->sasl_remaining_mechanisms); #endif if (capabilities) { int i; priv->capabilities = g_strsplit(capabilities, " ", 0); for (i = 0; priv->capabilities[i]; i++) if (g_str_has_prefix(priv->capabilities[i], "AUTH=")) priv->auth_mechanisms = g_slist_append(priv->auth_mechanisms, g_strdup(priv->capabilities[i] + 5)); } else priv->capabilities = g_new0(char *, 1); }} #line 2301 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1564 "src/mn-imap-mailbox.gob" static gboolean mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const char * capability) { #line 2308 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_has_capability" #line 1564 "src/mn-imap-mailbox.gob" g_return_val_if_fail (priv != NULL, (gboolean )0); #line 1564 "src/mn-imap-mailbox.gob" g_return_val_if_fail (capability != NULL, (gboolean )0); #line 2314 "mn-imap-mailbox.c" { #line 1567 "src/mn-imap-mailbox.gob" int i; g_return_val_if_fail(priv->capabilities != NULL, FALSE); for (i = 0; priv->capabilities[i]; i++) if (! g_ascii_strcasecmp(priv->capabilities[i], capability)) return TRUE; return FALSE; }} #line 2328 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1579 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv) { #line 2335 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_after_capability" #line 1579 "src/mn-imap-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 2339 "mn-imap-mailbox.c" { #line 1581 "src/mn-imap-mailbox.gob" if (priv->authenticated) return STATE_EXAMINE; else { #if WITH_SSL if (priv->pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL && ! priv->starttls_completed) { if (self_session_has_capability(priv, "STARTTLS")) return STATE_STARTTLS; else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS")); return STATE_LOGOUT; } } #endif /* WITH_SSL */ return self_session_authenticate(priv); } }} #line 2363 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1603 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv) { #line 2370 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate" #line 1603 "src/mn-imap-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 2374 "mn-imap-mailbox.c" { #line 1605 "src/mn-imap-mailbox.gob" #if WITH_SASL g_slist_free(priv->sasl_remaining_mechanisms); priv->sasl_remaining_mechanisms = g_slist_copy(priv->auth_mechanisms); #endif /* WITH_SASL */ if (priv->pi_mailbox->authmech) { if (*priv->pi_mailbox->authmech != '+') { #if WITH_SASL return STATE_AUTHENTICATE; #else mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in")); return STATE_LOGOUT; #endif /* WITH_SASL */ } else { if (! strcmp(priv->pi_mailbox->authmech, "+LOGIN")) return STATE_LOGIN; else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech); return STATE_LOGOUT; } } } else { #if WITH_SASL if (priv->sasl_remaining_mechanisms) return STATE_AUTHENTICATE; #endif /* WITH_SASL */ return STATE_LOGIN; } }} #line 2414 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1643 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_login) { #line 2421 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate_fallback" #line 1643 "src/mn-imap-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 2425 "mn-imap-mailbox.c" { #line 1646 "src/mn-imap-mailbox.gob" if (! priv->pi_mailbox->authmech) { #if WITH_SASL if (priv->sasl_mechanism) { GSList *elem; elem = mn_g_str_slist_find(priv->sasl_remaining_mechanisms, priv->sasl_mechanism); if (elem) { priv->sasl_remaining_mechanisms = g_slist_delete_link(priv->sasl_remaining_mechanisms, elem); if (priv->sasl_remaining_mechanisms) { mn_client_session_notice(priv->session, _("disabling mechanism \"%s\" and retrying SASL authentication"), priv->sasl_mechanism); return STATE_AUTHENTICATE; } } } /* SASL is not needed anymore, save some memory */ mn_client_session_sasl_dispose(priv->session); #endif /* WITH_SASL */ if (! tried_login) { mn_client_session_notice(priv->session, _("falling back to IMAP LOGIN authentication")); return STATE_LOGIN; } } if (priv->auth_mailbox->auth_prompted) { mn_authenticated_mailbox_auth_failed(priv->auth_mailbox); return self_session_authenticate(priv); } else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed")); return STATE_LOGOUT; } }} #line 2470 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1689 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSessionResponse * greeting_response, MNClientSessionPrivate * priv) { #line 2477 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_detect_imapd" #line 1689 "src/mn-imap-mailbox.gob" g_return_if_fail (session != NULL); #line 1689 "src/mn-imap-mailbox.gob" g_return_if_fail (greeting_response != NULL); #line 1689 "src/mn-imap-mailbox.gob" g_return_if_fail (priv != NULL); #line 2485 "mn-imap-mailbox.c" { #line 1693 "src/mn-imap-mailbox.gob" if (greeting_response->arguments) { char *str; /* * Try to detect UW imapd by looking for " IMAP4rev1 YEAR." */ if ((str = mn_strstr_span(greeting_response->arguments, " IMAP4rev1 ")) && strspn(str, "0123456789") == 4 && str[4] == '.') { priv->server_software = "UW imapd"; priv->server_software_supports_idle = FALSE; return; } } }} #line 2507 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1713 "src/mn-imap-mailbox.gob" static int mn_imap_mailbox_session_got_messages (MNClientSessionPrivate * priv) { #line 2514 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_got_messages" #line 1713 "src/mn-imap-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 2518 "mn-imap-mailbox.c" { #line 1715 "src/mn-imap-mailbox.gob" GSList *messages = NULL; g_hash_table_foreach(priv->messages, self_get_messages_list_cb, &messages); GDK_THREADS_ENTER(); mn_mailbox_set_messages(priv->mailbox, messages); if (priv->num_errors == 0) mn_mailbox_set_error(priv->mailbox, NULL); else mn_mailbox_set_error(priv->mailbox, ngettext("cannot retrieve %i message", "cannot retrieve %i messages", priv->num_errors), priv->num_errors); /* * In authenticated_check(), we do not hold the GDK lock while * destroying the messages hash table. We have just exposed the * messages to other threads through our mn_mailbox_set_messages() * call, so destroy the hash table here, while we hold the GDK * lock. */ g_hash_table_destroy(priv->messages); priv->messages = NULL; gdk_flush(); GDK_THREADS_LEAVE(); g_slist_free(messages); return STATE_IDLE; }} #line 2556 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1751 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_get_messages_list_cb (gpointer key, gpointer value, gpointer user_data) { #line 2563 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::get_messages_list_cb" { #line 1753 "src/mn-imap-mailbox.gob" MessageInfo *info = value; GSList **list = user_data; if (info->message) *list = g_slist_prepend(*list, info->message); }} #line 2574 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1761 "src/mn-imap-mailbox.gob" static MessageInfo * mn_imap_mailbox_session_get_message_info (MNClientSessionPrivate * priv, int number) { #line 2581 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_get_message_info" #line 1761 "src/mn-imap-mailbox.gob" g_return_val_if_fail (priv != NULL, (MessageInfo * )0); #line 2585 "mn-imap-mailbox.c" { #line 1764 "src/mn-imap-mailbox.gob" return g_hash_table_lookup(priv->messages, GINT_TO_POINTER(number)); }} #line 2591 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1768 "src/mn-imap-mailbox.gob" static MessageInfo * mn_imap_mailbox_session_ensure_message_info (MNClientSessionPrivate * priv, int number) { #line 2598 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_ensure_message_info" #line 1768 "src/mn-imap-mailbox.gob" g_return_val_if_fail (priv != NULL, (MessageInfo * )0); #line 2602 "mn-imap-mailbox.c" { #line 1771 "src/mn-imap-mailbox.gob" MessageInfo *info; info = self_session_get_message_info(priv, number); if (! info) { info = self_message_info_new(number); g_hash_table_insert(priv->messages, GINT_TO_POINTER(number), info); } return info; }} #line 2617 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1784 "src/mn-imap-mailbox.gob" static MessageInfo * mn_imap_mailbox_message_info_new (int number) { #line 2624 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::message_info_new" { #line 1786 "src/mn-imap-mailbox.gob" MessageInfo *info; info = g_new0(MessageInfo, 1); info->number = number; return info; }} #line 2636 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1795 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_message_info_free (MessageInfo * info) { #line 2643 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::message_info_free" #line 1795 "src/mn-imap-mailbox.gob" g_return_if_fail (info != NULL); #line 2647 "mn-imap-mailbox.c" { #line 1797 "src/mn-imap-mailbox.gob" if (info->message) g_object_unref(info->message); g_free(info->mid); g_free(info); }} #line 2656 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ /** * mn_imap_mailbox_quote: * @str: the string to quote * * Quotes a string using RFC 3501 BNF rules. * * Return value: the quoted string. **/ #line 1812 "src/mn-imap-mailbox.gob" static char * mn_imap_mailbox_quote (const char * str) { #line 2671 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::quote" #line 1812 "src/mn-imap-mailbox.gob" g_return_val_if_fail (str != NULL, (char * )0); #line 2675 "mn-imap-mailbox.c" { #line 1814 "src/mn-imap-mailbox.gob" GString *quoted; int i; quoted = g_string_new("\""); for (i = 0; str[i]; i++) if (str[i] == '"' || str[i] == '\\') /* quoted-specials in BNF */ g_string_append_printf(quoted, "\\%c", str[i]); else g_string_append_c(quoted, str[i]); g_string_append_c(quoted, '"'); return g_string_free(quoted, FALSE); }} #line 2692 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ /** * mn_imap_mailbox_utf8_to_imap_utf7: * @str: the UTF-8 string to convert to modified UTF-7 * * Converts a string from UTF-8 to modified UTF-7 as defined by RFC 3501. * * Return value: the string converted to modified UTF-7. **/ #line 1837 "src/mn-imap-mailbox.gob" static char * mn_imap_mailbox_utf8_to_imap_utf7 (const char * str) { #line 2707 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::utf8_to_imap_utf7" #line 1837 "src/mn-imap-mailbox.gob" g_return_val_if_fail (str != NULL, (char * )0); #line 2711 "mn-imap-mailbox.c" { #line 1839 "src/mn-imap-mailbox.gob" gunichar c; guint32 x, v = 0; int state = 0; GString *out; int i = 0; /* * Taken from the Ximian Evolution sources (camel-utf8.c) and * edited for style. */ out = g_string_new(NULL); while ((c = g_utf8_get_char(str))) { if (c >= 0x20 && c <= 0x7e) { if (state == 1) { self_imap_utf7_closeb64(out, v, i); state = 0; i = 0; } if (c == '&') g_string_append(out, "&-"); else g_string_append_c(out, c); } else { if (state == 0) { g_string_append_c(out, '&'); state = 1; } v = (v << 16) | c; i += 16; while (i >= 6) { x = (v >> (i - 6)) & 0x3f; g_string_append_c(out, utf7_alphabet[x]); i -= 6; } } str = g_utf8_next_char(str); } if (state == 1) self_imap_utf7_closeb64(out, v, i); return g_string_free(out, FALSE); }} #line 2770 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1896 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_imap_utf7_closeb64 (GString * out, guint32 v, guint32 i) { #line 2777 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::imap_utf7_closeb64" #line 1896 "src/mn-imap-mailbox.gob" g_return_if_fail (out != NULL); #line 2781 "mn-imap-mailbox.c" { #line 1898 "src/mn-imap-mailbox.gob" /* * Taken from the Ximian Evolution sources (camel-utf8.c) and * edited for style. */ if (i > 0) { guint32 x; x = (v << (6 - i)) & 0x3f; g_string_append_c(out, utf7_alphabet[x]); } g_string_append_c(out, '-'); }} #line 2800 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1915 "src/mn-imap-mailbox.gob" char * mn_imap_mailbox_build_name (const char * username, const char * server, const char * mailbox) { #line 2807 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::build_name" #line 1915 "src/mn-imap-mailbox.gob" g_return_val_if_fail (username != NULL, (char * )0); #line 1915 "src/mn-imap-mailbox.gob" g_return_val_if_fail (server != NULL, (char * )0); #line 2813 "mn-imap-mailbox.c" { #line 1919 "src/mn-imap-mailbox.gob" GString *name; name = g_string_new(NULL); g_string_append_printf(name, "%s@%s", username, server); if (mailbox && mn_utf8_strcasecmp(mailbox, "INBOX")) g_string_append_printf(name, "/%s", mailbox); return g_string_free(name, FALSE); }} #line 2828 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1932 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_lock (MNIMAPMailbox * self) { #line 2835 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::lock" #line 1932 "src/mn-imap-mailbox.gob" g_return_if_fail (self != NULL); #line 1932 "src/mn-imap-mailbox.gob" g_return_if_fail (MN_IS_IMAP_MAILBOX (self)); #line 2841 "mn-imap-mailbox.c" { #line 1934 "src/mn-imap-mailbox.gob" g_mutex_lock(selfp->mutex); }} #line 2847 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ #line 1938 "src/mn-imap-mailbox.gob" static void mn_imap_mailbox_unlock (MNIMAPMailbox * self) { #line 2854 "mn-imap-mailbox.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::unlock" #line 1938 "src/mn-imap-mailbox.gob" g_return_if_fail (self != NULL); #line 1938 "src/mn-imap-mailbox.gob" g_return_if_fail (MN_IS_IMAP_MAILBOX (self)); #line 2860 "mn-imap-mailbox.c" { #line 1940 "src/mn-imap-mailbox.gob" g_mutex_unlock(selfp->mutex); }} #line 2866 "mn-imap-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-evolution-mailbox.c0000644000175000001440000004401711015312647024000 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-evolution-mailbox.h" #include "mn-evolution-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 29 "src/mn-evolution-mailbox.gob" #include #include #include #include "mn-evolution.h" #include "mn-mailbox-private.h" #include "mn-message.h" #include "mn-util.h" #include "mn-stock.h" #include "mn-evolution-message.h" #include "mn-shell.h" #include "mn-evolution-client-dbus.h" typedef struct { const char *uid; unsigned int sent_time; unsigned int received_time; const char *id; const char *from; const char *subject; } MessageInfo; #line 50 "mn-evolution-mailbox.c" /* self casting macros */ #define SELF(x) MN_EVOLUTION_MAILBOX(x) #define SELF_CONST(x) MN_EVOLUTION_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_EVOLUTION_MAILBOX(x) #define TYPE_SELF MN_TYPE_EVOLUTION_MAILBOX #define SELF_CLASS(x) MN_EVOLUTION_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_EVOLUTION_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNEvolutionMailbox Self; typedef MNEvolutionMailboxClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 71 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_class_init (MNEvolutionMailboxClass * class); #line 69 "mn-evolution-mailbox.c" #line 76 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_init (MNEvolutionMailbox * self); #line 72 "mn-evolution-mailbox.c" #line 85 "src/mn-evolution-mailbox.gob" static void ___3_mn_evolution_mailbox_seal (MNMailbox * mailbox); #line 75 "mn-evolution-mailbox.c" #line 94 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_finalize (MNEvolutionMailbox * self); #line 78 "mn-evolution-mailbox.c" #line 110 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_connect_proxy_signals (MNEvolutionMailbox * self); #line 81 "mn-evolution-mailbox.c" #line 133 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_disconnect_proxy_signals (MNEvolutionMailbox * self); #line 84 "mn-evolution-mailbox.c" #line 156 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_folder_changed_h (DBusGProxy * proxy, const char * uri, gpointer user_data); #line 87 "mn-evolution-mailbox.c" #line 169 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_message_reading_h (DBusGProxy * proxy, const char * uri, gpointer user_data); #line 90 "mn-evolution-mailbox.c" #line 184 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_value_array_get_values (GValueArray * value_array, ...); #line 93 "mn-evolution-mailbox.c" #line 204 "src/mn-evolution-mailbox.gob" static void ___a_mn_evolution_mailbox_check (MNMailbox * mailbox); #line 96 "mn-evolution-mailbox.c" #line 241 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_get_unseen_messages_cb (DBusGProxy * proxy, GPtrArray * messages_array, GError * err, gpointer user_data); #line 99 "mn-evolution-mailbox.c" enum { PROP_0, PROP_URI, PROP_FOLDER_NAME }; /* pointer to the class of our parent */ static MNMailboxClass *parent_class = NULL; /* Short form macros */ #define self_connect_proxy_signals mn_evolution_mailbox_connect_proxy_signals #define self_disconnect_proxy_signals mn_evolution_mailbox_disconnect_proxy_signals #define self_folder_changed_h mn_evolution_mailbox_folder_changed_h #define self_message_reading_h mn_evolution_mailbox_message_reading_h #define self_value_array_get_values mn_evolution_mailbox_value_array_get_values #define self_get_unseen_messages_cb mn_evolution_mailbox_get_unseen_messages_cb GType mn_evolution_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNEvolutionMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_evolution_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNEvolutionMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_evolution_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_MAILBOX, "MNEvolutionMailbox", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNEvolutionMailbox *)g_object_new(mn_evolution_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNEvolutionMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNEvolutionMailbox * GET_NEW_VARG (const char *first, ...) { MNEvolutionMailbox *ret; va_list ap; va_start (ap, first); ret = (MNEvolutionMailbox *)g_object_new_valist (mn_evolution_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::finalize" MNEvolutionMailbox *self G_GNUC_UNUSED = MN_EVOLUTION_MAILBOX (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 94 "src/mn-evolution-mailbox.gob" mn_evolution_mailbox_finalize (self); #line 168 "mn-evolution-mailbox.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 55 "src/mn-evolution-mailbox.gob" if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; } #line 173 "mn-evolution-mailbox.c" #line 62 "src/mn-evolution-mailbox.gob" if(self->folder_name) { g_free ((gpointer) self->folder_name); self->folder_name = NULL; } #line 176 "mn-evolution-mailbox.c" } #undef __GOB_FUNCTION__ #line 71 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_class_init (MNEvolutionMailboxClass * class G_GNUC_UNUSED) { #line 184 "mn-evolution-mailbox.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class; g_type_class_add_private(class,sizeof(MNEvolutionMailboxPrivate)); parent_class = g_type_class_ref (MN_TYPE_MAILBOX); #line 85 "src/mn-evolution-mailbox.gob" mn_mailbox_class->seal = ___3_mn_evolution_mailbox_seal; #line 204 "src/mn-evolution-mailbox.gob" mn_mailbox_class->check = ___a_mn_evolution_mailbox_check; #line 197 "mn-evolution-mailbox.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_string ("uri" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_URI, param_spec); param_spec = g_param_spec_string ("folder_name" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_FOLDER_NAME, param_spec); } { #line 72 "src/mn-evolution-mailbox.gob" MN_MAILBOX_CLASS(class)->type = "evolution"; #line 228 "mn-evolution-mailbox.c" } } #undef __GOB_FUNCTION__ #line 76 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_init (MNEvolutionMailbox * self G_GNUC_UNUSED) { #line 236 "mn-evolution-mailbox.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_EVOLUTION_MAILBOX,MNEvolutionMailboxPrivate); { #line 77 "src/mn-evolution-mailbox.gob" mn_mailbox_set_format(MN_MAILBOX(self), "Evolution"); mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_EVOLUTION_MAILBOX); /* we receive notifications from Evolution, no need to poll */ mn_mailbox_set_poll(MN_MAILBOX(self), FALSE); #line 248 "mn-evolution-mailbox.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::set_property" { MNEvolutionMailbox *self G_GNUC_UNUSED; self = MN_EVOLUTION_MAILBOX (object); switch (property_id) { case PROP_URI: { #line 56 "src/mn-evolution-mailbox.gob" { char *old = self->uri; self->uri = g_value_dup_string (VAL); g_free (old); } #line 269 "mn-evolution-mailbox.c" } break; case PROP_FOLDER_NAME: { #line 63 "src/mn-evolution-mailbox.gob" { char *old = self->folder_name; self->folder_name = g_value_dup_string (VAL); g_free (old); } #line 276 "mn-evolution-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::get_property" { MNEvolutionMailbox *self G_GNUC_UNUSED; self = MN_EVOLUTION_MAILBOX (object); switch (property_id) { case PROP_URI: { #line 56 "src/mn-evolution-mailbox.gob" g_value_set_string (VAL, self->uri); #line 307 "mn-evolution-mailbox.c" } break; case PROP_FOLDER_NAME: { #line 63 "src/mn-evolution-mailbox.gob" g_value_set_string (VAL, self->folder_name); #line 314 "mn-evolution-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 85 "src/mn-evolution-mailbox.gob" static void ___3_mn_evolution_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED) #line 334 "mn-evolution-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->seal) \ (* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::seal" { #line 87 "src/mn-evolution-mailbox.gob" PARENT_HANDLER(mailbox); if (! mailbox->runtime_name) mailbox->runtime_name = g_strdup(SELF(mailbox)->folder_name); }} #line 348 "mn-evolution-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 94 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_finalize (MNEvolutionMailbox * self) { #line 356 "mn-evolution-mailbox.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::finalize" { #line 95 "src/mn-evolution-mailbox.gob" if (selfp->client) { if (selfp->pending_call) { g_assert(selfp->client->proxy != NULL); dbus_g_proxy_cancel_call(selfp->client->proxy, selfp->pending_call); } self_disconnect_proxy_signals(self); g_signal_handlers_disconnect_by_func(selfp->client, mn_mailbox_check, self); } }} #line 374 "mn-evolution-mailbox.c" #undef __GOB_FUNCTION__ #line 110 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_connect_proxy_signals (MNEvolutionMailbox * self) { #line 381 "mn-evolution-mailbox.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::connect_proxy_signals" #line 110 "src/mn-evolution-mailbox.gob" g_return_if_fail (self != NULL); #line 110 "src/mn-evolution-mailbox.gob" g_return_if_fail (MN_IS_EVOLUTION_MAILBOX (self)); #line 387 "mn-evolution-mailbox.c" { #line 112 "src/mn-evolution-mailbox.gob" g_return_if_fail(selfp->client != NULL); g_return_if_fail(selfp->client->proxy != NULL); if (selfp->signals_connected) return; dbus_g_proxy_connect_signal(selfp->client->proxy, MN_EVOLUTION_SERVER_SIGNAL_FOLDER_CHANGED, G_CALLBACK(self_folder_changed_h), self, NULL); dbus_g_proxy_connect_signal(selfp->client->proxy, MN_EVOLUTION_SERVER_SIGNAL_MESSAGE_READING, G_CALLBACK(self_message_reading_h), self, NULL); selfp->signals_connected = TRUE; }} #line 410 "mn-evolution-mailbox.c" #undef __GOB_FUNCTION__ #line 133 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_disconnect_proxy_signals (MNEvolutionMailbox * self) { #line 417 "mn-evolution-mailbox.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::disconnect_proxy_signals" #line 133 "src/mn-evolution-mailbox.gob" g_return_if_fail (self != NULL); #line 133 "src/mn-evolution-mailbox.gob" g_return_if_fail (MN_IS_EVOLUTION_MAILBOX (self)); #line 423 "mn-evolution-mailbox.c" { #line 135 "src/mn-evolution-mailbox.gob" g_return_if_fail(selfp->client != NULL); if (! selfp->signals_connected) return; selfp->signals_connected = FALSE; if (! selfp->client->proxy) return; dbus_g_proxy_disconnect_signal(selfp->client->proxy, MN_EVOLUTION_SERVER_SIGNAL_FOLDER_CHANGED, G_CALLBACK(self_folder_changed_h), self); dbus_g_proxy_disconnect_signal(selfp->client->proxy, MN_EVOLUTION_SERVER_SIGNAL_MESSAGE_READING, G_CALLBACK(self_message_reading_h), self); }} #line 446 "mn-evolution-mailbox.c" #undef __GOB_FUNCTION__ #line 156 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_folder_changed_h (DBusGProxy * proxy, const char * uri, gpointer user_data) { #line 453 "mn-evolution-mailbox.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::folder_changed_h" { #line 158 "src/mn-evolution-mailbox.gob" Self *self = user_data; if (! strcmp(uri, self->uri)) { GDK_THREADS_ENTER(); mn_mailbox_check(MN_MAILBOX(self)); GDK_THREADS_LEAVE(); } }} #line 467 "mn-evolution-mailbox.c" #undef __GOB_FUNCTION__ #line 169 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_message_reading_h (DBusGProxy * proxy, const char * uri, gpointer user_data) { #line 474 "mn-evolution-mailbox.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::message_reading_h" { #line 171 "src/mn-evolution-mailbox.gob" Self *self = user_data; if (! strcmp(uri, self->uri)) { selfp->last_browsed = mn_time(); GDK_THREADS_ENTER(); mn_mailbox_check(MN_MAILBOX(self)); GDK_THREADS_LEAVE(); } }} #line 490 "mn-evolution-mailbox.c" #undef __GOB_FUNCTION__ #line 184 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_value_array_get_values (GValueArray * value_array, ...) { #line 497 "mn-evolution-mailbox.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::value_array_get_values" #line 184 "src/mn-evolution-mailbox.gob" g_return_if_fail (value_array != NULL); #line 501 "mn-evolution-mailbox.c" { #line 186 "src/mn-evolution-mailbox.gob" va_list args; int i; va_start(args, value_array); for (i = 0; i < value_array->n_values; i++) { GValue *value = g_value_array_get_nth(value_array, i); char *error = NULL; G_VALUE_LCOPY(value, args, G_VALUE_NOCOPY_CONTENTS, &error); g_assert(error == NULL); } va_end(args); }} #line 521 "mn-evolution-mailbox.c" #undef __GOB_FUNCTION__ #line 204 "src/mn-evolution-mailbox.gob" static void ___a_mn_evolution_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED) #line 527 "mn-evolution-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->check) \ (* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::check" { #line 206 "src/mn-evolution-mailbox.gob" Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); mn_mailbox_set_error(mailbox, NULL); if (! selfp->client) { selfp->client = mn_evolution_client_get(); g_signal_connect_swapped(selfp->client, "notify::proxy", G_CALLBACK(mn_mailbox_check), self); } if (! selfp->client->proxy) /* not connected */ { selfp->pending_call = NULL; self_disconnect_proxy_signals(self); mn_mailbox_set_error(mailbox, _("unable to contact Evolution")); return; } self_connect_proxy_signals(self); if (selfp->pending_call) dbus_g_proxy_cancel_call(selfp->client->proxy, selfp->pending_call); selfp->pending_call = org_gnome_MailNotification_Evolution_get_unseen_messages_async(selfp->client->proxy, self->uri, self_get_unseen_messages_cb, self); }} #line 569 "mn-evolution-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 241 "src/mn-evolution-mailbox.gob" static void mn_evolution_mailbox_get_unseen_messages_cb (DBusGProxy * proxy, GPtrArray * messages_array, GError * err, gpointer user_data) { #line 577 "mn-evolution-mailbox.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::get_unseen_messages_cb" { #line 246 "src/mn-evolution-mailbox.gob" Self *self = user_data; GDK_THREADS_ENTER(); if (err) { mn_mailbox_set_error(MN_MAILBOX(self), "%s", err->message); g_error_free(err); } else { int i; GSList *messages = NULL; for (i = 0; i < messages_array->len; i++) { GValueArray *value_array = g_ptr_array_index(messages_array, i); MessageInfo info; MNMessageFlags flags = 0; self_value_array_get_values(value_array, &info.uid, &info.sent_time, &info.received_time, &info.id, &info.from, &info.subject); if (info.received_time > selfp->last_browsed) flags |= MN_MESSAGE_NEW; messages = g_slist_prepend(messages, mn_evolution_message_new(MN_MAILBOX(self), info.sent_time, info.id, info.from, info.subject, flags, info.uid)); } mn_g_ptr_array_free_deep_custom(messages_array, (GFunc) g_value_array_free, NULL); mn_mailbox_set_messages(MN_MAILBOX(self), messages); mn_g_object_slist_free(messages); } selfp->pending_call = NULL; GDK_THREADS_LEAVE(); }} #line 633 "mn-evolution-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-webmail-mailbox-properties.c0000644000175000001440000003132011015312647025557 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-webmail-mailbox-properties.h" #include "mn-webmail-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 25 "src/mn-webmail-mailbox-properties.gob" #include #include "mn-webmail-mailbox.h" #include "mn-mailbox-properties-private.h" #include "mn-authenticated-mailbox-properties-private.h" #include "mn-util.h" #line 34 "mn-webmail-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_WEBMAIL_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_WEBMAIL_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_WEBMAIL_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_WEBMAIL_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_WEBMAIL_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_WEBMAIL_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNWebmailMailboxProperties Self; typedef MNWebmailMailboxPropertiesClass SelfClass; /* here are local prototypes */ static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-webmail-mailbox-properties.gob" static void mn_webmail_mailbox_properties_class_init (MNWebmailMailboxPropertiesClass * c); #line 52 "mn-webmail-mailbox-properties.c" #line 81 "src/mn-webmail-mailbox-properties.gob" static void mn_webmail_mailbox_properties_init (MNWebmailMailboxProperties * self); #line 55 "mn-webmail-mailbox-properties.c" #line 131 "src/mn-webmail-mailbox-properties.gob" static void mn_webmail_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data); #line 58 "mn-webmail-mailbox-properties.c" #line 142 "src/mn-webmail-mailbox-properties.gob" static void ___3_mn_webmail_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox); #line 61 "mn-webmail-mailbox-properties.c" #line 159 "src/mn-webmail-mailbox-properties.gob" static MNMailbox * ___4_mn_webmail_mailbox_properties_get_mailbox (MNMailboxProperties * properties); #line 64 "mn-webmail-mailbox-properties.c" enum { PROP_0, PROP_COMPLETE, PROP_DEFAULT_NAME }; /* pointer to the class of our parent */ static MNAuthenticatedMailboxPropertiesClass *parent_class = NULL; /* Short form macros */ #define self_radio_toggled_h mn_webmail_mailbox_properties_radio_toggled_h GType mn_webmail_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNWebmailMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_webmail_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNWebmailMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_webmail_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES, "MNWebmailMailboxProperties", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNWebmailMailboxProperties *)g_object_new(mn_webmail_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNWebmailMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNWebmailMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNWebmailMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNWebmailMailboxProperties *)g_object_new_valist (mn_webmail_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Webmail:Mailbox:Properties::finalize" MNWebmailMailboxProperties *self G_GNUC_UNUSED = MN_WEBMAIL_MAILBOX_PROPERTIES (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_webmail_mailbox_properties_class_init (MNWebmailMailboxPropertiesClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Webmail:Mailbox:Properties::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)c; g_type_class_add_private(c,sizeof(MNWebmailMailboxPropertiesPrivate)); parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES); #line 142 "src/mn-webmail-mailbox-properties.gob" mn_mailbox_properties_class->set_mailbox = ___3_mn_webmail_mailbox_properties_set_mailbox; #line 159 "src/mn-webmail-mailbox-properties.gob" mn_mailbox_properties_class->get_mailbox = ___4_mn_webmail_mailbox_properties_get_mailbox; #line 146 "mn-webmail-mailbox-properties.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; { g_object_class_override_property (g_object_class, PROP_COMPLETE, "complete"); g_object_class_override_property (g_object_class, PROP_DEFAULT_NAME, "default_name"); } } #undef __GOB_FUNCTION__ #line 81 "src/mn-webmail-mailbox-properties.gob" static void mn_webmail_mailbox_properties_init (MNWebmailMailboxProperties * self G_GNUC_UNUSED) { #line 163 "mn-webmail-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox:Properties::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_WEBMAIL_MAILBOX_PROPERTIES,MNWebmailMailboxPropertiesPrivate); { #line 82 "src/mn-webmail-mailbox-properties.gob" MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); MNAuthenticatedMailboxProperties *auth = MN_AUTHENTICATED_MAILBOX_PROPERTIES(self); GtkWidget *folder_vbox; GtkWidget *hbox; gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->username_vbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->password_vbox, FALSE, FALSE, 0); /* translators: header capitalization */ folder_vbox = mn_mailbox_properties_add_general_section(properties, _("Folder")); selfp->inbox_radio = gtk_radio_button_new_with_mnemonic(NULL, _("In_box")); gtk_size_group_add_widget(properties->label_size_group, selfp->inbox_radio); gtk_box_pack_start(GTK_BOX(folder_vbox), selfp->inbox_radio, FALSE, FALSE, 0); selfp->other_radio = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->inbox_radio), _("_Other:")); gtk_size_group_add_widget(properties->label_size_group, selfp->other_radio); selfp->folder_entry = gtk_entry_new(); gtk_widget_set_sensitive(selfp->folder_entry, FALSE); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), selfp->other_radio, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), selfp->folder_entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(folder_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show_all(folder_vbox); properties->entries = mn_g_slist_append_elements(properties->entries, auth->username_entry, auth->password_entry, selfp->folder_entry, NULL); g_signal_connect(selfp->inbox_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self); g_signal_connect(selfp->other_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self); g_object_connect(auth->username_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); g_object_connect(selfp->folder_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); #line 216 "mn-webmail-mailbox-properties.c" } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Webmail:Mailbox:Properties::get_property" { MNWebmailMailboxProperties *self G_GNUC_UNUSED; self = MN_WEBMAIL_MAILBOX_PROPERTIES (object); switch (property_id) { case PROP_COMPLETE: { #line 41 "src/mn-webmail-mailbox-properties.gob" gboolean complete; complete = mn_authenticated_mailbox_properties_is_complete(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self)); if (complete) { gboolean other_active; const char *folder; other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)); folder = gtk_entry_get_text(GTK_ENTRY(selfp->folder_entry)); if (other_active && ! *folder) complete = FALSE; } g_value_set_boolean(VAL, complete); #line 254 "mn-webmail-mailbox-properties.c" } break; case PROP_DEFAULT_NAME: { #line 62 "src/mn-webmail-mailbox-properties.gob" const char *username; gboolean other_active; const char *folder; MNMailboxClass *class; username = gtk_entry_get_text(GTK_ENTRY(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self)->username_entry)); g_assert(*username != 0); other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)); folder = gtk_entry_get_text(GTK_ENTRY(selfp->folder_entry)); class = mn_mailbox_get_class_from_name(MN_MAILBOX_PROPERTIES_CLASS(SELF_GET_CLASS(self))->type); g_value_take_string(VAL, mn_webmail_mailbox_build_name(MN_WEBMAIL_MAILBOX_CLASS(class), username, other_active ? folder : NULL)); g_type_class_unref(class); #line 278 "mn-webmail-mailbox-properties.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 131 "src/mn-webmail-mailbox-properties.gob" static void mn_webmail_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data) { #line 299 "mn-webmail-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox:Properties::radio_toggled_h" { #line 133 "src/mn-webmail-mailbox-properties.gob" Self *self = user_data; gtk_widget_set_sensitive(selfp->folder_entry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio))); g_object_notify(G_OBJECT(self), "complete"); g_object_notify(G_OBJECT(self), "default-name"); }} #line 311 "mn-webmail-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 142 "src/mn-webmail-mailbox-properties.gob" static void ___3_mn_webmail_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox) #line 317 "mn-webmail-mailbox-properties.c" #define PARENT_HANDLER(___properties,___mailbox) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); } { #define __GOB_FUNCTION__ "MN:Webmail:Mailbox:Properties::set_mailbox" { #line 144 "src/mn-webmail-mailbox-properties.gob" Self *self = SELF(properties); MNWebmailMailbox *webmail_mailbox = MN_WEBMAIL_MAILBOX(mailbox); PARENT_HANDLER(properties, mailbox); if (! strcmp(webmail_mailbox->folder, "Inbox")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->inbox_radio), TRUE); else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->other_radio), TRUE); gtk_entry_set_text(GTK_ENTRY(selfp->folder_entry), webmail_mailbox->folder); } }} #line 339 "mn-webmail-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 159 "src/mn-webmail-mailbox-properties.gob" static MNMailbox * ___4_mn_webmail_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED) #line 346 "mn-webmail-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ ((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:Webmail:Mailbox:Properties::get_mailbox" { #line 161 "src/mn-webmail-mailbox-properties.gob" Self *self = SELF(properties); MNMailbox *mailbox; mailbox = PARENT_HANDLER(properties); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio))) g_object_set(mailbox, MN_WEBMAIL_MAILBOX_PROP_FOLDER((char *) gtk_entry_get_text(GTK_ENTRY(selfp->folder_entry))), NULL); return mailbox; }} #line 366 "mn-webmail-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-sylpheed-message-private.h0000644000175000001440000000044311015312646025231 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_SYLPHEED_MESSAGE_PRIVATE_H__ #define __MN_SYLPHEED_MESSAGE_PRIVATE_H__ #include "mn-sylpheed-message.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mozilla-mailbox-backend.c0000644000175000001440000001536011015312645025005 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-mozilla-mailbox-backend.h" #include "mn-mozilla-mailbox-backend-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-mozilla-mailbox-backend.gob" #include #include #include "mn-base-mbox-mailbox-backend-private.h" #include "mn-message-mime.h" #include "mn-util.h" /* taken from base/public/nsMsgMessageFlags.h in the Mozilla Mail&News sources */ /* in X-Mozilla-Status */ #define MOZILLA_MSG_FLAG_READ 0x0001 #define MOZILLA_MSG_FLAG_EXPUNGED 0x0008 /* in X-Mozilla-Status2 */ #define MOZILLA_MSG_FLAG_NEW 0x10000 #line 41 "mn-mozilla-mailbox-backend.c" /* self casting macros */ #define SELF(x) MN_MOZILLA_MAILBOX_BACKEND(x) #define SELF_CONST(x) MN_MOZILLA_MAILBOX_BACKEND_CONST(x) #define IS_SELF(x) MN_IS_MOZILLA_MAILBOX_BACKEND(x) #define TYPE_SELF MN_TYPE_MOZILLA_MAILBOX_BACKEND #define SELF_CLASS(x) MN_MOZILLA_MAILBOX_BACKEND_CLASS(x) #define SELF_GET_CLASS(x) MN_MOZILLA_MAILBOX_BACKEND_GET_CLASS(x) /* self typedefs */ typedef MNMozillaMailboxBackend Self; typedef MNMozillaMailboxBackendClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-mozilla-mailbox-backend.gob" static void mn_mozilla_mailbox_backend_init (MNMozillaMailboxBackend * o); #line 58 "mn-mozilla-mailbox-backend.c" #line 41 "src/mn-mozilla-mailbox-backend.gob" static void mn_mozilla_mailbox_backend_class_init (MNMozillaMailboxBackendClass * class); #line 61 "mn-mozilla-mailbox-backend.c" #line 46 "src/mn-mozilla-mailbox-backend.gob" static MNMessage * ___2_mn_mozilla_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * backend, GMimeMessage * mime_message); #line 64 "mn-mozilla-mailbox-backend.c" #line 66 "src/mn-mozilla-mailbox-backend.gob" static int mn_mozilla_mailbox_backend_get_status_flags (GMimeMessage * mime_message, const char * header_name); #line 67 "mn-mozilla-mailbox-backend.c" /* pointer to the class of our parent */ static MNBaseMboxMailboxBackendClass *parent_class = NULL; /* Short form macros */ #define self_get_status_flags mn_mozilla_mailbox_backend_get_status_flags GType mn_mozilla_mailbox_backend_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMozillaMailboxBackendClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_mozilla_mailbox_backend_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMozillaMailboxBackend), 0 /* n_preallocs */, (GInstanceInitFunc) mn_mozilla_mailbox_backend_init, NULL }; type = g_type_register_static (MN_TYPE_BASE_MBOX_MAILBOX_BACKEND, "MNMozillaMailboxBackend", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMozillaMailboxBackend *)g_object_new(mn_mozilla_mailbox_backend_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMozillaMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMozillaMailboxBackend * GET_NEW_VARG (const char *first, ...) { MNMozillaMailboxBackend *ret; va_list ap; va_start (ap, first); ret = (MNMozillaMailboxBackend *)g_object_new_valist (mn_mozilla_mailbox_backend_get_type (), first, ap); va_end (ap); return ret; } static void mn_mozilla_mailbox_backend_init (MNMozillaMailboxBackend * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Mozilla:Mailbox:Backend::init" } #undef __GOB_FUNCTION__ #line 41 "src/mn-mozilla-mailbox-backend.gob" static void mn_mozilla_mailbox_backend_class_init (MNMozillaMailboxBackendClass * class G_GNUC_UNUSED) { #line 126 "mn-mozilla-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Mozilla:Mailbox:Backend::class_init" MNBaseMboxMailboxBackendClass *mn_base_mbox_mailbox_backend_class = (MNBaseMboxMailboxBackendClass *)class; parent_class = g_type_class_ref (MN_TYPE_BASE_MBOX_MAILBOX_BACKEND); #line 46 "src/mn-mozilla-mailbox-backend.gob" mn_base_mbox_mailbox_backend_class->get_new_message = ___2_mn_mozilla_mailbox_backend_get_new_message; #line 134 "mn-mozilla-mailbox-backend.c" { #line 42 "src/mn-mozilla-mailbox-backend.gob" MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Mozilla"; #line 140 "mn-mozilla-mailbox-backend.c" } } #undef __GOB_FUNCTION__ #line 46 "src/mn-mozilla-mailbox-backend.gob" static MNMessage * ___2_mn_mozilla_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * backend G_GNUC_UNUSED, GMimeMessage * mime_message) #line 150 "mn-mozilla-mailbox-backend.c" #define PARENT_HANDLER(___backend,___mime_message) \ ((MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(parent_class)->get_new_message)? \ (* MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(parent_class)->get_new_message)(___backend,___mime_message): \ ((MNMessage * )0)) { #define __GOB_FUNCTION__ "MN:Mozilla:Mailbox:Backend::get_new_message" { #line 48 "src/mn-mozilla-mailbox-backend.gob" int flags; flags = self_get_status_flags(mime_message, "X-Mozilla-Status"); if ((flags & MOZILLA_MSG_FLAG_READ) == 0 && (flags & MOZILLA_MSG_FLAG_EXPUNGED) == 0) { int mn_flags = 0; if ((self_get_status_flags(mime_message, "X-Mozilla-Status2") & MOZILLA_MSG_FLAG_NEW) != 0) mn_flags |= MN_MESSAGE_NEW; return mn_message_new_from_mime_message(MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), mime_message, NULL, mn_flags, FALSE); } else return NULL; }} #line 176 "mn-mozilla-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 66 "src/mn-mozilla-mailbox-backend.gob" static int mn_mozilla_mailbox_backend_get_status_flags (GMimeMessage * mime_message, const char * header_name) { #line 184 "mn-mozilla-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Mozilla:Mailbox:Backend::get_status_flags" #line 66 "src/mn-mozilla-mailbox-backend.gob" g_return_val_if_fail (mime_message != NULL, (int )0); #line 66 "src/mn-mozilla-mailbox-backend.gob" g_return_val_if_fail (GMIME_IS_MESSAGE (mime_message), (int )0); #line 66 "src/mn-mozilla-mailbox-backend.gob" g_return_val_if_fail (header_name != NULL, (int )0); #line 192 "mn-mozilla-mailbox-backend.c" { #line 69 "src/mn-mozilla-mailbox-backend.gob" const char *header; header = g_mime_message_get_header(mime_message, header_name); if (header && mn_str_ishex(header)) return strtol(header, NULL, 16); else return 0; }} #line 204 "mn-mozilla-mailbox-backend.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-maildir-message.c0000644000175000001440000003343211015312645023363 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-maildir-message.h" #include "mn-maildir-message-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 28 "src/mn-maildir-message.gob" #include #include "mn-vfs-mailbox.h" #include "mn-vfs.h" #include "mn-util.h" #include "mn-message-private.h" #include "mn-shell.h" #define DELETE_DIALOG_MESSAGE "mn-maildir-message-delete-dialog-message" #line 37 "mn-maildir-message.c" /* self casting macros */ #define SELF(x) MN_MAILDIR_MESSAGE(x) #define SELF_CONST(x) MN_MAILDIR_MESSAGE_CONST(x) #define IS_SELF(x) MN_IS_MAILDIR_MESSAGE(x) #define TYPE_SELF MN_TYPE_MAILDIR_MESSAGE #define SELF_CLASS(x) MN_MAILDIR_MESSAGE_CLASS(x) #define SELF_GET_CLASS(x) MN_MAILDIR_MESSAGE_GET_CLASS(x) /* self typedefs */ typedef MNMaildirMessage Self; typedef MNMaildirMessageClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-maildir-message.gob" static void mn_maildir_message_init (MNMaildirMessage * o); #line 54 "mn-maildir-message.c" #line 0 "src/mn-maildir-message.gob" static void mn_maildir_message_class_init (MNMaildirMessageClass * c); #line 57 "mn-maildir-message.c" #line 41 "src/mn-maildir-message.gob" static int mn_maildir_message_flags_sort_cb (const void * a, const void * b); #line 60 "mn-maildir-message.c" #line 52 "src/mn-maildir-message.gob" static void ___2_mn_maildir_message_builtin_mark_as_read (MNMessage * message, MNMessageActionRequest * request); #line 63 "mn-maildir-message.c" #line 58 "src/mn-maildir-message.gob" static GError * mn_maildir_message_builtin_mark_as_read_cb (MNMessage * message, gpointer data); #line 66 "mn-maildir-message.c" #line 114 "src/mn-maildir-message.gob" static GnomeVFSURI * mn_maildir_message_get_trash_uri (MNMaildirMessage * self); #line 69 "mn-maildir-message.c" #line 145 "src/mn-maildir-message.gob" static GError * mn_maildir_message_delete_with_prompt (MNMaildirMessage * self, const char * format, ...) G_GNUC_PRINTF(2, 3); #line 72 "mn-maildir-message.c" #line 192 "src/mn-maildir-message.gob" static void mn_maildir_message_delete_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data); #line 75 "mn-maildir-message.c" #line 207 "src/mn-maildir-message.gob" static void ___7_mn_maildir_message_builtin_delete (MNMessage * message, MNMessageActionRequest * request); #line 78 "mn-maildir-message.c" #line 213 "src/mn-maildir-message.gob" static GError * mn_maildir_message_builtin_delete_cb (MNMessage * message, gpointer data); #line 81 "mn-maildir-message.c" /* pointer to the class of our parent */ static MNVFSMessageClass *parent_class = NULL; /* Short form macros */ #define self_flags_sort_cb mn_maildir_message_flags_sort_cb #define self_builtin_mark_as_read_cb mn_maildir_message_builtin_mark_as_read_cb #define self_get_trash_uri mn_maildir_message_get_trash_uri #define self_delete_with_prompt mn_maildir_message_delete_with_prompt #define self_delete_messages_changed_h mn_maildir_message_delete_messages_changed_h #define self_builtin_delete_cb mn_maildir_message_builtin_delete_cb GType mn_maildir_message_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMaildirMessageClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_maildir_message_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMaildirMessage), 0 /* n_preallocs */, (GInstanceInitFunc) mn_maildir_message_init, NULL }; type = g_type_register_static (MN_TYPE_VFS_MESSAGE, "MNMaildirMessage", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMaildirMessage *)g_object_new(mn_maildir_message_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMaildirMessage * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMaildirMessage * GET_NEW_VARG (const char *first, ...) { MNMaildirMessage *ret; va_list ap; va_start (ap, first); ret = (MNMaildirMessage *)g_object_new_valist (mn_maildir_message_get_type (), first, ap); va_end (ap); return ret; } static void mn_maildir_message_init (MNMaildirMessage * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Maildir:Message::init" } #undef __GOB_FUNCTION__ static void mn_maildir_message_class_init (MNMaildirMessageClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Maildir:Message::class_init" MNMessageClass *mn_message_class = (MNMessageClass *)c; parent_class = g_type_class_ref (MN_TYPE_VFS_MESSAGE); #line 52 "src/mn-maildir-message.gob" mn_message_class->builtin_mark_as_read = ___2_mn_maildir_message_builtin_mark_as_read; #line 207 "src/mn-maildir-message.gob" mn_message_class->builtin_delete = ___7_mn_maildir_message_builtin_delete; #line 153 "mn-maildir-message.c" } #undef __GOB_FUNCTION__ #line 41 "src/mn-maildir-message.gob" static int mn_maildir_message_flags_sort_cb (const void * a, const void * b) { #line 163 "mn-maildir-message.c" #define __GOB_FUNCTION__ "MN:Maildir:Message::flags_sort_cb" { #line 43 "src/mn-maildir-message.gob" char ca = *((char *) a); char cb = *((char *) b); /* sort flags using ASCII order, see http://cr.yp.to/proto/maildir.html */ return ca - cb; }} #line 175 "mn-maildir-message.c" #undef __GOB_FUNCTION__ #line 52 "src/mn-maildir-message.gob" static void ___2_mn_maildir_message_builtin_mark_as_read (MNMessage * message G_GNUC_UNUSED, MNMessageActionRequest * request) #line 181 "mn-maildir-message.c" #define PARENT_HANDLER(___message,___request) \ { if(MN_MESSAGE_CLASS(parent_class)->builtin_mark_as_read) \ (* MN_MESSAGE_CLASS(parent_class)->builtin_mark_as_read)(___message,___request); } { #define __GOB_FUNCTION__ "MN:Maildir:Message::builtin_mark_as_read" { #line 54 "src/mn-maildir-message.gob" mn_message_perform_action_in_thread(request, self_builtin_mark_as_read_cb, NULL); }} #line 192 "mn-maildir-message.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 58 "src/mn-maildir-message.gob" static GError * mn_maildir_message_builtin_mark_as_read_cb (MNMessage * message, gpointer data) { #line 200 "mn-maildir-message.c" #define __GOB_FUNCTION__ "MN:Maildir:Message::builtin_mark_as_read_cb" { #line 60 "src/mn-maildir-message.gob" MNVFSMessage *vmessage = MN_VFS_MESSAGE(message); char *old_flags; char *old_filename; char *new_filename; GnomeVFSURI *dir_uri; GnomeVFSURI *new_uri; GError *err = NULL; /* http://cr.yp.to/proto/maildir.html */ old_filename = gnome_vfs_uri_extract_short_name(vmessage->vfs_uri); old_flags = strrchr(old_filename, ','); if (old_flags) { char *new_flags; int old_len; char *base_filename; /* append the S (seen) flag */ old_flags++; g_assert(strchr(old_flags, 'S') == NULL); old_len = strlen(old_flags); new_flags = g_new(char, old_len + 2); /* + space for S and nul */ memcpy(new_flags, old_flags, old_len); new_flags[old_len] = 'S'; new_flags[old_len + 1] = 0; qsort(new_flags, old_len + 1, sizeof(char), self_flags_sort_cb); base_filename = g_strndup(old_filename, old_flags - old_filename - 1); new_filename = g_strdup_printf("%s,%s", base_filename, new_flags); g_free(base_filename); g_free(new_flags); } else new_filename = g_strconcat(old_filename, ":2,S", NULL); g_free(old_filename); dir_uri = gnome_vfs_uri_append_path(MN_VFS_MAILBOX(message->mailbox)->vfs_uri, "cur"); new_uri = gnome_vfs_uri_append_file_name(dir_uri, new_filename); gnome_vfs_uri_unref(dir_uri); g_free(new_filename); mn_vfs_result_to_g_error(gnome_vfs_move_uri(vmessage->vfs_uri, new_uri, TRUE), &err); gnome_vfs_uri_unref(new_uri); return err; }} #line 256 "mn-maildir-message.c" #undef __GOB_FUNCTION__ #line 114 "src/mn-maildir-message.gob" static GnomeVFSURI * mn_maildir_message_get_trash_uri (MNMaildirMessage * self) { #line 263 "mn-maildir-message.c" #define __GOB_FUNCTION__ "MN:Maildir:Message::get_trash_uri" #line 114 "src/mn-maildir-message.gob" g_return_val_if_fail (self != NULL, (GnomeVFSURI * )0); #line 114 "src/mn-maildir-message.gob" g_return_val_if_fail (MN_IS_MAILDIR_MESSAGE (self), (GnomeVFSURI * )0); #line 269 "mn-maildir-message.c" { #line 116 "src/mn-maildir-message.gob" MNVFSMessage *vmessage = MN_VFS_MESSAGE(self); GnomeVFSURI *trash_uri; /* * Do what is advised in the gnome_vfs_find_directory() * documentation: first pass find_if_needed, then create_if_needed. */ if (gnome_vfs_find_directory(vmessage->vfs_uri, GNOME_VFS_DIRECTORY_KIND_TRASH, &trash_uri, FALSE, TRUE, 0) == GNOME_VFS_OK) return trash_uri; if (gnome_vfs_find_directory(vmessage->vfs_uri, GNOME_VFS_DIRECTORY_KIND_TRASH, &trash_uri, TRUE, FALSE, S_IRUSR | S_IWUSR | S_IXUSR) == GNOME_VFS_OK) return trash_uri; return NULL; }} #line 299 "mn-maildir-message.c" #undef __GOB_FUNCTION__ #line 145 "src/mn-maildir-message.gob" static GError * mn_maildir_message_delete_with_prompt (MNMaildirMessage * self, const char * format, ...) { #line 306 "mn-maildir-message.c" #define __GOB_FUNCTION__ "MN:Maildir:Message::delete_with_prompt" #line 145 "src/mn-maildir-message.gob" g_return_val_if_fail (self != NULL, (GError * )0); #line 145 "src/mn-maildir-message.gob" g_return_val_if_fail (MN_IS_MAILDIR_MESSAGE (self), (GError * )0); #line 145 "src/mn-maildir-message.gob" g_return_val_if_fail (format != NULL, (GError * )0); #line 314 "mn-maildir-message.c" { #line 147 "src/mn-maildir-message.gob" GtkWidget *dialog; char *prompt; int response; MN_STRDUP_VPRINTF(prompt, format); GDK_THREADS_ENTER(); dialog = mn_alert_dialog_new(NULL, GTK_MESSAGE_WARNING, 0, _("Delete message?"), prompt); g_free(prompt); gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_DELETE, GTK_RESPONSE_OK, NULL); g_object_set_data(G_OBJECT(dialog), DELETE_DIALOG_MESSAGE, self); mn_g_object_connect(dialog, mn_shell->mailboxes, "signal::messages-changed", self_delete_messages_changed_h, dialog, NULL); response = mn_dialog_run_nonmodal(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); gdk_flush(); GDK_THREADS_LEAVE(); if (response == GTK_RESPONSE_OK) { GError *err = NULL; mn_vfs_result_to_g_error(gnome_vfs_unlink_from_uri(MN_VFS_MESSAGE(self)->vfs_uri), &err); return err; } else return g_error_new(MN_MESSAGE_ACTION_ERROR, MN_MESSAGE_ACTION_ERROR_CANCELLED, "cancelled"); }} #line 361 "mn-maildir-message.c" #undef __GOB_FUNCTION__ #line 192 "src/mn-maildir-message.gob" static void mn_maildir_message_delete_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data) { #line 368 "mn-maildir-message.c" #define __GOB_FUNCTION__ "MN:Maildir:Message::delete_messages_changed_h" { #line 196 "src/mn-maildir-message.gob" GtkWidget *dialog = user_data; Self *self; self = g_object_get_data(G_OBJECT(dialog), DELETE_DIALOG_MESSAGE); /* if the message was removed, close the dialog */ if (! g_hash_table_lookup(mn_shell->mailboxes->messages_hash_table, MN_MESSAGE(self)->id)) gtk_dialog_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL); }} #line 382 "mn-maildir-message.c" #undef __GOB_FUNCTION__ #line 207 "src/mn-maildir-message.gob" static void ___7_mn_maildir_message_builtin_delete (MNMessage * message G_GNUC_UNUSED, MNMessageActionRequest * request) #line 388 "mn-maildir-message.c" #define PARENT_HANDLER(___message,___request) \ { if(MN_MESSAGE_CLASS(parent_class)->builtin_delete) \ (* MN_MESSAGE_CLASS(parent_class)->builtin_delete)(___message,___request); } { #define __GOB_FUNCTION__ "MN:Maildir:Message::builtin_delete" { #line 209 "src/mn-maildir-message.gob" mn_message_perform_action_in_thread(request, self_builtin_delete_cb, NULL); }} #line 399 "mn-maildir-message.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 213 "src/mn-maildir-message.gob" static GError * mn_maildir_message_builtin_delete_cb (MNMessage * message, gpointer data) { #line 407 "mn-maildir-message.c" #define __GOB_FUNCTION__ "MN:Maildir:Message::builtin_delete_cb" { #line 215 "src/mn-maildir-message.gob" Self *self = SELF(message); MNVFSMessage *vmessage = MN_VFS_MESSAGE(message); GnomeVFSURI *trash_uri; char *filename; GnomeVFSURI *dest_uri; GnomeVFSResult result; trash_uri = self_get_trash_uri(self); if (! trash_uri) return self_delete_with_prompt(self, _("The message cannot be moved to the trash. Permanently delete it?")); filename = gnome_vfs_uri_extract_short_name(vmessage->vfs_uri); dest_uri = gnome_vfs_uri_append_file_name(trash_uri, filename); gnome_vfs_uri_unref(trash_uri); g_free(filename); /* * Use gnome_vfs_xfer_uri() rather than gnome_vfs_move_uri(), in * case the trash resides on a different file system than the * message. */ result = gnome_vfs_xfer_uri(vmessage->vfs_uri, dest_uri, GNOME_VFS_XFER_REMOVESOURCE | GNOME_VFS_XFER_FOLLOW_LINKS, GNOME_VFS_XFER_ERROR_MODE_ABORT, GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE, NULL, NULL); gnome_vfs_uri_unref(dest_uri); if (result == GNOME_VFS_OK) return NULL; else return self_delete_with_prompt(self, _("The message could not be moved to the trash (%s). Permanently delete it?"), gnome_vfs_result_to_string(result)); }} #line 448 "mn-maildir-message.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-sound-file-chooser-dialog.gob.stamp0000644000175000001440000000000011015312645026713 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-properties-dialog.gob.stamp0000644000175000001440000000000011015312645025402 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-mailbox-properties.h0000644000175000001440000000755711015312644024162 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-mailbox.h" #ifndef __MN_MAILBOX_PROPERTIES_H__ #define __MN_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MAILBOX_PROPERTIES (mn_mailbox_properties_get_type()) #define MN_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mailbox_properties_get_type(), MNMailboxProperties) #define MN_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mailbox_properties_get_type(), MNMailboxProperties const) #define MN_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_mailbox_properties_get_type(), MNMailboxPropertiesClass) #define MN_IS_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mailbox_properties_get_type ()) #define MN_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_mailbox_properties_get_type(), MNMailboxPropertiesClass) /* Private structure type */ typedef struct _MNMailboxPropertiesPrivate MNMailboxPropertiesPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_MAILBOX_PROPERTIES__ typedef struct _MNMailboxProperties MNMailboxProperties; #endif struct _MNMailboxProperties { GObject __parent__; /*< private >*/ GtkWidget * dialog; /* protected */ GtkSizeGroup * label_size_group; /* protected */ GSList * entries; /* protected */ MNMailboxPropertiesPrivate *_priv; }; /* * Class definition */ typedef struct _MNMailboxPropertiesClass MNMailboxPropertiesClass; struct _MNMailboxPropertiesClass { GObjectClass __parent__; void (* activate) (MNMailboxProperties * self); void (* deactivate) (MNMailboxProperties * self); void (* set_mailbox) (MNMailboxProperties * self, MNMailbox * mailbox); MNMailbox * (* get_mailbox) (MNMailboxProperties * self); const char * type; const char * stock_id; const char * combo_label; gboolean enable_check_delay; }; /* * Public methods */ GType mn_mailbox_properties_get_type (void) G_GNUC_CONST; #line 62 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_activate (MNMailboxProperties * self); #line 72 "mn-mailbox-properties.h" #line 65 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_deactivate (MNMailboxProperties * self); #line 75 "mn-mailbox-properties.h" #line 68 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_set_mailbox (MNMailboxProperties * self, MNMailbox * mailbox); #line 79 "mn-mailbox-properties.h" #line 71 "src/mn-mailbox-properties.gob" MNMailbox * mn_mailbox_properties_get_mailbox (MNMailboxProperties * self); #line 82 "mn-mailbox-properties.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_MAILBOX_PROPERTIES_PROP_DIALOG(arg) "dialog", __extension__ ({GtkWidget * z = (arg); z;}) #define MN_MAILBOX_PROPERTIES_GET_PROP_DIALOG(arg) "dialog", __extension__ ({GtkWidget * *z = (arg); z;}) #define MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete", __extension__ ({gboolean *z = (arg); z;}) #define MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name", __extension__ ({gchar **z = (arg); z;}) #define MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(arg) "default_check_delay", __extension__ ({gint *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_MAILBOX_PROPERTIES_PROP_DIALOG(arg) "dialog",(GtkWidget * )(arg) #define MN_MAILBOX_PROPERTIES_GET_PROP_DIALOG(arg) "dialog",(GtkWidget * *)(arg) #define MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete",(gboolean *)(arg) #define MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name",(gchar **)(arg) #define MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(arg) "default_check_delay",(gint *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-system-vfs-mailbox-properties.gob.stamp0000644000175000001440000000000011015312647027716 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-imap-mailbox-properties.c0000644000175000001440000003626711015312646025103 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-imap-mailbox-properties.h" #include "mn-imap-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 28 "src/mn-imap-mailbox-properties.gob" #include #include "mn-mailbox-properties.h" #include "mn-mailbox-properties-private.h" #include "mn-authenticated-mailbox-properties-private.h" #include "mn-pi-mailbox-properties-private.h" #include "mn-auth-combo-box.h" #include "mn-util.h" #include "mn-properties-dialog.h" #line 37 "mn-imap-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_IMAP_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_IMAP_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_IMAP_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_IMAP_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_IMAP_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_IMAP_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNIMAPMailboxProperties Self; typedef MNIMAPMailboxPropertiesClass SelfClass; /* here are local prototypes */ static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 90 "src/mn-imap-mailbox-properties.gob" static void mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class); #line 55 "mn-imap-mailbox-properties.c" #line 98 "src/mn-imap-mailbox-properties.gob" static void mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * self); #line 58 "mn-imap-mailbox-properties.c" #line 156 "src/mn-imap-mailbox-properties.gob" static void mn_imap_mailbox_properties_add_idle_usage (MNIMAPMailboxProperties * self, GtkBox * idle_vbox, MNIMAPMailboxUseIDLE usage, const char * mnemonic); #line 61 "mn-imap-mailbox-properties.c" #line 170 "src/mn-imap-mailbox-properties.gob" static void mn_imap_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data); #line 64 "mn-imap-mailbox-properties.c" #line 181 "src/mn-imap-mailbox-properties.gob" static void ___5_mn_imap_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox); #line 67 "mn-imap-mailbox-properties.c" #line 200 "src/mn-imap-mailbox-properties.gob" static MNMailbox * ___6_mn_imap_mailbox_properties_get_mailbox (MNMailboxProperties * properties); #line 70 "mn-imap-mailbox-properties.c" enum { PROP_0, PROP_COMPLETE, PROP_DEFAULT_NAME }; /* pointer to the class of our parent */ static MNPIMailboxPropertiesClass *parent_class = NULL; /* Short form macros */ #define self_add_idle_usage mn_imap_mailbox_properties_add_idle_usage #define self_radio_toggled_h mn_imap_mailbox_properties_radio_toggled_h GType mn_imap_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNIMAPMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_imap_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNIMAPMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_imap_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_PI_MAILBOX_PROPERTIES, "MNIMAPMailboxProperties", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNIMAPMailboxProperties *)g_object_new(mn_imap_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNIMAPMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNIMAPMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNIMAPMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNIMAPMailboxProperties *)g_object_new_valist (mn_imap_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::finalize" MNIMAPMailboxProperties *self G_GNUC_UNUSED = MN_IMAP_MAILBOX_PROPERTIES (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ #line 90 "src/mn-imap-mailbox-properties.gob" static void mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GNUC_UNUSED) { #line 142 "mn-imap-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)class; g_type_class_add_private(class,sizeof(MNIMAPMailboxPropertiesPrivate)); parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX_PROPERTIES); #line 181 "src/mn-imap-mailbox-properties.gob" mn_mailbox_properties_class->set_mailbox = ___5_mn_imap_mailbox_properties_set_mailbox; #line 200 "src/mn-imap-mailbox-properties.gob" mn_mailbox_properties_class->get_mailbox = ___6_mn_imap_mailbox_properties_get_mailbox; #line 155 "mn-imap-mailbox-properties.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; { g_object_class_override_property (g_object_class, PROP_COMPLETE, "complete"); g_object_class_override_property (g_object_class, PROP_DEFAULT_NAME, "default_name"); } { #line 91 "src/mn-imap-mailbox-properties.gob" MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "imap"; p_class->combo_label = "IMAP"; #line 174 "mn-imap-mailbox-properties.c" } } #undef __GOB_FUNCTION__ #line 98 "src/mn-imap-mailbox-properties.gob" static void mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * self G_GNUC_UNUSED) { #line 182 "mn-imap-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_IMAP_MAILBOX_PROPERTIES,MNIMAPMailboxPropertiesPrivate); { #line 99 "src/mn-imap-mailbox-properties.gob" MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self); GtkWidget *hbox; GtkWidget *folder_vbox; GtkWidget *idle_section; GtkWidget *idle_vbox; int i; /* translators: header capitalization */ folder_vbox = mn_mailbox_properties_add_general_section(properties, _("IMAP Mailbox")); selfp->inbox_radio = gtk_radio_button_new_with_mnemonic(NULL, _("In_box")); gtk_size_group_add_widget(properties->label_size_group, selfp->inbox_radio); gtk_box_pack_start(GTK_BOX(folder_vbox), selfp->inbox_radio, FALSE, FALSE, 0); selfp->other_radio = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->inbox_radio), _("_Other:")); gtk_size_group_add_widget(properties->label_size_group, selfp->other_radio); selfp->mailbox_entry = gtk_entry_new(); gtk_widget_set_sensitive(selfp->mailbox_entry, FALSE); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), selfp->other_radio, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), selfp->mailbox_entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(folder_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show_all(folder_vbox); /* translators: header capitalization */ idle_section = mn_hig_section_new_with_box(_("Use the IDLE Extension"), NULL, &idle_vbox); gtk_box_pack_start(GTK_BOX(pi->connection_page), idle_section, FALSE, FALSE, 0); gtk_widget_show(idle_section); self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_NEVER, Q_("IMAP connection tab|_Never")); self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT, _("A_utodetect")); self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_ALWAYS, _("Al_ways")); /* by default, autodetect is enabled */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT]), TRUE); mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+LOGIN", "IMAP LOGIN"); for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++) gtk_spin_button_set_value(GTK_SPIN_BUTTON(pi->port_spin[i]), mn_imap_mailbox_default_ports[i]); properties->entries = g_slist_append(properties->entries, selfp->mailbox_entry); g_signal_connect(selfp->inbox_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self); g_signal_connect(selfp->other_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self); g_object_connect(selfp->mailbox_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); #line 243 "mn-imap-mailbox-properties.c" } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::get_property" { MNIMAPMailboxProperties *self G_GNUC_UNUSED; self = MN_IMAP_MAILBOX_PROPERTIES (object); switch (property_id) { case PROP_COMPLETE: { #line 48 "src/mn-imap-mailbox-properties.gob" gboolean complete; complete = mn_pi_mailbox_properties_is_complete(MN_PI_MAILBOX_PROPERTIES(self)); if (complete) { gboolean other_active; const char *mailbox; other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)); mailbox = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry)); if (other_active && ! *mailbox) complete = FALSE; } g_value_set_boolean(VAL, complete); #line 281 "mn-imap-mailbox-properties.c" } break; case PROP_DEFAULT_NAME: { #line 69 "src/mn-imap-mailbox-properties.gob" const char *username; const char *server; gboolean other_active; const char *mailbox; mn_authenticated_mailbox_properties_get_contents(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self), &username, NULL); mn_pi_mailbox_properties_get_contents(MN_PI_MAILBOX_PROPERTIES(self), NULL, NULL, &server, NULL); other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)); mailbox = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry)); g_value_take_string(VAL, mn_imap_mailbox_build_name(username, server, other_active ? mailbox : NULL)); #line 307 "mn-imap-mailbox-properties.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 156 "src/mn-imap-mailbox-properties.gob" static void mn_imap_mailbox_properties_add_idle_usage (MNIMAPMailboxProperties * self, GtkBox * idle_vbox, MNIMAPMailboxUseIDLE usage, const char * mnemonic) { #line 328 "mn-imap-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::add_idle_usage" #line 156 "src/mn-imap-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 156 "src/mn-imap-mailbox-properties.gob" g_return_if_fail (MN_IS_IMAP_MAILBOX_PROPERTIES (self)); #line 156 "src/mn-imap-mailbox-properties.gob" g_return_if_fail (idle_vbox != NULL); #line 156 "src/mn-imap-mailbox-properties.gob" g_return_if_fail (mnemonic != NULL); #line 338 "mn-imap-mailbox-properties.c" { #line 161 "src/mn-imap-mailbox-properties.gob" selfp->use_idle_radio[usage] = usage == 0 ? gtk_radio_button_new_with_mnemonic(NULL, mnemonic) : gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->use_idle_radio[0]), mnemonic); gtk_box_pack_start(idle_vbox, selfp->use_idle_radio[usage], TRUE, TRUE, 0); gtk_widget_show(selfp->use_idle_radio[usage]); }} #line 349 "mn-imap-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 170 "src/mn-imap-mailbox-properties.gob" static void mn_imap_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data) { #line 356 "mn-imap-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::radio_toggled_h" { #line 172 "src/mn-imap-mailbox-properties.gob" Self *self = user_data; gtk_widget_set_sensitive(selfp->mailbox_entry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio))); g_object_notify(G_OBJECT(self), "complete"); g_object_notify(G_OBJECT(self), "default-name"); }} #line 368 "mn-imap-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 181 "src/mn-imap-mailbox-properties.gob" static void ___5_mn_imap_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox) #line 374 "mn-imap-mailbox-properties.c" #define PARENT_HANDLER(___properties,___mailbox) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); } { #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::set_mailbox" { #line 183 "src/mn-imap-mailbox-properties.gob" Self *self = SELF(properties); MNIMAPMailbox *imap_mailbox = MN_IMAP_MAILBOX(mailbox); PARENT_HANDLER(properties, mailbox); if (! mn_utf8_strcasecmp(imap_mailbox->mailbox, "INBOX")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->inbox_radio), TRUE); else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->other_radio), TRUE); gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_entry), imap_mailbox->mailbox); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[imap_mailbox->use_idle_extension]), TRUE); }} #line 398 "mn-imap-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 200 "src/mn-imap-mailbox-properties.gob" static MNMailbox * ___6_mn_imap_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED) #line 405 "mn-imap-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ ((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::get_mailbox" { #line 202 "src/mn-imap-mailbox-properties.gob" Self *self = SELF(properties); MNIMAPMailboxUseIDLE use_idle; MNMailbox *mailbox; mailbox = PARENT_HANDLER(properties); for (use_idle = 0; use_idle < MN_IMAP_MAILBOX_N_USE_IDLE; use_idle++) if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[use_idle]))) break; g_object_set(mailbox, MN_IMAP_MAILBOX_PROP_USE_IDLE_EXTENSION(use_idle), NULL); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio))) g_object_set(mailbox, MN_IMAP_MAILBOX_PROP_MAILBOX((char *) gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry))), NULL); return mailbox; }} #line 432 "mn-imap-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-gmail-mailbox-properties.h0000644000175000001440000000477011015312646025245 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-authenticated-mailbox-properties.h" #ifndef __MN_GMAIL_MAILBOX_PROPERTIES_H__ #define __MN_GMAIL_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_GMAIL_MAILBOX_PROPERTIES (mn_gmail_mailbox_properties_get_type()) #define MN_GMAIL_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_gmail_mailbox_properties_get_type(), MNGmailMailboxProperties) #define MN_GMAIL_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_gmail_mailbox_properties_get_type(), MNGmailMailboxProperties const) #define MN_GMAIL_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_gmail_mailbox_properties_get_type(), MNGmailMailboxPropertiesClass) #define MN_IS_GMAIL_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_gmail_mailbox_properties_get_type ()) #define MN_GMAIL_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_gmail_mailbox_properties_get_type(), MNGmailMailboxPropertiesClass) /* Private structure type */ typedef struct _MNGmailMailboxPropertiesPrivate MNGmailMailboxPropertiesPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_GMAIL_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_GMAIL_MAILBOX_PROPERTIES__ typedef struct _MNGmailMailboxProperties MNGmailMailboxProperties; #endif struct _MNGmailMailboxProperties { MNAuthenticatedMailboxProperties __parent__; /*< private >*/ MNGmailMailboxPropertiesPrivate *_priv; }; /* * Class definition */ typedef struct _MNGmailMailboxPropertiesClass MNGmailMailboxPropertiesClass; struct _MNGmailMailboxPropertiesClass { MNAuthenticatedMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_gmail_mailbox_properties_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_GMAIL_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete", __extension__ ({gboolean *z = (arg); z;}) #define MN_GMAIL_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_GMAIL_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete",(gboolean *)(arg) #define MN_GMAIL_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-mailbox-properties.gob.stamp0000644000175000001440000000000011015312647027622 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-compact-message-view-private.h0000644000175000001440000000045711015312644026015 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_COMPACT_MESSAGE_VIEW_PRIVATE_H__ #define __MN_COMPACT_MESSAGE_VIEW_PRIVATE_H__ #include "mn-compact-message-view.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mbox-mailbox-backend-private.h0000644000175000001440000000045711015312645025761 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MBOX_MAILBOX_BACKEND_PRIVATE_H__ #define __MN_MBOX_MAILBOX_BACKEND_PRIVATE_H__ #include "mn-mbox-mailbox-backend.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-compact-message-view.c0000644000175000001440000002000711015312644024331 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-compact-message-view.h" #include "mn-compact-message-view-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-compact-message-view.gob" #include #include "mn-message-view-private.h" #include "mn-message.h" #include "mn-util.h" #include "mn-text-table.h" #line 34 "mn-compact-message-view.c" /* self casting macros */ #define SELF(x) MN_COMPACT_MESSAGE_VIEW(x) #define SELF_CONST(x) MN_COMPACT_MESSAGE_VIEW_CONST(x) #define IS_SELF(x) MN_IS_COMPACT_MESSAGE_VIEW(x) #define TYPE_SELF MN_TYPE_COMPACT_MESSAGE_VIEW #define SELF_CLASS(x) MN_COMPACT_MESSAGE_VIEW_CLASS(x) #define SELF_GET_CLASS(x) MN_COMPACT_MESSAGE_VIEW_GET_CLASS(x) /* self typedefs */ typedef MNCompactMessageView Self; typedef MNCompactMessageViewClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-compact-message-view.gob" static void mn_compact_message_view_init (MNCompactMessageView * o); #line 51 "mn-compact-message-view.c" #line 0 "src/mn-compact-message-view.gob" static void mn_compact_message_view_class_init (MNCompactMessageViewClass * c); #line 54 "mn-compact-message-view.c" #line 34 "src/mn-compact-message-view.gob" static void ___1_mn_compact_message_view_append_header (MNMessageView * view); #line 57 "mn-compact-message-view.c" #line 46 "src/mn-compact-message-view.gob" static void ___2_mn_compact_message_view_append_message (MNMessageView * view, MNMessage * message, time_t now); #line 60 "mn-compact-message-view.c" #line 61 "src/mn-compact-message-view.gob" static void mn_compact_message_view_append_header (MNCompactMessageView * self, const char * name); #line 63 "mn-compact-message-view.c" #line 71 "src/mn-compact-message-view.gob" static void mn_compact_message_view_append_cell (MNCompactMessageView * self, const char * text); #line 66 "mn-compact-message-view.c" /* pointer to the class of our parent */ static MNMessageViewClass *parent_class = NULL; /* Short form macros */ #define self_append_header mn_compact_message_view_append_header #define self_append_cell mn_compact_message_view_append_cell #define self_new mn_compact_message_view_new GType mn_compact_message_view_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNCompactMessageViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_compact_message_view_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNCompactMessageView), 0 /* n_preallocs */, (GInstanceInitFunc) mn_compact_message_view_init, NULL }; type = g_type_register_static (MN_TYPE_MESSAGE_VIEW, "MNCompactMessageView", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNCompactMessageView *)g_object_new(mn_compact_message_view_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNCompactMessageView * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNCompactMessageView * GET_NEW_VARG (const char *first, ...) { MNCompactMessageView *ret; va_list ap; va_start (ap, first); ret = (MNCompactMessageView *)g_object_new_valist (mn_compact_message_view_get_type (), first, ap); va_end (ap); return ret; } static void mn_compact_message_view_init (MNCompactMessageView * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Compact:Message:View::init" } #undef __GOB_FUNCTION__ static void mn_compact_message_view_class_init (MNCompactMessageViewClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Compact:Message:View::class_init" MNMessageViewClass *mn_message_view_class = (MNMessageViewClass *)c; parent_class = g_type_class_ref (MN_TYPE_MESSAGE_VIEW); #line 34 "src/mn-compact-message-view.gob" mn_message_view_class->append_header = ___1_mn_compact_message_view_append_header; #line 46 "src/mn-compact-message-view.gob" mn_message_view_class->append_message = ___2_mn_compact_message_view_append_message; #line 135 "mn-compact-message-view.c" } #undef __GOB_FUNCTION__ #line 34 "src/mn-compact-message-view.gob" static void ___1_mn_compact_message_view_append_header (MNMessageView * view G_GNUC_UNUSED) #line 144 "mn-compact-message-view.c" #define PARENT_HANDLER(___view) \ { if(MN_MESSAGE_VIEW_CLASS(parent_class)->append_header) \ (* MN_MESSAGE_VIEW_CLASS(parent_class)->append_header)(___view); } { #define __GOB_FUNCTION__ "MN:Compact:Message:View::append_header" { #line 36 "src/mn-compact-message-view.gob" Self *self = SELF(view); self_append_header(self, _("Mailbox")); self_append_header(self, _("From")); self_append_header(self, _("Subject")); self_append_header(self, _("Sent")); mn_text_table_line_break(MN_TEXT_TABLE(self)); }} #line 161 "mn-compact-message-view.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 46 "src/mn-compact-message-view.gob" static void ___2_mn_compact_message_view_append_message (MNMessageView * view G_GNUC_UNUSED, MNMessage * message, time_t now) #line 168 "mn-compact-message-view.c" #define PARENT_HANDLER(___view,___message,___now) \ { if(MN_MESSAGE_VIEW_CLASS(parent_class)->append_message) \ (* MN_MESSAGE_VIEW_CLASS(parent_class)->append_message)(___view,___message,___now); } { #define __GOB_FUNCTION__ "MN:Compact:Message:View::append_message" { #line 48 "src/mn-compact-message-view.gob" Self *self = SELF(view); self_append_cell(self, message->mailbox->runtime_name); self_append_cell(self, message->from); self_append_cell(self, message->subject); if (message->sent_time > 0) mn_message_view_append_past_time_cell(MN_MESSAGE_VIEW(self), message->sent_time, now); mn_text_table_line_break(MN_TEXT_TABLE(self)); }} #line 188 "mn-compact-message-view.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 61 "src/mn-compact-message-view.gob" static void mn_compact_message_view_append_header (MNCompactMessageView * self, const char * name) { #line 196 "mn-compact-message-view.c" #define __GOB_FUNCTION__ "MN:Compact:Message:View::append_header" #line 61 "src/mn-compact-message-view.gob" g_return_if_fail (self != NULL); #line 61 "src/mn-compact-message-view.gob" g_return_if_fail (MN_IS_COMPACT_MESSAGE_VIEW (self)); #line 61 "src/mn-compact-message-view.gob" g_return_if_fail (name != NULL); #line 204 "mn-compact-message-view.c" { #line 63 "src/mn-compact-message-view.gob" char *markup; markup = g_markup_printf_escaped("%s", name); mn_text_table_append_text_cell_from_markup(MN_TEXT_TABLE(self), markup); g_free(markup); }} #line 214 "mn-compact-message-view.c" #undef __GOB_FUNCTION__ #line 71 "src/mn-compact-message-view.gob" static void mn_compact_message_view_append_cell (MNCompactMessageView * self, const char * text) { #line 221 "mn-compact-message-view.c" #define __GOB_FUNCTION__ "MN:Compact:Message:View::append_cell" #line 71 "src/mn-compact-message-view.gob" g_return_if_fail (self != NULL); #line 71 "src/mn-compact-message-view.gob" g_return_if_fail (MN_IS_COMPACT_MESSAGE_VIEW (self)); #line 71 "src/mn-compact-message-view.gob" g_return_if_fail (text != NULL); #line 229 "mn-compact-message-view.c" { #line 73 "src/mn-compact-message-view.gob" mn_text_table_append_text_cell(MN_TEXT_TABLE(self), text); }} #line 235 "mn-compact-message-view.c" #undef __GOB_FUNCTION__ #line 77 "src/mn-compact-message-view.gob" GtkWidget * mn_compact_message_view_new (void) { #line 242 "mn-compact-message-view.c" #define __GOB_FUNCTION__ "MN:Compact:Message:View::new" { #line 79 "src/mn-compact-message-view.gob" return GTK_WIDGET(GET_NEW); }} #line 249 "mn-compact-message-view.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-reentrant-mailbox.gob.stamp0000644000175000001440000000000011015312647025406 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-popup.gob.stamp0000644000175000001440000000000011015312645023114 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-webmail-mailbox-properties.h0000644000175000001440000000507411015312647025573 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-authenticated-mailbox-properties.h" #ifndef __MN_WEBMAIL_MAILBOX_PROPERTIES_H__ #define __MN_WEBMAIL_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_WEBMAIL_MAILBOX_PROPERTIES (mn_webmail_mailbox_properties_get_type()) #define MN_WEBMAIL_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_webmail_mailbox_properties_get_type(), MNWebmailMailboxProperties) #define MN_WEBMAIL_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_webmail_mailbox_properties_get_type(), MNWebmailMailboxProperties const) #define MN_WEBMAIL_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_webmail_mailbox_properties_get_type(), MNWebmailMailboxPropertiesClass) #define MN_IS_WEBMAIL_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_webmail_mailbox_properties_get_type ()) #define MN_WEBMAIL_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_webmail_mailbox_properties_get_type(), MNWebmailMailboxPropertiesClass) /* Private structure type */ typedef struct _MNWebmailMailboxPropertiesPrivate MNWebmailMailboxPropertiesPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_WEBMAIL_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_WEBMAIL_MAILBOX_PROPERTIES__ typedef struct _MNWebmailMailboxProperties MNWebmailMailboxProperties; #endif struct _MNWebmailMailboxProperties { MNAuthenticatedMailboxProperties __parent__; /*< private >*/ MNWebmailMailboxPropertiesPrivate *_priv; }; /* * Class definition */ typedef struct _MNWebmailMailboxPropertiesClass MNWebmailMailboxPropertiesClass; struct _MNWebmailMailboxPropertiesClass { MNAuthenticatedMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_webmail_mailbox_properties_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_WEBMAIL_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete", __extension__ ({gboolean *z = (arg); z;}) #define MN_WEBMAIL_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_WEBMAIL_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete",(gboolean *)(arg) #define MN_WEBMAIL_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-text-table.h0000644000175000001440000000506711015312645022401 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_TEXT_TABLE_H__ #define __MN_TEXT_TABLE_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct _MNTextTableCell MNTextTableCell; /* * Type checking and casting macros */ #define MN_TYPE_TEXT_TABLE (mn_text_table_get_type()) #define MN_TEXT_TABLE(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_text_table_get_type(), MNTextTable) #define MN_TEXT_TABLE_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_text_table_get_type(), MNTextTable const) #define MN_TEXT_TABLE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_text_table_get_type(), MNTextTableClass) #define MN_IS_TEXT_TABLE(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_text_table_get_type ()) #define MN_TEXT_TABLE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_text_table_get_type(), MNTextTableClass) /* Private structure type */ typedef struct _MNTextTablePrivate MNTextTablePrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_TEXT_TABLE__ #define __TYPEDEF_MN_TEXT_TABLE__ typedef struct _MNTextTable MNTextTable; #endif struct _MNTextTable { GtkWidget __parent__; /*< private >*/ MNTextTablePrivate *_priv; }; /* * Class definition */ typedef struct _MNTextTableClass MNTextTableClass; struct _MNTextTableClass { GtkWidgetClass __parent__; void (* clear) (MNTextTable * self); }; /* * Public methods */ GType mn_text_table_get_type (void) G_GNUC_CONST; #line 257 "src/mn-text-table.gob" void mn_text_table_clear (MNTextTable * self); #line 65 "mn-text-table.h" #line 270 "src/mn-text-table.gob" MNTextTableCell * mn_text_table_append_text_cell (MNTextTable * self, const char * text); #line 69 "mn-text-table.h" #line 276 "src/mn-text-table.gob" MNTextTableCell * mn_text_table_append_text_cell_from_markup (MNTextTable * self, const char * markup); #line 73 "mn-text-table.h" #line 287 "src/mn-text-table.gob" MNTextTableCell * mn_text_table_append_text_cell_from_layout (MNTextTable * self, PangoLayout * layout); #line 77 "mn-text-table.h" #line 301 "src/mn-text-table.gob" MNTextTableCell * mn_text_table_append_blank_cell (MNTextTable * self, int width, int height); #line 82 "mn-text-table.h" #line 333 "src/mn-text-table.gob" void mn_text_table_cell_set_text (MNTextTable * self, MNTextTableCell * cell, const char * text); #line 87 "mn-text-table.h" #line 351 "src/mn-text-table.gob" void mn_text_table_line_break (MNTextTable * self); #line 90 "mn-text-table.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-folder-tree-client.h0000644000175000001440000001317011015312647026032 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_EVOLUTION_FOLDER_TREE_CLIENT_H__ #define __MN_EVOLUTION_FOLDER_TREE_CLIENT_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_EVOLUTION_FOLDER_TREE_CLIENT (mn_evolution_folder_tree_client_get_type()) #define MN_EVOLUTION_FOLDER_TREE_CLIENT(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_folder_tree_client_get_type(), MNEvolutionFolderTreeClient) #define MN_EVOLUTION_FOLDER_TREE_CLIENT_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_folder_tree_client_get_type(), MNEvolutionFolderTreeClient const) #define MN_EVOLUTION_FOLDER_TREE_CLIENT_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_evolution_folder_tree_client_get_type(), MNEvolutionFolderTreeClientClass) #define MN_IS_EVOLUTION_FOLDER_TREE_CLIENT(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_evolution_folder_tree_client_get_type ()) #define MN_EVOLUTION_FOLDER_TREE_CLIENT_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_evolution_folder_tree_client_get_type(), MNEvolutionFolderTreeClientClass) /* Private structure type */ typedef struct _MNEvolutionFolderTreeClientPrivate MNEvolutionFolderTreeClientPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_EVOLUTION_FOLDER_TREE_CLIENT__ #define __TYPEDEF_MN_EVOLUTION_FOLDER_TREE_CLIENT__ typedef struct _MNEvolutionFolderTreeClient MNEvolutionFolderTreeClient; #endif struct _MNEvolutionFolderTreeClient { GtkHBox __parent__; /*< public >*/ char * selected_uri; /*< private >*/ MNEvolutionFolderTreeClientPrivate *_priv; }; /* * Class definition */ typedef struct _MNEvolutionFolderTreeClientClass MNEvolutionFolderTreeClientClass; struct _MNEvolutionFolderTreeClientClass { GtkHBoxClass __parent__; /*signal*/void (* folder_activated) (MNEvolutionFolderTreeClient * self); }; /* * Public methods */ GType mn_evolution_folder_tree_client_get_type (void) G_GNUC_CONST; #line 44 "src/mn-evolution-folder-tree-client.gob" gboolean mn_evolution_folder_tree_client_get_connected (MNEvolutionFolderTreeClient * self); #line 63 "mn-evolution-folder-tree-client.h" #line 59 "src/mn-evolution-folder-tree-client.gob" gchar * mn_evolution_folder_tree_client_get_selected_uri (MNEvolutionFolderTreeClient * self); #line 66 "mn-evolution-folder-tree-client.h" #line 51 "src/mn-evolution-folder-tree-client.gob" void mn_evolution_folder_tree_client_set_selected_uri (MNEvolutionFolderTreeClient * self, gchar * val); #line 70 "mn-evolution-folder-tree-client.h" #line 356 "src/mn-evolution-folder-tree-client.gob" GtkWidget * mn_evolution_folder_tree_client_new (void); #line 73 "mn-evolution-folder-tree-client.h" /* * Signal connection wrapper macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define mn_evolution_folder_tree_client_connect__folder_activated(object,func,data) g_signal_connect(MN_EVOLUTION_FOLDER_TREE_CLIENT(__extension__ ({MNEvolutionFolderTreeClient *___object = (object); ___object; })),"folder_activated",(GCallback) __extension__ ({void (* ___folder_activated) (MNEvolutionFolderTreeClient * ___fake___self, gpointer ___data ) = (func); ___folder_activated; }), (data)) #define mn_evolution_folder_tree_client_connect_after__folder_activated(object,func,data) g_signal_connect_after(MN_EVOLUTION_FOLDER_TREE_CLIENT(__extension__ ({MNEvolutionFolderTreeClient *___object = (object); ___object; })),"folder_activated",(GCallback) __extension__ ({void (* ___folder_activated) (MNEvolutionFolderTreeClient * ___fake___self, gpointer ___data ) = (func); ___folder_activated; }), (data)) #define mn_evolution_folder_tree_client_connect_data__folder_activated(object,func,data,destroy_data,flags) g_signal_connect_data(MN_EVOLUTION_FOLDER_TREE_CLIENT(__extension__ ({MNEvolutionFolderTreeClient *___object = (object); ___object; })),"folder_activated",(GCallback) __extension__ ({void (* ___folder_activated) (MNEvolutionFolderTreeClient * ___fake___self, gpointer ___data ) = (func); ___folder_activated; }), (data), (destroy_data), (GConnectFlags)(flags)) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define mn_evolution_folder_tree_client_connect__folder_activated(object,func,data) g_signal_connect(MN_EVOLUTION_FOLDER_TREE_CLIENT(object),"folder_activated",(GCallback)(func),(data)) #define mn_evolution_folder_tree_client_connect_after__folder_activated(object,func,data) g_signal_connect_after(MN_EVOLUTION_FOLDER_TREE_CLIENT(object),"folder_activated",(GCallback)(func),(data)) #define mn_evolution_folder_tree_client_connect_data__folder_activated(object,func,data,destroy_data,flags) g_signal_connect_data(MN_EVOLUTION_FOLDER_TREE_CLIENT(object),"folder_activated",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #endif /* __GNUC__ && !__STRICT_ANSI__ */ /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_EVOLUTION_FOLDER_TREE_CLIENT_GET_PROP_CONNECTED(arg) "connected", __extension__ ({gboolean *z = (arg); z;}) #define MN_EVOLUTION_FOLDER_TREE_CLIENT_PROP_SELECTED_URI(arg) "selected_uri", __extension__ ({gchar *z = (arg); z;}) #define MN_EVOLUTION_FOLDER_TREE_CLIENT_GET_PROP_SELECTED_URI(arg) "selected_uri", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_EVOLUTION_FOLDER_TREE_CLIENT_GET_PROP_CONNECTED(arg) "connected",(gboolean *)(arg) #define MN_EVOLUTION_FOLDER_TREE_CLIENT_PROP_SELECTED_URI(arg) "selected_uri",(gchar *)(arg) #define MN_EVOLUTION_FOLDER_TREE_CLIENT_GET_PROP_SELECTED_URI(arg) "selected_uri",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-compact-message-view.gob.stamp0000644000175000001440000000000011015312644025770 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-mail-icon.h0000644000175000001440000004261511015312644022177 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "eggtrayicon.h" #ifndef __MN_MAIL_ICON_H__ #define __MN_MAIL_ICON_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MAIL_ICON (mn_mail_icon_get_type()) #define MN_MAIL_ICON(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mail_icon_get_type(), MNMailIcon) #define MN_MAIL_ICON_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mail_icon_get_type(), MNMailIcon const) #define MN_MAIL_ICON_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_mail_icon_get_type(), MNMailIconClass) #define MN_IS_MAIL_ICON(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mail_icon_get_type ()) #define MN_MAIL_ICON_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_mail_icon_get_type(), MNMailIconClass) /* Private structure type */ typedef struct _MNMailIconPrivate MNMailIconPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_MAIL_ICON__ #define __TYPEDEF_MN_MAIL_ICON__ typedef struct _MNMailIcon MNMailIcon; #endif struct _MNMailIcon { EggTrayIcon __parent__; /*< public >*/ GtkWidget * mail_reader_item; GtkWidget * open_latest_message_item; GtkWidget * update_item; GtkWidget * consider_new_mail_as_read_item; /*< private >*/ MNMailIconPrivate *_priv; }; /* * Class definition */ typedef struct _MNMailIconClass MNMailIconClass; struct _MNMailIconClass { EggTrayIconClass __parent__; /*signal*/void (* activate) (MNMailIcon * self); /*signal*/void (* activate_mail_reader) (MNMailIcon * self); /*signal*/void (* activate_open_latest_message) (MNMailIcon * self); /*signal*/void (* activate_consider_new_mail_as_read) (MNMailIcon * self); /*signal*/void (* activate_update) (MNMailIcon * self); /*signal*/void (* activate_properties) (MNMailIcon * self); /*signal*/void (* activate_help) (MNMailIcon * self); /*signal*/void (* activate_about) (MNMailIcon * self); /*signal*/void (* activate_remove) (MNMailIcon * self); }; /* * Public methods */ GType mn_mail_icon_get_type (void) G_GNUC_CONST; #line 260 "src/mn-mail-icon.gob" void mn_mail_icon_set_from_stock (MNMailIcon * self, const char * stock_id); #line 76 "mn-mail-icon.h" #line 269 "src/mn-mail-icon.gob" void mn_mail_icon_set_blinking (MNMailIcon * self, gboolean blinking); #line 80 "mn-mail-icon.h" #line 275 "src/mn-mail-icon.gob" void mn_mail_icon_set_count (MNMailIcon * self, int count); #line 84 "mn-mail-icon.h" #line 281 "src/mn-mail-icon.gob" void mn_mail_icon_set_tip (MNMailIcon * self, const char * tip); #line 88 "mn-mail-icon.h" #line 287 "src/mn-mail-icon.gob" void mn_mail_icon_set_tip_widget (MNMailIcon * self, GtkWidget * tip_widget); #line 92 "mn-mail-icon.h" #line 293 "src/mn-mail-icon.gob" GtkWidget * mn_mail_icon_new (void); #line 95 "mn-mail-icon.h" /* * Signal connection wrapper macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define mn_mail_icon_connect__activate(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data)) #define mn_mail_icon_connect_after__activate(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data)) #define mn_mail_icon_connect_data__activate(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_mail_reader(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data)) #define mn_mail_icon_connect_after__activate_mail_reader(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data)) #define mn_mail_icon_connect_data__activate_mail_reader(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_open_latest_message(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_open_latest_message",(GCallback) __extension__ ({void (* ___activate_open_latest_message) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_open_latest_message; }), (data)) #define mn_mail_icon_connect_after__activate_open_latest_message(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_open_latest_message",(GCallback) __extension__ ({void (* ___activate_open_latest_message) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_open_latest_message; }), (data)) #define mn_mail_icon_connect_data__activate_open_latest_message(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_open_latest_message",(GCallback) __extension__ ({void (* ___activate_open_latest_message) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_open_latest_message; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_consider_new_mail_as_read(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_consider_new_mail_as_read",(GCallback) __extension__ ({void (* ___activate_consider_new_mail_as_read) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_consider_new_mail_as_read; }), (data)) #define mn_mail_icon_connect_after__activate_consider_new_mail_as_read(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_consider_new_mail_as_read",(GCallback) __extension__ ({void (* ___activate_consider_new_mail_as_read) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_consider_new_mail_as_read; }), (data)) #define mn_mail_icon_connect_data__activate_consider_new_mail_as_read(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_consider_new_mail_as_read",(GCallback) __extension__ ({void (* ___activate_consider_new_mail_as_read) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_consider_new_mail_as_read; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_update(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data)) #define mn_mail_icon_connect_after__activate_update(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data)) #define mn_mail_icon_connect_data__activate_update(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_properties(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data)) #define mn_mail_icon_connect_after__activate_properties(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data)) #define mn_mail_icon_connect_data__activate_properties(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_help(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_help",(GCallback) __extension__ ({void (* ___activate_help) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_help; }), (data)) #define mn_mail_icon_connect_after__activate_help(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_help",(GCallback) __extension__ ({void (* ___activate_help) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_help; }), (data)) #define mn_mail_icon_connect_data__activate_help(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_help",(GCallback) __extension__ ({void (* ___activate_help) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_help; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_about(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_about",(GCallback) __extension__ ({void (* ___activate_about) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_about; }), (data)) #define mn_mail_icon_connect_after__activate_about(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_about",(GCallback) __extension__ ({void (* ___activate_about) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_about; }), (data)) #define mn_mail_icon_connect_data__activate_about(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_about",(GCallback) __extension__ ({void (* ___activate_about) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_about; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_remove(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_remove",(GCallback) __extension__ ({void (* ___activate_remove) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_remove; }), (data)) #define mn_mail_icon_connect_after__activate_remove(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_remove",(GCallback) __extension__ ({void (* ___activate_remove) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_remove; }), (data)) #define mn_mail_icon_connect_data__activate_remove(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_remove",(GCallback) __extension__ ({void (* ___activate_remove) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_remove; }), (data), (destroy_data), (GConnectFlags)(flags)) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define mn_mail_icon_connect__activate(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data)) #define mn_mail_icon_connect_after__activate(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data)) #define mn_mail_icon_connect_data__activate(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_mail_reader(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data)) #define mn_mail_icon_connect_after__activate_mail_reader(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data)) #define mn_mail_icon_connect_data__activate_mail_reader(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_open_latest_message(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_open_latest_message",(GCallback)(func),(data)) #define mn_mail_icon_connect_after__activate_open_latest_message(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_open_latest_message",(GCallback)(func),(data)) #define mn_mail_icon_connect_data__activate_open_latest_message(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_open_latest_message",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_consider_new_mail_as_read(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_consider_new_mail_as_read",(GCallback)(func),(data)) #define mn_mail_icon_connect_after__activate_consider_new_mail_as_read(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_consider_new_mail_as_read",(GCallback)(func),(data)) #define mn_mail_icon_connect_data__activate_consider_new_mail_as_read(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_consider_new_mail_as_read",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_update(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_update",(GCallback)(func),(data)) #define mn_mail_icon_connect_after__activate_update(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_update",(GCallback)(func),(data)) #define mn_mail_icon_connect_data__activate_update(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_update",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_properties(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_properties",(GCallback)(func),(data)) #define mn_mail_icon_connect_after__activate_properties(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_properties",(GCallback)(func),(data)) #define mn_mail_icon_connect_data__activate_properties(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_properties",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_help(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_help",(GCallback)(func),(data)) #define mn_mail_icon_connect_after__activate_help(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_help",(GCallback)(func),(data)) #define mn_mail_icon_connect_data__activate_help(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_help",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_about(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_about",(GCallback)(func),(data)) #define mn_mail_icon_connect_after__activate_about(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_about",(GCallback)(func),(data)) #define mn_mail_icon_connect_data__activate_about(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_about",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mail_icon_connect__activate_remove(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_remove",(GCallback)(func),(data)) #define mn_mail_icon_connect_after__activate_remove(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_remove",(GCallback)(func),(data)) #define mn_mail_icon_connect_data__activate_remove(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_remove",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-properties-dialog-private.h0000644000175000001440000000651711015312645025432 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_PROPERTIES_DIALOG_PRIVATE_H__ #define __MN_PROPERTIES_DIALOG_PRIVATE_H__ #include "mn-properties-dialog.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 24 "src/mn-properties-dialog.gob" #include "mn-mailbox.h" #line 18 "mn-properties-dialog-private.h" struct _MNPropertiesDialogPrivate { #line 50 "src/mn-properties-dialog.gob" GtkWidget * notebook; #line 53 "src/mn-properties-dialog.gob" GtkWidget * play_sound_hbox; #line 54 "src/mn-properties-dialog.gob" GtkWidget * play_sound_check; #line 55 "src/mn-properties-dialog.gob" GtkWidget * play_sound_file_chooser_button; #line 56 "src/mn-properties-dialog.gob" GtkWidget * scrolled; #line 57 "src/mn-properties-dialog.gob" GtkWidget * list; #line 58 "src/mn-properties-dialog.gob" GtkWidget * selected_label; #line 59 "src/mn-properties-dialog.gob" GtkWidget * add; #line 60 "src/mn-properties-dialog.gob" GtkWidget * remove; #line 61 "src/mn-properties-dialog.gob" GtkWidget * properties; #line 64 "src/mn-properties-dialog.gob" GtkWidget * icon_action_mail_reader_radio; #line 65 "src/mn-properties-dialog.gob" GtkWidget * icon_action_open_latest_message_radio; #line 66 "src/mn-properties-dialog.gob" GtkWidget * icon_action_consider_new_mail_as_read_radio; #line 67 "src/mn-properties-dialog.gob" GtkWidget * icon_action_update_radio; #line 70 "src/mn-properties-dialog.gob" GtkWidget * popups_enable_check; #line 71 "src/mn-properties-dialog.gob" GtkWidget * popups_position_section_label; #line 72 "src/mn-properties-dialog.gob" GtkWidget * popups_position_attached_radio; #line 73 "src/mn-properties-dialog.gob" GtkWidget * popups_position_free_radio; #line 74 "src/mn-properties-dialog.gob" GtkWidget * popups_expiration_section_label; #line 75 "src/mn-properties-dialog.gob" GtkWidget * popups_expiration_default_radio; #line 76 "src/mn-properties-dialog.gob" GtkWidget * popups_expiration_never_radio; #line 77 "src/mn-properties-dialog.gob" GtkWidget * popups_expiration_after_radio; #line 78 "src/mn-properties-dialog.gob" GtkWidget * popups_expiration_scale; #line 80 "src/mn-properties-dialog.gob" MNMailbox * test_mailbox; #line 68 "mn-properties-dialog-private.h" }; #line 279 "src/mn-properties-dialog.gob" void mn_properties_dialog_toggled_h (MNPropertiesDialog * self, GtkToggleButton * button); #line 72 "mn-properties-dialog-private.h" #line 285 "src/mn-properties-dialog.gob" void mn_properties_dialog_add_clicked_h (MNPropertiesDialog * self, GtkButton * button); #line 75 "mn-properties-dialog-private.h" #line 291 "src/mn-properties-dialog.gob" void mn_properties_dialog_remove_clicked_h (MNPropertiesDialog * self, GtkButton * button); #line 78 "mn-properties-dialog-private.h" #line 297 "src/mn-properties-dialog.gob" void mn_properties_dialog_properties_clicked_h (MNPropertiesDialog * self, GtkButton * button); #line 81 "mn-properties-dialog-private.h" #line 303 "src/mn-properties-dialog.gob" char * mn_properties_dialog_popups_expiration_format_value_h (MNPropertiesDialog * self, double arg, GtkScale * scale); #line 84 "mn-properties-dialog-private.h" #line 309 "src/mn-properties-dialog.gob" void mn_properties_dialog_test_messages_toggled_h (MNPropertiesDialog * self, GtkToggleButton * button); #line 87 "mn-properties-dialog-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-yahoo-mailbox-properties.gob.stamp0000644000175000001440000000000011015312646026714 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-mailboxes-private.h0000644000175000001440000000077211015312644023760 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MAILBOXES_PRIVATE_H__ #define __MN_MAILBOXES_PRIVATE_H__ #include "mn-mailboxes.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNMailboxesPrivate { #line 52 "src/mn-mailboxes.gob" GSList * add_queue; #line 53 "src/mn-mailboxes.gob" GSList * remove_queue; #line 54 "src/mn-mailboxes.gob" unsigned int queue_idle_id; #line 20 "mn-mailboxes-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mailbox-properties.gob.stamp0000644000175000001440000000000011015312644025575 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-mailbox.h0000644000175000001440000003271311015312644021760 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include #include #include "mn-decls.h" #ifndef __MN_MAILBOX_H__ #define __MN_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define MN_MAILBOX_MAX_TYPES 8 extern GType mn_mailbox_types[MN_MAILBOX_MAX_TYPES + 1]; typedef struct _MNMailboxConfiguration MNMailboxConfiguration; /* * Type checking and casting macros */ #define MN_TYPE_MAILBOX (mn_mailbox_get_type()) #define MN_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mailbox_get_type(), MNMailbox) #define MN_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mailbox_get_type(), MNMailbox const) #define MN_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_mailbox_get_type(), MNMailboxClass) #define MN_IS_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mailbox_get_type ()) #define MN_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_mailbox_get_type(), MNMailboxClass) /* Private structure type */ typedef struct _MNMailboxPrivate MNMailboxPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_MAILBOX__ #define __TYPEDEF_MN_MAILBOX__ typedef struct _MNMailbox MNMailbox; #endif struct _MNMailbox { GObject __parent__; /*< public >*/ char * runtime_name; char * name; char * open_command; char * mark_as_read_command; char * mark_as_spam_command; char * delete_command; char * stock_id; char * format; int runtime_check_delay; int check_delay; GHashTable * messages; time_t timestamp; char * error; /*< private >*/ MNMailboxPrivate *_priv; }; /* * Class definition */ typedef struct _MNMailboxClass MNMailboxClass; struct _MNMailboxClass { GObjectClass __parent__; /*signal*/void (* added) (MNMailbox * self); /*signal*/void (* removed) (MNMailbox * self); /*signal*/void (* messages_changed) (MNMailbox * self, gboolean has_new); void (* seal) (MNMailbox * self); MNMailbox * (* parse_uri) (MNMailbox * self, const char * uri); void (* check) (MNMailbox * self); const char * type; int default_check_delay; gboolean enable_checking_when_added; }; /* * Public methods */ GType mn_mailbox_get_type (void) G_GNUC_CONST; #line 135 "src/mn-mailbox.gob" gboolean mn_mailbox_get_active (MNMailbox * self); #line 93 "mn-mailbox.h" #line 154 "src/mn-mailbox.gob" void mn_mailbox_added (MNMailbox * self); #line 96 "mn-mailbox.h" #line 170 "src/mn-mailbox.gob" void mn_mailbox_removed (MNMailbox * self); #line 99 "mn-mailbox.h" #line 210 "src/mn-mailbox.gob" gchar * mn_mailbox_get_stock_id (MNMailbox * self); #line 102 "mn-mailbox.h" #line 210 "src/mn-mailbox.gob" void mn_mailbox_set_stock_id (MNMailbox * self, gchar * val); #line 106 "mn-mailbox.h" #line 213 "src/mn-mailbox.gob" gchar * mn_mailbox_get_format (MNMailbox * self); #line 109 "mn-mailbox.h" #line 213 "src/mn-mailbox.gob" void mn_mailbox_set_format (MNMailbox * self, gchar * val); #line 113 "mn-mailbox.h" #line 244 "src/mn-mailbox.gob" gboolean mn_mailbox_get_poll (MNMailbox * self); #line 116 "mn-mailbox.h" #line 227 "src/mn-mailbox.gob" void mn_mailbox_set_poll (MNMailbox * self, gboolean val); #line 120 "mn-mailbox.h" #line 255 "src/mn-mailbox.gob" gboolean mn_mailbox_get_manually_checkable (MNMailbox * self); #line 123 "mn-mailbox.h" #line 522 "src/mn-mailbox.gob" void mn_mailbox_init_types (void); #line 126 "mn-mailbox.h" #line 558 "src/mn-mailbox.gob" MNMailboxClass * mn_mailbox_get_class_from_name (const char * type); #line 129 "mn-mailbox.h" #line 577 "src/mn-mailbox.gob" GType mn_mailbox_get_type_from_name (const char * type); #line 132 "mn-mailbox.h" #line 638 "src/mn-mailbox.gob" MNMailbox * mn_mailbox_new (const char * type, ...) G_GNUC_NULL_TERMINATED; #line 136 "mn-mailbox.h" #line 658 "src/mn-mailbox.gob" MNMailbox * mn_mailbox_new_from_xml_node (xmlNode * node, GError ** err); #line 140 "mn-mailbox.h" #line 691 "src/mn-mailbox.gob" xmlNode * mn_mailbox_xml_node_new (MNMailbox * self); #line 143 "mn-mailbox.h" #line 703 "src/mn-mailbox.gob" MNMailbox * mn_mailbox_new_from_uri (const char * uri); #line 146 "mn-mailbox.h" #line 724 "src/mn-mailbox.gob" MNMailbox * mn_mailbox_new_from_configuration (MNMailboxConfiguration * config); #line 149 "mn-mailbox.h" #line 730 "src/mn-mailbox.gob" MNMailboxConfiguration * mn_mailbox_get_configuration (MNMailbox * self); #line 152 "mn-mailbox.h" #line 765 "src/mn-mailbox.gob" void mn_mailbox_configuration_free (MNMailboxConfiguration * config); #line 155 "mn-mailbox.h" #line 777 "src/mn-mailbox.gob" MNMailbox * mn_mailbox_new_from_obsolete_uri (const char * uri); #line 158 "mn-mailbox.h" #line 1094 "src/mn-mailbox.gob" void mn_mailbox_seal (MNMailbox * self); #line 161 "mn-mailbox.h" #line 1112 "src/mn-mailbox.gob" void mn_mailbox_check (MNMailbox * self); #line 164 "mn-mailbox.h" #line 1180 "src/mn-mailbox.gob" char * mn_mailbox_get_command (MNMailbox * self, const char * id); #line 168 "mn-mailbox.h" #line 1199 "src/mn-mailbox.gob" gboolean mn_mailbox_has_command (MNMailbox * self, const char * id); #line 172 "mn-mailbox.h" /* * Signal connection wrapper macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define mn_mailbox_connect__added(object,func,data) g_signal_connect(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"added",(GCallback) __extension__ ({void (* ___added) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___added; }), (data)) #define mn_mailbox_connect_after__added(object,func,data) g_signal_connect_after(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"added",(GCallback) __extension__ ({void (* ___added) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___added; }), (data)) #define mn_mailbox_connect_data__added(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"added",(GCallback) __extension__ ({void (* ___added) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___added; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailbox_connect__removed(object,func,data) g_signal_connect(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"removed",(GCallback) __extension__ ({void (* ___removed) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___removed; }), (data)) #define mn_mailbox_connect_after__removed(object,func,data) g_signal_connect_after(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"removed",(GCallback) __extension__ ({void (* ___removed) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___removed; }), (data)) #define mn_mailbox_connect_data__removed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"removed",(GCallback) __extension__ ({void (* ___removed) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___removed; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailbox_connect__messages_changed(object,func,data) g_signal_connect(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data)) #define mn_mailbox_connect_after__messages_changed(object,func,data) g_signal_connect_after(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data)) #define mn_mailbox_connect_data__messages_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data), (destroy_data), (GConnectFlags)(flags)) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define mn_mailbox_connect__added(object,func,data) g_signal_connect(MN_MAILBOX(object),"added",(GCallback)(func),(data)) #define mn_mailbox_connect_after__added(object,func,data) g_signal_connect_after(MN_MAILBOX(object),"added",(GCallback)(func),(data)) #define mn_mailbox_connect_data__added(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX(object),"added",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailbox_connect__removed(object,func,data) g_signal_connect(MN_MAILBOX(object),"removed",(GCallback)(func),(data)) #define mn_mailbox_connect_after__removed(object,func,data) g_signal_connect_after(MN_MAILBOX(object),"removed",(GCallback)(func),(data)) #define mn_mailbox_connect_data__removed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX(object),"removed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailbox_connect__messages_changed(object,func,data) g_signal_connect(MN_MAILBOX(object),"messages_changed",(GCallback)(func),(data)) #define mn_mailbox_connect_after__messages_changed(object,func,data) g_signal_connect_after(MN_MAILBOX(object),"messages_changed",(GCallback)(func),(data)) #define mn_mailbox_connect_data__messages_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX(object),"messages_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #endif /* __GNUC__ && !__STRICT_ANSI__ */ /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_MAILBOX_PROP_NAME(arg) "name", __extension__ ({gchar *z = (arg); z;}) #define MN_MAILBOX_GET_PROP_NAME(arg) "name", __extension__ ({gchar **z = (arg); z;}) #define MN_MAILBOX_PROP_OPEN_COMMAND(arg) "open_command", __extension__ ({gchar *z = (arg); z;}) #define MN_MAILBOX_GET_PROP_OPEN_COMMAND(arg) "open_command", __extension__ ({gchar **z = (arg); z;}) #define MN_MAILBOX_PROP_MARK_AS_READ_COMMAND(arg) "mark_as_read_command", __extension__ ({gchar *z = (arg); z;}) #define MN_MAILBOX_GET_PROP_MARK_AS_READ_COMMAND(arg) "mark_as_read_command", __extension__ ({gchar **z = (arg); z;}) #define MN_MAILBOX_PROP_MARK_AS_SPAM_COMMAND(arg) "mark_as_spam_command", __extension__ ({gchar *z = (arg); z;}) #define MN_MAILBOX_GET_PROP_MARK_AS_SPAM_COMMAND(arg) "mark_as_spam_command", __extension__ ({gchar **z = (arg); z;}) #define MN_MAILBOX_PROP_DELETE_COMMAND(arg) "delete_command", __extension__ ({gchar *z = (arg); z;}) #define MN_MAILBOX_GET_PROP_DELETE_COMMAND(arg) "delete_command", __extension__ ({gchar **z = (arg); z;}) #define MN_MAILBOX_PROP_STOCK_ID(arg) "stock_id", __extension__ ({gchar *z = (arg); z;}) #define MN_MAILBOX_GET_PROP_STOCK_ID(arg) "stock_id", __extension__ ({gchar **z = (arg); z;}) #define MN_MAILBOX_PROP_FORMAT(arg) "format", __extension__ ({gchar *z = (arg); z;}) #define MN_MAILBOX_GET_PROP_FORMAT(arg) "format", __extension__ ({gchar **z = (arg); z;}) #define MN_MAILBOX_PROP_CHECK_DELAY(arg) "check_delay", __extension__ ({gint z = (arg); z;}) #define MN_MAILBOX_GET_PROP_CHECK_DELAY(arg) "check_delay", __extension__ ({gint *z = (arg); z;}) #define MN_MAILBOX_PROP_POLL(arg) "poll", __extension__ ({gboolean z = (arg); z;}) #define MN_MAILBOX_GET_PROP_POLL(arg) "poll", __extension__ ({gboolean *z = (arg); z;}) #define MN_MAILBOX_GET_PROP_MANUALLY_CHECKABLE(arg) "manually_checkable", __extension__ ({gboolean *z = (arg); z;}) #define MN_MAILBOX_GET_PROP_MESSAGES(arg) "messages", __extension__ ({GHashTable * *z = (arg); z;}) #define MN_MAILBOX_PROP_ERROR(arg) "error", __extension__ ({gchar *z = (arg); z;}) #define MN_MAILBOX_GET_PROP_ERROR(arg) "error", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_MAILBOX_PROP_NAME(arg) "name",(gchar *)(arg) #define MN_MAILBOX_GET_PROP_NAME(arg) "name",(gchar **)(arg) #define MN_MAILBOX_PROP_OPEN_COMMAND(arg) "open_command",(gchar *)(arg) #define MN_MAILBOX_GET_PROP_OPEN_COMMAND(arg) "open_command",(gchar **)(arg) #define MN_MAILBOX_PROP_MARK_AS_READ_COMMAND(arg) "mark_as_read_command",(gchar *)(arg) #define MN_MAILBOX_GET_PROP_MARK_AS_READ_COMMAND(arg) "mark_as_read_command",(gchar **)(arg) #define MN_MAILBOX_PROP_MARK_AS_SPAM_COMMAND(arg) "mark_as_spam_command",(gchar *)(arg) #define MN_MAILBOX_GET_PROP_MARK_AS_SPAM_COMMAND(arg) "mark_as_spam_command",(gchar **)(arg) #define MN_MAILBOX_PROP_DELETE_COMMAND(arg) "delete_command",(gchar *)(arg) #define MN_MAILBOX_GET_PROP_DELETE_COMMAND(arg) "delete_command",(gchar **)(arg) #define MN_MAILBOX_PROP_STOCK_ID(arg) "stock_id",(gchar *)(arg) #define MN_MAILBOX_GET_PROP_STOCK_ID(arg) "stock_id",(gchar **)(arg) #define MN_MAILBOX_PROP_FORMAT(arg) "format",(gchar *)(arg) #define MN_MAILBOX_GET_PROP_FORMAT(arg) "format",(gchar **)(arg) #define MN_MAILBOX_PROP_CHECK_DELAY(arg) "check_delay",(gint )(arg) #define MN_MAILBOX_GET_PROP_CHECK_DELAY(arg) "check_delay",(gint *)(arg) #define MN_MAILBOX_PROP_POLL(arg) "poll",(gboolean )(arg) #define MN_MAILBOX_GET_PROP_POLL(arg) "poll",(gboolean *)(arg) #define MN_MAILBOX_GET_PROP_MANUALLY_CHECKABLE(arg) "manually_checkable",(gboolean *)(arg) #define MN_MAILBOX_GET_PROP_MESSAGES(arg) "messages",(GHashTable * *)(arg) #define MN_MAILBOX_PROP_ERROR(arg) "error",(gchar *)(arg) #define MN_MAILBOX_GET_PROP_ERROR(arg) "error",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mailbox-view.h0000644000175000001440000003406611015312644022733 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_MAILBOX_VIEW_H__ #define __MN_MAILBOX_VIEW_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MAILBOX_VIEW (mn_mailbox_view_get_type()) #define MN_MAILBOX_VIEW(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mailbox_view_get_type(), MNMailboxView) #define MN_MAILBOX_VIEW_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mailbox_view_get_type(), MNMailboxView const) #define MN_MAILBOX_VIEW_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_mailbox_view_get_type(), MNMailboxViewClass) #define MN_IS_MAILBOX_VIEW(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mailbox_view_get_type ()) #define MN_MAILBOX_VIEW_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_mailbox_view_get_type(), MNMailboxViewClass) /* Private structure type */ typedef struct _MNMailboxViewPrivate MNMailboxViewPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_MAILBOX_VIEW__ #define __TYPEDEF_MN_MAILBOX_VIEW__ typedef struct _MNMailboxView MNMailboxView; #endif struct _MNMailboxView { GtkTreeView __parent__; /*< private >*/ MNMailboxViewPrivate *_priv; }; /* * Class definition */ typedef struct _MNMailboxViewClass MNMailboxViewClass; struct _MNMailboxViewClass { GtkTreeViewClass __parent__; /*signal*/void (* activate_update) (MNMailboxView * self); /*signal*/void (* activate_properties) (MNMailboxView * self); /*signal*/void (* activate_add) (MNMailboxView * self); /*signal*/void (* activate_remove) (MNMailboxView * self); /*signal*/void (* activate_cut) (MNMailboxView * self); /*signal*/void (* activate_copy) (MNMailboxView * self); /*signal*/void (* activate_paste) (MNMailboxView * self); }; /* * Public methods */ GType mn_mailbox_view_get_type (void) G_GNUC_CONST; #line 84 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_update (MNMailboxView * self); #line 67 "mn-mailbox-view.h" #line 107 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_properties (MNMailboxView * self); #line 70 "mn-mailbox-view.h" #line 147 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_add (MNMailboxView * self); #line 73 "mn-mailbox-view.h" #line 162 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_remove (MNMailboxView * self); #line 76 "mn-mailbox-view.h" #line 168 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_cut (MNMailboxView * self); #line 79 "mn-mailbox-view.h" #line 175 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_copy (MNMailboxView * self); #line 82 "mn-mailbox-view.h" #line 181 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_paste (MNMailboxView * self); #line 85 "mn-mailbox-view.h" #line 929 "src/mn-mailbox-view.gob" GtkWidget * mn_mailbox_view_new (void); #line 88 "mn-mailbox-view.h" /* * Signal connection wrapper macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define mn_mailbox_view_connect__activate_update(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data)) #define mn_mailbox_view_connect_after__activate_update(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data)) #define mn_mailbox_view_connect_data__activate_update(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_properties(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data)) #define mn_mailbox_view_connect_after__activate_properties(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data)) #define mn_mailbox_view_connect_data__activate_properties(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_add(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_add",(GCallback) __extension__ ({void (* ___activate_add) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_add; }), (data)) #define mn_mailbox_view_connect_after__activate_add(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_add",(GCallback) __extension__ ({void (* ___activate_add) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_add; }), (data)) #define mn_mailbox_view_connect_data__activate_add(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_add",(GCallback) __extension__ ({void (* ___activate_add) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_add; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_remove(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_remove",(GCallback) __extension__ ({void (* ___activate_remove) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_remove; }), (data)) #define mn_mailbox_view_connect_after__activate_remove(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_remove",(GCallback) __extension__ ({void (* ___activate_remove) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_remove; }), (data)) #define mn_mailbox_view_connect_data__activate_remove(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_remove",(GCallback) __extension__ ({void (* ___activate_remove) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_remove; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_cut(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_cut",(GCallback) __extension__ ({void (* ___activate_cut) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_cut; }), (data)) #define mn_mailbox_view_connect_after__activate_cut(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_cut",(GCallback) __extension__ ({void (* ___activate_cut) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_cut; }), (data)) #define mn_mailbox_view_connect_data__activate_cut(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_cut",(GCallback) __extension__ ({void (* ___activate_cut) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_cut; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_copy(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_copy",(GCallback) __extension__ ({void (* ___activate_copy) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_copy; }), (data)) #define mn_mailbox_view_connect_after__activate_copy(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_copy",(GCallback) __extension__ ({void (* ___activate_copy) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_copy; }), (data)) #define mn_mailbox_view_connect_data__activate_copy(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_copy",(GCallback) __extension__ ({void (* ___activate_copy) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_copy; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_paste(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_paste",(GCallback) __extension__ ({void (* ___activate_paste) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_paste; }), (data)) #define mn_mailbox_view_connect_after__activate_paste(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_paste",(GCallback) __extension__ ({void (* ___activate_paste) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_paste; }), (data)) #define mn_mailbox_view_connect_data__activate_paste(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_paste",(GCallback) __extension__ ({void (* ___activate_paste) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_paste; }), (data), (destroy_data), (GConnectFlags)(flags)) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define mn_mailbox_view_connect__activate_update(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(object),"activate_update",(GCallback)(func),(data)) #define mn_mailbox_view_connect_after__activate_update(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_update",(GCallback)(func),(data)) #define mn_mailbox_view_connect_data__activate_update(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_update",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_properties(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(object),"activate_properties",(GCallback)(func),(data)) #define mn_mailbox_view_connect_after__activate_properties(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_properties",(GCallback)(func),(data)) #define mn_mailbox_view_connect_data__activate_properties(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_properties",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_add(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(object),"activate_add",(GCallback)(func),(data)) #define mn_mailbox_view_connect_after__activate_add(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_add",(GCallback)(func),(data)) #define mn_mailbox_view_connect_data__activate_add(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_add",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_remove(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(object),"activate_remove",(GCallback)(func),(data)) #define mn_mailbox_view_connect_after__activate_remove(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_remove",(GCallback)(func),(data)) #define mn_mailbox_view_connect_data__activate_remove(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_remove",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_cut(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(object),"activate_cut",(GCallback)(func),(data)) #define mn_mailbox_view_connect_after__activate_cut(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_cut",(GCallback)(func),(data)) #define mn_mailbox_view_connect_data__activate_cut(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_cut",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_copy(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(object),"activate_copy",(GCallback)(func),(data)) #define mn_mailbox_view_connect_after__activate_copy(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_copy",(GCallback)(func),(data)) #define mn_mailbox_view_connect_data__activate_copy(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_copy",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailbox_view_connect__activate_paste(object,func,data) g_signal_connect(MN_MAILBOX_VIEW(object),"activate_paste",(GCallback)(func),(data)) #define mn_mailbox_view_connect_after__activate_paste(object,func,data) g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_paste",(GCallback)(func),(data)) #define mn_mailbox_view_connect_data__activate_paste(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_paste",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mailbox.c0000644000175000001440000020206211015312644021747 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-mailbox.h" #include "mn-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 56 "src/mn-mailbox.gob" #include #include #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED #include "mn-system-vfs-mailbox.h" #include "mn-custom-vfs-mailbox.h" #endif #if WITH_POP3 #include "mn-pop3-mailbox.h" #endif #if WITH_IMAP #include "mn-imap-mailbox.h" #endif #if WITH_GMAIL #include "mn-gmail-mailbox.h" #endif #if WITH_YAHOO #include "mn-yahoo-mailbox.h" #endif #if WITH_HOTMAIL #include "mn-hotmail-mailbox.h" #endif #if WITH_EVOLUTION #include "mn-evolution-mailbox.h" #endif #include "mn-util.h" #include "mn-message.h" #include "mn-conf.h" #include "mn-locked-callback.h" #include "mn-shell.h" struct _MNMailboxConfiguration { GType type; unsigned int n_parameters; GParameter *parameters; }; GType mn_mailbox_types[MN_MAILBOX_MAX_TYPES + 1]; typedef struct { MNMailbox *self; GHashTable *messages; GHashTable *messages_considered_as_read; gboolean display_seen_mail; } FilterMessagesInfo; typedef struct { GHashTable *other; gboolean changed; } CompareMessagesInfo; static unsigned int cleanup_messages_considered_as_read_idle_id = 0; #line 83 "mn-mailbox.c" /* self casting macros */ #define SELF(x) MN_MAILBOX(x) #define SELF_CONST(x) MN_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_MAILBOX(x) #define TYPE_SELF MN_TYPE_MAILBOX #define SELF_CLASS(x) MN_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNMailbox Self; typedef MNMailboxClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-mailbox.gob" static void mn_mailbox_class_init (MNMailboxClass * c); #line 102 "mn-mailbox.c" #line 141 "src/mn-mailbox.gob" static void mn_mailbox_set_active (MNMailbox * self, gboolean value); #line 105 "mn-mailbox.c" static void ___real_mn_mailbox_added (MNMailbox * self); static void ___real_mn_mailbox_removed (MNMailbox * self); #line 259 "src/mn-mailbox.gob" static void mn_mailbox_update_check_timeout (MNMailbox * self); #line 110 "mn-mailbox.c" #line 330 "src/mn-mailbox.gob" static void mn_mailbox_filter_messages (MNMailbox * self); #line 113 "mn-mailbox.c" #line 366 "src/mn-mailbox.gob" static void mn_mailbox_filter_messages_cb (const char * id, MNMessage * message, FilterMessagesInfo * info); #line 116 "mn-mailbox.c" #line 395 "src/mn-mailbox.gob" static gboolean mn_mailbox_compare_messages (GHashTable * messages1, GHashTable * messages2); #line 119 "mn-mailbox.c" #line 407 "src/mn-mailbox.gob" static void mn_mailbox_compare_messages_cb (const char * id, MNMessage * message, CompareMessagesInfo * info); #line 122 "mn-mailbox.c" #line 416 "src/mn-mailbox.gob" static void mn_mailbox_queue_cleanup_messages_considered_as_read (void); #line 125 "mn-mailbox.c" #line 423 "src/mn-mailbox.gob" static gboolean mn_mailbox_cleanup_messages_considered_as_read_cb (gpointer data); #line 128 "mn-mailbox.c" #line 444 "src/mn-mailbox.gob" static void mn_mailbox_cleanup_messages_considered_as_read (void); #line 131 "mn-mailbox.c" #line 472 "src/mn-mailbox.gob" static gboolean mn_mailbox_cleanup_messages_considered_as_read_remove_cb (const char * id, gpointer value, gpointer user_data); #line 134 "mn-mailbox.c" #line 503 "src/mn-mailbox.gob" static void mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new); #line 137 "mn-mailbox.c" #line 596 "src/mn-mailbox.gob" static void mn_mailbox_init (MNMailbox * self); #line 140 "mn-mailbox.c" #line 604 "src/mn-mailbox.gob" static void mn_mailbox_finalize (MNMailbox * self); #line 143 "mn-mailbox.c" #line 615 "src/mn-mailbox.gob" static void mn_mailbox_notify_display_seen_messages_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data); #line 146 "mn-mailbox.c" #line 626 "src/mn-mailbox.gob" static void mn_mailbox_notify_messages_considered_as_read_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data); #line 149 "mn-mailbox.c" #line 811 "src/mn-mailbox.gob" static MNMailbox * mn_mailbox_parse_obsolete_uri (const char * uri); #line 152 "mn-mailbox.c" #line 1035 "src/mn-mailbox.gob" static gboolean mn_mailbox_check_timeout_cb (gpointer data); #line 155 "mn-mailbox.c" #line 1045 "src/mn-mailbox.gob" static gboolean mn_mailbox_validate (MNMailbox * self, GError ** err); #line 158 "mn-mailbox.c" static void ___real_mn_mailbox_seal (MNMailbox * self); #line 1109 "src/mn-mailbox.gob" static MNMailbox * mn_mailbox_parse_uri (MNMailbox * self, const char * uri) G_GNUC_UNUSED; #line 162 "mn-mailbox.c" static void ___real_mn_mailbox_check (MNMailbox * self); /* * Signal connection wrapper macro shortcuts */ #define self_connect__added(object,func,data) mn_mailbox_connect__added((object),(func),(data)) #define self_connect_after__added(object,func,data) mn_mailbox_connect_after__added((object),(func),(data)) #define self_connect_data__added(object,func,data,destroy_data,flags) mn_mailbox_connect_data__added((object),(func),(data),(destroy_data),(flags)) #define self_connect__removed(object,func,data) mn_mailbox_connect__removed((object),(func),(data)) #define self_connect_after__removed(object,func,data) mn_mailbox_connect_after__removed((object),(func),(data)) #define self_connect_data__removed(object,func,data,destroy_data,flags) mn_mailbox_connect_data__removed((object),(func),(data),(destroy_data),(flags)) #define self_connect__messages_changed(object,func,data) mn_mailbox_connect__messages_changed((object),(func),(data)) #define self_connect_after__messages_changed(object,func,data) mn_mailbox_connect_after__messages_changed((object),(func),(data)) #define self_connect_data__messages_changed(object,func,data,destroy_data,flags) mn_mailbox_connect_data__messages_changed((object),(func),(data),(destroy_data),(flags)) typedef void (*___Sig1) (MNMailbox *, gboolean , gpointer); static void ___marshal_Sig1 (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { register ___Sig1 callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 2); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (___Sig1) (marshal_data != NULL ? marshal_data : cc->callback); callback ((MNMailbox *)data1, (gboolean ) g_value_get_boolean (param_values + 1), data2); } enum { ADDED_SIGNAL, REMOVED_SIGNAL, MESSAGES_CHANGED_SIGNAL, LAST_SIGNAL }; enum { PROP_0, PROP_NAME, PROP_OPEN_COMMAND, PROP_MARK_AS_READ_COMMAND, PROP_MARK_AS_SPAM_COMMAND, PROP_DELETE_COMMAND, PROP_STOCK_ID, PROP_FORMAT, PROP_CHECK_DELAY, PROP_POLL, PROP_MANUALLY_CHECKABLE, PROP_MESSAGES, PROP_ERROR }; static guint object_signals[LAST_SIGNAL] = {0}; /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_get_active mn_mailbox_get_active #define self_set_active mn_mailbox_set_active #define self_added mn_mailbox_added #define self_removed mn_mailbox_removed #define self_get_stock_id mn_mailbox_get_stock_id #define self_set_stock_id mn_mailbox_set_stock_id #define self_get_format mn_mailbox_get_format #define self_set_format mn_mailbox_set_format #define self_get_poll mn_mailbox_get_poll #define self_set_poll mn_mailbox_set_poll #define self_get_manually_checkable mn_mailbox_get_manually_checkable #define self_update_check_timeout mn_mailbox_update_check_timeout #define self_set_messages mn_mailbox_set_messages #define self_filter_messages mn_mailbox_filter_messages #define self_filter_messages_cb mn_mailbox_filter_messages_cb #define self_compare_messages mn_mailbox_compare_messages #define self_compare_messages_cb mn_mailbox_compare_messages_cb #define self_queue_cleanup_messages_considered_as_read mn_mailbox_queue_cleanup_messages_considered_as_read #define self_cleanup_messages_considered_as_read_cb mn_mailbox_cleanup_messages_considered_as_read_cb #define self_cleanup_messages_considered_as_read mn_mailbox_cleanup_messages_considered_as_read #define self_cleanup_messages_considered_as_read_remove_cb mn_mailbox_cleanup_messages_considered_as_read_remove_cb #define self_messages_changed mn_mailbox_messages_changed #define self_set_error mn_mailbox_set_error #define self_init_types mn_mailbox_init_types #define self_get_class_from_name mn_mailbox_get_class_from_name #define self_get_type_from_name mn_mailbox_get_type_from_name #define self_notify_display_seen_messages_cb mn_mailbox_notify_display_seen_messages_cb #define self_notify_messages_considered_as_read_cb mn_mailbox_notify_messages_considered_as_read_cb #define self_new mn_mailbox_new #define self_new_from_xml_node mn_mailbox_new_from_xml_node #define self_xml_node_new mn_mailbox_xml_node_new #define self_new_from_uri mn_mailbox_new_from_uri #define self_new_from_configuration mn_mailbox_new_from_configuration #define self_get_configuration mn_mailbox_get_configuration #define self_configuration_free mn_mailbox_configuration_free #define self_new_from_obsolete_uri mn_mailbox_new_from_obsolete_uri #define self_parse_obsolete_uri mn_mailbox_parse_obsolete_uri #define self_check_timeout_cb mn_mailbox_check_timeout_cb #define self_validate mn_mailbox_validate #define self_seal mn_mailbox_seal #define self_parse_uri mn_mailbox_parse_uri #define self_check mn_mailbox_check #define self_enable_checking mn_mailbox_enable_checking #define self_notice mn_mailbox_notice #define self_warning mn_mailbox_warning #define self_get_message_from_mid mn_mailbox_get_message_from_mid #define self_get_command mn_mailbox_get_command #define self_has_command mn_mailbox_has_command GType mn_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_mailbox_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMailbox *)g_object_new(mn_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMailbox * GET_NEW_VARG (const char *first, ...) { MNMailbox *ret; va_list ap; va_start (ap, first); ret = (MNMailbox *)g_object_new_valist (mn_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mailbox::finalize" MNMailbox *self G_GNUC_UNUSED = MN_MAILBOX (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 604 "src/mn-mailbox.gob" mn_mailbox_finalize (self); #line 338 "mn-mailbox.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 192 "src/mn-mailbox.gob" if(self->runtime_name) { g_free ((gpointer) self->runtime_name); self->runtime_name = NULL; } #line 343 "mn-mailbox.c" #line 194 "src/mn-mailbox.gob" if(self->name) { g_free ((gpointer) self->name); self->name = NULL; } #line 346 "mn-mailbox.c" #line 197 "src/mn-mailbox.gob" if(self->open_command) { g_free ((gpointer) self->open_command); self->open_command = NULL; } #line 349 "mn-mailbox.c" #line 200 "src/mn-mailbox.gob" if(self->mark_as_read_command) { g_free ((gpointer) self->mark_as_read_command); self->mark_as_read_command = NULL; } #line 352 "mn-mailbox.c" #line 203 "src/mn-mailbox.gob" if(self->mark_as_spam_command) { g_free ((gpointer) self->mark_as_spam_command); self->mark_as_spam_command = NULL; } #line 355 "mn-mailbox.c" #line 206 "src/mn-mailbox.gob" if(self->delete_command) { g_free ((gpointer) self->delete_command); self->delete_command = NULL; } #line 358 "mn-mailbox.c" #line 209 "src/mn-mailbox.gob" if(self->stock_id) { g_free ((gpointer) self->stock_id); self->stock_id = NULL; } #line 361 "mn-mailbox.c" #line 212 "src/mn-mailbox.gob" if(self->format) { g_free ((gpointer) self->format); self->format = NULL; } #line 364 "mn-mailbox.c" #line 274 "src/mn-mailbox.gob" if(self->_priv->all_messages) { g_hash_table_destroy ((gpointer) self->_priv->all_messages); self->_priv->all_messages = NULL; } #line 367 "mn-mailbox.c" #line 277 "src/mn-mailbox.gob" if(self->_priv->all_messages_by_mid) { g_hash_table_destroy ((gpointer) self->_priv->all_messages_by_mid); self->_priv->all_messages_by_mid = NULL; } #line 370 "mn-mailbox.c" #line 280 "src/mn-mailbox.gob" if(self->messages) { g_hash_table_destroy ((gpointer) self->messages); self->messages = NULL; } #line 373 "mn-mailbox.c" #line 506 "src/mn-mailbox.gob" if(self->error) { g_free ((gpointer) self->error); self->error = NULL; } #line 376 "mn-mailbox.c" } #undef __GOB_FUNCTION__ static void mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNMailboxPrivate)); #line 56 "src/mn-mailbox.gob" c->default_check_delay = -1; #line 389 "mn-mailbox.c" #line 56 "src/mn-mailbox.gob" c->enable_checking_when_added = TRUE; #line 392 "mn-mailbox.c" parent_class = g_type_class_ref (G_TYPE_OBJECT); object_signals[ADDED_SIGNAL] = g_signal_new ("added", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailboxClass, added), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[REMOVED_SIGNAL] = g_signal_new ("removed", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailboxClass, removed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[MESSAGES_CHANGED_SIGNAL] = g_signal_new ("messages_changed", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST), G_STRUCT_OFFSET (MNMailboxClass, messages_changed), NULL, NULL, ___marshal_Sig1, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); if ___GOB_UNLIKELY(sizeof(gboolean ) != sizeof(gboolean ) || parent_class == NULL /* avoid warning */) { g_error("src/mn-mailbox.gob line 503: Type mismatch of \"messages_changed\" signal signature"); } #line 154 "src/mn-mailbox.gob" c->added = ___real_mn_mailbox_added; #line 170 "src/mn-mailbox.gob" c->removed = ___real_mn_mailbox_removed; #line 429 "mn-mailbox.c" c->messages_changed = NULL; #line 1094 "src/mn-mailbox.gob" c->seal = ___real_mn_mailbox_seal; #line 433 "mn-mailbox.c" c->parse_uri = NULL; #line 1112 "src/mn-mailbox.gob" c->check = ___real_mn_mailbox_check; #line 437 "mn-mailbox.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_string ("name" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_NAME, param_spec); param_spec = g_param_spec_string ("open_command" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_OPEN_COMMAND, param_spec); param_spec = g_param_spec_string ("mark_as_read_command" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_MARK_AS_READ_COMMAND, param_spec); param_spec = g_param_spec_string ("mark_as_spam_command" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_MARK_AS_SPAM_COMMAND, param_spec); param_spec = g_param_spec_string ("delete_command" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_DELETE_COMMAND, param_spec); param_spec = g_param_spec_string ("stock_id" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_STOCK_ID, param_spec); param_spec = g_param_spec_string ("format" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_FORMAT, param_spec); param_spec = g_param_spec_int ("check_delay" /* name */, NULL /* nick */, NULL /* blurb */, G_MININT /* minimum */, G_MAXINT /* maximum */, -1 /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE | G_PARAM_CONSTRUCT)); g_object_class_install_property (g_object_class, PROP_CHECK_DELAY, param_spec); param_spec = g_param_spec_boolean ("poll" /* name */, NULL /* nick */, NULL /* blurb */, FALSE /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_POLL, param_spec); param_spec = g_param_spec_boolean ("manually_checkable" /* name */, NULL /* nick */, NULL /* blurb */, FALSE /* default_value */, (GParamFlags)(G_PARAM_READABLE)); g_object_class_install_property (g_object_class, PROP_MANUALLY_CHECKABLE, param_spec); param_spec = g_param_spec_pointer ("messages" /* name */, NULL /* nick */, NULL /* blurb */, (GParamFlags)(G_PARAM_READABLE)); g_object_class_install_property (g_object_class, PROP_MESSAGES, param_spec); param_spec = g_param_spec_string ("error" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_ERROR, param_spec); } } #undef __GOB_FUNCTION__ #line 596 "src/mn-mailbox.gob" static void mn_mailbox_init (MNMailbox * self G_GNUC_UNUSED) { #line 560 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAILBOX,MNMailboxPrivate); #line 172 "src/mn-mailbox.gob" self->_priv->poll = TRUE; #line 565 "mn-mailbox.c" #line 274 "src/mn-mailbox.gob" self->_priv->all_messages = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref); #line 568 "mn-mailbox.c" #line 277 "src/mn-mailbox.gob" self->_priv->all_messages_by_mid = g_hash_table_new(g_str_hash, g_str_equal); #line 571 "mn-mailbox.c" #line 280 "src/mn-mailbox.gob" self->messages = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref); #line 574 "mn-mailbox.c" { #line 597 "src/mn-mailbox.gob" mn_g_object_gconf_notifications_add_gdk_locked(self, MN_CONF_DISPLAY_SEEN_MAIL, self_notify_display_seen_messages_cb, self, MN_CONF_MESSAGES_CONSIDERED_AS_READ, self_notify_messages_considered_as_read_cb, self, NULL); #line 583 "mn-mailbox.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Mailbox::set_property" { MNMailbox *self G_GNUC_UNUSED; self = MN_MAILBOX (object); switch (property_id) { case PROP_NAME: { #line 195 "src/mn-mailbox.gob" { char *old = self->name; self->name = g_value_dup_string (VAL); g_free (old); } #line 604 "mn-mailbox.c" } break; case PROP_OPEN_COMMAND: { #line 198 "src/mn-mailbox.gob" { char *old = self->open_command; self->open_command = g_value_dup_string (VAL); g_free (old); } #line 611 "mn-mailbox.c" } break; case PROP_MARK_AS_READ_COMMAND: { #line 201 "src/mn-mailbox.gob" { char *old = self->mark_as_read_command; self->mark_as_read_command = g_value_dup_string (VAL); g_free (old); } #line 618 "mn-mailbox.c" } break; case PROP_MARK_AS_SPAM_COMMAND: { #line 204 "src/mn-mailbox.gob" { char *old = self->mark_as_spam_command; self->mark_as_spam_command = g_value_dup_string (VAL); g_free (old); } #line 625 "mn-mailbox.c" } break; case PROP_DELETE_COMMAND: { #line 207 "src/mn-mailbox.gob" { char *old = self->delete_command; self->delete_command = g_value_dup_string (VAL); g_free (old); } #line 632 "mn-mailbox.c" } break; case PROP_STOCK_ID: { #line 210 "src/mn-mailbox.gob" { char *old = self->stock_id; self->stock_id = g_value_dup_string (VAL); g_free (old); } #line 639 "mn-mailbox.c" } break; case PROP_FORMAT: { #line 213 "src/mn-mailbox.gob" { char *old = self->format; self->format = g_value_dup_string (VAL); g_free (old); } #line 646 "mn-mailbox.c" } break; case PROP_CHECK_DELAY: { #line 220 "src/mn-mailbox.gob" self->check_delay = g_value_get_int (VAL); #line 653 "mn-mailbox.c" } break; case PROP_POLL: { #line 227 "src/mn-mailbox.gob" gboolean new_poll = g_value_get_boolean(VAL); /* * We do nothing unless the property has changed, because we do * not want to reset an already existing check timeout. */ if (new_poll != selfp->poll) { selfp->poll = new_poll; if (self_get_active(self) && selfp->checking_enabled) self_update_check_timeout(self); g_object_notify(G_OBJECT(self), "manually-checkable"); } #line 675 "mn-mailbox.c" } break; case PROP_ERROR: { #line 507 "src/mn-mailbox.gob" { char *old = self->error; self->error = g_value_dup_string (VAL); g_free (old); } #line 682 "mn-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Mailbox::get_property" { MNMailbox *self G_GNUC_UNUSED; self = MN_MAILBOX (object); switch (property_id) { case PROP_NAME: { #line 195 "src/mn-mailbox.gob" g_value_set_string (VAL, self->name); #line 713 "mn-mailbox.c" } break; case PROP_OPEN_COMMAND: { #line 198 "src/mn-mailbox.gob" g_value_set_string (VAL, self->open_command); #line 720 "mn-mailbox.c" } break; case PROP_MARK_AS_READ_COMMAND: { #line 201 "src/mn-mailbox.gob" g_value_set_string (VAL, self->mark_as_read_command); #line 727 "mn-mailbox.c" } break; case PROP_MARK_AS_SPAM_COMMAND: { #line 204 "src/mn-mailbox.gob" g_value_set_string (VAL, self->mark_as_spam_command); #line 734 "mn-mailbox.c" } break; case PROP_DELETE_COMMAND: { #line 207 "src/mn-mailbox.gob" g_value_set_string (VAL, self->delete_command); #line 741 "mn-mailbox.c" } break; case PROP_STOCK_ID: { #line 210 "src/mn-mailbox.gob" g_value_set_string (VAL, self->stock_id); #line 748 "mn-mailbox.c" } break; case PROP_FORMAT: { #line 213 "src/mn-mailbox.gob" g_value_set_string (VAL, self->format); #line 755 "mn-mailbox.c" } break; case PROP_CHECK_DELAY: { #line 220 "src/mn-mailbox.gob" g_value_set_int (VAL, self->check_delay); #line 762 "mn-mailbox.c" } break; case PROP_POLL: { #line 244 "src/mn-mailbox.gob" g_value_set_boolean(VAL, selfp->poll); #line 771 "mn-mailbox.c" } break; case PROP_MANUALLY_CHECKABLE: { #line 255 "src/mn-mailbox.gob" g_value_set_boolean(VAL, selfp->checking_enabled && selfp->poll); #line 780 "mn-mailbox.c" } break; case PROP_MESSAGES: { #line 287 "src/mn-mailbox.gob" g_value_set_pointer(VAL, self->messages); #line 789 "mn-mailbox.c" } break; case PROP_ERROR: { #line 507 "src/mn-mailbox.gob" g_value_set_string (VAL, self->error); #line 796 "mn-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 135 "src/mn-mailbox.gob" gboolean mn_mailbox_get_active (MNMailbox * self) { #line 816 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::get_active" #line 135 "src/mn-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 135 "src/mn-mailbox.gob" g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0); #line 822 "mn-mailbox.c" { #line 137 "src/mn-mailbox.gob" return g_atomic_int_get(&selfp->_active); }} #line 828 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 141 "src/mn-mailbox.gob" static void mn_mailbox_set_active (MNMailbox * self, gboolean value) { #line 835 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::set_active" #line 141 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 141 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 841 "mn-mailbox.c" { #line 143 "src/mn-mailbox.gob" g_atomic_int_set(&selfp->_active, value); }} #line 847 "mn-mailbox.c" #undef __GOB_FUNCTION__ /** * mn_mailbox_added: * @self: the object which received the signal * * This signal gets emitted after the mailbox is added to the * mailboxes list. **/ #line 154 "src/mn-mailbox.gob" void mn_mailbox_added (MNMailbox * self) { #line 861 "mn-mailbox.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 154 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 154 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 872 "mn-mailbox.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ADDED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 154 "src/mn-mailbox.gob" static void ___real_mn_mailbox_added (MNMailbox * self) { #line 889 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::added" { #line 156 "src/mn-mailbox.gob" self_set_active(self, TRUE); if (SELF_GET_CLASS(self)->enable_checking_when_added) self_enable_checking(self); }} #line 899 "mn-mailbox.c" #undef __GOB_FUNCTION__ /** * mn_mailbox_removed: * @self: the object which received the signal * * This signal gets emitted after the mailbox is removed from the * mailboxes list. **/ #line 170 "src/mn-mailbox.gob" void mn_mailbox_removed (MNMailbox * self) { #line 913 "mn-mailbox.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 170 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 170 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 924 "mn-mailbox.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[REMOVED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 170 "src/mn-mailbox.gob" static void ___real_mn_mailbox_removed (MNMailbox * self) { #line 941 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::removed" { #line 172 "src/mn-mailbox.gob" self_set_active(self, FALSE); mn_source_clear(&selfp->check_timeout_id); /* * Do not queue a cleanup of the messages-considered-as-read GConf * setting: it should not be done if the mailbox is only being * replaced (eg. from mn_mailbox_properties_dialog_apply()). * * If however the mailbox is being permanently removed, its * messages considered as read will be cleaned up the next time * another mailbox is checked, which is good enough. * * Note that we could queue a cleanup from here by adding and * testing a "gboolean replacing" signal parameter, but it is not * worth the effort. */ }} #line 964 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 210 "src/mn-mailbox.gob" gchar * mn_mailbox_get_stock_id (MNMailbox * self) { #line 971 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::get_stock_id" { #line 210 "src/mn-mailbox.gob" gchar* val; g_object_get (G_OBJECT (self), "stock_id", &val, NULL); return val; }} #line 977 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 210 "src/mn-mailbox.gob" void mn_mailbox_set_stock_id (MNMailbox * self, gchar * val) { #line 984 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::set_stock_id" { #line 210 "src/mn-mailbox.gob" g_object_set (G_OBJECT (self), "stock_id", val, NULL); }} #line 990 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 213 "src/mn-mailbox.gob" gchar * mn_mailbox_get_format (MNMailbox * self) { #line 997 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::get_format" { #line 213 "src/mn-mailbox.gob" gchar* val; g_object_get (G_OBJECT (self), "format", &val, NULL); return val; }} #line 1003 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 213 "src/mn-mailbox.gob" void mn_mailbox_set_format (MNMailbox * self, gchar * val) { #line 1010 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::set_format" { #line 213 "src/mn-mailbox.gob" g_object_set (G_OBJECT (self), "format", val, NULL); }} #line 1016 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 244 "src/mn-mailbox.gob" gboolean mn_mailbox_get_poll (MNMailbox * self) { #line 1023 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::get_poll" { #line 225 "src/mn-mailbox.gob" gboolean val; g_object_get (G_OBJECT (self), "poll", &val, NULL); return val; }} #line 1029 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 227 "src/mn-mailbox.gob" void mn_mailbox_set_poll (MNMailbox * self, gboolean val) { #line 1036 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::set_poll" { #line 225 "src/mn-mailbox.gob" g_object_set (G_OBJECT (self), "poll", val, NULL); }} #line 1042 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 255 "src/mn-mailbox.gob" gboolean mn_mailbox_get_manually_checkable (MNMailbox * self) { #line 1049 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::get_manually_checkable" { #line 253 "src/mn-mailbox.gob" gboolean val; g_object_get (G_OBJECT (self), "manually_checkable", &val, NULL); return val; }} #line 1055 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 259 "src/mn-mailbox.gob" static void mn_mailbox_update_check_timeout (MNMailbox * self) { #line 1062 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::update_check_timeout" #line 259 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 259 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 1068 "mn-mailbox.c" { #line 261 "src/mn-mailbox.gob" g_assert(self_get_active(self) == TRUE); g_assert(selfp->checking_enabled == TRUE); mn_source_clear(&selfp->check_timeout_id); if (selfp->poll && self->runtime_check_delay > 0) selfp->check_timeout_id = gdk_threads_add_timeout(self->runtime_check_delay * 1000, self_check_timeout_cb, self); }} #line 1079 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 291 "src/mn-mailbox.gob" void mn_mailbox_set_messages (MNMailbox * self, GSList * messages) { #line 1086 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::set_messages" #line 291 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 291 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 1092 "mn-mailbox.c" { #line 293 "src/mn-mailbox.gob" GSList *l; selfp->all_messages_set = TRUE; g_hash_table_remove_all(selfp->all_messages); g_hash_table_remove_all(selfp->all_messages_by_mid); MN_LIST_FOREACH(l, messages) { MNMessage *message = l->data; g_hash_table_replace(selfp->all_messages, message->id, g_object_ref(message)); if (message->mid) /* do not ref message, it is owned by all_messages */ g_hash_table_replace(selfp->all_messages_by_mid, message->mid, message); } /* * Some messages might be gone, queue a cleanup of the * considered-as-read GConf setting. */ self_queue_cleanup_messages_considered_as_read(); self_filter_messages(self); }} #line 1122 "mn-mailbox.c" #undef __GOB_FUNCTION__ /** * mn_mailbox_filter_messages: * @self: the mailbox to act upon * * Filters @self->all_messages with the "seen mail" filter and the * considered-as-read GConf list, and stores the resulting set in * @self->messages. Additionally, if @self->messages has changed, * emits the "messages-changed" signal. **/ #line 330 "src/mn-mailbox.gob" static void mn_mailbox_filter_messages (MNMailbox * self) { #line 1138 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::filter_messages" #line 330 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 330 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 1144 "mn-mailbox.c" { #line 332 "src/mn-mailbox.gob" FilterMessagesInfo info; gboolean changed = FALSE; gboolean has_new = FALSE; /* filter messages */ self->timestamp = 0; info.self = self; info.messages = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref); info.messages_considered_as_read = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ); info.display_seen_mail = mn_conf_get_bool(MN_CONF_DISPLAY_SEEN_MAIL); g_hash_table_foreach(selfp->all_messages, (GHFunc) self_filter_messages_cb, &info); g_hash_table_destroy(info.messages_considered_as_read); /* detect changes */ if (self_compare_messages(self->messages, info.messages)) changed = TRUE; if (self_compare_messages(info.messages, self->messages)) changed = has_new = TRUE; g_hash_table_destroy(self->messages); self->messages = info.messages; g_object_notify(G_OBJECT(self), "messages"); if (changed) self_messages_changed(self, has_new); }} #line 1180 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 366 "src/mn-mailbox.gob" static void mn_mailbox_filter_messages_cb (const char * id, MNMessage * message, FilterMessagesInfo * info) { #line 1187 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::filter_messages_cb" { #line 370 "src/mn-mailbox.gob" Self *self = info->self; if (! info->display_seen_mail && (message->flags & MN_MESSAGE_NEW) == 0) return; if (g_hash_table_lookup(info->messages_considered_as_read, message->id)) return; if (message->sent_time > self->timestamp) self->timestamp = message->sent_time; g_hash_table_replace(info->messages, message->id, g_object_ref(message)); }} #line 1205 "mn-mailbox.c" #undef __GOB_FUNCTION__ /** * mn_mailbox_compare_messages: * @messages1: a %GHashTable containing %MNMessage objects * @messages2: another %GHashTable containing %MNMessage objects * * Compares @messages1 and @messages2. * * Return value: %TRUE if @messages1 contains messages not present * in @messages2, %FALSE otherwise. **/ #line 395 "src/mn-mailbox.gob" static gboolean mn_mailbox_compare_messages (GHashTable * messages1, GHashTable * messages2) { #line 1222 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::compare_messages" { #line 397 "src/mn-mailbox.gob" CompareMessagesInfo info; info.other = messages2; info.changed = FALSE; g_hash_table_foreach(messages1, (GHFunc) self_compare_messages_cb, &info); return info.changed; }} #line 1235 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 407 "src/mn-mailbox.gob" static void mn_mailbox_compare_messages_cb (const char * id, MNMessage * message, CompareMessagesInfo * info) { #line 1242 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::compare_messages_cb" { #line 411 "src/mn-mailbox.gob" if (! info->changed && ! g_hash_table_lookup(info->other, id)) info->changed = TRUE; }} #line 1250 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 416 "src/mn-mailbox.gob" static void mn_mailbox_queue_cleanup_messages_considered_as_read (void) { #line 1257 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::queue_cleanup_messages_considered_as_read" { #line 418 "src/mn-mailbox.gob" if (! cleanup_messages_considered_as_read_idle_id) cleanup_messages_considered_as_read_idle_id = gdk_threads_add_idle(self_cleanup_messages_considered_as_read_cb, NULL); }} #line 1265 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 423 "src/mn-mailbox.gob" static gboolean mn_mailbox_cleanup_messages_considered_as_read_cb (gpointer data) { #line 1272 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::cleanup_messages_considered_as_read_cb" { #line 425 "src/mn-mailbox.gob" self_cleanup_messages_considered_as_read(); cleanup_messages_considered_as_read_idle_id = 0; return FALSE; /* remove source */ }} #line 1282 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 444 "src/mn-mailbox.gob" static void mn_mailbox_cleanup_messages_considered_as_read (void) { #line 1289 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::cleanup_messages_considered_as_read" { #line 446 "src/mn-mailbox.gob" GList *l; GHashTable *set; /* * If there is a mailbox which has not been successfully checked * yet, abort. Otherwise, the messages of that mailbox could be * mistakenly cleaned up. */ MN_LIST_FOREACH(l, mn_shell->mailboxes->list) { MNMailbox *mailbox = l->data; if (! mailbox->_priv->all_messages_set) return; } set = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ); if (g_hash_table_foreach_remove(set, (GHRFunc) self_cleanup_messages_considered_as_read_remove_cb, NULL)) /* one or more messages were removed, reflect the changes */ mn_conf_set_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ, set); g_hash_table_destroy(set); }} #line 1318 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 472 "src/mn-mailbox.gob" static gboolean mn_mailbox_cleanup_messages_considered_as_read_remove_cb (const char * id, gpointer value, gpointer user_data) { #line 1325 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::cleanup_messages_considered_as_read_remove_cb" { #line 476 "src/mn-mailbox.gob" GList *l; MN_LIST_FOREACH(l, mn_shell->mailboxes->list) { MNMailbox *mailbox = l->data; if (g_hash_table_lookup(mailbox->_priv->all_messages, id)) return FALSE; /* message still exists, do not remove it */ } return TRUE; /* message no longer exists, remove it */ }} #line 1342 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 503 "src/mn-mailbox.gob" static void mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new) { #line 1349 "mn-mailbox.c" GValue ___param_values[2]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 503 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 503 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 1360 "mn-mailbox.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); ___param_values[1].g_type = 0; g_value_init (&___param_values[1], G_TYPE_BOOLEAN); g_value_set_boolean (&___param_values[1], (gboolean ) has_new); g_signal_emitv (___param_values, object_signals[MESSAGES_CHANGED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); g_value_unset (&___param_values[1]); } #line 510 "src/mn-mailbox.gob" void mn_mailbox_set_error (MNMailbox * self, const char * format, ...) { #line 1383 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::set_error" #line 510 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 510 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 1389 "mn-mailbox.c" { #line 512 "src/mn-mailbox.gob" char *error = NULL; if (format) MN_STRDUP_VPRINTF(error, format); g_object_set(G_OBJECT(self), MN_MAILBOX_PROP_ERROR(error), NULL); g_free(error); }} #line 1401 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 522 "src/mn-mailbox.gob" void mn_mailbox_init_types (void) { #line 1408 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::init_types" { #line 524 "src/mn-mailbox.gob" int i = 0; #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED /* * MNSystemVFSMailbox must be registered before * MNCustomVFSMailbox, because the latter's parse_uri() method * will accept any URI. */ mn_mailbox_types[i++] = MN_TYPE_SYSTEM_VFS_MAILBOX; mn_mailbox_types[i++] = MN_TYPE_CUSTOM_VFS_MAILBOX; #endif #if WITH_POP3 mn_mailbox_types[i++] = MN_TYPE_POP3_MAILBOX; #endif #if WITH_IMAP mn_mailbox_types[i++] = MN_TYPE_IMAP_MAILBOX; #endif #if WITH_GMAIL mn_mailbox_types[i++] = MN_TYPE_GMAIL_MAILBOX; #endif #if WITH_YAHOO mn_mailbox_types[i++] = MN_TYPE_YAHOO_MAILBOX; #endif #if WITH_HOTMAIL mn_mailbox_types[i++] = MN_TYPE_HOTMAIL_MAILBOX; #endif #if WITH_EVOLUTION mn_mailbox_types[i++] = MN_TYPE_EVOLUTION_MAILBOX; #endif mn_mailbox_types[i] = 0; }} #line 1444 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 558 "src/mn-mailbox.gob" MNMailboxClass * mn_mailbox_get_class_from_name (const char * type) { #line 1451 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::get_class_from_name" #line 558 "src/mn-mailbox.gob" g_return_val_if_fail (type != NULL, (MNMailboxClass * )0); #line 1455 "mn-mailbox.c" { #line 560 "src/mn-mailbox.gob" int i; for (i = 0; mn_mailbox_types[i]; i++) { SelfClass *class; class = g_type_class_ref(mn_mailbox_types[i]); if (! strcmp(class->type, type)) return class; g_type_class_unref(class); } return NULL; }} #line 1474 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 577 "src/mn-mailbox.gob" GType mn_mailbox_get_type_from_name (const char * type) { #line 1481 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::get_type_from_name" #line 577 "src/mn-mailbox.gob" g_return_val_if_fail (type != NULL, (GType )0); #line 1485 "mn-mailbox.c" { #line 579 "src/mn-mailbox.gob" SelfClass *class; class = self_get_class_from_name(type); if (class) { GType gtype; gtype = G_OBJECT_CLASS_TYPE(class); g_type_class_unref(class); return gtype; } return 0; }} #line 1504 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 604 "src/mn-mailbox.gob" static void mn_mailbox_finalize (MNMailbox * self) { #line 1512 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::finalize" { #line 605 "src/mn-mailbox.gob" /* * Even though we clear the source in removed(), it might have * been reinstalled afterwards (by a mn_mailbox_set_poll() call * from a check thread, etc). */ if (selfp->check_timeout_id) g_source_remove(selfp->check_timeout_id); }} #line 1525 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 615 "src/mn-mailbox.gob" static void mn_mailbox_notify_display_seen_messages_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) { #line 1532 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::notify_display_seen_messages_cb" { #line 620 "src/mn-mailbox.gob" Self *self = user_data; self_filter_messages(self); }} #line 1541 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 626 "src/mn-mailbox.gob" static void mn_mailbox_notify_messages_considered_as_read_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) { #line 1548 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::notify_messages_considered_as_read_cb" { #line 631 "src/mn-mailbox.gob" Self *self = user_data; self_filter_messages(self); }} #line 1557 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 638 "src/mn-mailbox.gob" MNMailbox * mn_mailbox_new (const char * type, ...) { #line 1564 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::new" #line 638 "src/mn-mailbox.gob" g_return_val_if_fail (type != NULL, (MNMailbox * )0); #line 1568 "mn-mailbox.c" { #line 640 "src/mn-mailbox.gob" va_list args; GType type_id; const char *first_property_name; GObject *object; type_id = self_get_type_from_name(type); if (! type_id) return NULL; va_start(args, type); first_property_name = va_arg(args, const char *); object = g_object_new_valist(type_id, first_property_name, args); va_end(args); return SELF(object); }} #line 1588 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 658 "src/mn-mailbox.gob" MNMailbox * mn_mailbox_new_from_xml_node (xmlNode * node, GError ** err) { #line 1595 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::new_from_xml_node" #line 658 "src/mn-mailbox.gob" g_return_val_if_fail (node != NULL, (MNMailbox * )0); #line 1599 "mn-mailbox.c" { #line 660 "src/mn-mailbox.gob" char *type; Self *self = NULL; type = xmlGetProp(node, "type"); if (! type) { g_set_error(err, 0, 0, _("\"type\" attribute missing")); return NULL; } self = self_new(type, NULL); if (! self) { g_set_error(err, 0, 0, _("unknown mailbox type \"%s\""), type); goto end; } mn_xml_import_properties(G_OBJECT(self), node); if (! self_validate(self, err)) { g_object_unref(self); self = NULL; } end: g_free(type); return self; }} #line 1632 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 691 "src/mn-mailbox.gob" xmlNode * mn_mailbox_xml_node_new (MNMailbox * self) { #line 1639 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::xml_node_new" #line 691 "src/mn-mailbox.gob" g_return_val_if_fail (self != NULL, (xmlNode * )0); #line 691 "src/mn-mailbox.gob" g_return_val_if_fail (MN_IS_MAILBOX (self), (xmlNode * )0); #line 1645 "mn-mailbox.c" { #line 693 "src/mn-mailbox.gob" xmlNode *node; node = xmlNewNode(NULL, "mailbox"); xmlSetProp(node, "type", SELF_GET_CLASS(self)->type); mn_xml_export_properties(G_OBJECT(self), node); return node; }} #line 1657 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 703 "src/mn-mailbox.gob" MNMailbox * mn_mailbox_new_from_uri (const char * uri) { #line 1664 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::new_from_uri" #line 703 "src/mn-mailbox.gob" g_return_val_if_fail (uri != NULL, (MNMailbox * )0); #line 1668 "mn-mailbox.c" { #line 705 "src/mn-mailbox.gob" int i; for (i = 0; mn_mailbox_types[i]; i++) { MNMailboxClass *class; MNMailbox *mailbox; class = g_type_class_ref(mn_mailbox_types[i]); mailbox = class->parse_uri ? class->parse_uri(NULL, uri) : NULL; g_type_class_unref(class); if (mailbox) return mailbox; } return NULL; }} #line 1689 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 724 "src/mn-mailbox.gob" MNMailbox * mn_mailbox_new_from_configuration (MNMailboxConfiguration * config) { #line 1696 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::new_from_configuration" #line 724 "src/mn-mailbox.gob" g_return_val_if_fail (config != NULL, (MNMailbox * )0); #line 1700 "mn-mailbox.c" { #line 726 "src/mn-mailbox.gob" return g_object_newv(config->type, config->n_parameters, config->parameters); }} #line 1706 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 730 "src/mn-mailbox.gob" MNMailboxConfiguration * mn_mailbox_get_configuration (MNMailbox * self) { #line 1713 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::get_configuration" #line 730 "src/mn-mailbox.gob" g_return_val_if_fail (self != NULL, (MNMailboxConfiguration * )0); #line 730 "src/mn-mailbox.gob" g_return_val_if_fail (MN_IS_MAILBOX (self), (MNMailboxConfiguration * )0); #line 1719 "mn-mailbox.c" { #line 732 "src/mn-mailbox.gob" GObject *object = G_OBJECT(self); GArray *parameters; GParamSpec **properties; unsigned int n_properties; int i; MNMailboxConfiguration *config; parameters = g_array_new(FALSE, FALSE, sizeof(GParameter)); properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties); for (i = 0; i < n_properties; i++) if ((properties[i]->flags & MN_MAILBOX_PARAM_SAVE) != 0) { GParameter parameter = { NULL, { 0, } }; parameter.name = g_param_spec_get_name(properties[i]); g_value_init(¶meter.value, G_PARAM_SPEC_VALUE_TYPE(properties[i])); g_object_get_property(object, parameter.name, ¶meter.value); g_array_append_val(parameters, parameter); } g_free(properties); config = g_new0(MNMailboxConfiguration, 1); config->type = G_OBJECT_TYPE(self); config->n_parameters = parameters->len; config->parameters = (GParameter *) g_array_free(parameters, FALSE); return config; }} #line 1754 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 765 "src/mn-mailbox.gob" void mn_mailbox_configuration_free (MNMailboxConfiguration * config) { #line 1761 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::configuration_free" #line 765 "src/mn-mailbox.gob" g_return_if_fail (config != NULL); #line 1765 "mn-mailbox.c" { #line 767 "src/mn-mailbox.gob" int i; for (i = 0; i < config->n_parameters; i++) g_value_unset(&config->parameters[i].value); g_free(config->parameters); g_free(config); }} #line 1777 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 777 "src/mn-mailbox.gob" MNMailbox * mn_mailbox_new_from_obsolete_uri (const char * uri) { #line 1784 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::new_from_obsolete_uri" #line 777 "src/mn-mailbox.gob" g_return_val_if_fail (uri != NULL, (MNMailbox * )0); #line 1788 "mn-mailbox.c" { #line 779 "src/mn-mailbox.gob" char *real_uri; char *scheme; gboolean obsolete = FALSE; Self *self = NULL; real_uri = g_str_has_prefix(uri, "pop3:") /* also handle very old pop3 locators */ ? g_strconcat("pop://", uri + 5, NULL) : g_strdup(uri); scheme = gnome_vfs_get_uri_scheme(real_uri); if (scheme) { if (! strcmp(scheme, "pop") || ! strcmp(scheme, "pops") || ! strcmp(scheme, "imap") || ! strcmp(scheme, "imaps") || ! strcmp(scheme, "gmail")) obsolete = TRUE; g_free(scheme); } self = obsolete ? self_parse_obsolete_uri(real_uri) : self_new_from_uri(real_uri); g_free(real_uri); if (self && ! self_validate(self, NULL)) { g_object_unref(self); self = NULL; } return self; }} #line 1822 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 811 "src/mn-mailbox.gob" static MNMailbox * mn_mailbox_parse_obsolete_uri (const char * uri) { #line 1829 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::parse_obsolete_uri" #line 811 "src/mn-mailbox.gob" g_return_val_if_fail (uri != NULL, (MNMailbox * )0); #line 1833 "mn-mailbox.c" { #line 813 "src/mn-mailbox.gob" int len; int buflen; char *scheme; char *username; char *password; char *authmech; char *hostname; int port; char *path; char **queries; Self *self = NULL; len = strlen(uri); buflen = len + 1; { char *pat; char scheme_buf[buflen]; char auth_buf[buflen]; char location_buf[buflen]; char username_buf[buflen]; char password_buf[buflen]; char authmech_buf[buflen]; char hostname_buf[buflen]; int _port; char path_buf[buflen]; char queries_buf[buflen]; gboolean has_location = FALSE; gboolean has_password = FALSE; gboolean has_authmech = FALSE; gboolean has_port = FALSE; gboolean has_path = FALSE; gboolean has_queries = FALSE; int n; /* split URI in 3 parts: scheme, auth and location */ pat = g_strdup_printf("%%%i[^:]://%%%i[^@]@%%%is", len, len, len); n = sscanf(uri, pat, scheme_buf, auth_buf, location_buf); g_free(pat); if (n >= 2) { if (n == 3) has_location = TRUE; } else return NULL; /* unparsable */ /* split auth part in 3 subparts: username, password and authmech */ /* * For backward compatibility with previous versions of Mail * Notification, we also support ;auth= (in lowercase). */ pat = g_strdup_printf("%%%i[^:]:%%%i[^;];%%*1[aA]%%*1[uU]%%*1[tT]%%*1[hH]=%%%is", len, len, len); n = sscanf(auth_buf, pat, username_buf, password_buf, authmech_buf); g_free(pat); if (n >= 2) { has_password = TRUE; if (n == 3) has_authmech = TRUE; } else { pat = g_strdup_printf("%%%i[^;];%%*1[aA]%%*1[uU]%%*1[tT]%%*1[hH]=%%%is", len, len); n = sscanf(auth_buf, pat, username_buf, authmech_buf); g_free(pat); if (n >= 1) { if (n == 2) has_authmech = TRUE; } else return NULL; /* unparsable */ } if (has_location) { char hostport_buf[buflen]; /* split location part in 3 subparts: hostport, path and queries */ pat = g_strdup_printf("%%%i[^/]/%%%i[^?]?%%%is", len, len, len); n = sscanf(location_buf, pat, hostport_buf, path_buf, queries_buf); g_free(pat); if (n >= 2) { has_path = TRUE; if (n == 3) has_queries = TRUE; } else { pat = g_strdup_printf("%%%i[^?]?%%%is", len, len); n = sscanf(location_buf, pat, hostport_buf, queries_buf); g_free(pat); if (n == 2) has_queries = TRUE; } /* split hostport in 2 subparts: host and port */ pat = g_strdup_printf("[%%%i[^]]]:%%u", len); n = sscanf(hostport_buf, pat, hostname_buf, &_port); g_free(pat); if (n < 1) { pat = g_strdup_printf("%%%i[^:]:%%u", len); n = sscanf(hostport_buf, pat, hostname_buf, &_port); g_free(pat); } if (n == 2) has_port = TRUE; } scheme = gnome_vfs_unescape_string(scheme_buf, NULL); username = gnome_vfs_unescape_string(username_buf, NULL); password = has_password ? gnome_vfs_unescape_string(password_buf, NULL) : NULL; authmech = has_authmech ? gnome_vfs_unescape_string(authmech_buf, NULL) : NULL; hostname = has_location ? gnome_vfs_unescape_string(hostname_buf, NULL) : NULL; port = has_port ? _port : 0; path = has_path ? gnome_vfs_unescape_string(path_buf, NULL) : NULL; if (has_queries) { int i; queries = g_strsplit(queries_buf, "&", 0); for (i = 0; queries[i]; i++) { char *unescaped; unescaped = gnome_vfs_unescape_string(queries[i], NULL); g_free(queries[i]); queries[i] = unescaped; } } else queries = NULL; } if (! strcmp(scheme, "pop") || ! strcmp(scheme, "pops")) { #if WITH_POP3 MNPIMailboxConnectionType connection_type; if (queries && mn_strv_find(queries, "STLS") != -1) connection_type = MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL; else connection_type = ! strcmp(scheme, "pops") ? MN_PI_MAILBOX_CONNECTION_TYPE_SSL : MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL; self = self_new("pop3", "connection-type", connection_type, "username", username, "password", password, "authmech", authmech, "hostname", hostname, "port", port, NULL); #endif } else if (! strcmp(scheme, "imap") || ! strcmp(scheme, "imaps")) { #if WITH_IMAP MNPIMailboxConnectionType connection_type; if (queries && mn_strv_find(queries, "STARTTLS") != -1) connection_type = MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL; else connection_type = ! strcmp(scheme, "imaps") ? MN_PI_MAILBOX_CONNECTION_TYPE_SSL : MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL; self = self_new("imap", "connection-type", connection_type, "username", username, "password", password, "authmech", authmech, "hostname", hostname, "port", port, NULL); if (path) g_object_set(self, MN_IMAP_MAILBOX_PROP_MAILBOX(path), NULL); if (queries && mn_strv_find(queries, "noidle") != -1) g_object_set(G_OBJECT(self), MN_IMAP_MAILBOX_PROP_USE_IDLE_EXTENSION(MN_IMAP_MAILBOX_USE_IDLE_NEVER), NULL); #endif } else if (! strcmp(scheme, "gmail")) { #if WITH_GMAIL self = self_new("gmail", "username", username, "password", password, NULL); #endif } g_free(scheme); g_free(username); g_free(password); g_free(authmech); g_free(hostname); g_free(path); g_strfreev(queries); return self; }} #line 2057 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 1035 "src/mn-mailbox.gob" static gboolean mn_mailbox_check_timeout_cb (gpointer data) { #line 2064 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::check_timeout_cb" { #line 1037 "src/mn-mailbox.gob" Self *self = data; self_check(self); return TRUE; /* continue */ }} #line 2075 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 1045 "src/mn-mailbox.gob" static gboolean mn_mailbox_validate (MNMailbox * self, GError ** err) { #line 2082 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::validate" #line 1045 "src/mn-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 1045 "src/mn-mailbox.gob" g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0); #line 2088 "mn-mailbox.c" { #line 1047 "src/mn-mailbox.gob" GParamSpec **properties; unsigned int n_properties; int i; gboolean status = TRUE; properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties); for (i = 0; i < n_properties; i++) if ((properties[i]->flags & MN_MAILBOX_PARAM_REQUIRED) != 0) { GValue value = { 0, }; const char *str; gboolean is_empty; g_assert(G_IS_PARAM_SPEC_STRING(properties[i])); g_value_init(&value, G_TYPE_STRING); g_object_get_property(G_OBJECT(self), g_param_spec_get_name(properties[i]), &value); str = g_value_get_string(&value); is_empty = ! str || ! *str; g_value_unset(&value); if (is_empty) { g_set_error(err, 0, 0, _("property \"%s\" has no value"), g_param_spec_get_name(properties[i])); status = FALSE; break; } } g_free(properties); return status; }} #line 2126 "mn-mailbox.c" #undef __GOB_FUNCTION__ /** * mn_mailbox_seal: * @self: a mailbox * * Seals the mailbox before it is made operational by being added to * the mailboxes list. The point of this function is to allow * subclasses to perform initialization which needs to consult the * value of properties loaded from mailboxes.xml or set by the * properties dialog. That would not be possible from init(), since * these properties are only set after the mailbox is constructed. **/ #line 1094 "src/mn-mailbox.gob" void mn_mailbox_seal (MNMailbox * self) { #line 2144 "mn-mailbox.c" MNMailboxClass *klass; #line 1094 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 1094 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 2150 "mn-mailbox.c" klass = MN_MAILBOX_GET_CLASS(self); if(klass->seal) (*klass->seal)(self); } #line 1094 "src/mn-mailbox.gob" static void ___real_mn_mailbox_seal (MNMailbox * self G_GNUC_UNUSED) { #line 2160 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::seal" { #line 1096 "src/mn-mailbox.gob" if (self->name) { g_free(self->runtime_name); self->runtime_name = g_strdup(self->name); } self->runtime_check_delay = self->check_delay != -1 ? self->check_delay : SELF_GET_CLASS(self)->default_check_delay; }} #line 2175 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 1109 "src/mn-mailbox.gob" static MNMailbox * mn_mailbox_parse_uri (MNMailbox * self, const char * uri) { #line 2182 "mn-mailbox.c" MNMailboxClass *klass; #line 1109 "src/mn-mailbox.gob" g_return_val_if_fail (self != NULL, (MNMailbox * )0); #line 1109 "src/mn-mailbox.gob" g_return_val_if_fail (MN_IS_MAILBOX (self), (MNMailbox * )0); #line 1109 "src/mn-mailbox.gob" g_return_val_if_fail (uri != NULL, (MNMailbox * )0); #line 2190 "mn-mailbox.c" klass = MN_MAILBOX_GET_CLASS(self); if(klass->parse_uri) return (*klass->parse_uri)(self,uri); else return (MNMailbox * )(0); } #line 1112 "src/mn-mailbox.gob" void mn_mailbox_check (MNMailbox * self) { #line 2203 "mn-mailbox.c" MNMailboxClass *klass; #line 1112 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 1112 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 2209 "mn-mailbox.c" klass = MN_MAILBOX_GET_CLASS(self); if(klass->check) (*klass->check)(self); } #line 1112 "src/mn-mailbox.gob" static void ___real_mn_mailbox_check (MNMailbox * self G_GNUC_UNUSED) { #line 2219 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::check" { #line 1114 "src/mn-mailbox.gob" g_assert(self_get_active(self) == TRUE); g_assert(selfp->checking_enabled == TRUE); }} #line 2227 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 1128 "src/mn-mailbox.gob" void mn_mailbox_enable_checking (MNMailbox * self) { #line 2234 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::enable_checking" #line 1128 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 1128 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 2240 "mn-mailbox.c" { #line 1130 "src/mn-mailbox.gob" selfp->checking_enabled = TRUE; g_object_notify(G_OBJECT(self), "manually-checkable"); self_update_check_timeout(self); self_check(self); }} #line 2250 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 1139 "src/mn-mailbox.gob" void mn_mailbox_notice (MNMailbox * self, const char * format, ...) { #line 2257 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::notice" #line 1139 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 1139 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 1139 "src/mn-mailbox.gob" g_return_if_fail (format != NULL); #line 2265 "mn-mailbox.c" { #line 1141 "src/mn-mailbox.gob" char *message; /* * Disregard messages sent by a threaded check still in progress * after the mailbox has been removed. */ if (! self_get_active(self)) return; MN_STRDUP_VPRINTF(message, format); mn_info(_("%s: %s"), self->runtime_name, message); g_free(message); }} #line 2282 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 1157 "src/mn-mailbox.gob" void mn_mailbox_warning (MNMailbox * self, const char * format, ...) { #line 2289 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::warning" #line 1157 "src/mn-mailbox.gob" g_return_if_fail (self != NULL); #line 1157 "src/mn-mailbox.gob" g_return_if_fail (MN_IS_MAILBOX (self)); #line 1157 "src/mn-mailbox.gob" g_return_if_fail (format != NULL); #line 2297 "mn-mailbox.c" { #line 1159 "src/mn-mailbox.gob" char *message; /* * Disregard messages sent by a threaded check still in progress * after the mailbox has been removed. */ if (! self_get_active(self)) return; MN_STRDUP_VPRINTF(message, format); g_warning(_("%s: %s"), self->runtime_name, message); g_free(message); }} #line 2314 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 1174 "src/mn-mailbox.gob" MNMessage * mn_mailbox_get_message_from_mid (MNMailbox * self, const char * mid) { #line 2321 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::get_message_from_mid" #line 1174 "src/mn-mailbox.gob" g_return_val_if_fail (self != NULL, (MNMessage * )0); #line 1174 "src/mn-mailbox.gob" g_return_val_if_fail (MN_IS_MAILBOX (self), (MNMessage * )0); #line 1174 "src/mn-mailbox.gob" g_return_val_if_fail (mid != NULL, (MNMessage * )0); #line 2329 "mn-mailbox.c" { #line 1176 "src/mn-mailbox.gob" return g_hash_table_lookup(selfp->all_messages_by_mid, mid); }} #line 2335 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 1180 "src/mn-mailbox.gob" char * mn_mailbox_get_command (MNMailbox * self, const char * id) { #line 2342 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::get_command" #line 1180 "src/mn-mailbox.gob" g_return_val_if_fail (self != NULL, (char * )0); #line 1180 "src/mn-mailbox.gob" g_return_val_if_fail (MN_IS_MAILBOX (self), (char * )0); #line 1180 "src/mn-mailbox.gob" g_return_val_if_fail (id != NULL, (char * )0); #line 2350 "mn-mailbox.c" { #line 1182 "src/mn-mailbox.gob" char *prop; char *command; prop = g_strconcat(id, "-command", NULL); g_object_get(self, prop, &command, NULL); g_free(prop); if (command && ! *command) { g_free(command); return NULL; } return command; }} #line 2369 "mn-mailbox.c" #undef __GOB_FUNCTION__ #line 1199 "src/mn-mailbox.gob" gboolean mn_mailbox_has_command (MNMailbox * self, const char * id) { #line 2376 "mn-mailbox.c" #define __GOB_FUNCTION__ "MN:Mailbox::has_command" #line 1199 "src/mn-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 1199 "src/mn-mailbox.gob" g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0); #line 1199 "src/mn-mailbox.gob" g_return_val_if_fail (id != NULL, (gboolean )0); #line 2384 "mn-mailbox.c" { #line 1201 "src/mn-mailbox.gob" char *command; gboolean has; command = self_get_command(self, id); has = command != NULL; g_free(command); return has; }} #line 2397 "mn-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-sound-file-chooser-dialog-private.h0000644000175000001440000000115611015312645026735 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_SOUND_FILE_CHOOSER_DIALOG_PRIVATE_H__ #define __MN_SOUND_FILE_CHOOSER_DIALOG_PRIVATE_H__ #include "mn-sound-file-chooser-dialog.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 24 "src/mn-sound-file-chooser-dialog.gob" #include "mn-sound-player.h" #line 18 "mn-sound-file-chooser-dialog-private.h" struct _MNSoundFileChooserDialogPrivate { #line 40 "src/mn-sound-file-chooser-dialog.gob" MNSoundPlayer * sound_player; #line 22 "mn-sound-file-chooser-dialog-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-message-private.h0000644000175000001440000000065411015312647025445 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_EVOLUTION_MESSAGE_PRIVATE_H__ #define __MN_EVOLUTION_MESSAGE_PRIVATE_H__ #include "mn-evolution-message.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNEvolutionMessagePrivate { #line 61 "src/mn-evolution-message.gob" char * uid; #line 16 "mn-evolution-message-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-tooltips.gob.stamp0000644000175000001440000000000011015312645023626 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-maildir-mailbox-backend.gob.stamp0000644000175000001440000000000011015312645026410 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-vfs-mailbox.c0000644000175000001440000005474511015312647022563 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-vfs-mailbox.h" #include "mn-vfs-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 34 "src/mn-vfs-mailbox.gob" #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #if WITH_MBOX #include "mn-mbox-mailbox-backend.h" #endif #if WITH_MOZILLA #include "mn-mozilla-mailbox-backend.h" #endif #if WITH_MH #include "mn-mh-mailbox-backend.h" #endif #if WITH_MAILDIR #include "mn-maildir-mailbox-backend.h" #endif #if WITH_SYLPHEED #include "mn-sylpheed-mailbox-backend.h" #endif #include "mn-vfs-mailbox-backend-private.h" #include "mn-vfs.h" #include "mn-stock.h" #include "mn-conf.h" #include "mn-util.h" #include "mn-locked-callback.h" GType mn_vfs_mailbox_backend_types[MN_VFS_MAILBOX_MAX_BACKEND_TYPES + 1]; typedef struct { char *uri; MNVFSMailboxBackend *owner; GnomeVFSMonitorType type; GnomeVFSMonitorCallback callback; gpointer user_data; GnomeVFSResult result; GnomeVFSMonitorHandle *handle; } Monitor; #line 67 "mn-vfs-mailbox.c" /* self casting macros */ #define SELF(x) MN_VFS_MAILBOX(x) #define SELF_CONST(x) MN_VFS_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_VFS_MAILBOX(x) #define TYPE_SELF MN_TYPE_VFS_MAILBOX #define SELF_CLASS(x) MN_VFS_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_VFS_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNVFSMailbox Self; typedef MNVFSMailboxClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_init (MNVFSMailbox * o); #line 84 "mn-vfs-mailbox.c" #line 115 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_class_init (MNVFSMailboxClass * class); #line 87 "mn-vfs-mailbox.c" #line 125 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_constructor (MNVFSMailbox * self); #line 90 "mn-vfs-mailbox.c" #line 131 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_dispose (MNVFSMailbox * self); #line 93 "mn-vfs-mailbox.c" #line 141 "src/mn-vfs-mailbox.gob" static void ___5_mn_vfs_mailbox_seal (MNMailbox * mailbox); #line 96 "mn-vfs-mailbox.c" #line 176 "src/mn-vfs-mailbox.gob" static Monitor * mn_vfs_mailbox_find_monitor (MNVFSMailbox * self, const char * uri, MNVFSMailboxBackend * owner, GnomeVFSMonitorType type, GnomeVFSMonitorCallback callback, gpointer user_data); #line 99 "mn-vfs-mailbox.c" #line 243 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_monitor_free (Monitor * monitor); #line 102 "mn-vfs-mailbox.c" #line 254 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data); #line 105 "mn-vfs-mailbox.c" #line 315 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_queue_update_poll (MNVFSMailbox * self); #line 108 "mn-vfs-mailbox.c" #line 322 "src/mn-vfs-mailbox.gob" static gboolean mn_vfs_mailbox_update_poll_cb (gpointer data); #line 111 "mn-vfs-mailbox.c" #line 352 "src/mn-vfs-mailbox.gob" static void ___d_mn_vfs_mailbox_reentrant_check (MNReentrantMailbox * mailbox, int check_id); #line 114 "mn-vfs-mailbox.c" /* pointer to the class of our parent */ static MNReentrantMailboxClass *parent_class = NULL; /* Short form macros */ #define self_init_types mn_vfs_mailbox_init_types #define self_find_monitor mn_vfs_mailbox_find_monitor #define self_monitor mn_vfs_mailbox_monitor #define self_monitor_free mn_vfs_mailbox_monitor_free #define self_monitor_cb mn_vfs_mailbox_monitor_cb #define self_remove_monitors_by_owner mn_vfs_mailbox_remove_monitors_by_owner #define self_queue_update_poll mn_vfs_mailbox_queue_update_poll #define self_update_poll_cb mn_vfs_mailbox_update_poll_cb #define self_lock mn_vfs_mailbox_lock #define self_unlock mn_vfs_mailbox_unlock GType mn_vfs_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNVFSMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_vfs_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNVFSMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_vfs_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_REENTRANT_MAILBOX, "MNVFSMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNVFSMailbox *)g_object_new(mn_vfs_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNVFSMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNVFSMailbox * GET_NEW_VARG (const char *first, ...) { MNVFSMailbox *ret; va_list ap; va_start (ap, first); ret = (MNVFSMailbox *)g_object_new_valist (mn_vfs_mailbox_get_type (), first, ap); va_end (ap); return ret; } static GObject * ___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { #define __GOB_FUNCTION__ "MN:VFS:Mailbox::constructor" GObject *obj_self; MNVFSMailbox *self; obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties); self = MN_VFS_MAILBOX (obj_self); #line 125 "src/mn-vfs-mailbox.gob" mn_vfs_mailbox_constructor (self); #line 183 "mn-vfs-mailbox.c" return obj_self; } #undef __GOB_FUNCTION__ static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:VFS:Mailbox::dispose" MNVFSMailbox *self G_GNUC_UNUSED = MN_VFS_MAILBOX (obj_self); #line 131 "src/mn-vfs-mailbox.gob" mn_vfs_mailbox_dispose (self); #line 196 "mn-vfs-mailbox.c" if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 78 "src/mn-vfs-mailbox.gob" if(self->vfs_uri) { gnome_vfs_uri_unref ((gpointer) self->vfs_uri); self->vfs_uri = NULL; } #line 201 "mn-vfs-mailbox.c" #line 81 "src/mn-vfs-mailbox.gob" if(self->_priv->backend) { g_object_unref ((gpointer) self->_priv->backend); self->_priv->backend = NULL; } #line 204 "mn-vfs-mailbox.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:VFS:Mailbox::finalize" MNVFSMailbox *self G_GNUC_UNUSED = MN_VFS_MAILBOX (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 77 "src/mn-vfs-mailbox.gob" if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; } #line 219 "mn-vfs-mailbox.c" #line 84 "src/mn-vfs-mailbox.gob" if(self->_priv->mutex) { g_mutex_free ((gpointer) self->_priv->mutex); self->_priv->mutex = NULL; } #line 222 "mn-vfs-mailbox.c" } #undef __GOB_FUNCTION__ static void mn_vfs_mailbox_init (MNVFSMailbox * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:VFS:Mailbox::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_VFS_MAILBOX,MNVFSMailboxPrivate); #line 84 "src/mn-vfs-mailbox.gob" o->_priv->mutex = g_mutex_new(); #line 233 "mn-vfs-mailbox.c" } #undef __GOB_FUNCTION__ #line 115 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_class_init (MNVFSMailboxClass * class G_GNUC_UNUSED) { #line 240 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class; MNReentrantMailboxClass *mn_reentrant_mailbox_class = (MNReentrantMailboxClass *)class; g_type_class_add_private(class,sizeof(MNVFSMailboxPrivate)); parent_class = g_type_class_ref (MN_TYPE_REENTRANT_MAILBOX); #line 141 "src/mn-vfs-mailbox.gob" mn_mailbox_class->seal = ___5_mn_vfs_mailbox_seal; #line 352 "src/mn-vfs-mailbox.gob" mn_reentrant_mailbox_class->reentrant_check = ___d_mn_vfs_mailbox_reentrant_check; #line 254 "mn-vfs-mailbox.c" g_object_class->constructor = ___constructor; g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; { #line 116 "src/mn-vfs-mailbox.gob" /* * Most VFS mailboxes will probably be local files, or remote * files located in the same LAN. We therefore choose a small * default check delay (1 minute). */ MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 1; #line 268 "mn-vfs-mailbox.c" } } #undef __GOB_FUNCTION__ #line 86 "src/mn-vfs-mailbox.gob" void mn_vfs_mailbox_init_types (void) { #line 278 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::init_types" { #line 88 "src/mn-vfs-mailbox.gob" int i = 0; #if WITH_MBOX mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MBOX_MAILBOX_BACKEND; #endif #if WITH_MOZILLA mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MOZILLA_MAILBOX_BACKEND; #endif /* * Claws Mail mailboxes contain both a .sylpheed_mark and a * .mh_sequences file. List the Sylpheed backend first, in order * to treat them as Sylpheed mailboxes. This way, the need to use * rcvstore from procmail is removed. */ #if WITH_SYLPHEED mn_vfs_mailbox_backend_types[i++] = MN_TYPE_SYLPHEED_MAILBOX_BACKEND; #endif #if WITH_MH mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MH_MAILBOX_BACKEND; #endif #if WITH_MAILDIR mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MAILDIR_MAILBOX_BACKEND; #endif mn_vfs_mailbox_backend_types[i] = 0; }} #line 308 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 125 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_constructor (MNVFSMailbox * self) { #line 316 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::constructor" { #line 126 "src/mn-vfs-mailbox.gob" /* set default poll to the most likely value */ mn_mailbox_set_poll(MN_MAILBOX(self), FALSE); }} #line 324 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 131 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_dispose (MNVFSMailbox * self) { #line 331 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::dispose" { #line 132 "src/mn-vfs-mailbox.gob" /* * We are no longer operational after dispose (see unrefwith * above), so we must remove our monitors. */ mn_source_clear(&selfp->update_poll_id); mn_g_slist_clear_deep_custom(&selfp->monitors, (GFunc) self_monitor_free, NULL); }} #line 343 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 141 "src/mn-vfs-mailbox.gob" static void ___5_mn_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED) #line 349 "mn-vfs-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->seal) \ (* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); } { #define __GOB_FUNCTION__ "MN:VFS:Mailbox::seal" { #line 143 "src/mn-vfs-mailbox.gob" Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (self->uri) { self->vfs_uri = gnome_vfs_uri_new(self->uri); if (! mailbox->stock_id && self->vfs_uri && ! gnome_vfs_uri_is_local(self->vfs_uri)) mn_mailbox_set_stock_id(mailbox, MN_STOCK_REMOTE); if (! mailbox->runtime_name) { char *path; path = gnome_vfs_get_local_path_from_uri(self->uri); if (path) { mailbox->runtime_name = g_filename_display_name(path); g_free(path); } else mailbox->runtime_name = self->vfs_uri ? gnome_vfs_uri_to_string(self->vfs_uri, GNOME_VFS_URI_HIDE_PASSWORD) : g_strdup(self->uri); } } if (! mailbox->stock_id) mn_mailbox_set_stock_id(mailbox, MN_STOCK_LOCAL); }} #line 389 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 176 "src/mn-vfs-mailbox.gob" static Monitor * mn_vfs_mailbox_find_monitor (MNVFSMailbox * self, const char * uri, MNVFSMailboxBackend * owner, GnomeVFSMonitorType type, GnomeVFSMonitorCallback callback, gpointer user_data) { #line 397 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::find_monitor" #line 176 "src/mn-vfs-mailbox.gob" g_return_val_if_fail (self != NULL, (Monitor * )0); #line 176 "src/mn-vfs-mailbox.gob" g_return_val_if_fail (MN_IS_VFS_MAILBOX (self), (Monitor * )0); #line 176 "src/mn-vfs-mailbox.gob" g_return_val_if_fail (uri != NULL, (Monitor * )0); #line 405 "mn-vfs-mailbox.c" { #line 183 "src/mn-vfs-mailbox.gob" GSList *l; MN_LIST_FOREACH(l, selfp->monitors) { Monitor *monitor = l->data; if (monitor->owner == owner && monitor->type == type && monitor->callback == callback && monitor->user_data == user_data && ! strcmp(monitor->uri, uri)) return monitor; } return NULL; }} #line 425 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 201 "src/mn-vfs-mailbox.gob" void mn_vfs_mailbox_monitor (MNVFSMailbox * self, const char * uri, MNVFSMailboxBackend * owner, GnomeVFSMonitorType type, GnomeVFSMonitorCallback callback, gpointer user_data) { #line 432 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::monitor" #line 201 "src/mn-vfs-mailbox.gob" g_return_if_fail (self != NULL); #line 201 "src/mn-vfs-mailbox.gob" g_return_if_fail (MN_IS_VFS_MAILBOX (self)); #line 201 "src/mn-vfs-mailbox.gob" g_return_if_fail (uri != NULL); #line 440 "mn-vfs-mailbox.c" { #line 208 "src/mn-vfs-mailbox.gob" Monitor *monitor; g_return_if_fail(owner == NULL || MN_IS_VFS_MAILBOX_BACKEND(owner)); monitor = self_find_monitor(self, uri, owner, type, callback, user_data); if (! monitor) { monitor = g_new0(Monitor, 1); monitor->uri = g_strdup(uri); monitor->owner = owner; monitor->type = type; monitor->callback = callback; monitor->user_data = user_data; monitor->result = -1; selfp->monitors = g_slist_append(selfp->monitors, monitor); } if (monitor->result != GNOME_VFS_OK) { GnomeVFSResult result; result = mn_gnome_vfs_monitor_add_locked(&monitor->handle, uri, type, callback, user_data); if (result != monitor->result) { monitor->result = result; if (result != GNOME_VFS_OK) mn_mailbox_warning(MN_MAILBOX(self), _("unable to monitor %s (%s), poll mode activated"), uri, gnome_vfs_result_to_string(result)); self_queue_update_poll(self); } } }} #line 477 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 243 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_monitor_free (Monitor * monitor) { #line 484 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::monitor_free" #line 243 "src/mn-vfs-mailbox.gob" g_return_if_fail (monitor != NULL); #line 488 "mn-vfs-mailbox.c" { #line 245 "src/mn-vfs-mailbox.gob" g_free(monitor->uri); if (monitor->result == GNOME_VFS_OK) mn_gnome_vfs_monitor_cancel_locked(monitor->handle); g_free(monitor); }} #line 499 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 254 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data) { #line 506 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::monitor_cb" { #line 260 "src/mn-vfs-mailbox.gob" if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED || event_type == GNOME_VFS_MONITOR_EVENT_DELETED || event_type == GNOME_VFS_MONITOR_EVENT_CREATED) { Self *self = user_data; MNVFSMailboxBackend *backend; /* * Queue a check to detect if the mailbox type has changed. If * the mailbox has a backend, we must use * mn_vfs_mailbox_backend_queue_check() (which respects the * check_latency member of MNVFSMailboxBackend) in order to * avoid race conditions. */ self_lock(self); backend = selfp->backend; if (backend) mn_vfs_mailbox_backend_queue_check(backend); self_unlock(self); /* * Note that at this point, we have released the lock and the * backend might have been finalized by another thread: we can * only test the nullity of the pointer. */ if (! backend) mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self)); } }} #line 543 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 294 "src/mn-vfs-mailbox.gob" void mn_vfs_mailbox_remove_monitors_by_owner (MNVFSMailbox * self, MNVFSMailboxBackend * owner) { #line 550 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::remove_monitors_by_owner" #line 294 "src/mn-vfs-mailbox.gob" g_return_if_fail (self != NULL); #line 294 "src/mn-vfs-mailbox.gob" g_return_if_fail (MN_IS_VFS_MAILBOX (self)); #line 556 "mn-vfs-mailbox.c" { #line 296 "src/mn-vfs-mailbox.gob" GSList *l; g_return_if_fail(owner == NULL || MN_IS_VFS_MAILBOX_BACKEND(owner)); start: MN_LIST_FOREACH(l, selfp->monitors) { Monitor *monitor = l->data; if (monitor->owner == owner) { selfp->monitors = mn_g_slist_delete_link_deep_custom(selfp->monitors, l, (GFunc) self_monitor_free, NULL); self_queue_update_poll(self); goto start; } } }} #line 577 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 315 "src/mn-vfs-mailbox.gob" static void mn_vfs_mailbox_queue_update_poll (MNVFSMailbox * self) { #line 584 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::queue_update_poll" #line 315 "src/mn-vfs-mailbox.gob" g_return_if_fail (self != NULL); #line 315 "src/mn-vfs-mailbox.gob" g_return_if_fail (MN_IS_VFS_MAILBOX (self)); #line 590 "mn-vfs-mailbox.c" { #line 317 "src/mn-vfs-mailbox.gob" if (! selfp->update_poll_id) selfp->update_poll_id = gdk_threads_add_idle(self_update_poll_cb, self); }} #line 597 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 322 "src/mn-vfs-mailbox.gob" static gboolean mn_vfs_mailbox_update_poll_cb (gpointer data) { #line 604 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::update_poll_cb" { #line 324 "src/mn-vfs-mailbox.gob" Self *self = data; gboolean polled = FALSE; GSList *l; self_lock(self); MN_LIST_FOREACH(l, selfp->monitors) { Monitor *monitor = l->data; if (monitor->result != GNOME_VFS_OK) { polled = TRUE; break; } } selfp->update_poll_id = 0; self_unlock(self); if (mn_mailbox_get_poll(MN_MAILBOX(self)) != polled) mn_mailbox_set_poll(MN_MAILBOX(self), polled); return FALSE; /* remove source */ }} #line 635 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 352 "src/mn-vfs-mailbox.gob" static void ___d_mn_vfs_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, int check_id) #line 641 "mn-vfs-mailbox.c" #define PARENT_HANDLER(___mailbox,___check_id) \ { if(MN_REENTRANT_MAILBOX_CLASS(parent_class)->reentrant_check) \ (* MN_REENTRANT_MAILBOX_CLASS(parent_class)->reentrant_check)(___mailbox,___check_id); } { #define __GOB_FUNCTION__ "MN:VFS:Mailbox::reentrant_check" { #line 354 "src/mn-vfs-mailbox.gob" Self *self = SELF(mailbox); MNVFSMailboxBackend *backend; MNVFSMailboxBackendClass *class; GType backend_type = 0; gboolean exists; self_lock(self); /* * Install the monitors that detect a mailbox type change. These * monitors are not meant to detect if the mail status of a * mailbox changes (it is the responsability of the backend), * although they will do so with some mailbox formats. * * For properly detecting the new mailbox type when the file or * directory changes we need install both a file and a directory * monitor, since depending on the underlying implementation we * might not get file events if the URI is a directory, etc. */ self_monitor(self, self->uri, NULL, GNOME_VFS_MONITOR_FILE, self_monitor_cb, self); self_monitor(self, self->uri, NULL, GNOME_VFS_MONITOR_DIRECTORY, self_monitor_cb, self); backend = selfp->backend; if (backend) g_object_ref(backend); self_unlock(self); class = backend ? MN_VFS_MAILBOX_BACKEND_GET_CLASS(backend) : NULL; if (class && class->is(NULL, class, self)) backend_type = G_OBJECT_TYPE(backend); else { exists = mn_vfs_test(self->vfs_uri, G_FILE_TEST_EXISTS); if (exists) { int i; for (i = 0; mn_vfs_mailbox_backend_types[i]; i++) { class = g_type_class_peek(mn_vfs_mailbox_backend_types[i]); g_assert(class != NULL); if (class->is(NULL, class, self)) { backend_type = mn_vfs_mailbox_backend_types[i]; break; } if (mn_reentrant_mailbox_check_aborted(mailbox, check_id)) goto end; } } } if (! backend || backend_type != G_OBJECT_TYPE(backend)) { MNVFSMailboxBackend *new_backend = NULL; if (! mn_reentrant_mailbox_check_aborted(mailbox, check_id)) { GDK_THREADS_ENTER(); if (backend_type) { new_backend = g_object_new(backend_type, MN_VFS_MAILBOX_BACKEND_PROP_MAILBOX(self), NULL); mn_mailbox_set_format(MN_MAILBOX(self), (char *) MN_VFS_MAILBOX_BACKEND_GET_CLASS(new_backend)->format); } else { mn_mailbox_set_format(MN_MAILBOX(self), NULL); mn_mailbox_set_error(MN_MAILBOX(self), exists ? _("unknown mailbox format") : _("does not exist")); } gdk_flush(); GDK_THREADS_LEAVE(); } self_lock(self); if (backend) { g_object_unref(backend); backend = NULL; } if (! mn_reentrant_mailbox_check_aborted(mailbox, check_id)) { if (selfp->backend) { g_object_unref(selfp->backend); selfp->backend = NULL; } if (new_backend) { selfp->backend = backend = new_backend; new_backend = NULL; g_object_ref(backend); } } self_unlock(self); if (new_backend) g_object_unref(new_backend); } if (backend) mn_vfs_mailbox_backend_check(backend, check_id); end: if (backend) { self_lock(self); g_object_unref(backend); self_unlock(self); } }} #line 770 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 476 "src/mn-vfs-mailbox.gob" void mn_vfs_mailbox_lock (MNVFSMailbox * self) { #line 778 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::lock" #line 476 "src/mn-vfs-mailbox.gob" g_return_if_fail (self != NULL); #line 476 "src/mn-vfs-mailbox.gob" g_return_if_fail (MN_IS_VFS_MAILBOX (self)); #line 784 "mn-vfs-mailbox.c" { #line 478 "src/mn-vfs-mailbox.gob" g_mutex_lock(selfp->mutex); }} #line 790 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ #line 482 "src/mn-vfs-mailbox.gob" void mn_vfs_mailbox_unlock (MNVFSMailbox * self) { #line 797 "mn-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox::unlock" #line 482 "src/mn-vfs-mailbox.gob" g_return_if_fail (self != NULL); #line 482 "src/mn-vfs-mailbox.gob" g_return_if_fail (MN_IS_VFS_MAILBOX (self)); #line 803 "mn-vfs-mailbox.c" { #line 484 "src/mn-vfs-mailbox.gob" g_mutex_unlock(selfp->mutex); }} #line 809 "mn-vfs-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-mozilla-mailbox-backend-private.h0000644000175000001440000000047011015312645026456 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MOZILLA_MAILBOX_BACKEND_PRIVATE_H__ #define __MN_MOZILLA_MAILBOX_BACKEND_PRIVATE_H__ #include "mn-mozilla-mailbox-backend.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-properties-dialog.h0000644000175000001440000000321311015312645023750 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-dialog.h" #ifndef __MN_PROPERTIES_DIALOG_H__ #define __MN_PROPERTIES_DIALOG_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_PROPERTIES_DIALOG (mn_properties_dialog_get_type()) #define MN_PROPERTIES_DIALOG(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_properties_dialog_get_type(), MNPropertiesDialog) #define MN_PROPERTIES_DIALOG_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_properties_dialog_get_type(), MNPropertiesDialog const) #define MN_PROPERTIES_DIALOG_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_properties_dialog_get_type(), MNPropertiesDialogClass) #define MN_IS_PROPERTIES_DIALOG(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_properties_dialog_get_type ()) #define MN_PROPERTIES_DIALOG_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_properties_dialog_get_type(), MNPropertiesDialogClass) /* Private structure type */ typedef struct _MNPropertiesDialogPrivate MNPropertiesDialogPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_PROPERTIES_DIALOG__ #define __TYPEDEF_MN_PROPERTIES_DIALOG__ typedef struct _MNPropertiesDialog MNPropertiesDialog; #endif struct _MNPropertiesDialog { MNDialog __parent__; /*< private >*/ MNPropertiesDialogPrivate *_priv; }; /* * Class definition */ typedef struct _MNPropertiesDialogClass MNPropertiesDialogClass; struct _MNPropertiesDialogClass { MNDialogClass __parent__; }; /* * Public methods */ GType mn_properties_dialog_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mailbox-properties-dialog.c0000644000175000001440000013356411015312644025410 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-mailbox-properties-dialog.h" #include "mn-mailbox-properties-dialog-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 29 "src/mn-mailbox-properties-dialog.gob" #include #include "mn-autodetect-mailbox-properties.h" #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED #include "mn-system-vfs-mailbox-properties.h" #endif #if WITH_POP3 #include "mn-pop3-mailbox-properties.h" #endif #if WITH_IMAP #include "mn-imap-mailbox-properties.h" #endif #if WITH_GMAIL #include "mn-gmail-mailbox-properties.h" #endif #if WITH_YAHOO #include "mn-yahoo-mailbox-properties.h" #endif #if WITH_HOTMAIL #include "mn-hotmail-mailbox-properties.h" #endif #if WITH_EVOLUTION #include "mn-evolution-mailbox-properties.h" #endif #include "mn-util.h" #include "mn-mailboxes.h" #include "mn-shell.h" #include "mn-non-linear-range.h" #define HELP_SECTION "mn-mailbox-properties-help-section" enum { COLUMN_PROPERTIES, COLUMN_STOCK_ID, COLUMN_LABEL, N_COLUMNS }; static GType selected_type = 0; static const MNNonLinearRangeBlock delay_blocks[] = { { MN_SECS(10), MN_SECS(60), MN_SECS(10) }, { MN_MINS(2), MN_MINS(10), MN_MINS(1) }, { MN_MINS(15), MN_MINS(60), MN_MINS(5) }, { MN_HOURS(2), MN_HOURS(24), MN_HOURS(1) } }; #line 74 "mn-mailbox-properties-dialog.c" /* self casting macros */ #define SELF(x) MN_MAILBOX_PROPERTIES_DIALOG(x) #define SELF_CONST(x) MN_MAILBOX_PROPERTIES_DIALOG_CONST(x) #define IS_SELF(x) MN_IS_MAILBOX_PROPERTIES_DIALOG(x) #define TYPE_SELF MN_TYPE_MAILBOX_PROPERTIES_DIALOG #define SELF_CLASS(x) MN_MAILBOX_PROPERTIES_DIALOG_CLASS(x) #define SELF_GET_CLASS(x) MN_MAILBOX_PROPERTIES_DIALOG_GET_CLASS(x) /* self typedefs */ typedef MNMailboxPropertiesDialog Self; typedef MNMailboxPropertiesDialogClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_init (MNMailboxPropertiesDialog * o); #line 93 "mn-mailbox-properties-dialog.c" #line 0 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_class_init (MNMailboxPropertiesDialogClass * c); #line 96 "mn-mailbox-properties-dialog.c" #line 144 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_constructor (MNMailboxPropertiesDialog * self); #line 99 "mn-mailbox-properties-dialog.c" #line 253 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_setup_type_combo (MNMailboxPropertiesDialog * self); #line 102 "mn-mailbox-properties-dialog.c" #line 305 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_response_h (GtkDialog * dialog, int response, gpointer user_data); #line 105 "mn-mailbox-properties-dialog.c" #line 330 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog * self, GType type); #line 108 "mn-mailbox-properties-dialog.c" #line 361 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_set_active_properties (MNMailboxPropertiesDialog * self, MNMailboxProperties * properties); #line 111 "mn-mailbox-properties-dialog.c" #line 383 "src/mn-mailbox-properties-dialog.gob" static MNMailboxProperties * mn_mailbox_properties_dialog_get_active_properties (MNMailboxPropertiesDialog * self); #line 114 "mn-mailbox-properties-dialog.c" #line 395 "src/mn-mailbox-properties-dialog.gob" static MNMailboxProperties * mn_mailbox_properties_dialog_get_properties_by_type (MNMailboxPropertiesDialog * self, const char * type); #line 117 "mn-mailbox-properties-dialog.c" #line 419 "src/mn-mailbox-properties-dialog.gob" static MNMailboxProperties * mn_mailbox_properties_dialog_get_properties_by_g_type (MNMailboxPropertiesDialog * self, GType type); #line 120 "mn-mailbox-properties-dialog.c" #line 496 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_complete (MNMailboxPropertiesDialog * self); #line 123 "mn-mailbox-properties-dialog.c" #line 515 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_name_sensitivity (MNMailboxPropertiesDialog * self); #line 126 "mn-mailbox-properties-dialog.c" #line 521 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_delay_sensitivity (MNMailboxPropertiesDialog * self); #line 129 "mn-mailbox-properties-dialog.c" #line 527 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_delay_visibility (MNMailboxPropertiesDialog * self); #line 132 "mn-mailbox-properties-dialog.c" #line 560 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_default_name (MNMailboxPropertiesDialog * self); #line 135 "mn-mailbox-properties-dialog.c" #line 595 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_default_check_delay (MNMailboxPropertiesDialog * self); #line 138 "mn-mailbox-properties-dialog.c" enum { PROP_0, PROP_DIALOG_PARENT, PROP_MAILBOX }; /* pointer to the class of our parent */ static MNDialogClass *parent_class = NULL; /* Short form macros */ #define self_get_mailbox mn_mailbox_properties_dialog_get_mailbox #define self_set_mailbox mn_mailbox_properties_dialog_set_mailbox #define self_setup_type_combo mn_mailbox_properties_dialog_setup_type_combo #define self_response_h mn_mailbox_properties_dialog_response_h #define self_add_type mn_mailbox_properties_dialog_add_type #define self_set_active_properties mn_mailbox_properties_dialog_set_active_properties #define self_get_active_properties mn_mailbox_properties_dialog_get_active_properties #define self_get_properties_by_type mn_mailbox_properties_dialog_get_properties_by_type #define self_get_properties_by_g_type mn_mailbox_properties_dialog_get_properties_by_g_type #define self_get_current_mailbox mn_mailbox_properties_dialog_get_current_mailbox #define self_apply mn_mailbox_properties_dialog_apply #define self_cancel mn_mailbox_properties_dialog_cancel #define self_update_complete mn_mailbox_properties_dialog_update_complete #define self_update_name_sensitivity mn_mailbox_properties_dialog_update_name_sensitivity #define self_update_delay_sensitivity mn_mailbox_properties_dialog_update_delay_sensitivity #define self_update_delay_visibility mn_mailbox_properties_dialog_update_delay_visibility #define self_update_default_name mn_mailbox_properties_dialog_update_default_name #define self_update_default_check_delay mn_mailbox_properties_dialog_update_default_check_delay #define self_set_help_section mn_mailbox_properties_dialog_set_help_section #define self_new mn_mailbox_properties_dialog_new #define self_type_changed_h mn_mailbox_properties_dialog_type_changed_h #define self_name_toggled_h mn_mailbox_properties_dialog_name_toggled_h #define self_delay_toggled_h mn_mailbox_properties_dialog_delay_toggled_h #define self_delay_format_value_h mn_mailbox_properties_dialog_delay_format_value_h #define self_entry_activate_h mn_mailbox_properties_dialog_entry_activate_h GType mn_mailbox_properties_dialog_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMailboxPropertiesDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_mailbox_properties_dialog_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMailboxPropertiesDialog), 0 /* n_preallocs */, (GInstanceInitFunc) mn_mailbox_properties_dialog_init, NULL }; type = g_type_register_static (MN_TYPE_DIALOG, "MNMailboxPropertiesDialog", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMailboxPropertiesDialog *)g_object_new(mn_mailbox_properties_dialog_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMailboxPropertiesDialog * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMailboxPropertiesDialog * GET_NEW_VARG (const char *first, ...) { MNMailboxPropertiesDialog *ret; va_list ap; va_start (ap, first); ret = (MNMailboxPropertiesDialog *)g_object_new_valist (mn_mailbox_properties_dialog_get_type (), first, ap); va_end (ap); return ret; } static GObject * ___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::constructor" GObject *obj_self; MNMailboxPropertiesDialog *self; obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties); self = MN_MAILBOX_PROPERTIES_DIALOG (obj_self); #line 144 "src/mn-mailbox-properties-dialog.gob" mn_mailbox_properties_dialog_constructor (self); #line 228 "mn-mailbox-properties-dialog.c" return obj_self; } #undef __GOB_FUNCTION__ static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::dispose" MNMailboxPropertiesDialog *self G_GNUC_UNUSED = MN_MAILBOX_PROPERTIES_DIALOG (obj_self); if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 83 "src/mn-mailbox-properties-dialog.gob" if(self->_priv->mailbox) { g_object_unref ((gpointer) self->_priv->mailbox); self->_priv->mailbox = NULL; } #line 243 "mn-mailbox-properties-dialog.c" #line 138 "src/mn-mailbox-properties-dialog.gob" if(self->_priv->store) { g_object_unref ((gpointer) self->_priv->store); self->_priv->store = NULL; } #line 246 "mn-mailbox-properties-dialog.c" #line 140 "src/mn-mailbox-properties-dialog.gob" if(self->_priv->active_properties) { g_object_unref ((gpointer) self->_priv->active_properties); self->_priv->active_properties = NULL; } #line 249 "mn-mailbox-properties-dialog.c" #line 142 "src/mn-mailbox-properties-dialog.gob" if(self->_priv->details_size_group) { g_object_unref ((gpointer) self->_priv->details_size_group); self->_priv->details_size_group = NULL; } #line 252 "mn-mailbox-properties-dialog.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::finalize" MNMailboxPropertiesDialog *self G_GNUC_UNUSED = MN_MAILBOX_PROPERTIES_DIALOG (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 119 "src/mn-mailbox-properties-dialog.gob" if(self->_priv->orig_mailbox_configuration) { mn_mailbox_configuration_free ((gpointer) self->_priv->orig_mailbox_configuration); self->_priv->orig_mailbox_configuration = NULL; } #line 267 "mn-mailbox-properties-dialog.c" } #undef __GOB_FUNCTION__ static void mn_mailbox_properties_dialog_init (MNMailboxPropertiesDialog * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_MAILBOX_PROPERTIES_DIALOG,MNMailboxPropertiesDialogPrivate); #line 142 "src/mn-mailbox-properties-dialog.gob" o->_priv->details_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); #line 278 "mn-mailbox-properties-dialog.c" } #undef __GOB_FUNCTION__ static void mn_mailbox_properties_dialog_class_init (MNMailboxPropertiesDialogClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNMailboxPropertiesDialogPrivate)); parent_class = g_type_class_ref (MN_TYPE_DIALOG); g_object_class->constructor = ___constructor; g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_pointer ("dialog_parent" /* name */, NULL /* nick */, NULL /* blurb */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_DIALOG_PARENT, param_spec); param_spec = g_param_spec_object ("mailbox" /* name */, NULL /* nick */, NULL /* blurb */, MN_TYPE_MAILBOX /* object_type */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)); g_object_class_install_property (g_object_class, PROP_MAILBOX, param_spec); } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::set_property" { MNMailboxPropertiesDialog *self G_GNUC_UNUSED; self = MN_MAILBOX_PROPERTIES_DIALOG (object); switch (property_id) { case PROP_DIALOG_PARENT: { #line 81 "src/mn-mailbox-properties-dialog.gob" self->_priv->dialog_parent = g_value_get_pointer (VAL); #line 336 "mn-mailbox-properties-dialog.c" } break; case PROP_MAILBOX: { #line 89 "src/mn-mailbox-properties-dialog.gob" GObject *obj; if (selfp->mailbox) { g_object_unref(selfp->mailbox); selfp->mailbox = NULL; } obj = g_value_dup_object(VAL); if (obj) { char *title; selfp->mailbox = MN_MAILBOX(obj); /* translators: header capitalization */ title = g_strdup_printf(_("%s Properties"), selfp->mailbox->runtime_name); gtk_window_set_title(GTK_WINDOW(self), title); g_free(title); } #line 364 "mn-mailbox-properties-dialog.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_property" { MNMailboxPropertiesDialog *self G_GNUC_UNUSED; self = MN_MAILBOX_PROPERTIES_DIALOG (object); switch (property_id) { case PROP_DIALOG_PARENT: { #line 81 "src/mn-mailbox-properties-dialog.gob" g_value_set_pointer (VAL, self->_priv->dialog_parent); #line 395 "mn-mailbox-properties-dialog.c" } break; case PROP_MAILBOX: { #line 112 "src/mn-mailbox-properties-dialog.gob" g_value_set_object(VAL, selfp->mailbox); #line 404 "mn-mailbox-properties-dialog.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 112 "src/mn-mailbox-properties-dialog.gob" MNMailbox * mn_mailbox_properties_dialog_get_mailbox (MNMailboxPropertiesDialog * self) { #line 425 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_mailbox" { #line 84 "src/mn-mailbox-properties-dialog.gob" MNMailbox* val; g_object_get (G_OBJECT (self), "mailbox", &val, NULL); return val; }} #line 431 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 89 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_set_mailbox (MNMailboxPropertiesDialog * self, MNMailbox * val) { #line 438 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::set_mailbox" { #line 84 "src/mn-mailbox-properties-dialog.gob" g_object_set (G_OBJECT (self), "mailbox", val, NULL); }} #line 444 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 144 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_constructor (MNMailboxPropertiesDialog * self) { #line 451 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::constructor" { #line 145 "src/mn-mailbox-properties-dialog.gob" GtkWidget *page; MNMailboxProperties *properties; mn_container_create_interface(GTK_CONTAINER(self), PKGDATADIR G_DIR_SEPARATOR_S "mailbox-properties-dialog.glade", "notebook", "mn_mailbox_properties_dialog_", "notebook", &self->notebook, "general_vbox", &self->general_vbox, "type_label", &selfp->type_label, "type_combo", &selfp->type_combo, "name_default_radio", &selfp->name_default_radio, "name_default_label", &selfp->name_default_label, "name_other_radio", &selfp->name_other_radio, "name_entry", &selfp->name_entry, "delay_vbox", &selfp->delay_vbox, "delay_default_radio", &selfp->delay_default_radio, "delay_default_label", &selfp->delay_default_label, "delay_other_radio", &selfp->delay_other_radio, "delay_scale", &selfp->delay_scale, NULL); gtk_window_set_resizable(GTK_WINDOW(self), FALSE); if (selfp->dialog_parent) gtk_window_set_transient_for(GTK_WINDOW(self), selfp->dialog_parent); page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self->notebook), 0); self_set_help_section(page, "mailbox-properties-general"); page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self->notebook), 1); self_set_help_section(page, "mailbox-properties-details"); self_setup_type_combo(self); mn_non_linear_range_setup_static(GTK_RANGE(selfp->delay_scale), delay_blocks, G_N_ELEMENTS(delay_blocks)); /* set a good general default value */ mn_non_linear_range_set_value(GTK_RANGE(selfp->delay_scale), MN_MINS(5)); gtk_size_group_add_widget(selfp->details_size_group, selfp->name_default_radio); gtk_size_group_add_widget(selfp->details_size_group, selfp->name_other_radio); /* setup the dialog depending on the mode (edit or add) */ gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_HELP, GTK_RESPONSE_HELP); if (selfp->mailbox) { selfp->apply_button = gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_APPLY, GTK_RESPONSE_APPLY); gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); selfp->accept_button = gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_OK, GTK_RESPONSE_OK); properties = self_get_properties_by_type(self, MN_MAILBOX_GET_CLASS(selfp->mailbox)->type); } else { gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); selfp->accept_button = gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_ADD, GTK_RESPONSE_ACCEPT); if (! selected_type) selected_type = MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES; properties = self_get_properties_by_g_type(self, selected_type); /* translators: header capitalization */ gtk_window_set_title(GTK_WINDOW(self), _("Add a Mailbox")); } self_set_active_properties(self, properties); if (selfp->mailbox) { selfp->orig_mailbox_configuration = mn_mailbox_get_configuration(selfp->mailbox); mn_mailbox_properties_set_mailbox(properties, selfp->mailbox); if (selfp->mailbox->name) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->name_other_radio), TRUE); gtk_entry_set_text(GTK_ENTRY(selfp->name_entry), selfp->mailbox->name); } if (selfp->mailbox->check_delay != -1) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->delay_other_radio), TRUE); mn_non_linear_range_set_value(GTK_RANGE(selfp->delay_scale), selfp->mailbox->check_delay); } } g_object_unref(properties); gtk_widget_grab_default(selfp->accept_button); /* * HIG chapter 3: * "When opening a dialog, provide initial keyboard focus to the * component that you expect users to operate first. This focus is * especially important for users who must use a keyboard to * navigate your application." */ gtk_widget_grab_focus(selfp->type_combo); self_update_name_sensitivity(self); self_update_delay_sensitivity(self); g_signal_connect(self, "response", G_CALLBACK(self_response_h), NULL); }} #line 562 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 253 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_setup_type_combo (MNMailboxPropertiesDialog * self) { #line 569 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::setup_type_combo" #line 253 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 253 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 575 "mn-mailbox-properties-dialog.c" { #line 255 "src/mn-mailbox-properties-dialog.gob" GtkCellRenderer *renderer; selfp->store = gtk_list_store_new(N_COLUMNS, MN_TYPE_MAILBOX_PROPERTIES, G_TYPE_STRING, G_TYPE_STRING); self_add_type(self, MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES); #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED self_add_type(self, MN_TYPE_SYSTEM_VFS_MAILBOX_PROPERTIES); #endif #if WITH_POP3 self_add_type(self, MN_TYPE_POP3_MAILBOX_PROPERTIES); #endif #if WITH_IMAP self_add_type(self, MN_TYPE_IMAP_MAILBOX_PROPERTIES); #endif #if WITH_GMAIL self_add_type(self, MN_TYPE_GMAIL_MAILBOX_PROPERTIES); #endif #if WITH_YAHOO self_add_type(self, MN_TYPE_YAHOO_MAILBOX_PROPERTIES); #endif #if WITH_HOTMAIL self_add_type(self, MN_TYPE_HOTMAIL_MAILBOX_PROPERTIES); #endif #if WITH_EVOLUTION self_add_type(self, MN_TYPE_EVOLUTION_MAILBOX_PROPERTIES); #endif gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(selfp->store), COLUMN_LABEL, GTK_SORT_ASCENDING); renderer = gtk_cell_renderer_pixbuf_new(); g_object_set(renderer, "stock-size", GTK_ICON_SIZE_MENU, NULL); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->type_combo), renderer, FALSE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(selfp->type_combo), renderer, "stock-id", COLUMN_STOCK_ID, NULL); renderer = gtk_cell_renderer_text_new(); g_object_set(renderer, "xpad", 6, NULL); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->type_combo), renderer, TRUE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(selfp->type_combo), renderer, "text", COLUMN_LABEL, NULL); gtk_combo_box_set_model(GTK_COMBO_BOX(selfp->type_combo), GTK_TREE_MODEL(selfp->store)); }} #line 627 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 305 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_response_h (GtkDialog * dialog, int response, gpointer user_data) { #line 634 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::response_h" { #line 307 "src/mn-mailbox-properties-dialog.gob" Self *self = SELF(dialog); if (response == GTK_RESPONSE_HELP) { int page_number; GtkWidget *page; const char *section; page_number = gtk_notebook_get_current_page(GTK_NOTEBOOK(self->notebook)); page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self->notebook), page_number); g_assert(page != NULL); section = g_object_get_data(G_OBJECT(page), HELP_SECTION); g_assert(section != NULL); mn_show_help(GTK_WINDOW(self), section); } /* other responses are handled by the client */ }} #line 660 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 330 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog * self, GType type) { #line 667 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::add_type" #line 330 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 330 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 330 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (type != 0); #line 675 "mn-mailbox-properties-dialog.c" { #line 332 "src/mn-mailbox-properties-dialog.gob" MNMailboxProperties *properties; MNMailboxPropertiesClass *p_class; GtkTreeIter iter; GSList *l; properties = g_object_new(type, MN_MAILBOX_PROPERTIES_PROP_DIALOG(GTK_WIDGET(self)), NULL); p_class = MN_MAILBOX_PROPERTIES_GET_CLASS(properties); gtk_list_store_append(selfp->store, &iter); gtk_list_store_set(selfp->store, &iter, COLUMN_PROPERTIES, properties, COLUMN_STOCK_ID, p_class->stock_id, COLUMN_LABEL, p_class->combo_label, -1); g_object_connect(properties, "swapped-signal::notify::complete", self_update_complete, self, "swapped-signal::notify::default-name", self_update_default_name, self, "swapped-signal::notify::default-check-delay", self_update_default_check_delay, self, NULL); MN_LIST_FOREACH(l, properties->entries) g_signal_connect_swapped(l->data, "activate", G_CALLBACK(self_entry_activate_h), self); g_object_unref(properties); /* now it belongs to the store */ }} #line 706 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 361 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_set_active_properties (MNMailboxPropertiesDialog * self, MNMailboxProperties * properties) { #line 713 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::set_active_properties" #line 361 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 361 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 361 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (properties != NULL); #line 361 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (properties)); #line 723 "mn-mailbox-properties-dialog.c" { #line 364 "src/mn-mailbox-properties-dialog.gob" gboolean valid; GtkTreeIter iter; MN_TREE_MODEL_FOREACH(valid, &iter, GTK_TREE_MODEL(selfp->store)) { MNMailboxProperties *these_properties; gtk_tree_model_get(GTK_TREE_MODEL(selfp->store), &iter, COLUMN_PROPERTIES, &these_properties, -1); g_object_unref(these_properties); if (these_properties == properties) { gtk_combo_box_set_active_iter(GTK_COMBO_BOX(selfp->type_combo), &iter); break; } } }} #line 744 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 383 "src/mn-mailbox-properties-dialog.gob" static MNMailboxProperties * mn_mailbox_properties_dialog_get_active_properties (MNMailboxPropertiesDialog * self) { #line 751 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_active_properties" #line 383 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (self != NULL, (MNMailboxProperties * )0); #line 383 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailboxProperties * )0); #line 757 "mn-mailbox-properties-dialog.c" { #line 385 "src/mn-mailbox-properties-dialog.gob" GtkTreeIter iter; MNMailboxProperties *properties = NULL; if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(selfp->type_combo), &iter)) gtk_tree_model_get(GTK_TREE_MODEL(selfp->store), &iter, COLUMN_PROPERTIES, &properties, -1); return properties; }} #line 769 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 395 "src/mn-mailbox-properties-dialog.gob" static MNMailboxProperties * mn_mailbox_properties_dialog_get_properties_by_type (MNMailboxPropertiesDialog * self, const char * type) { #line 776 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_properties_by_type" #line 395 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (self != NULL, (MNMailboxProperties * )0); #line 395 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailboxProperties * )0); #line 395 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (type != NULL, (MNMailboxProperties * )0); #line 784 "mn-mailbox-properties-dialog.c" { #line 397 "src/mn-mailbox-properties-dialog.gob" gboolean valid; GtkTreeIter iter; MN_TREE_MODEL_FOREACH(valid, &iter, GTK_TREE_MODEL(selfp->store)) { MNMailboxProperties *properties; MNMailboxPropertiesClass *class; gtk_tree_model_get(GTK_TREE_MODEL(selfp->store), &iter, COLUMN_PROPERTIES, &properties, -1); class = MN_MAILBOX_PROPERTIES_GET_CLASS(properties); if (class->type && ! strcmp(class->type, type)) return properties; g_object_unref(properties); } return NULL; }} #line 808 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 419 "src/mn-mailbox-properties-dialog.gob" static MNMailboxProperties * mn_mailbox_properties_dialog_get_properties_by_g_type (MNMailboxPropertiesDialog * self, GType type) { #line 815 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_properties_by_g_type" #line 419 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (self != NULL, (MNMailboxProperties * )0); #line 419 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailboxProperties * )0); #line 419 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (type != 0, (MNMailboxProperties * )0); #line 823 "mn-mailbox-properties-dialog.c" { #line 421 "src/mn-mailbox-properties-dialog.gob" gboolean valid; GtkTreeIter iter; MN_TREE_MODEL_FOREACH(valid, &iter, GTK_TREE_MODEL(selfp->store)) { MNMailboxProperties *properties; gtk_tree_model_get(GTK_TREE_MODEL(selfp->store), &iter, COLUMN_PROPERTIES, &properties, -1); if (G_TYPE_CHECK_INSTANCE_TYPE(properties, type)) return properties; g_object_unref(properties); } return NULL; }} #line 844 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 440 "src/mn-mailbox-properties-dialog.gob" MNMailbox * mn_mailbox_properties_dialog_get_current_mailbox (MNMailboxPropertiesDialog * self) { #line 851 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_current_mailbox" #line 440 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (self != NULL, (MNMailbox * )0); #line 440 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailbox * )0); #line 857 "mn-mailbox-properties-dialog.c" { #line 442 "src/mn-mailbox-properties-dialog.gob" MNMailboxProperties *properties; MNMailbox *mailbox; properties = self_get_active_properties(self); mailbox = mn_mailbox_properties_get_mailbox(properties); g_object_unref(properties); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->name_other_radio))) g_object_set(G_OBJECT(mailbox), MN_MAILBOX_PROP_NAME((char *) gtk_entry_get_text(GTK_ENTRY(selfp->name_entry))), NULL); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->delay_other_radio))) g_object_set(G_OBJECT(mailbox), MN_MAILBOX_PROP_CHECK_DELAY(mn_non_linear_range_get_value(GTK_RANGE(selfp->delay_scale))), NULL); return mailbox; }} #line 876 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 459 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_apply (MNMailboxPropertiesDialog * self) { #line 883 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::apply" #line 459 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 459 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 889 "mn-mailbox-properties-dialog.c" { #line 461 "src/mn-mailbox-properties-dialog.gob" MNMailbox *new_mailbox; selfp->apply_used = TRUE; new_mailbox = self_get_current_mailbox(self); g_assert(MN_IS_MAILBOX(new_mailbox)); mn_mailbox_seal(new_mailbox); mn_mailboxes_queue_remove(mn_shell->mailboxes, selfp->mailbox); mn_mailboxes_queue_add(mn_shell->mailboxes, new_mailbox); self_set_mailbox(self, new_mailbox); g_object_unref(new_mailbox); }} #line 908 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 478 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_cancel (MNMailboxPropertiesDialog * self) { #line 915 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::cancel" #line 478 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 478 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 921 "mn-mailbox-properties-dialog.c" { #line 480 "src/mn-mailbox-properties-dialog.gob" MNMailbox *orig_mailbox; if (! selfp->apply_used) return; orig_mailbox = mn_mailbox_new_from_configuration(selfp->orig_mailbox_configuration); mn_mailbox_seal(orig_mailbox); mn_mailboxes_queue_remove(mn_shell->mailboxes, selfp->mailbox); mn_mailboxes_queue_add(mn_shell->mailboxes, orig_mailbox); g_object_unref(orig_mailbox); }} #line 939 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 496 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_complete (MNMailboxPropertiesDialog * self) { #line 946 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_complete" #line 496 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 496 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 952 "mn-mailbox-properties-dialog.c" { #line 498 "src/mn-mailbox-properties-dialog.gob" MNMailboxProperties *properties; properties = self_get_active_properties(self); if (properties) { gboolean complete; g_object_get(G_OBJECT(properties), MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(&complete), NULL); g_object_unref(properties); if (selfp->apply_button) gtk_widget_set_sensitive(selfp->apply_button, complete); gtk_widget_set_sensitive(selfp->accept_button, complete); } }} #line 971 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 515 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_name_sensitivity (MNMailboxPropertiesDialog * self) { #line 978 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_name_sensitivity" #line 515 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 515 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 984 "mn-mailbox-properties-dialog.c" { #line 517 "src/mn-mailbox-properties-dialog.gob" gtk_widget_set_sensitive(selfp->name_entry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->name_other_radio))); }} #line 990 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 521 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_delay_sensitivity (MNMailboxPropertiesDialog * self) { #line 997 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_delay_sensitivity" #line 521 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 521 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 1003 "mn-mailbox-properties-dialog.c" { #line 523 "src/mn-mailbox-properties-dialog.gob" gtk_widget_set_sensitive(selfp->delay_scale, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->delay_other_radio))); }} #line 1009 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 527 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_delay_visibility (MNMailboxPropertiesDialog * self) { #line 1016 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_delay_visibility" #line 527 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 527 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 1022 "mn-mailbox-properties-dialog.c" { #line 529 "src/mn-mailbox-properties-dialog.gob" MNMailboxProperties *properties; gboolean visible = TRUE; properties = self_get_active_properties(self); if (properties) { visible = MN_MAILBOX_PROPERTIES_GET_CLASS(properties)->enable_check_delay; g_object_unref(properties); } if (visible) { if (! g_slist_find(gtk_size_group_get_widgets(selfp->details_size_group), selfp->delay_default_radio)) gtk_size_group_add_widget(selfp->details_size_group, selfp->delay_default_radio); if (! g_slist_find(gtk_size_group_get_widgets(selfp->details_size_group), selfp->delay_other_radio)) gtk_size_group_add_widget(selfp->details_size_group, selfp->delay_other_radio); gtk_widget_show(selfp->delay_vbox); } else { if (g_slist_find(gtk_size_group_get_widgets(selfp->details_size_group), selfp->delay_default_radio)) gtk_size_group_remove_widget(selfp->details_size_group, selfp->delay_default_radio); if (g_slist_find(gtk_size_group_get_widgets(selfp->details_size_group), selfp->delay_other_radio)) gtk_size_group_remove_widget(selfp->details_size_group, selfp->delay_other_radio); gtk_widget_hide(selfp->delay_vbox); } }} #line 1055 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 560 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_default_name (MNMailboxPropertiesDialog * self) { #line 1062 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_default_name" #line 560 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 560 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 1068 "mn-mailbox-properties-dialog.c" { #line 562 "src/mn-mailbox-properties-dialog.gob" MNMailboxProperties *properties; char *name = NULL; const char *radio_label; properties = self_get_active_properties(self); if (properties) { gboolean complete; g_object_get(G_OBJECT(properties), MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(&complete), NULL); if (complete) g_object_get(G_OBJECT(properties), MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(&name), NULL); g_object_unref(properties); } if (name) radio_label = _("_Default:"); else radio_label = _("_Default"); gtk_button_set_label(GTK_BUTTON(selfp->name_default_radio), radio_label); gtk_label_set_text(GTK_LABEL(selfp->name_default_label), name); g_free(name); }} #line 1103 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 595 "src/mn-mailbox-properties-dialog.gob" static void mn_mailbox_properties_dialog_update_default_check_delay (MNMailboxPropertiesDialog * self) { #line 1110 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_default_check_delay" #line 595 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 595 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 1116 "mn-mailbox-properties-dialog.c" { #line 597 "src/mn-mailbox-properties-dialog.gob" MNMailboxProperties *properties; int delay = -1; const char *radio_label; char *delay_str = NULL; properties = self_get_active_properties(self); if (properties) { g_object_get(G_OBJECT(properties), MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(&delay), NULL); g_object_unref(properties); } if (delay != -1) { radio_label = _("D_efault:"); delay_str = mn_format_seconds(delay); } else radio_label = _("D_efault"); gtk_button_set_label(GTK_BUTTON(selfp->delay_default_radio), radio_label); gtk_label_set_text(GTK_LABEL(selfp->delay_default_label), delay_str); g_free(delay_str); }} #line 1147 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 626 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_set_help_section (GtkWidget * page, const char * section) { #line 1154 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::set_help_section" #line 626 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (page != NULL); #line 626 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (GTK_IS_WIDGET (page)); #line 626 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (section != NULL); #line 1162 "mn-mailbox-properties-dialog.c" { #line 629 "src/mn-mailbox-properties-dialog.gob" g_object_set_data_full(G_OBJECT(page), HELP_SECTION, g_strdup(section), g_free); }} #line 1168 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 633 "src/mn-mailbox-properties-dialog.gob" GtkWidget * mn_mailbox_properties_dialog_new (GtkWindow * parent, MNMailbox * mailbox) { #line 1175 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::new" { #line 635 "src/mn-mailbox-properties-dialog.gob" return GTK_WIDGET(GET_NEW_VARG(MN_MAILBOX_PROPERTIES_DIALOG_PROP_DIALOG_PARENT(parent), MN_MAILBOX_PROPERTIES_DIALOG_PROP_MAILBOX(mailbox), NULL)); }} #line 1184 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 643 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_type_changed_h (MNMailboxPropertiesDialog * self, GtkComboBox * combobox) { #line 1191 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::type_changed_h" #line 643 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 643 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 1197 "mn-mailbox-properties-dialog.c" { #line 645 "src/mn-mailbox-properties-dialog.gob" if (selfp->active_properties) { mn_mailbox_properties_deactivate(selfp->active_properties); gtk_size_group_remove_widget(selfp->active_properties->label_size_group, selfp->type_label); g_object_unref(selfp->active_properties); } selfp->active_properties = self_get_active_properties(self); mn_mailbox_properties_activate(selfp->active_properties); gtk_size_group_add_widget(selfp->active_properties->label_size_group, selfp->type_label); if (! selfp->mailbox) /* mode is add */ selected_type = G_OBJECT_TYPE(selfp->active_properties); self_update_complete(self); self_update_delay_visibility(self); self_update_default_name(self); self_update_default_check_delay(self); }} #line 1220 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 666 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_name_toggled_h (MNMailboxPropertiesDialog * self, GtkToggleButton * button) { #line 1227 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::name_toggled_h" #line 666 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 666 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 1233 "mn-mailbox-properties-dialog.c" { #line 668 "src/mn-mailbox-properties-dialog.gob" self_update_name_sensitivity(self); }} #line 1239 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 672 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_delay_toggled_h (MNMailboxPropertiesDialog * self, GtkToggleButton * button) { #line 1246 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::delay_toggled_h" #line 672 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 672 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 1252 "mn-mailbox-properties-dialog.c" { #line 674 "src/mn-mailbox-properties-dialog.gob" self_update_delay_sensitivity(self); }} #line 1258 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 678 "src/mn-mailbox-properties-dialog.gob" char * mn_mailbox_properties_dialog_delay_format_value_h (MNMailboxPropertiesDialog * self, double arg, GtkScale * scale) { #line 1265 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::delay_format_value_h" #line 678 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (self != NULL, (char * )0); #line 678 "src/mn-mailbox-properties-dialog.gob" g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (char * )0); #line 1271 "mn-mailbox-properties-dialog.c" { #line 680 "src/mn-mailbox-properties-dialog.gob" return mn_format_seconds(mn_non_linear_range_get_value(GTK_RANGE(scale))); }} #line 1277 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ #line 684 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_entry_activate_h (MNMailboxPropertiesDialog * self, GtkEntry * entry) { #line 1284 "mn-mailbox-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::entry_activate_h" #line 684 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (self != NULL); #line 684 "src/mn-mailbox-properties-dialog.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self)); #line 1290 "mn-mailbox-properties-dialog.c" { #line 686 "src/mn-mailbox-properties-dialog.gob" if (GTK_WIDGET_IS_SENSITIVE(GTK_WINDOW(self)->default_widget)) gtk_window_activate_default(GTK_WINDOW(self)); else { MNMailboxProperties *properties; GtkWidget *next = NULL; GSList *elem; properties = self_get_active_properties(self); g_assert(properties != NULL); elem = g_slist_find(properties->entries, entry); g_assert(elem != NULL); do { elem = elem->next; if (! elem) elem = properties->entries; if (elem->data == entry) break; if (GTK_WIDGET_MAPPED(elem->data) && GTK_WIDGET_VISIBLE(elem->data) && GTK_WIDGET_SENSITIVE(elem->data)) next = elem->data; } while (! next); if (next) gtk_widget_grab_focus(next); g_object_unref(properties); } }} #line 1330 "mn-mailbox-properties-dialog.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-webmail-mailbox-private.h0000644000175000001440000000251411015312647025045 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_WEBMAIL_MAILBOX_PRIVATE_H__ #define __MN_WEBMAIL_MAILBOX_PRIVATE_H__ #include "mn-webmail-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 65 "src/mn-webmail-mailbox.gob" void mn_webmail_mailbox_parse_username (MNWebmailMailbox * self, char ** username, char ** domain); #line 15 "mn-webmail-mailbox-private.h" #line 101 "src/mn-webmail-mailbox.gob" char * mn_webmail_mailbox_create_spool_file (GError ** err); #line 18 "mn-webmail-mailbox-private.h" #line 116 "src/mn-webmail-mailbox.gob" char * mn_webmail_mailbox_write_temporary_file (const char * contents, const char * encoding, GError ** err); #line 21 "mn-webmail-mailbox-private.h" #line 189 "src/mn-webmail-mailbox.gob" void mn_webmail_mailbox_print_config (MNWebmailMailbox * self, const char * config); #line 24 "mn-webmail-mailbox-private.h" #line 208 "src/mn-webmail-mailbox.gob" gboolean mn_webmail_mailbox_run_helper (MNWebmailMailbox * self, const char * name, const char * command, GError ** err); #line 27 "mn-webmail-mailbox-private.h" #line 265 "src/mn-webmail-mailbox.gob" gboolean mn_webmail_mailbox_read_spool_file (MNWebmailMailbox * self, const char * spool_file, GError ** err); #line 30 "mn-webmail-mailbox-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-gmail-mailbox-properties-private.h0000644000175000001440000000115411015312646026706 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_GMAIL_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_GMAIL_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-gmail-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNGmailMailboxPropertiesPrivate { #line 39 "src/mn-gmail-mailbox-properties.gob" GtkWidget * label_check; #line 40 "src/mn-gmail-mailbox-properties.gob" GtkWidget * label_entry; #line 46 "src/mn-gmail-mailbox-properties.gob" char * location; #line 20 "mn-gmail-mailbox-properties-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-reentrant-mailbox-private.h0000644000175000001440000000156311015312647025432 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_REENTRANT_MAILBOX_PRIVATE_H__ #define __MN_REENTRANT_MAILBOX_PRIVATE_H__ #include "mn-reentrant-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNReentrantMailboxPrivate { #line 38 "src/mn-reentrant-mailbox.gob" unsigned int queue_check_id; #line 40 "src/mn-reentrant-mailbox.gob" int check_id; #line 41 "src/mn-reentrant-mailbox.gob" int check_unique_id; #line 20 "mn-reentrant-mailbox-private.h" }; #line 69 "src/mn-reentrant-mailbox.gob" void mn_reentrant_mailbox_queue_check (MNReentrantMailbox * self); #line 24 "mn-reentrant-mailbox-private.h" #line 131 "src/mn-reentrant-mailbox.gob" gboolean mn_reentrant_mailbox_check_aborted (MNReentrantMailbox * self, int check_id); #line 27 "mn-reentrant-mailbox-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-vfs-mailbox-backend.gob.stamp0000644000175000001440000000000011015312647025567 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-server.gob.stamp0000644000175000001440000000000011015312645023257 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-yahoo-mailbox.c0000644000175000001440000003516011015312646023071 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include "mn-yahoo-mailbox.h" #include "mn-yahoo-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-yahoo-mailbox.gob" #include #include #include #include #include #include #include #include "mn-webmail-mailbox-private.h" #include "mn-stock.h" #include "mn-conf.h" #include "mn-util.h" #line 38 "mn-yahoo-mailbox.c" /* self casting macros */ #define SELF(x) MN_YAHOO_MAILBOX(x) #define SELF_CONST(x) MN_YAHOO_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_YAHOO_MAILBOX(x) #define TYPE_SELF MN_TYPE_YAHOO_MAILBOX #define SELF_CLASS(x) MN_YAHOO_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_YAHOO_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNYahooMailbox Self; typedef MNYahooMailboxClass SelfClass; /* here are local prototypes */ #line 40 "src/mn-yahoo-mailbox.gob" static void mn_yahoo_mailbox_class_init (MNYahooMailboxClass * class); #line 55 "mn-yahoo-mailbox.c" #line 50 "src/mn-yahoo-mailbox.gob" static void mn_yahoo_mailbox_init (MNYahooMailbox * self); #line 58 "mn-yahoo-mailbox.c" #line 56 "src/mn-yahoo-mailbox.gob" static char * mn_yahoo_mailbox_create_cookies_file (GError ** err); #line 61 "mn-yahoo-mailbox.c" #line 95 "src/mn-yahoo-mailbox.gob" static gboolean mn_yahoo_mailbox_can_convert (const char * str, const char * encoding); #line 64 "mn-yahoo-mailbox.c" #line 109 "src/mn-yahoo-mailbox.gob" static const char * mn_yahoo_mailbox_get_config_file_encoding (const char * folder); #line 67 "mn-yahoo-mailbox.c" #line 123 "src/mn-yahoo-mailbox.gob" static char * mn_yahoo_mailbox_create_config_file (MNYahooMailbox * self, const char * spool_file, const char * cookies_file, GError ** err); #line 70 "mn-yahoo-mailbox.c" #line 193 "src/mn-yahoo-mailbox.gob" static char * ___7_mn_yahoo_mailbox_get_error_message (MNWebmailMailbox * mailbox, const char * helper_stdout, const char * helper_stderr, gboolean * is_auth_failure); #line 73 "mn-yahoo-mailbox.c" #line 235 "src/mn-yahoo-mailbox.gob" static gboolean mn_yahoo_mailbox_run_fetchyahoo (MNYahooMailbox * self, const char * config_file, GError ** err); #line 76 "mn-yahoo-mailbox.c" #line 248 "src/mn-yahoo-mailbox.gob" static gboolean ___9_mn_yahoo_mailbox_webmail_check (MNWebmailMailbox * mailbox, GError ** err); #line 79 "mn-yahoo-mailbox.c" /* pointer to the class of our parent */ static MNWebmailMailboxClass *parent_class = NULL; /* Short form macros */ #define self_create_cookies_file mn_yahoo_mailbox_create_cookies_file #define self_can_convert mn_yahoo_mailbox_can_convert #define self_get_config_file_encoding mn_yahoo_mailbox_get_config_file_encoding #define self_create_config_file mn_yahoo_mailbox_create_config_file #define self_run_fetchyahoo mn_yahoo_mailbox_run_fetchyahoo GType mn_yahoo_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNYahooMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_yahoo_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNYahooMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_yahoo_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_WEBMAIL_MAILBOX, "MNYahooMailbox", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNYahooMailbox *)g_object_new(mn_yahoo_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNYahooMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNYahooMailbox * GET_NEW_VARG (const char *first, ...) { MNYahooMailbox *ret; va_list ap; va_start (ap, first); ret = (MNYahooMailbox *)g_object_new_valist (mn_yahoo_mailbox_get_type (), first, ap); va_end (ap); return ret; } #line 40 "src/mn-yahoo-mailbox.gob" static void mn_yahoo_mailbox_class_init (MNYahooMailboxClass * class G_GNUC_UNUSED) { #line 136 "mn-yahoo-mailbox.c" #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox::class_init" MNWebmailMailboxClass *mn_webmail_mailbox_class = (MNWebmailMailboxClass *)class; parent_class = g_type_class_ref (MN_TYPE_WEBMAIL_MAILBOX); #line 193 "src/mn-yahoo-mailbox.gob" mn_webmail_mailbox_class->get_error_message = ___7_mn_yahoo_mailbox_get_error_message; #line 248 "src/mn-yahoo-mailbox.gob" mn_webmail_mailbox_class->webmail_check = ___9_mn_yahoo_mailbox_webmail_check; #line 146 "mn-yahoo-mailbox.c" { #line 41 "src/mn-yahoo-mailbox.gob" MN_MAILBOX_CLASS(class)->type = "yahoo"; /* 5 minutes is a good default */ MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5; MN_WEBMAIL_MAILBOX_CLASS(class)->default_domain = "yahoo.com"; #line 157 "mn-yahoo-mailbox.c" } } #undef __GOB_FUNCTION__ #line 50 "src/mn-yahoo-mailbox.gob" static void mn_yahoo_mailbox_init (MNYahooMailbox * self G_GNUC_UNUSED) { #line 165 "mn-yahoo-mailbox.c" #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox::init" { #line 51 "src/mn-yahoo-mailbox.gob" mn_mailbox_set_format(MN_MAILBOX(self), "Yahoo! Mail"); mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_YAHOO); #line 173 "mn-yahoo-mailbox.c" } } #undef __GOB_FUNCTION__ #line 56 "src/mn-yahoo-mailbox.gob" static char * mn_yahoo_mailbox_create_cookies_file (GError ** err) { #line 184 "mn-yahoo-mailbox.c" #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox::create_cookies_file" { #line 58 "src/mn-yahoo-mailbox.gob" char *filename; /* * If the file already exists, ensure it has the proper * permissions. Otherwise, create it with the proper permissions. */ filename = g_build_filename(mn_conf_dot_dir, "yahoo-cookies", NULL); if (g_file_test(filename, G_FILE_TEST_EXISTS)) { if (chmod(filename, S_IRUSR | S_IWUSR) < 0) { g_set_error(err, 0, 0, _("unable to change the permissions of %s: %s"), filename, g_strerror(errno)); goto error; } } else { int fd; fd = open(filename, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); if (fd < 0) { g_set_error(err, 0, 0, _("unable to create %s: %s"), filename, g_strerror(errno)); goto error; } close(fd); } return filename; error: g_free(filename); return NULL; }} #line 224 "mn-yahoo-mailbox.c" #undef __GOB_FUNCTION__ #line 95 "src/mn-yahoo-mailbox.gob" static gboolean mn_yahoo_mailbox_can_convert (const char * str, const char * encoding) { #line 231 "mn-yahoo-mailbox.c" #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox::can_convert" #line 95 "src/mn-yahoo-mailbox.gob" g_return_val_if_fail (str != NULL, (gboolean )0); #line 95 "src/mn-yahoo-mailbox.gob" g_return_val_if_fail (encoding != NULL, (gboolean )0); #line 237 "mn-yahoo-mailbox.c" { #line 98 "src/mn-yahoo-mailbox.gob" char *converted; gboolean can; converted = g_convert(str, -1, encoding, "UTF-8", NULL, NULL, NULL); can = converted != NULL; g_free(converted); return can; }} #line 250 "mn-yahoo-mailbox.c" #undef __GOB_FUNCTION__ #line 109 "src/mn-yahoo-mailbox.gob" static const char * mn_yahoo_mailbox_get_config_file_encoding (const char * folder) { #line 257 "mn-yahoo-mailbox.c" #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox::get_config_file_encoding" #line 109 "src/mn-yahoo-mailbox.gob" g_return_val_if_fail (folder != NULL, (const char * )0); #line 261 "mn-yahoo-mailbox.c" { #line 111 "src/mn-yahoo-mailbox.gob" /* * fetchyahoo does not seem to deal with the folder name encoding * at all, and Yahoo apparently uses ISO8859-1 when possible, and * UTF-8 otherwise. */ if (self_can_convert(folder, "ISO8859-1")) return "ISO8859-1"; else return "UTF-8"; }} #line 275 "mn-yahoo-mailbox.c" #undef __GOB_FUNCTION__ #line 123 "src/mn-yahoo-mailbox.gob" static char * mn_yahoo_mailbox_create_config_file (MNYahooMailbox * self, const char * spool_file, const char * cookies_file, GError ** err) { #line 282 "mn-yahoo-mailbox.c" #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox::create_config_file" #line 123 "src/mn-yahoo-mailbox.gob" g_return_val_if_fail (self != NULL, (char * )0); #line 123 "src/mn-yahoo-mailbox.gob" g_return_val_if_fail (MN_IS_YAHOO_MAILBOX (self), (char * )0); #line 123 "src/mn-yahoo-mailbox.gob" g_return_val_if_fail (spool_file != NULL, (char * )0); #line 123 "src/mn-yahoo-mailbox.gob" g_return_val_if_fail (cookies_file != NULL, (char * )0); #line 292 "mn-yahoo-mailbox.c" { #line 128 "src/mn-yahoo-mailbox.gob" GString *contents; char *filename; contents = g_string_new(NULL); g_string_append_printf(contents, "username = %s\n" "password = %s\n" "folder = %s\n" "spool = %s\n" "cookie-file = %s\n" "new-messages-only = 1\n" "no-delete = 1\n" "leave-unread = 1\n", MN_AUTHENTICATED_MAILBOX(self)->username, MN_AUTHENTICATED_MAILBOX(self)->runtime_password, MN_WEBMAIL_MAILBOX(self)->folder, spool_file, cookies_file); if (mn_conf_get_bool(MN_CONF_SYSTEM_HTTP_PROXY_USE_HTTP_PROXY)) { char *host; host = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_HOST); if (host && *host) { g_string_append_printf(contents, "use-proxy = 1\n" "proxy-host = %s\n" "proxy-port = %i\n", host, mn_conf_get_int(MN_CONF_SYSTEM_HTTP_PROXY_PORT)); if (mn_conf_get_bool(MN_CONF_SYSTEM_HTTP_PROXY_USE_AUTHENTICATION)) { char *user; char *password; user = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_AUTHENTICATION_USER); password = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_AUTHENTICATION_PASSWORD); if (user && *user && password && *password) g_string_append_printf(contents, "proxy-username = %s\n" "proxy-password = %s\n", user, password); g_free(user); g_free(password); } } g_free(host); } mn_webmail_mailbox_print_config(MN_WEBMAIL_MAILBOX(self), contents->str); filename = mn_webmail_mailbox_write_temporary_file(contents->str, self_get_config_file_encoding(MN_WEBMAIL_MAILBOX(self)->folder), err); g_string_free(contents, TRUE); return filename; }} #line 359 "mn-yahoo-mailbox.c" #undef __GOB_FUNCTION__ #line 193 "src/mn-yahoo-mailbox.gob" static char * ___7_mn_yahoo_mailbox_get_error_message (MNWebmailMailbox * mailbox G_GNUC_UNUSED, const char * helper_stdout, const char * helper_stderr, gboolean * is_auth_failure) #line 365 "mn-yahoo-mailbox.c" #define PARENT_HANDLER(___mailbox,___helper_stdout,___helper_stderr,___is_auth_failure) \ ((MN_WEBMAIL_MAILBOX_CLASS(parent_class)->get_error_message)? \ (* MN_WEBMAIL_MAILBOX_CLASS(parent_class)->get_error_message)(___mailbox,___helper_stdout,___helper_stderr,___is_auth_failure): \ ((char * )0)) { #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox::get_error_message" { #line 198 "src/mn-yahoo-mailbox.gob" if (helper_stderr) { char **lines; int i; char *message = NULL; lines = g_strsplit(helper_stderr, "\n", 0); for (i = 0; lines[i]; i++) if (g_str_has_prefix(lines[i], "Failed: ")) { char *escaped; if (mn_ascii_strcasestr(lines[i], "wrong password") || mn_ascii_strcasestr(lines[i], "invalid ID") || (mn_ascii_strcasestr(lines[i], "Yahoo user") && mn_ascii_strcasestr(lines[i], "does not exist"))) *is_auth_failure = TRUE; escaped = mn_utf8_escape(lines[i] + 8); message = g_strdup_printf(_("\"%s\""), escaped); g_free(escaped); break; } g_strfreev(lines); if (message) return message; if (mn_ascii_strcasestr(helper_stderr, "an image of text")) return g_strdup(_("delay between mail checks too small")); } return NULL; }} #line 410 "mn-yahoo-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 235 "src/mn-yahoo-mailbox.gob" static gboolean mn_yahoo_mailbox_run_fetchyahoo (MNYahooMailbox * self, const char * config_file, GError ** err) { #line 418 "mn-yahoo-mailbox.c" #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox::run_fetchyahoo" #line 235 "src/mn-yahoo-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 235 "src/mn-yahoo-mailbox.gob" g_return_val_if_fail (MN_IS_YAHOO_MAILBOX (self), (gboolean )0); #line 235 "src/mn-yahoo-mailbox.gob" g_return_val_if_fail (config_file != NULL, (gboolean )0); #line 426 "mn-yahoo-mailbox.c" { #line 237 "src/mn-yahoo-mailbox.gob" char *command; gboolean status; command = g_strdup_printf("fetchyahoo --configfile=%s", config_file); status = mn_webmail_mailbox_run_helper(MN_WEBMAIL_MAILBOX(self), "fetchyahoo", command, err); g_free(command); return status; }} #line 439 "mn-yahoo-mailbox.c" #undef __GOB_FUNCTION__ #line 248 "src/mn-yahoo-mailbox.gob" static gboolean ___9_mn_yahoo_mailbox_webmail_check (MNWebmailMailbox * mailbox G_GNUC_UNUSED, GError ** err) #line 445 "mn-yahoo-mailbox.c" #define PARENT_HANDLER(___mailbox,___err) \ ((MN_WEBMAIL_MAILBOX_CLASS(parent_class)->webmail_check)? \ (* MN_WEBMAIL_MAILBOX_CLASS(parent_class)->webmail_check)(___mailbox,___err): \ ((gboolean )0)) { #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox::webmail_check" { #line 250 "src/mn-yahoo-mailbox.gob" Self *self = SELF(mailbox); char *spool_file; char *cookies_file; char *config_file = NULL; gboolean status = FALSE; /* * We create an empty spool file beforehand to make sure it is not * world-readable. */ spool_file = mn_webmail_mailbox_create_spool_file(err); if (! spool_file) return FALSE; /* * Likewise, we create an empty cookies file beforehand to make * sure it is not world-readable. */ cookies_file = self_create_cookies_file(err); if (! cookies_file) goto end; /* * We create a config file rather than use command line arguments * because for obvious reasons, we must not pass the password on * the command line. */ config_file = self_create_config_file(self, spool_file, cookies_file, err); if (! config_file) goto end; if (! self_run_fetchyahoo(self, config_file, err)) goto end; if (! mn_webmail_mailbox_read_spool_file(mailbox, spool_file, err)) goto end; status = TRUE; end: unlink(spool_file); g_free(spool_file); g_free(cookies_file); if (config_file) { unlink(config_file); g_free(config_file); } return status; }} #line 508 "mn-yahoo-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-authenticated-mailbox-properties.h0000644000175000001440000000465611015312646027001 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-mailbox-properties.h" #ifndef __MN_AUTHENTICATED_MAILBOX_PROPERTIES_H__ #define __MN_AUTHENTICATED_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES (mn_authenticated_mailbox_properties_get_type()) #define MN_AUTHENTICATED_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_authenticated_mailbox_properties_get_type(), MNAuthenticatedMailboxProperties) #define MN_AUTHENTICATED_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_authenticated_mailbox_properties_get_type(), MNAuthenticatedMailboxProperties const) #define MN_AUTHENTICATED_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_authenticated_mailbox_properties_get_type(), MNAuthenticatedMailboxPropertiesClass) #define MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_authenticated_mailbox_properties_get_type ()) #define MN_AUTHENTICATED_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_authenticated_mailbox_properties_get_type(), MNAuthenticatedMailboxPropertiesClass) /* Private structure type */ typedef struct _MNAuthenticatedMailboxPropertiesPrivate MNAuthenticatedMailboxPropertiesPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_AUTHENTICATED_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_AUTHENTICATED_MAILBOX_PROPERTIES__ typedef struct _MNAuthenticatedMailboxProperties MNAuthenticatedMailboxProperties; #endif struct _MNAuthenticatedMailboxProperties { MNMailboxProperties __parent__; /*< private >*/ GtkWidget * account_vbox; /* protected */ GtkWidget * username_vbox; /* protected */ GtkWidget * username_label; /* protected */ GtkWidget * username_entry; /* protected */ GtkWidget * password_vbox; /* protected */ GtkWidget * password_label; /* protected */ GtkWidget * password_entry; /* protected */ MNAuthenticatedMailboxPropertiesPrivate *_priv; }; /* * Class definition */ typedef struct _MNAuthenticatedMailboxPropertiesClass MNAuthenticatedMailboxPropertiesClass; struct _MNAuthenticatedMailboxPropertiesClass { MNMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_authenticated_mailbox_properties_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-gmime-stream-vfs.gob.stamp0000644000175000001440000000000011015312647025136 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-pop3-mailbox.gob.stamp0000644000175000001440000000000011015312646024264 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-about-dialog.h0000644000175000001440000000256711015312644022700 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_ABOUT_DIALOG_H__ #define __MN_ABOUT_DIALOG_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_ABOUT_DIALOG (mn_about_dialog_get_type()) #define MN_ABOUT_DIALOG(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_about_dialog_get_type(), MNAboutDialog) #define MN_ABOUT_DIALOG_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_about_dialog_get_type(), MNAboutDialog const) #define MN_ABOUT_DIALOG_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_about_dialog_get_type(), MNAboutDialogClass) #define MN_IS_ABOUT_DIALOG(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_about_dialog_get_type ()) #define MN_ABOUT_DIALOG_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_about_dialog_get_type(), MNAboutDialogClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_ABOUT_DIALOG__ #define __TYPEDEF_MN_ABOUT_DIALOG__ typedef struct _MNAboutDialog MNAboutDialog; #endif struct _MNAboutDialog { GtkAboutDialog __parent__; }; /* * Class definition */ typedef struct _MNAboutDialogClass MNAboutDialogClass; struct _MNAboutDialogClass { GtkAboutDialogClass __parent__; }; /* * Public methods */ GType mn_about_dialog_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-shell.gob.stamp0000644000175000001440000000000011015312645023060 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-message.gob.stamp0000644000175000001440000000000011015312644023374 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-sylpheed-mailbox-backend-private.h0000644000175000001440000000216311015312646026626 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_SYLPHEED_MAILBOX_BACKEND_PRIVATE_H__ #define __MN_SYLPHEED_MAILBOX_BACKEND_PRIVATE_H__ #include "mn-sylpheed-mailbox-backend.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 24 "src/mn-sylpheed-mailbox-backend.gob" #include "mn-locked-callback.h" /* taken from procmsg.h in the Sylpheed sources */ #define SYLPHEED_MSG_NEW (1U << 0) #define SYLPHEED_MSG_UNREAD (1U << 1) /* taken from defs.h in the Sylpheed sources */ #define SYLPHEED_MARK_FILE ".sylpheed_mark" typedef struct { char *position; gsize bytes_left; } ByteStream; #line 31 "mn-sylpheed-mailbox-backend-private.h" #line 448 "src/mn-sylpheed-mailbox-backend.gob" GHashTable * mn_sylpheed_mailbox_backend_read_marks (GnomeVFSURI * mailbox_uri, GError ** err); #line 34 "mn-sylpheed-mailbox-backend-private.h" #line 507 "src/mn-sylpheed-mailbox-backend.gob" gboolean mn_sylpheed_mailbox_backend_write_marks (GnomeVFSURI * mailbox_uri, GHashTable * marks, GError ** err); #line 37 "mn-sylpheed-mailbox-backend-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mbox-mailbox-backend.c0000644000175000001440000001130411015312645024275 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-mbox-mailbox-backend.h" #include "mn-mbox-mailbox-backend-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-mbox-mailbox-backend.gob" #include "mn-base-mbox-mailbox-backend-private.h" #include "mn-message-mime.h" #line 31 "mn-mbox-mailbox-backend.c" /* self casting macros */ #define SELF(x) MN_MBOX_MAILBOX_BACKEND(x) #define SELF_CONST(x) MN_MBOX_MAILBOX_BACKEND_CONST(x) #define IS_SELF(x) MN_IS_MBOX_MAILBOX_BACKEND(x) #define TYPE_SELF MN_TYPE_MBOX_MAILBOX_BACKEND #define SELF_CLASS(x) MN_MBOX_MAILBOX_BACKEND_CLASS(x) #define SELF_GET_CLASS(x) MN_MBOX_MAILBOX_BACKEND_GET_CLASS(x) /* self typedefs */ typedef MNMboxMailboxBackend Self; typedef MNMboxMailboxBackendClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-mbox-mailbox-backend.gob" static void mn_mbox_mailbox_backend_init (MNMboxMailboxBackend * o); #line 48 "mn-mbox-mailbox-backend.c" #line 31 "src/mn-mbox-mailbox-backend.gob" static void mn_mbox_mailbox_backend_class_init (MNMboxMailboxBackendClass * class); #line 51 "mn-mbox-mailbox-backend.c" #line 36 "src/mn-mbox-mailbox-backend.gob" static MNMessage * ___2_mn_mbox_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * backend, GMimeMessage * mime_message); #line 54 "mn-mbox-mailbox-backend.c" /* pointer to the class of our parent */ static MNBaseMboxMailboxBackendClass *parent_class = NULL; GType mn_mbox_mailbox_backend_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMboxMailboxBackendClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_mbox_mailbox_backend_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMboxMailboxBackend), 0 /* n_preallocs */, (GInstanceInitFunc) mn_mbox_mailbox_backend_init, NULL }; type = g_type_register_static (MN_TYPE_BASE_MBOX_MAILBOX_BACKEND, "MNMboxMailboxBackend", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMboxMailboxBackend *)g_object_new(mn_mbox_mailbox_backend_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMboxMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMboxMailboxBackend * GET_NEW_VARG (const char *first, ...) { MNMboxMailboxBackend *ret; va_list ap; va_start (ap, first); ret = (MNMboxMailboxBackend *)g_object_new_valist (mn_mbox_mailbox_backend_get_type (), first, ap); va_end (ap); return ret; } static void mn_mbox_mailbox_backend_init (MNMboxMailboxBackend * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Mbox:Mailbox:Backend::init" } #undef __GOB_FUNCTION__ #line 31 "src/mn-mbox-mailbox-backend.gob" static void mn_mbox_mailbox_backend_class_init (MNMboxMailboxBackendClass * class G_GNUC_UNUSED) { #line 111 "mn-mbox-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Mbox:Mailbox:Backend::class_init" MNBaseMboxMailboxBackendClass *mn_base_mbox_mailbox_backend_class = (MNBaseMboxMailboxBackendClass *)class; parent_class = g_type_class_ref (MN_TYPE_BASE_MBOX_MAILBOX_BACKEND); #line 36 "src/mn-mbox-mailbox-backend.gob" mn_base_mbox_mailbox_backend_class->get_new_message = ___2_mn_mbox_mailbox_backend_get_new_message; #line 119 "mn-mbox-mailbox-backend.c" { #line 32 "src/mn-mbox-mailbox-backend.gob" MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "mbox"; #line 125 "mn-mbox-mailbox-backend.c" } } #undef __GOB_FUNCTION__ #line 36 "src/mn-mbox-mailbox-backend.gob" static MNMessage * ___2_mn_mbox_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * backend G_GNUC_UNUSED, GMimeMessage * mime_message) #line 135 "mn-mbox-mailbox-backend.c" #define PARENT_HANDLER(___backend,___mime_message) \ ((MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(parent_class)->get_new_message)? \ (* MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(parent_class)->get_new_message)(___backend,___mime_message): \ ((MNMessage * )0)) { #define __GOB_FUNCTION__ "MN:Mbox:Mailbox:Backend::get_new_message" { #line 38 "src/mn-mbox-mailbox-backend.gob" return mn_message_new_from_mime_message(MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), mime_message, NULL, 0, TRUE); }} #line 147 "mn-mbox-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-about-dialog.c0000644000175000001440000001214711015312644022666 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-about-dialog.h" #include "mn-about-dialog-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-about-dialog.gob" #include #include "mn-util.h" #line 31 "mn-about-dialog.c" /* self casting macros */ #define SELF(x) MN_ABOUT_DIALOG(x) #define SELF_CONST(x) MN_ABOUT_DIALOG_CONST(x) #define IS_SELF(x) MN_IS_ABOUT_DIALOG(x) #define TYPE_SELF MN_TYPE_ABOUT_DIALOG #define SELF_CLASS(x) MN_ABOUT_DIALOG_CLASS(x) #define SELF_GET_CLASS(x) MN_ABOUT_DIALOG_GET_CLASS(x) /* self typedefs */ typedef MNAboutDialog Self; typedef MNAboutDialogClass SelfClass; /* here are local prototypes */ #line 31 "src/mn-about-dialog.gob" static void mn_about_dialog_class_init (MNAboutDialogClass * class); #line 48 "mn-about-dialog.c" #line 37 "src/mn-about-dialog.gob" static void mn_about_dialog_init (MNAboutDialog * self); #line 51 "mn-about-dialog.c" #line 64 "src/mn-about-dialog.gob" static void mn_about_dialog_activate_link_cb (GtkAboutDialog * about, const char * link, gpointer data); #line 54 "mn-about-dialog.c" /* pointer to the class of our parent */ static GtkAboutDialogClass *parent_class = NULL; /* Short form macros */ #define self_activate_link_cb mn_about_dialog_activate_link_cb GType mn_about_dialog_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNAboutDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_about_dialog_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNAboutDialog), 0 /* n_preallocs */, (GInstanceInitFunc) mn_about_dialog_init, NULL }; type = g_type_register_static (GTK_TYPE_ABOUT_DIALOG, "MNAboutDialog", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNAboutDialog *)g_object_new(mn_about_dialog_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNAboutDialog * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNAboutDialog * GET_NEW_VARG (const char *first, ...) { MNAboutDialog *ret; va_list ap; va_start (ap, first); ret = (MNAboutDialog *)g_object_new_valist (mn_about_dialog_get_type (), first, ap); va_end (ap); return ret; } #line 31 "src/mn-about-dialog.gob" static void mn_about_dialog_class_init (MNAboutDialogClass * class G_GNUC_UNUSED) { #line 107 "mn-about-dialog.c" #define __GOB_FUNCTION__ "MN:About:Dialog::class_init" parent_class = g_type_class_ref (GTK_TYPE_ABOUT_DIALOG); { #line 32 "src/mn-about-dialog.gob" gtk_about_dialog_set_email_hook(self_activate_link_cb, "mailto:", NULL); gtk_about_dialog_set_url_hook(self_activate_link_cb, NULL, NULL); #line 118 "mn-about-dialog.c" } } #undef __GOB_FUNCTION__ #line 37 "src/mn-about-dialog.gob" static void mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED) { #line 126 "mn-about-dialog.c" #define __GOB_FUNCTION__ "MN:About:Dialog::init" { #line 38 "src/mn-about-dialog.gob" GtkAboutDialog *about = GTK_ABOUT_DIALOG(self); static const char *authors[] = { "Jean-Yves Lefort ", NULL }; static const char *documenters[] = { "Jean-Yves Lefort ", NULL }; GdkPixbuf *logo; gtk_about_dialog_set_version(about, VERSION); gtk_about_dialog_set_copyright(about, "Copyright \302\251 2003-2008 Jean-Yves Lefort"); /* translators: header capitalization */ gtk_about_dialog_set_comments(about, _("A Mail Notification Icon")); gtk_about_dialog_set_website(about, "http://www.nongnu.org/mailnotify"); gtk_about_dialog_set_authors(about, authors); gtk_about_dialog_set_documenters(about, documenters); /* * translators: Your Name * optionally followed by one or more: \nOther Contributor's Name */ gtk_about_dialog_set_translator_credits(about, _("translator-credits")); logo = mn_pixbuf_new(PKGDATADIR G_DIR_SEPARATOR_S "logo.png"); gtk_about_dialog_set_logo(about, logo); g_object_unref(logo); g_signal_connect(self, "response", G_CALLBACK(gtk_widget_destroy), NULL); #line 155 "mn-about-dialog.c" } } #undef __GOB_FUNCTION__ #line 64 "src/mn-about-dialog.gob" static void mn_about_dialog_activate_link_cb (GtkAboutDialog * about, const char * link, gpointer data) { #line 166 "mn-about-dialog.c" #define __GOB_FUNCTION__ "MN:About:Dialog::activate_link_cb" { #line 68 "src/mn-about-dialog.gob" const char *prefix = data; char *url; url = prefix ? g_strconcat(prefix, link, NULL) : g_strdup(link); mn_open_link(GTK_WINDOW(about), url); g_free(url); }} #line 178 "mn-about-dialog.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-webmail-mailbox-properties.gob.stamp0000644000175000001440000000000011015312647027216 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-pop3-mailbox-private.h0000644000175000001440000000073011015312646024303 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_POP3_MAILBOX_PRIVATE_H__ #define __MN_POP3_MAILBOX_PRIVATE_H__ #include "mn-pop3-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNPOP3MailboxPrivate { #line 138 "src/mn-pop3-mailbox.gob" int login_delay; #line 139 "src/mn-pop3-mailbox.gob" GTimer * authentication_timer; #line 18 "mn-pop3-mailbox-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-pop3-mailbox-properties.gob.stamp0000644000175000001440000000000011015312646026456 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-gmail-mailbox-private.h0000644000175000001440000000101311015312646024506 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_GMAIL_MAILBOX_PRIVATE_H__ #define __MN_GMAIL_MAILBOX_PRIVATE_H__ #include "mn-gmail-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 24 "src/mn-gmail-mailbox.gob" #include #line 18 "mn-gmail-mailbox-private.h" struct _MNGmailMailboxPrivate { #line 54 "src/mn-gmail-mailbox.gob" GnomeVFSURI * uri; #line 22 "mn-gmail-mailbox-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-shell.h0000644000175000001440000001112511015312645021427 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include #include "mn-mailboxes.h" #include "mn-mailbox-properties-dialog.h" #include "mn-mail-icon.h" #include "mn-popups.h" #ifndef __MN_SHELL_H__ #define __MN_SHELL_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef enum { MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD, MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT, MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE } MNShellTooltipMailSummary; #define MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY mn_shell_tooltip_mail_summary_get_type() GType mn_shell_tooltip_mail_summary_get_type (void); /* * Type checking and casting macros */ #define MN_TYPE_SHELL (mn_shell_get_type()) #define MN_SHELL(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_shell_get_type(), MNShell) #define MN_SHELL_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_shell_get_type(), MNShell const) #define MN_SHELL_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_shell_get_type(), MNShellClass) #define MN_IS_SHELL(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_shell_get_type ()) #define MN_SHELL_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_shell_get_type(), MNShellClass) /* Private structure type */ typedef struct _MNShellPrivate MNShellPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_SHELL__ #define __TYPEDEF_MN_SHELL__ typedef struct _MNShell MNShell; #endif struct _MNShell { GObject __parent__; /*< public >*/ MNMailboxes * mailboxes; MNMailIcon * icon; MNPopups * popups; DBusGConnection * session_bus; DBusGProxy * session_bus_proxy; /*< private >*/ MNShellPrivate *_priv; }; /* * Class definition */ typedef struct _MNShellClass MNShellClass; struct _MNShellClass { GObjectClass __parent__; }; /* * Public methods */ GType mn_shell_get_type (void) G_GNUC_CONST; #line 799 "src/mn-shell.gob" MNShell * mn_shell_new (DBusGConnection * session_bus, DBusGProxy * session_bus_proxy); #line 81 "mn-shell.h" #line 808 "src/mn-shell.gob" void mn_shell_consider_new_mail_as_read (MNShell * self); #line 84 "mn-shell.h" #line 824 "src/mn-shell.gob" void mn_shell_update (MNShell * self); #line 87 "mn-shell.h" #line 830 "src/mn-shell.gob" void mn_shell_quit (MNShell * self); #line 90 "mn-shell.h" #line 836 "src/mn-shell.gob" void mn_shell_show_properties_dialog (MNShell * self, guint32 timestamp); #line 94 "mn-shell.h" #line 842 "src/mn-shell.gob" void mn_shell_show_about_dialog (MNShell * self, guint32 timestamp); #line 98 "mn-shell.h" #line 869 "src/mn-shell.gob" void mn_shell_add_mailbox_properties_dialog (MNShell * self, MNMailboxPropertiesDialog * dialog); #line 102 "mn-shell.h" #line 885 "src/mn-shell.gob" MNMailboxPropertiesDialog * mn_shell_get_mailbox_properties_dialog (MNShell * self, MNMailbox * mailbox); #line 106 "mn-shell.h" #line 907 "src/mn-shell.gob" char * mn_shell_get_summary (MNShell * self); #line 109 "mn-shell.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_SHELL_PROP_SESSION_BUS(arg) "session_bus", __extension__ ({DBusGConnection * z = (arg); z;}) #define MN_SHELL_GET_PROP_SESSION_BUS(arg) "session_bus", __extension__ ({DBusGConnection * *z = (arg); z;}) #define MN_SHELL_PROP_SESSION_BUS_PROXY(arg) "session_bus_proxy", __extension__ ({DBusGProxy * z = (arg); z;}) #define MN_SHELL_GET_PROP_SESSION_BUS_PROXY(arg) "session_bus_proxy", __extension__ ({DBusGProxy * *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_SHELL_PROP_SESSION_BUS(arg) "session_bus",(DBusGConnection * )(arg) #define MN_SHELL_GET_PROP_SESSION_BUS(arg) "session_bus",(DBusGConnection * *)(arg) #define MN_SHELL_PROP_SESSION_BUS_PROXY(arg) "session_bus_proxy",(DBusGProxy * )(arg) #define MN_SHELL_GET_PROP_SESSION_BUS_PROXY(arg) "session_bus_proxy",(DBusGProxy * *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ extern MNShell *mn_shell; typedef enum { MN_ACTION_LAUNCH_MAIL_READER, MN_ACTION_OPEN_LATEST_MESSAGE, MN_ACTION_CONSIDER_NEW_MAIL_AS_READ, MN_ACTION_UPDATE_MAIL_STATUS } MNAction; #define MN_TYPE_ACTION mn_action_get_type() GType mn_action_get_type (void); typedef enum { MN_EXPIRATION_ENABLED_DEFAULT, MN_EXPIRATION_ENABLED_FALSE, MN_EXPIRATION_ENABLED_TRUE } MNExpirationEnabled; #define MN_TYPE_EXPIRATION_ENABLED mn_expiration_enabled_get_type() GType mn_expiration_enabled_get_type (void); typedef enum { MN_POPUP_POSITION_ATTACHED, MN_POPUP_POSITION_FREE } MNPopupPosition; #define MN_TYPE_POPUP_POSITION mn_popup_position_get_type() GType mn_popup_position_get_type (void); #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mailboxes.gob.stamp0000644000175000001440000000000011015312644023733 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-message-private.h0000644000175000001440000000164611015312644023422 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MESSAGE_PRIVATE_H__ #define __MN_MESSAGE_PRIVATE_H__ #include "mn-message.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 64 "src/mn-message.gob" #include "mn-xml.h" typedef enum { /* include in the XML summary and allow as a command format */ MN_MESSAGE_PARAM_EXPORT = MN_XML_PARAM_EXPORT, } MNMessageParamFlags; typedef GError *(*MNMessageActionPerformCallback) (MNMessage *message, gpointer data); #line 26 "mn-message-private.h" #line 376 "src/mn-message.gob" void mn_message_perform_action_in_thread (MNMessageActionRequest * request, MNMessageActionPerformCallback callback, gpointer user_data); #line 29 "mn-message-private.h" #line 423 "src/mn-message.gob" void mn_message_action_done (MNMessageActionRequest * request, GError * err); #line 32 "mn-message-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-file-chooser-button.h0000644000175000001440000000546711015312644024223 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_FILE_CHOOSER_BUTTON_H__ #define __MN_FILE_CHOOSER_BUTTON_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef GtkFileChooserDialog *(*MNFileChooserButtonCreateDialogFunction) (gpointer data); /* * Type checking and casting macros */ #define MN_TYPE_FILE_CHOOSER_BUTTON (mn_file_chooser_button_get_type()) #define MN_FILE_CHOOSER_BUTTON(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_file_chooser_button_get_type(), MNFileChooserButton) #define MN_FILE_CHOOSER_BUTTON_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_file_chooser_button_get_type(), MNFileChooserButton const) #define MN_FILE_CHOOSER_BUTTON_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_file_chooser_button_get_type(), MNFileChooserButtonClass) #define MN_IS_FILE_CHOOSER_BUTTON(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_file_chooser_button_get_type ()) #define MN_FILE_CHOOSER_BUTTON_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_file_chooser_button_get_type(), MNFileChooserButtonClass) /* Private structure type */ typedef struct _MNFileChooserButtonPrivate MNFileChooserButtonPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_FILE_CHOOSER_BUTTON__ #define __TYPEDEF_MN_FILE_CHOOSER_BUTTON__ typedef struct _MNFileChooserButton MNFileChooserButton; #endif struct _MNFileChooserButton { GtkHBox __parent__; /*< private >*/ MNFileChooserButtonPrivate *_priv; }; /* * Class definition */ typedef struct _MNFileChooserButtonClass MNFileChooserButtonClass; struct _MNFileChooserButtonClass { GtkHBoxClass __parent__; }; /* * Public methods */ GType mn_file_chooser_button_get_type (void) G_GNUC_CONST; #line 50 "src/mn-file-chooser-button.gob" gchar * mn_file_chooser_button_get_filename (MNFileChooserButton * self); #line 64 "mn-file-chooser-button.h" #line 54 "src/mn-file-chooser-button.gob" void mn_file_chooser_button_set_filename (MNFileChooserButton * self, gchar * val); #line 68 "mn-file-chooser-button.h" #line 270 "src/mn-file-chooser-button.gob" GtkWidget * mn_file_chooser_button_new (MNFileChooserButtonCreateDialogFunction create_dialog, gpointer data); #line 72 "mn-file-chooser-button.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_FILE_CHOOSER_BUTTON_PROP_FILENAME(arg) "filename", __extension__ ({gchar *z = (arg); z;}) #define MN_FILE_CHOOSER_BUTTON_GET_PROP_FILENAME(arg) "filename", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_FILE_CHOOSER_BUTTON_PROP_FILENAME(arg) "filename",(gchar *)(arg) #define MN_FILE_CHOOSER_BUTTON_GET_PROP_FILENAME(arg) "filename",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-vfs-message.c0000644000175000001440000002044611015312646022542 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-vfs-message.h" #include "mn-vfs-message-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 26 "src/mn-vfs-message.gob" #include "mn-vfs-mailbox-backend.h" #include "mn-message-mime.h" #include "mn-util.h" #line 32 "mn-vfs-message.c" /* self casting macros */ #define SELF(x) MN_VFS_MESSAGE(x) #define SELF_CONST(x) MN_VFS_MESSAGE_CONST(x) #define IS_SELF(x) MN_IS_VFS_MESSAGE(x) #define TYPE_SELF MN_TYPE_VFS_MESSAGE #define SELF_CLASS(x) MN_VFS_MESSAGE_CLASS(x) #define SELF_GET_CLASS(x) MN_VFS_MESSAGE_GET_CLASS(x) /* self typedefs */ typedef MNVFSMessage Self; typedef MNVFSMessageClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-vfs-message.gob" static void mn_vfs_message_init (MNVFSMessage * o); #line 51 "mn-vfs-message.c" #line 0 "src/mn-vfs-message.gob" static void mn_vfs_message_class_init (MNVFSMessageClass * c); #line 54 "mn-vfs-message.c" enum { PROP_0, PROP_VFS_URI }; /* pointer to the class of our parent */ static MNMessageClass *parent_class = NULL; /* Short form macros */ #define self_new mn_vfs_message_new #define self_new_from_message mn_vfs_message_new_from_message GType mn_vfs_message_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNVFSMessageClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_vfs_message_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNVFSMessage), 0 /* n_preallocs */, (GInstanceInitFunc) mn_vfs_message_init, NULL }; type = g_type_register_static (MN_TYPE_MESSAGE, "MNVFSMessage", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNVFSMessage *)g_object_new(mn_vfs_message_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNVFSMessage * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNVFSMessage * GET_NEW_VARG (const char *first, ...) { MNVFSMessage *ret; va_list ap; va_start (ap, first); ret = (MNVFSMessage *)g_object_new_valist (mn_vfs_message_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:VFS:Message::dispose" MNVFSMessage *self G_GNUC_UNUSED = MN_VFS_MESSAGE (obj_self); if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 35 "src/mn-vfs-message.gob" if(self->vfs_uri) { gnome_vfs_uri_unref ((gpointer) self->vfs_uri); self->vfs_uri = NULL; } #line 119 "mn-vfs-message.c" } #undef __GOB_FUNCTION__ static void mn_vfs_message_init (MNVFSMessage * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:VFS:Message::init" } #undef __GOB_FUNCTION__ static void mn_vfs_message_class_init (MNVFSMessageClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:VFS:Message::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; parent_class = g_type_class_ref (MN_TYPE_MESSAGE); g_object_class->dispose = ___dispose; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_pointer ("vfs_uri" /* name */, NULL /* nick */, NULL /* blurb */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_VFS_URI, param_spec); } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:VFS:Message::set_property" { MNVFSMessage *self G_GNUC_UNUSED; self = MN_VFS_MESSAGE (object); switch (property_id) { case PROP_VFS_URI: { #line 38 "src/mn-vfs-message.gob" GnomeVFSURI *uri; g_assert(self->vfs_uri == NULL); uri = g_value_get_pointer(VAL); if (uri) self->vfs_uri = gnome_vfs_uri_ref(uri); #line 179 "mn-vfs-message.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:VFS:Message::get_property" { MNVFSMessage *self G_GNUC_UNUSED; self = MN_VFS_MESSAGE (object); switch (property_id) { case PROP_VFS_URI: { #line 48 "src/mn-vfs-message.gob" g_value_set_pointer(VAL, self->vfs_uri != NULL ? gnome_vfs_uri_ref(self->vfs_uri) : NULL); #line 212 "mn-vfs-message.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 52 "src/mn-vfs-message.gob" MNVFSMessage * mn_vfs_message_new (GType type, MNVFSMailboxBackend * backend, const char * mid, GnomeVFSURI * dir_uri, const char * filename, MNMessageFlags flags, gboolean handle_status, GError ** err) { #line 233 "mn-vfs-message.c" #define __GOB_FUNCTION__ "MN:VFS:Message::new" #line 52 "src/mn-vfs-message.gob" g_return_val_if_fail (backend != NULL, (MNVFSMessage * )0); #line 52 "src/mn-vfs-message.gob" g_return_val_if_fail (MN_IS_VFS_MAILBOX_BACKEND (backend), (MNVFSMessage * )0); #line 52 "src/mn-vfs-message.gob" g_return_val_if_fail (dir_uri != NULL, (MNVFSMessage * )0); #line 52 "src/mn-vfs-message.gob" g_return_val_if_fail (filename != NULL, (MNVFSMessage * )0); #line 243 "mn-vfs-message.c" { #line 61 "src/mn-vfs-message.gob" GnomeVFSURI *message_uri; MNVFSMessage *message; message_uri = gnome_vfs_uri_append_file_name(dir_uri, filename); message = MN_VFS_MESSAGE(mn_message_new_from_uri_full(type, MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), mid, message_uri, flags, handle_status, err)); if (message) message->vfs_uri = gnome_vfs_uri_ref(message_uri); gnome_vfs_uri_unref(message_uri); return message; }} #line 267 "mn-vfs-message.c" #undef __GOB_FUNCTION__ #line 83 "src/mn-vfs-message.gob" MNVFSMessage * mn_vfs_message_new_from_message (MNVFSMessage * message, GnomeVFSURI * dir_uri, const char * filename, MNMessageFlags flags) { #line 274 "mn-vfs-message.c" #define __GOB_FUNCTION__ "MN:VFS:Message::new_from_message" #line 83 "src/mn-vfs-message.gob" g_return_val_if_fail (message != NULL, (MNVFSMessage * )0); #line 83 "src/mn-vfs-message.gob" g_return_val_if_fail (MN_IS_VFS_MESSAGE (message), (MNVFSMessage * )0); #line 83 "src/mn-vfs-message.gob" g_return_val_if_fail (dir_uri != NULL, (MNVFSMessage * )0); #line 83 "src/mn-vfs-message.gob" g_return_val_if_fail (filename != NULL, (MNVFSMessage * )0); #line 284 "mn-vfs-message.c" { #line 88 "src/mn-vfs-message.gob" GnomeVFSURI *message_uri; char *message_text_uri; MNVFSMessage *new_message; message_uri = gnome_vfs_uri_append_file_name(dir_uri, filename); message_text_uri = gnome_vfs_uri_to_string(message_uri, GNOME_VFS_URI_HIDE_NONE); new_message = mn_g_object_clone(message, MN_MESSAGE_PROP_URI((char *) message_text_uri), MN_MESSAGE_PROP_FLAGS(flags), MN_VFS_MESSAGE_PROP_VFS_URI(message_uri), NULL); gnome_vfs_uri_unref(message_uri); g_free(message_text_uri); return new_message; }} #line 306 "mn-vfs-message.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-authenticated-mailbox.gob.stamp0000644000175000001440000000000011015312646026225 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-pi-mailbox-properties.h0000644000175000001440000000463511015312646024564 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-authenticated-mailbox-properties.h" #include "mn-pi-mailbox.h" #ifndef __MN_PI_MAILBOX_PROPERTIES_H__ #define __MN_PI_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_PI_MAILBOX_PROPERTIES (mn_pi_mailbox_properties_get_type()) #define MN_PI_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_pi_mailbox_properties_get_type(), MNPIMailboxProperties) #define MN_PI_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_pi_mailbox_properties_get_type(), MNPIMailboxProperties const) #define MN_PI_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_pi_mailbox_properties_get_type(), MNPIMailboxPropertiesClass) #define MN_IS_PI_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_pi_mailbox_properties_get_type ()) #define MN_PI_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_pi_mailbox_properties_get_type(), MNPIMailboxPropertiesClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_PI_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_PI_MAILBOX_PROPERTIES__ typedef struct _MNPIMailboxProperties MNPIMailboxProperties; #endif struct _MNPIMailboxProperties { MNAuthenticatedMailboxProperties __parent__; /*< private >*/ GtkWidget * server_entry; /* protected */ GtkWidget * connection_page; /* protected */ GtkSizeGroup * connection_size_group; /* protected */ GtkWidget * conn_radio[MN_PI_MAILBOX_N_CONNECTION_TYPES]; /* protected */ GtkWidget * port_spin[MN_PI_MAILBOX_N_CONNECTION_TYPES]; /* protected */ GtkWidget * auth_combo; /* protected */ }; /* * Class definition */ typedef struct _MNPIMailboxPropertiesClass MNPIMailboxPropertiesClass; struct _MNPIMailboxPropertiesClass { MNAuthenticatedMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_pi_mailbox_properties_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_PI_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete", __extension__ ({gboolean *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_PI_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete",(gboolean *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-base-mbox-mailbox-backend.h0000644000175000001440000000402611015312645025215 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-vfs-mailbox-backend.h" #include "mn-message.h" #ifndef __MN_BASE_MBOX_MAILBOX_BACKEND_H__ #define __MN_BASE_MBOX_MAILBOX_BACKEND_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_BASE_MBOX_MAILBOX_BACKEND (mn_base_mbox_mailbox_backend_get_type()) #define MN_BASE_MBOX_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_base_mbox_mailbox_backend_get_type(), MNBaseMboxMailboxBackend) #define MN_BASE_MBOX_MAILBOX_BACKEND_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_base_mbox_mailbox_backend_get_type(), MNBaseMboxMailboxBackend const) #define MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_base_mbox_mailbox_backend_get_type(), MNBaseMboxMailboxBackendClass) #define MN_IS_BASE_MBOX_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_base_mbox_mailbox_backend_get_type ()) #define MN_BASE_MBOX_MAILBOX_BACKEND_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_base_mbox_mailbox_backend_get_type(), MNBaseMboxMailboxBackendClass) /* Private structure type */ typedef struct _MNBaseMboxMailboxBackendPrivate MNBaseMboxMailboxBackendPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_BASE_MBOX_MAILBOX_BACKEND__ #define __TYPEDEF_MN_BASE_MBOX_MAILBOX_BACKEND__ typedef struct _MNBaseMboxMailboxBackend MNBaseMboxMailboxBackend; #endif struct _MNBaseMboxMailboxBackend { MNVFSMailboxBackend __parent__; /*< private >*/ MNBaseMboxMailboxBackendPrivate *_priv; }; /* * Class definition */ typedef struct _MNBaseMboxMailboxBackendClass MNBaseMboxMailboxBackendClass; struct _MNBaseMboxMailboxBackendClass { MNVFSMailboxBackendClass __parent__; MNMessage * (* get_new_message) (MNBaseMboxMailboxBackend * self, GMimeMessage * mime_message); }; /* * Public methods */ GType mn_base_mbox_mailbox_backend_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-pop3-mailbox-properties.c0000644000175000001440000001357611015312646025034 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-pop3-mailbox-properties.h" #include "mn-pop3-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-pop3-mailbox-properties.gob" #include #include "mn-mailbox-properties.h" #include "mn-auth-combo-box.h" #include "mn-util.h" #include "mn-authenticated-mailbox-properties-private.h" #include "mn-pi-mailbox-properties-private.h" #include "mn-properties-dialog.h" #include "mn-pop3-mailbox.h" #line 37 "mn-pop3-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_POP3_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_POP3_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_POP3_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_POP3_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_POP3_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_POP3_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNPOP3MailboxProperties Self; typedef MNPOP3MailboxPropertiesClass SelfClass; /* here are local prototypes */ static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 55 "src/mn-pop3-mailbox-properties.gob" static void mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class); #line 55 "mn-pop3-mailbox-properties.c" #line 63 "src/mn-pop3-mailbox-properties.gob" static void mn_pop3_mailbox_properties_init (MNPOP3MailboxProperties * self); #line 58 "mn-pop3-mailbox-properties.c" enum { PROP_0, PROP_DEFAULT_NAME }; /* pointer to the class of our parent */ static MNPIMailboxPropertiesClass *parent_class = NULL; GType mn_pop3_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNPOP3MailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_pop3_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNPOP3MailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_pop3_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_PI_MAILBOX_PROPERTIES, "MNPOP3MailboxProperties", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNPOP3MailboxProperties *)g_object_new(mn_pop3_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNPOP3MailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNPOP3MailboxProperties * GET_NEW_VARG (const char *first, ...) { MNPOP3MailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNPOP3MailboxProperties *)g_object_new_valist (mn_pop3_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } #line 55 "src/mn-pop3-mailbox-properties.gob" static void mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GNUC_UNUSED) { #line 114 "mn-pop3-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX_PROPERTIES); g_object_class->get_property = ___object_get_property; { g_object_class_override_property (g_object_class, PROP_DEFAULT_NAME, "default_name"); } { #line 56 "src/mn-pop3-mailbox-properties.gob" MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "pop3"; p_class->combo_label = "POP3"; #line 134 "mn-pop3-mailbox-properties.c" } } #undef __GOB_FUNCTION__ #line 63 "src/mn-pop3-mailbox-properties.gob" static void mn_pop3_mailbox_properties_init (MNPOP3MailboxProperties * self G_GNUC_UNUSED) { #line 142 "mn-pop3-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::init" { #line 64 "src/mn-pop3-mailbox-properties.gob" MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self); int i; mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+APOP", "APOP"); mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+USERPASS", "USER/PASS"); for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++) gtk_spin_button_set_value(GTK_SPIN_BUTTON(pi->port_spin[i]), mn_pop3_mailbox_default_ports[i]); #line 156 "mn-pop3-mailbox-properties.c" } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::get_property" { MNPOP3MailboxProperties *self G_GNUC_UNUSED; self = MN_POP3_MAILBOX_PROPERTIES (object); switch (property_id) { case PROP_DEFAULT_NAME: { #line 39 "src/mn-pop3-mailbox-properties.gob" const char *username; const char *server; mn_authenticated_mailbox_properties_get_contents(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self), &username, NULL); mn_pi_mailbox_properties_get_contents(MN_PI_MAILBOX_PROPERTIES(self), NULL, NULL, &server, NULL); g_value_take_string(VAL, mn_pop3_mailbox_build_name(username, server)); #line 191 "mn-pop3-mailbox-properties.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-vfs-mailbox.h0000644000175000001440000000402511015312647022552 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-reentrant-mailbox.h" #ifndef __MN_VFS_MAILBOX_H__ #define __MN_VFS_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define MN_VFS_MAILBOX_MAX_BACKEND_TYPES 5 extern GType mn_vfs_mailbox_backend_types[MN_VFS_MAILBOX_MAX_BACKEND_TYPES + 1]; /* * Type checking and casting macros */ #define MN_TYPE_VFS_MAILBOX (mn_vfs_mailbox_get_type()) #define MN_VFS_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_vfs_mailbox_get_type(), MNVFSMailbox) #define MN_VFS_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_vfs_mailbox_get_type(), MNVFSMailbox const) #define MN_VFS_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_vfs_mailbox_get_type(), MNVFSMailboxClass) #define MN_IS_VFS_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_vfs_mailbox_get_type ()) #define MN_VFS_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_vfs_mailbox_get_type(), MNVFSMailboxClass) /* Private structure type */ typedef struct _MNVFSMailboxPrivate MNVFSMailboxPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_VFS_MAILBOX__ #define __TYPEDEF_MN_VFS_MAILBOX__ typedef struct _MNVFSMailbox MNVFSMailbox; #endif struct _MNVFSMailbox { MNReentrantMailbox __parent__; /*< public >*/ char * uri; GnomeVFSURI * vfs_uri; /*< private >*/ MNVFSMailboxPrivate *_priv; }; /* * Class definition */ typedef struct _MNVFSMailboxClass MNVFSMailboxClass; struct _MNVFSMailboxClass { MNReentrantMailboxClass __parent__; }; /* * Public methods */ GType mn_vfs_mailbox_get_type (void) G_GNUC_CONST; #line 86 "src/mn-vfs-mailbox.gob" void mn_vfs_mailbox_init_types (void); #line 69 "mn-vfs-mailbox.h" #line 476 "src/mn-vfs-mailbox.gob" void mn_vfs_mailbox_lock (MNVFSMailbox * self); #line 72 "mn-vfs-mailbox.h" #line 482 "src/mn-vfs-mailbox.gob" void mn_vfs_mailbox_unlock (MNVFSMailbox * self); #line 75 "mn-vfs-mailbox.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-message-view.c0000644000175000001440000003106611015312644022714 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-message-view.h" #include "mn-message-view-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 29 "src/mn-message-view.gob" #include "mn-util.h" #include typedef struct { MNMessageView *self; MNTextTableCell *cell; GList *link; time_t past_time; } PastTimeCell; /* use a GQueue for O(1) append and removal */ static GQueue past_time_cells = G_QUEUE_INIT; static unsigned int past_time_cells_timeout_id = 0; #line 43 "mn-message-view.c" /* self casting macros */ #define SELF(x) MN_MESSAGE_VIEW(x) #define SELF_CONST(x) MN_MESSAGE_VIEW_CONST(x) #define IS_SELF(x) MN_IS_MESSAGE_VIEW(x) #define TYPE_SELF MN_TYPE_MESSAGE_VIEW #define SELF_CLASS(x) MN_MESSAGE_VIEW_CLASS(x) #define SELF_GET_CLASS(x) MN_MESSAGE_VIEW_GET_CLASS(x) /* self typedefs */ typedef MNMessageView Self; typedef MNMessageViewClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-message-view.gob" static void mn_message_view_init (MNMessageView * o); #line 60 "mn-message-view.c" #line 0 "src/mn-message-view.gob" static void mn_message_view_class_init (MNMessageViewClass * c); #line 63 "mn-message-view.c" #line 50 "src/mn-message-view.gob" static void mn_message_view_finalize (MNMessageView * self); #line 66 "mn-message-view.c" #line 55 "src/mn-message-view.gob" static void ___2_mn_message_view_clear (MNTextTable * table); #line 69 "mn-message-view.c" #line 85 "src/mn-message-view.gob" static void mn_message_view_append_header (MNMessageView * self); #line 72 "mn-message-view.c" #line 88 "src/mn-message-view.gob" static void mn_message_view_append_message (MNMessageView * self, MNMessage * message, time_t now); #line 75 "mn-message-view.c" #line 91 "src/mn-message-view.gob" static void mn_message_view_append_message_separator (MNMessageView * self); #line 78 "mn-message-view.c" #line 115 "src/mn-message-view.gob" static void mn_message_view_clear_past_time_cells (MNMessageView * self); #line 81 "mn-message-view.c" #line 137 "src/mn-message-view.gob" static void mn_message_view_install_past_time_cells_timeout (void); #line 84 "mn-message-view.c" #line 149 "src/mn-message-view.gob" static gboolean mn_message_view_update_past_time_cells_cb (gpointer data); #line 87 "mn-message-view.c" #line 163 "src/mn-message-view.gob" static void mn_message_view_update_past_time_cell (PastTimeCell * pcell, time_t now); #line 90 "mn-message-view.c" /* pointer to the class of our parent */ static MNTextTableClass *parent_class = NULL; /* Short form macros */ #define self_set_messages mn_message_view_set_messages #define self_append_header mn_message_view_append_header #define self_append_message mn_message_view_append_message #define self_append_message_separator mn_message_view_append_message_separator #define self_append_past_time_cell mn_message_view_append_past_time_cell #define self_clear_past_time_cells mn_message_view_clear_past_time_cells #define self_install_past_time_cells_timeout mn_message_view_install_past_time_cells_timeout #define self_update_past_time_cells_cb mn_message_view_update_past_time_cells_cb #define self_update_past_time_cell mn_message_view_update_past_time_cell GType mn_message_view_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMessageViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_message_view_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMessageView), 0 /* n_preallocs */, (GInstanceInitFunc) mn_message_view_init, NULL }; type = g_type_register_static (MN_TYPE_TEXT_TABLE, "MNMessageView", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMessageView *)g_object_new(mn_message_view_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMessageView * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMessageView * GET_NEW_VARG (const char *first, ...) { MNMessageView *ret; va_list ap; va_start (ap, first); ret = (MNMessageView *)g_object_new_valist (mn_message_view_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Message:View::finalize" MNMessageView *self G_GNUC_UNUSED = MN_MESSAGE_VIEW (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 50 "src/mn-message-view.gob" mn_message_view_finalize (self); #line 156 "mn-message-view.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_message_view_init (MNMessageView * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Message:View::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_MESSAGE_VIEW,MNMessageViewPrivate); } #undef __GOB_FUNCTION__ static void mn_message_view_class_init (MNMessageViewClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Message:View::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; MNTextTableClass *mn_text_table_class = (MNTextTableClass *)c; g_type_class_add_private(c,sizeof(MNMessageViewPrivate)); parent_class = g_type_class_ref (MN_TYPE_TEXT_TABLE); #line 55 "src/mn-message-view.gob" mn_text_table_class->clear = ___2_mn_message_view_clear; #line 182 "mn-message-view.c" c->append_header = NULL; c->append_message = NULL; c->append_message_separator = NULL; g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 50 "src/mn-message-view.gob" static void mn_message_view_finalize (MNMessageView * self) { #line 196 "mn-message-view.c" #define __GOB_FUNCTION__ "MN:Message:View::finalize" { #line 51 "src/mn-message-view.gob" self_clear_past_time_cells(self); }} #line 203 "mn-message-view.c" #undef __GOB_FUNCTION__ #line 55 "src/mn-message-view.gob" static void ___2_mn_message_view_clear (MNTextTable * table G_GNUC_UNUSED) #line 209 "mn-message-view.c" #define PARENT_HANDLER(___table) \ { if(MN_TEXT_TABLE_CLASS(parent_class)->clear) \ (* MN_TEXT_TABLE_CLASS(parent_class)->clear)(___table); } { #define __GOB_FUNCTION__ "MN:Message:View::clear" { #line 57 "src/mn-message-view.gob" self_clear_past_time_cells(SELF(table)); PARENT_HANDLER(table); }} #line 222 "mn-message-view.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 63 "src/mn-message-view.gob" void mn_message_view_set_messages (MNMessageView * self, GSList * messages) { #line 230 "mn-message-view.c" #define __GOB_FUNCTION__ "MN:Message:View::set_messages" #line 63 "src/mn-message-view.gob" g_return_if_fail (self != NULL); #line 63 "src/mn-message-view.gob" g_return_if_fail (MN_IS_MESSAGE_VIEW (self)); #line 236 "mn-message-view.c" { #line 65 "src/mn-message-view.gob" time_t now; GSList *l; mn_text_table_clear(MN_TEXT_TABLE(self)); self_append_header(self); now = mn_time(); MN_LIST_FOREACH(l, messages) { MNMessage *message = l->data; self_append_message(self, message, now); if (l->next) self_append_message_separator(self); } }} #line 258 "mn-message-view.c" #undef __GOB_FUNCTION__ #line 85 "src/mn-message-view.gob" static void mn_message_view_append_header (MNMessageView * self) { #line 265 "mn-message-view.c" MNMessageViewClass *klass; #line 85 "src/mn-message-view.gob" g_return_if_fail (self != NULL); #line 85 "src/mn-message-view.gob" g_return_if_fail (MN_IS_MESSAGE_VIEW (self)); #line 271 "mn-message-view.c" klass = MN_MESSAGE_VIEW_GET_CLASS(self); if(klass->append_header) (*klass->append_header)(self); } #line 88 "src/mn-message-view.gob" static void mn_message_view_append_message (MNMessageView * self, MNMessage * message, time_t now) { #line 282 "mn-message-view.c" MNMessageViewClass *klass; #line 88 "src/mn-message-view.gob" g_return_if_fail (self != NULL); #line 88 "src/mn-message-view.gob" g_return_if_fail (MN_IS_MESSAGE_VIEW (self)); #line 88 "src/mn-message-view.gob" g_return_if_fail (message != NULL); #line 88 "src/mn-message-view.gob" g_return_if_fail (MN_IS_MESSAGE (message)); #line 292 "mn-message-view.c" klass = MN_MESSAGE_VIEW_GET_CLASS(self); if(klass->append_message) (*klass->append_message)(self,message,now); } #line 91 "src/mn-message-view.gob" static void mn_message_view_append_message_separator (MNMessageView * self) { #line 303 "mn-message-view.c" MNMessageViewClass *klass; #line 91 "src/mn-message-view.gob" g_return_if_fail (self != NULL); #line 91 "src/mn-message-view.gob" g_return_if_fail (MN_IS_MESSAGE_VIEW (self)); #line 309 "mn-message-view.c" klass = MN_MESSAGE_VIEW_GET_CLASS(self); if(klass->append_message_separator) (*klass->append_message_separator)(self); } #line 94 "src/mn-message-view.gob" void mn_message_view_append_past_time_cell (MNMessageView * self, time_t past_time, time_t now) { #line 320 "mn-message-view.c" #define __GOB_FUNCTION__ "MN:Message:View::append_past_time_cell" #line 94 "src/mn-message-view.gob" g_return_if_fail (self != NULL); #line 94 "src/mn-message-view.gob" g_return_if_fail (MN_IS_MESSAGE_VIEW (self)); #line 326 "mn-message-view.c" { #line 96 "src/mn-message-view.gob" PastTimeCell *pcell; pcell = g_new(PastTimeCell, 1); pcell->self = self; pcell->cell = mn_text_table_append_text_cell(MN_TEXT_TABLE(self), NULL); pcell->link = g_list_alloc(); pcell->link->data = pcell; pcell->past_time = past_time; self_update_past_time_cell(pcell, now); selfp->past_time_cells = g_slist_prepend(selfp->past_time_cells, pcell); g_queue_push_tail_link(&past_time_cells, pcell->link); if (! past_time_cells_timeout_id) self_install_past_time_cells_timeout(); }} #line 347 "mn-message-view.c" #undef __GOB_FUNCTION__ #line 115 "src/mn-message-view.gob" static void mn_message_view_clear_past_time_cells (MNMessageView * self) { #line 354 "mn-message-view.c" #define __GOB_FUNCTION__ "MN:Message:View::clear_past_time_cells" #line 115 "src/mn-message-view.gob" g_return_if_fail (self != NULL); #line 115 "src/mn-message-view.gob" g_return_if_fail (MN_IS_MESSAGE_VIEW (self)); #line 360 "mn-message-view.c" { #line 117 "src/mn-message-view.gob" GSList *l; if (! selfp->past_time_cells) return; MN_LIST_FOREACH(l, selfp->past_time_cells) { PastTimeCell *pcell = l->data; g_queue_delete_link(&past_time_cells, pcell->link); g_free(pcell); } mn_g_slist_clear(&selfp->past_time_cells); if (g_queue_is_empty(&past_time_cells)) mn_source_clear(&past_time_cells_timeout_id); }} #line 382 "mn-message-view.c" #undef __GOB_FUNCTION__ #line 137 "src/mn-message-view.gob" static void mn_message_view_install_past_time_cells_timeout (void) { #line 389 "mn-message-view.c" #define __GOB_FUNCTION__ "MN:Message:View::install_past_time_cells_timeout" { #line 139 "src/mn-message-view.gob" GTimeVal now; int timeout; g_get_current_time(&now); timeout = (G_USEC_PER_SEC - now.tv_usec) / 1000 + 1; past_time_cells_timeout_id = gdk_threads_add_timeout(timeout, self_update_past_time_cells_cb, NULL); }} #line 402 "mn-message-view.c" #undef __GOB_FUNCTION__ #line 149 "src/mn-message-view.gob" static gboolean mn_message_view_update_past_time_cells_cb (gpointer data) { #line 409 "mn-message-view.c" #define __GOB_FUNCTION__ "MN:Message:View::update_past_time_cells_cb" { #line 151 "src/mn-message-view.gob" time_t now; GList *l; now = mn_time(); MN_QUEUE_FOREACH(l, &past_time_cells) self_update_past_time_cell(l->data, now); self_install_past_time_cells_timeout(); return FALSE; /* remove source */ }} #line 424 "mn-message-view.c" #undef __GOB_FUNCTION__ #line 163 "src/mn-message-view.gob" static void mn_message_view_update_past_time_cell (PastTimeCell * pcell, time_t now) { #line 431 "mn-message-view.c" #define __GOB_FUNCTION__ "MN:Message:View::update_past_time_cell" #line 163 "src/mn-message-view.gob" g_return_if_fail (pcell != NULL); #line 435 "mn-message-view.c" { #line 165 "src/mn-message-view.gob" char *formatted; formatted = mn_format_past_time(pcell->past_time, now); mn_text_table_cell_set_text(MN_TEXT_TABLE(pcell->self), pcell->cell, formatted); g_free(formatted); }} #line 445 "mn-message-view.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-gmail-mailbox-properties.c0000644000175000001440000003124111015312646025231 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-gmail-mailbox-properties.h" #include "mn-gmail-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 25 "src/mn-gmail-mailbox-properties.gob" #include #include "mn-mailbox-properties.h" #include "mn-mailbox-properties-private.h" #include "mn-authenticated-mailbox-properties-private.h" #include "mn-util.h" #include "mn-properties-dialog.h" #include "mn-authenticated-mailbox.h" #include "mn-gmail-mailbox.h" #include "mn-stock.h" #line 38 "mn-gmail-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_GMAIL_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_GMAIL_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_GMAIL_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_GMAIL_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_GMAIL_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_GMAIL_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNGmailMailboxProperties Self; typedef MNGmailMailboxPropertiesClass SelfClass; /* here are local prototypes */ static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 85 "src/mn-gmail-mailbox-properties.gob" static void mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * class); #line 56 "mn-gmail-mailbox-properties.c" #line 94 "src/mn-gmail-mailbox-properties.gob" static void mn_gmail_mailbox_properties_init (MNGmailMailboxProperties * self); #line 59 "mn-gmail-mailbox-properties.c" #line 138 "src/mn-gmail-mailbox-properties.gob" static void mn_gmail_mailbox_properties_check_toggled_h (GtkToggleButton * togglebutton, gpointer user_data); #line 62 "mn-gmail-mailbox-properties.c" #line 149 "src/mn-gmail-mailbox-properties.gob" static void ___4_mn_gmail_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox); #line 65 "mn-gmail-mailbox-properties.c" #line 166 "src/mn-gmail-mailbox-properties.gob" static MNMailbox * ___5_mn_gmail_mailbox_properties_get_mailbox (MNMailboxProperties * properties); #line 68 "mn-gmail-mailbox-properties.c" enum { PROP_0, PROP_COMPLETE, PROP_DEFAULT_NAME }; /* pointer to the class of our parent */ static MNAuthenticatedMailboxPropertiesClass *parent_class = NULL; /* Short form macros */ #define self_check_toggled_h mn_gmail_mailbox_properties_check_toggled_h GType mn_gmail_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNGmailMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_gmail_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNGmailMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_gmail_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES, "MNGmailMailboxProperties", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNGmailMailboxProperties *)g_object_new(mn_gmail_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNGmailMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNGmailMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNGmailMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNGmailMailboxProperties *)g_object_new_valist (mn_gmail_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::finalize" MNGmailMailboxProperties *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX_PROPERTIES (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 46 "src/mn-gmail-mailbox-properties.gob" if(self->_priv->location) { g_free ((gpointer) self->_priv->location); self->_priv->location = NULL; } #line 134 "mn-gmail-mailbox-properties.c" } #undef __GOB_FUNCTION__ #line 85 "src/mn-gmail-mailbox-properties.gob" static void mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * class G_GNUC_UNUSED) { #line 142 "mn-gmail-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)class; g_type_class_add_private(class,sizeof(MNGmailMailboxPropertiesPrivate)); parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES); #line 149 "src/mn-gmail-mailbox-properties.gob" mn_mailbox_properties_class->set_mailbox = ___4_mn_gmail_mailbox_properties_set_mailbox; #line 166 "src/mn-gmail-mailbox-properties.gob" mn_mailbox_properties_class->get_mailbox = ___5_mn_gmail_mailbox_properties_get_mailbox; #line 155 "mn-gmail-mailbox-properties.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; { g_object_class_override_property (g_object_class, PROP_COMPLETE, "complete"); g_object_class_override_property (g_object_class, PROP_DEFAULT_NAME, "default_name"); } { #line 86 "src/mn-gmail-mailbox-properties.gob" MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "gmail"; p_class->stock_id = MN_STOCK_GMAIL; p_class->combo_label = "Gmail"; #line 175 "mn-gmail-mailbox-properties.c" } } #undef __GOB_FUNCTION__ #line 94 "src/mn-gmail-mailbox-properties.gob" static void mn_gmail_mailbox_properties_init (MNGmailMailboxProperties * self G_GNUC_UNUSED) { #line 183 "mn-gmail-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_GMAIL_MAILBOX_PROPERTIES,MNGmailMailboxPropertiesPrivate); { #line 95 "src/mn-gmail-mailbox-properties.gob" MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); MNAuthenticatedMailboxProperties *auth = MN_AUTHENTICATED_MAILBOX_PROPERTIES(self); GtkWidget *label_vbox; GtkWidget *hbox; gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->username_vbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->password_vbox, FALSE, FALSE, 0); /* translators: header capitalization */ label_vbox = mn_mailbox_properties_add_general_section(properties, _("Gmail Label")); selfp->label_check = gtk_check_button_new_with_mnemonic(_("_Restrict to this label:")); gtk_size_group_add_widget(properties->label_size_group, selfp->label_check); selfp->label_entry = gtk_entry_new(); gtk_widget_set_sensitive(selfp->label_entry, FALSE); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), selfp->label_check, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), selfp->label_entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(label_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show_all(label_vbox); properties->entries = mn_g_slist_append_elements(properties->entries, auth->username_entry, auth->password_entry, selfp->label_entry, NULL); g_signal_connect(selfp->label_check, "toggled", G_CALLBACK(self_check_toggled_h), self); g_object_connect(auth->username_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); g_object_connect(selfp->label_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); #line 230 "mn-gmail-mailbox-properties.c" } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::get_property" { MNGmailMailboxProperties *self G_GNUC_UNUSED; self = MN_GMAIL_MAILBOX_PROPERTIES (object); switch (property_id) { case PROP_COMPLETE: { #line 50 "src/mn-gmail-mailbox-properties.gob" gboolean complete; complete = mn_authenticated_mailbox_properties_is_complete(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self)); if (complete) { gboolean label_enabled; const char *label; label_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->label_check)); label = gtk_entry_get_text(GTK_ENTRY(selfp->label_entry)); if (label_enabled && ! *label) complete = FALSE; } g_value_set_boolean(VAL, complete); #line 268 "mn-gmail-mailbox-properties.c" } break; case PROP_DEFAULT_NAME: { #line 71 "src/mn-gmail-mailbox-properties.gob" const char *username; gboolean label_enabled; const char *label; username = gtk_entry_get_text(GTK_ENTRY(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self)->username_entry)); g_assert(*username != 0); label_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->label_check)); label = gtk_entry_get_text(GTK_ENTRY(selfp->label_entry)); g_value_take_string(VAL, mn_gmail_mailbox_build_name(username, label_enabled ? label : NULL)); #line 287 "mn-gmail-mailbox-properties.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 138 "src/mn-gmail-mailbox-properties.gob" static void mn_gmail_mailbox_properties_check_toggled_h (GtkToggleButton * togglebutton, gpointer user_data) { #line 308 "mn-gmail-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::check_toggled_h" { #line 140 "src/mn-gmail-mailbox-properties.gob" Self *self = user_data; gtk_widget_set_sensitive(selfp->label_entry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->label_check))); g_object_notify(G_OBJECT(self), "complete"); g_object_notify(G_OBJECT(self), "default-name"); }} #line 320 "mn-gmail-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 149 "src/mn-gmail-mailbox-properties.gob" static void ___4_mn_gmail_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox) #line 326 "mn-gmail-mailbox-properties.c" #define PARENT_HANDLER(___properties,___mailbox) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); } { #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::set_mailbox" { #line 151 "src/mn-gmail-mailbox-properties.gob" Self *self = SELF(properties); MNGmailMailbox *gmail_mailbox = MN_GMAIL_MAILBOX(mailbox); PARENT_HANDLER(properties, mailbox); selfp->location = g_strdup(gmail_mailbox->location); if (gmail_mailbox->label) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->label_check), TRUE); gtk_entry_set_text(GTK_ENTRY(selfp->label_entry), gmail_mailbox->label); } }} #line 348 "mn-gmail-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 166 "src/mn-gmail-mailbox-properties.gob" static MNMailbox * ___5_mn_gmail_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED) #line 355 "mn-gmail-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ ((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::get_mailbox" { #line 168 "src/mn-gmail-mailbox-properties.gob" Self *self = SELF(properties); MNMailbox *mailbox; mailbox = PARENT_HANDLER(properties); if (selfp->location) g_object_set(mailbox, MN_GMAIL_MAILBOX_PROP_LOCATION(selfp->location), NULL); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->label_check))) g_object_set(mailbox, MN_GMAIL_MAILBOX_PROP_LABEL((char *) gtk_entry_get_text(GTK_ENTRY(selfp->label_entry))), NULL); return mailbox; }} #line 378 "mn-gmail-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-pop3-mailbox-properties.h0000644000175000001440000000406311015312646025030 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-pi-mailbox-properties.h" #ifndef __MN_POP3_MAILBOX_PROPERTIES_H__ #define __MN_POP3_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_POP3_MAILBOX_PROPERTIES (mn_pop3_mailbox_properties_get_type()) #define MN_POP3_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_pop3_mailbox_properties_get_type(), MNPOP3MailboxProperties) #define MN_POP3_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_pop3_mailbox_properties_get_type(), MNPOP3MailboxProperties const) #define MN_POP3_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_pop3_mailbox_properties_get_type(), MNPOP3MailboxPropertiesClass) #define MN_IS_POP3_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_pop3_mailbox_properties_get_type ()) #define MN_POP3_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_pop3_mailbox_properties_get_type(), MNPOP3MailboxPropertiesClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_POP3_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_POP3_MAILBOX_PROPERTIES__ typedef struct _MNPOP3MailboxProperties MNPOP3MailboxProperties; #endif struct _MNPOP3MailboxProperties { MNPIMailboxProperties __parent__; }; /* * Class definition */ typedef struct _MNPOP3MailboxPropertiesClass MNPOP3MailboxPropertiesClass; struct _MNPOP3MailboxPropertiesClass { MNPIMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_pop3_mailbox_properties_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_POP3_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_POP3_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-system-vfs-mailbox-private.h0000644000175000001440000000045111015312647025543 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_SYSTEM_VFS_MAILBOX_PRIVATE_H__ #define __MN_SYSTEM_VFS_MAILBOX_PRIVATE_H__ #include "mn-system-vfs-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-base-mbox-mailbox-backend.gob.stamp0000644000175000001440000000000011015312645026644 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-evolution-server.h0000644000175000001440000001331711015312644023654 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_EVOLUTION_SERVER_H__ #define __MN_EVOLUTION_SERVER_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_EVOLUTION_SERVER (mn_evolution_server_get_type()) #define MN_EVOLUTION_SERVER(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_server_get_type(), MNEvolutionServer) #define MN_EVOLUTION_SERVER_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_server_get_type(), MNEvolutionServer const) #define MN_EVOLUTION_SERVER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_evolution_server_get_type(), MNEvolutionServerClass) #define MN_IS_EVOLUTION_SERVER(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_evolution_server_get_type ()) #define MN_EVOLUTION_SERVER_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_evolution_server_get_type(), MNEvolutionServerClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_EVOLUTION_SERVER__ #define __TYPEDEF_MN_EVOLUTION_SERVER__ typedef struct _MNEvolutionServer MNEvolutionServer; #endif struct _MNEvolutionServer { GObject __parent__; }; /* * Class definition */ typedef struct _MNEvolutionServerClass MNEvolutionServerClass; struct _MNEvolutionServerClass { GObjectClass __parent__; /*signal*/void (* folder_changed) (MNEvolutionServer * self, const char * uri); /*signal*/void (* message_reading) (MNEvolutionServer * self, const char * uri); }; /* * Public methods */ GType mn_evolution_server_get_type (void) G_GNUC_CONST; #line 69 "src/mn-evolution-server.gob" void mn_evolution_server_folder_changed (MNEvolutionServer * self, const char * uri); #line 58 "mn-evolution-server.h" #line 72 "src/mn-evolution-server.gob" void mn_evolution_server_message_reading (MNEvolutionServer * self, const char * uri); #line 62 "mn-evolution-server.h" #line 374 "src/mn-evolution-server.gob" MNEvolutionServer * mn_evolution_server_new (void); #line 65 "mn-evolution-server.h" /* * Signal connection wrapper macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define mn_evolution_server_connect__folder_changed(object,func,data) g_signal_connect(MN_EVOLUTION_SERVER(__extension__ ({MNEvolutionServer *___object = (object); ___object; })),"folder_changed",(GCallback) __extension__ ({void (* ___folder_changed) (MNEvolutionServer * ___fake___self, const char * ___fake___uri, gpointer ___data ) = (func); ___folder_changed; }), (data)) #define mn_evolution_server_connect_after__folder_changed(object,func,data) g_signal_connect_after(MN_EVOLUTION_SERVER(__extension__ ({MNEvolutionServer *___object = (object); ___object; })),"folder_changed",(GCallback) __extension__ ({void (* ___folder_changed) (MNEvolutionServer * ___fake___self, const char * ___fake___uri, gpointer ___data ) = (func); ___folder_changed; }), (data)) #define mn_evolution_server_connect_data__folder_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_EVOLUTION_SERVER(__extension__ ({MNEvolutionServer *___object = (object); ___object; })),"folder_changed",(GCallback) __extension__ ({void (* ___folder_changed) (MNEvolutionServer * ___fake___self, const char * ___fake___uri, gpointer ___data ) = (func); ___folder_changed; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_evolution_server_connect__message_reading(object,func,data) g_signal_connect(MN_EVOLUTION_SERVER(__extension__ ({MNEvolutionServer *___object = (object); ___object; })),"message_reading",(GCallback) __extension__ ({void (* ___message_reading) (MNEvolutionServer * ___fake___self, const char * ___fake___uri, gpointer ___data ) = (func); ___message_reading; }), (data)) #define mn_evolution_server_connect_after__message_reading(object,func,data) g_signal_connect_after(MN_EVOLUTION_SERVER(__extension__ ({MNEvolutionServer *___object = (object); ___object; })),"message_reading",(GCallback) __extension__ ({void (* ___message_reading) (MNEvolutionServer * ___fake___self, const char * ___fake___uri, gpointer ___data ) = (func); ___message_reading; }), (data)) #define mn_evolution_server_connect_data__message_reading(object,func,data,destroy_data,flags) g_signal_connect_data(MN_EVOLUTION_SERVER(__extension__ ({MNEvolutionServer *___object = (object); ___object; })),"message_reading",(GCallback) __extension__ ({void (* ___message_reading) (MNEvolutionServer * ___fake___self, const char * ___fake___uri, gpointer ___data ) = (func); ___message_reading; }), (data), (destroy_data), (GConnectFlags)(flags)) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define mn_evolution_server_connect__folder_changed(object,func,data) g_signal_connect(MN_EVOLUTION_SERVER(object),"folder_changed",(GCallback)(func),(data)) #define mn_evolution_server_connect_after__folder_changed(object,func,data) g_signal_connect_after(MN_EVOLUTION_SERVER(object),"folder_changed",(GCallback)(func),(data)) #define mn_evolution_server_connect_data__folder_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_EVOLUTION_SERVER(object),"folder_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_evolution_server_connect__message_reading(object,func,data) g_signal_connect(MN_EVOLUTION_SERVER(object),"message_reading",(GCallback)(func),(data)) #define mn_evolution_server_connect_after__message_reading(object,func,data) g_signal_connect_after(MN_EVOLUTION_SERVER(object),"message_reading",(GCallback)(func),(data)) #define mn_evolution_server_connect_data__message_reading(object,func,data,destroy_data,flags) g_signal_connect_data(MN_EVOLUTION_SERVER(object),"message_reading",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-properties-dialog.c0000644000175000001440000004766611015312645023767 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-properties-dialog.h" #include "mn-properties-dialog-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 28 "src/mn-properties-dialog.gob" #include #include #include "mn-conf.h" #include "mn-util.h" #include "mn-mailbox-view.h" #include "mn-shell.h" #include "mn-file-chooser-button.h" #include "mn-sound-file-chooser-dialog.h" #include "mn-test-mailbox.h" #include "mn-non-linear-range.h" static const MNNonLinearRangeBlock expiration_blocks[] = { { MN_SECS(1), MN_SECS(10), MN_SECS(1) }, { MN_SECS(15), MN_SECS(60), MN_SECS(5) }, { MN_MINS(2), MN_MINS(10), MN_MINS(1) }, { MN_MINS(15), MN_MINS(60), MN_MINS(5) } }; #line 46 "mn-properties-dialog.c" /* self casting macros */ #define SELF(x) MN_PROPERTIES_DIALOG(x) #define SELF_CONST(x) MN_PROPERTIES_DIALOG_CONST(x) #define IS_SELF(x) MN_IS_PROPERTIES_DIALOG(x) #define TYPE_SELF MN_TYPE_PROPERTIES_DIALOG #define SELF_CLASS(x) MN_PROPERTIES_DIALOG_CLASS(x) #define SELF_GET_CLASS(x) MN_PROPERTIES_DIALOG_GET_CLASS(x) /* self typedefs */ typedef MNPropertiesDialog Self; typedef MNPropertiesDialogClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-properties-dialog.gob" static void mn_properties_dialog_class_init (MNPropertiesDialogClass * c); #line 63 "mn-properties-dialog.c" #line 82 "src/mn-properties-dialog.gob" static void mn_properties_dialog_init (MNPropertiesDialog * self); #line 66 "mn-properties-dialog.c" #line 178 "src/mn-properties-dialog.gob" static GtkFileChooserDialog * mn_properties_dialog_play_sound_file_chooser_create_dialog_cb (gpointer data); #line 69 "mn-properties-dialog.c" #line 184 "src/mn-properties-dialog.gob" static void mn_properties_dialog_remove_test_mailbox (MNPropertiesDialog * self); #line 72 "mn-properties-dialog.c" #line 195 "src/mn-properties-dialog.gob" static void mn_properties_dialog_response_h (MNPropertiesDialog * self, int response, gpointer user_data); #line 75 "mn-properties-dialog.c" #line 222 "src/mn-properties-dialog.gob" static void mn_properties_dialog_update_selected_label (MNPropertiesDialog * self); #line 78 "mn-properties-dialog.c" #line 245 "src/mn-properties-dialog.gob" static void mn_properties_dialog_update_sensitivity (MNPropertiesDialog * self); #line 81 "mn-properties-dialog.c" /* pointer to the class of our parent */ static MNDialogClass *parent_class = NULL; /* Short form macros */ #define self_play_sound_file_chooser_create_dialog_cb mn_properties_dialog_play_sound_file_chooser_create_dialog_cb #define self_remove_test_mailbox mn_properties_dialog_remove_test_mailbox #define self_response_h mn_properties_dialog_response_h #define self_update_selected_label mn_properties_dialog_update_selected_label #define self_update_sensitivity mn_properties_dialog_update_sensitivity #define self_toggled_h mn_properties_dialog_toggled_h #define self_add_clicked_h mn_properties_dialog_add_clicked_h #define self_remove_clicked_h mn_properties_dialog_remove_clicked_h #define self_properties_clicked_h mn_properties_dialog_properties_clicked_h #define self_popups_expiration_format_value_h mn_properties_dialog_popups_expiration_format_value_h #define self_test_messages_toggled_h mn_properties_dialog_test_messages_toggled_h GType mn_properties_dialog_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNPropertiesDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_properties_dialog_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNPropertiesDialog), 0 /* n_preallocs */, (GInstanceInitFunc) mn_properties_dialog_init, NULL }; type = g_type_register_static (MN_TYPE_DIALOG, "MNPropertiesDialog", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNPropertiesDialog *)g_object_new(mn_properties_dialog_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNPropertiesDialog * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNPropertiesDialog * GET_NEW_VARG (const char *first, ...) { MNPropertiesDialog *ret; va_list ap; va_start (ap, first); ret = (MNPropertiesDialog *)g_object_new_valist (mn_properties_dialog_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Properties:Dialog::finalize" MNPropertiesDialog *self G_GNUC_UNUSED = MN_PROPERTIES_DIALOG (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #define test_mailbox (self->_priv->test_mailbox) #define VAR test_mailbox { #line 80 "src/mn-properties-dialog.gob" self_remove_test_mailbox(self); } #line 154 "mn-properties-dialog.c" memset(&test_mailbox, 0, sizeof(test_mailbox)); #undef VAR #undef test_mailbox } #undef __GOB_FUNCTION__ static void mn_properties_dialog_class_init (MNPropertiesDialogClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Properties:Dialog::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNPropertiesDialogPrivate)); parent_class = g_type_class_ref (MN_TYPE_DIALOG); g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 82 "src/mn-properties-dialog.gob" static void mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED) { #line 178 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_PROPERTIES_DIALOG,MNPropertiesDialogPrivate); { #line 83 "src/mn-properties-dialog.gob" GtkTreeSelection *selection; mn_container_create_interface(GTK_CONTAINER(self), PKGDATADIR G_DIR_SEPARATOR_S "properties-dialog.glade", "main_vbox", "mn_properties_dialog_", "notebook", &selfp->notebook, "play_sound_hbox", &selfp->play_sound_hbox, "play_sound_check", &selfp->play_sound_check, "scrolled", &selfp->scrolled, "selected_label", &selfp->selected_label, "add", &selfp->add, "remove", &selfp->remove, "properties", &selfp->properties, "icon_action_mail_reader_radio", &selfp->icon_action_mail_reader_radio, "icon_action_open_latest_message_radio", &selfp->icon_action_open_latest_message_radio, "icon_action_consider_new_mail_as_read_radio", &selfp->icon_action_consider_new_mail_as_read_radio, "icon_action_update_radio", &selfp->icon_action_update_radio, "popups_enable_check", &selfp->popups_enable_check, "popups_position_section_label", &selfp->popups_position_section_label, "popups_position_attached_radio", &selfp->popups_position_attached_radio, "popups_position_free_radio", &selfp->popups_position_free_radio, "popups_expiration_section_label", &selfp->popups_expiration_section_label, "popups_expiration_default_radio", &selfp->popups_expiration_default_radio, "popups_expiration_never_radio", &selfp->popups_expiration_never_radio, "popups_expiration_after_radio", &selfp->popups_expiration_after_radio, "popups_expiration_scale", &selfp->popups_expiration_scale, NULL); /* translators: header capitalization */ gtk_window_set_title(GTK_WINDOW(self), _("Mail Notification Properties")); gtk_dialog_add_buttons(GTK_DIALOG(self), GTK_STOCK_HELP, GTK_RESPONSE_HELP, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); selfp->play_sound_file_chooser_button = mn_file_chooser_button_new(self_play_sound_file_chooser_create_dialog_cb, NULL); gtk_box_pack_start(GTK_BOX(selfp->play_sound_hbox), selfp->play_sound_file_chooser_button, TRUE, TRUE, 0); gtk_widget_show(selfp->play_sound_file_chooser_button); selfp->list = mn_mailbox_view_new(); gtk_container_add(GTK_CONTAINER(selfp->scrolled), selfp->list); gtk_widget_show(selfp->list); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(selfp->list)); g_object_connect(selection, "swapped-signal::changed", self_update_selected_label, self, "swapped-signal::changed", self_update_sensitivity, self, NULL); mn_setup_dnd(selfp->scrolled); mn_non_linear_range_setup_static(GTK_RANGE(selfp->popups_expiration_scale), expiration_blocks, G_N_ELEMENTS(expiration_blocks)); mn_conf_link_window(GTK_WINDOW(self), MN_CONF_PROPERTIES_DIALOG); mn_conf_link_object(selfp->play_sound_check, MN_CONF_SOUNDS_NEW_MAIL_ENABLED, "active"); mn_conf_link_object(selfp->play_sound_file_chooser_button, MN_CONF_SOUNDS_NEW_MAIL_FILE, "filename"); mn_conf_link_object(selfp->popups_enable_check, MN_CONF_POPUPS_ENABLED, "active"); mn_conf_link_non_linear_range(GTK_RANGE(selfp->popups_expiration_scale), MN_CONF_POPUPS_EXPIRATION_DELAY); mn_conf_link_radio_group_to_enum(MN_TYPE_ACTION, MN_CONF_CLICK_ACTION, selfp->icon_action_mail_reader_radio, MN_ACTION_LAUNCH_MAIL_READER, selfp->icon_action_open_latest_message_radio, MN_ACTION_OPEN_LATEST_MESSAGE, selfp->icon_action_consider_new_mail_as_read_radio, MN_ACTION_CONSIDER_NEW_MAIL_AS_READ, selfp->icon_action_update_radio, MN_ACTION_UPDATE_MAIL_STATUS, NULL); mn_conf_link_radio_group_to_enum(MN_TYPE_POPUP_POSITION, MN_CONF_POPUPS_POSITION, selfp->popups_position_attached_radio, MN_POPUP_POSITION_ATTACHED, selfp->popups_position_free_radio, MN_POPUP_POSITION_FREE, NULL); mn_conf_link_radio_group_to_enum(MN_TYPE_EXPIRATION_ENABLED, MN_CONF_POPUPS_EXPIRATION_ENABLED, selfp->popups_expiration_default_radio, MN_EXPIRATION_ENABLED_DEFAULT, selfp->popups_expiration_never_radio, MN_EXPIRATION_ENABLED_FALSE, selfp->popups_expiration_after_radio, MN_EXPIRATION_ENABLED_TRUE, NULL); self_update_selected_label(self); self_update_sensitivity(self); /* * HIG chapter 3: * "When opening a dialog, provide initial keyboard focus to the * component that you expect users to operate first. This focus is * especially important for users who must use a keyboard to * navigate your application." */ gtk_widget_grab_focus(selfp->add); g_signal_connect(self, "response", G_CALLBACK(self_response_h), NULL); #line 277 "mn-properties-dialog.c" } } #undef __GOB_FUNCTION__ #line 178 "src/mn-properties-dialog.gob" static GtkFileChooserDialog * mn_properties_dialog_play_sound_file_chooser_create_dialog_cb (gpointer data) { #line 288 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::play_sound_file_chooser_create_dialog_cb" { #line 180 "src/mn-properties-dialog.gob" return GTK_FILE_CHOOSER_DIALOG(mn_sound_file_chooser_dialog_new()); }} #line 295 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ #line 184 "src/mn-properties-dialog.gob" static void mn_properties_dialog_remove_test_mailbox (MNPropertiesDialog * self) { #line 302 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::remove_test_mailbox" #line 184 "src/mn-properties-dialog.gob" g_return_if_fail (self != NULL); #line 184 "src/mn-properties-dialog.gob" g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self)); #line 308 "mn-properties-dialog.c" { #line 186 "src/mn-properties-dialog.gob" if (selfp->test_mailbox) { mn_mailboxes_remove(mn_shell->mailboxes, selfp->test_mailbox); g_object_unref(selfp->test_mailbox); selfp->test_mailbox = NULL; } }} #line 319 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ #line 195 "src/mn-properties-dialog.gob" static void mn_properties_dialog_response_h (MNPropertiesDialog * self, int response, gpointer user_data) { #line 326 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::response_h" #line 195 "src/mn-properties-dialog.gob" g_return_if_fail (self != NULL); #line 195 "src/mn-properties-dialog.gob" g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self)); #line 332 "mn-properties-dialog.c" { #line 197 "src/mn-properties-dialog.gob" switch (response) { case GTK_RESPONSE_HELP: { int current_page; static const char *sections[] = { "properties-general", "properties-status-icon", "properties-message-popups" }; current_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(selfp->notebook)); g_assert(current_page >= 0 && current_page < G_N_ELEMENTS(sections)); mn_show_help(GTK_WINDOW(self), sections[current_page]); break; } case GTK_RESPONSE_CLOSE: gtk_widget_destroy(GTK_WIDGET(self)); break; } }} #line 359 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ #line 222 "src/mn-properties-dialog.gob" static void mn_properties_dialog_update_selected_label (MNPropertiesDialog * self) { #line 366 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::update_selected_label" #line 222 "src/mn-properties-dialog.gob" g_return_if_fail (self != NULL); #line 222 "src/mn-properties-dialog.gob" g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self)); #line 372 "mn-properties-dialog.c" { #line 224 "src/mn-properties-dialog.gob" GtkTreeSelection *selection; int n_rows; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(selfp->list)); n_rows = gtk_tree_selection_count_selected_rows(selection); if (n_rows == 0) gtk_label_set_text(GTK_LABEL(selfp->selected_label), _("No mailbox selected.")); else { char *str; str = g_strdup_printf(ngettext("%i mailbox selected.", "%i mailboxes selected.", n_rows), n_rows); gtk_label_set_text(GTK_LABEL(selfp->selected_label), str); g_free(str); } }} #line 395 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ #line 245 "src/mn-properties-dialog.gob" static void mn_properties_dialog_update_sensitivity (MNPropertiesDialog * self) { #line 402 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::update_sensitivity" #line 245 "src/mn-properties-dialog.gob" g_return_if_fail (self != NULL); #line 245 "src/mn-properties-dialog.gob" g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self)); #line 408 "mn-properties-dialog.c" { #line 247 "src/mn-properties-dialog.gob" gboolean play_sound_enabled; GtkTreeSelection *selection; gboolean has_selection; gboolean popups_enabled; gboolean popups_expiration_after_enabled; play_sound_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->play_sound_check)); gtk_widget_set_sensitive(selfp->play_sound_file_chooser_button, play_sound_enabled); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(selfp->list)); has_selection = gtk_tree_selection_count_selected_rows(selection) > 0; gtk_widget_set_sensitive(selfp->remove, has_selection); gtk_widget_set_sensitive(selfp->properties, has_selection); popups_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->popups_enable_check)); popups_expiration_after_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->popups_expiration_after_radio)); gtk_widget_set_sensitive(selfp->popups_position_section_label, popups_enabled); gtk_widget_set_sensitive(selfp->popups_position_attached_radio, popups_enabled); gtk_widget_set_sensitive(selfp->popups_position_free_radio, popups_enabled); gtk_widget_set_sensitive(selfp->popups_expiration_section_label, popups_enabled); gtk_widget_set_sensitive(selfp->popups_expiration_default_radio, popups_enabled); gtk_widget_set_sensitive(selfp->popups_expiration_never_radio, popups_enabled); gtk_widget_set_sensitive(selfp->popups_expiration_after_radio, popups_enabled); gtk_widget_set_sensitive(selfp->popups_expiration_scale, popups_enabled && popups_expiration_after_enabled); }} #line 440 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ #line 279 "src/mn-properties-dialog.gob" void mn_properties_dialog_toggled_h (MNPropertiesDialog * self, GtkToggleButton * button) { #line 447 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::toggled_h" #line 279 "src/mn-properties-dialog.gob" g_return_if_fail (self != NULL); #line 279 "src/mn-properties-dialog.gob" g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self)); #line 453 "mn-properties-dialog.c" { #line 281 "src/mn-properties-dialog.gob" self_update_sensitivity(self); }} #line 459 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ #line 285 "src/mn-properties-dialog.gob" void mn_properties_dialog_add_clicked_h (MNPropertiesDialog * self, GtkButton * button) { #line 466 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::add_clicked_h" #line 285 "src/mn-properties-dialog.gob" g_return_if_fail (self != NULL); #line 285 "src/mn-properties-dialog.gob" g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self)); #line 472 "mn-properties-dialog.c" { #line 287 "src/mn-properties-dialog.gob" mn_mailbox_view_activate_add(MN_MAILBOX_VIEW(selfp->list)); }} #line 478 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ #line 291 "src/mn-properties-dialog.gob" void mn_properties_dialog_remove_clicked_h (MNPropertiesDialog * self, GtkButton * button) { #line 485 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::remove_clicked_h" #line 291 "src/mn-properties-dialog.gob" g_return_if_fail (self != NULL); #line 291 "src/mn-properties-dialog.gob" g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self)); #line 491 "mn-properties-dialog.c" { #line 293 "src/mn-properties-dialog.gob" mn_mailbox_view_activate_remove(MN_MAILBOX_VIEW(selfp->list)); }} #line 497 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ #line 297 "src/mn-properties-dialog.gob" void mn_properties_dialog_properties_clicked_h (MNPropertiesDialog * self, GtkButton * button) { #line 504 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::properties_clicked_h" #line 297 "src/mn-properties-dialog.gob" g_return_if_fail (self != NULL); #line 297 "src/mn-properties-dialog.gob" g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self)); #line 510 "mn-properties-dialog.c" { #line 299 "src/mn-properties-dialog.gob" mn_mailbox_view_activate_properties(MN_MAILBOX_VIEW(selfp->list)); }} #line 516 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ #line 303 "src/mn-properties-dialog.gob" char * mn_properties_dialog_popups_expiration_format_value_h (MNPropertiesDialog * self, double arg, GtkScale * scale) { #line 523 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::popups_expiration_format_value_h" #line 303 "src/mn-properties-dialog.gob" g_return_val_if_fail (self != NULL, (char * )0); #line 303 "src/mn-properties-dialog.gob" g_return_val_if_fail (MN_IS_PROPERTIES_DIALOG (self), (char * )0); #line 529 "mn-properties-dialog.c" { #line 305 "src/mn-properties-dialog.gob" return mn_format_seconds(mn_non_linear_range_get_value(GTK_RANGE(scale))); }} #line 535 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ #line 309 "src/mn-properties-dialog.gob" void mn_properties_dialog_test_messages_toggled_h (MNPropertiesDialog * self, GtkToggleButton * button) { #line 542 "mn-properties-dialog.c" #define __GOB_FUNCTION__ "MN:Properties:Dialog::test_messages_toggled_h" #line 309 "src/mn-properties-dialog.gob" g_return_if_fail (self != NULL); #line 309 "src/mn-properties-dialog.gob" g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self)); #line 548 "mn-properties-dialog.c" { #line 311 "src/mn-properties-dialog.gob" if (gtk_toggle_button_get_active(button)) { if (! selfp->test_mailbox) { selfp->test_mailbox = mn_test_mailbox_new(); mn_mailbox_seal(selfp->test_mailbox); mn_mailboxes_add(mn_shell->mailboxes, selfp->test_mailbox); } } else self_remove_test_mailbox(self); }} #line 564 "mn-properties-dialog.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-text-table.c0000644000175000001440000004542211015312645022373 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-text-table.h" #include "mn-text-table-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 36 "src/mn-text-table.gob" #include "mn-util.h" #define HORIZONTAL_SPACING 12 #define VERTICAL_SPACING 0 #define COLUMN_SIZE(self, column) \ g_array_index((self)->_priv->column_sizes, int, (column)) struct _MNTextTableCell { PangoLayout *layout; /* NULL for a blank cell */ gboolean dirty; int width; int height; }; #line 44 "mn-text-table.c" /* self casting macros */ #define SELF(x) MN_TEXT_TABLE(x) #define SELF_CONST(x) MN_TEXT_TABLE_CONST(x) #define IS_SELF(x) MN_IS_TEXT_TABLE(x) #define TYPE_SELF MN_TYPE_TEXT_TABLE #define SELF_CLASS(x) MN_TEXT_TABLE_CLASS(x) #define SELF_GET_CLASS(x) MN_TEXT_TABLE_GET_CLASS(x) /* self typedefs */ typedef MNTextTable Self; typedef MNTextTableClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-text-table.gob" static void mn_text_table_class_init (MNTextTableClass * c); #line 61 "mn-text-table.c" #line 79 "src/mn-text-table.gob" static void mn_text_table_init (MNTextTable * self); #line 64 "mn-text-table.c" #line 89 "src/mn-text-table.gob" static void mn_text_table_row_free (Row * row); #line 67 "mn-text-table.c" #line 96 "src/mn-text-table.gob" static void mn_text_table_cell_free (MNTextTableCell * cell); #line 70 "mn-text-table.c" #line 104 "src/mn-text-table.gob" static void ___4_mn_text_table_size_request (GtkWidget * widget, GtkRequisition * requisition); #line 73 "mn-text-table.c" #line 115 "src/mn-text-table.gob" static gboolean ___5_mn_text_table_expose_event (GtkWidget * widget, GdkEventExpose * event); #line 76 "mn-text-table.c" #line 165 "src/mn-text-table.gob" static void mn_text_table_set_dirty (MNTextTable * self); #line 79 "mn-text-table.c" #line 175 "src/mn-text-table.gob" static void mn_text_table_context_changed (MNTextTable * self); #line 82 "mn-text-table.c" #line 200 "src/mn-text-table.gob" static void mn_text_table_relayout (MNTextTable * self); #line 85 "mn-text-table.c" static void ___real_mn_text_table_clear (MNTextTable * self); #line 317 "src/mn-text-table.gob" static void mn_text_table_append_cell_real (MNTextTable * self, MNTextTableCell * cell); #line 89 "mn-text-table.c" /* pointer to the class of our parent */ static GtkWidgetClass *parent_class = NULL; /* Short form macros */ #define self_row_free mn_text_table_row_free #define self_cell_free mn_text_table_cell_free #define self_set_dirty mn_text_table_set_dirty #define self_context_changed mn_text_table_context_changed #define self_relayout mn_text_table_relayout #define self_clear mn_text_table_clear #define self_append_text_cell mn_text_table_append_text_cell #define self_append_text_cell_from_markup mn_text_table_append_text_cell_from_markup #define self_append_text_cell_from_layout mn_text_table_append_text_cell_from_layout #define self_append_blank_cell mn_text_table_append_blank_cell #define self_append_cell_real mn_text_table_append_cell_real #define self_cell_set_text mn_text_table_cell_set_text #define self_line_break mn_text_table_line_break GType mn_text_table_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNTextTableClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_text_table_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNTextTable), 0 /* n_preallocs */, (GInstanceInitFunc) mn_text_table_init, NULL }; type = g_type_register_static (GTK_TYPE_WIDGET, "MNTextTable", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNTextTable *)g_object_new(mn_text_table_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNTextTable * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNTextTable * GET_NEW_VARG (const char *first, ...) { MNTextTable *ret; va_list ap; va_start (ap, first); ret = (MNTextTable *)g_object_new_valist (mn_text_table_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Text:Table::finalize" MNTextTable *self G_GNUC_UNUSED = MN_TEXT_TABLE (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #define rows (self->_priv->rows) #define VAR rows { #line 68 "src/mn-text-table.gob" mn_g_ptr_array_free_deep_custom(VAR, (GFunc) self_row_free, NULL); } #line 164 "mn-text-table.c" memset(&rows, 0, sizeof(rows)); #undef VAR #undef rows #define column_sizes (self->_priv->column_sizes) #define VAR column_sizes { #line 71 "src/mn-text-table.gob" g_array_free(VAR, TRUE); } #line 173 "mn-text-table.c" memset(&column_sizes, 0, sizeof(column_sizes)); #undef VAR #undef column_sizes } #undef __GOB_FUNCTION__ static void mn_text_table_class_init (MNTextTableClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Text:Table::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; GtkWidgetClass *gtk_widget_class = (GtkWidgetClass *)c; g_type_class_add_private(c,sizeof(MNTextTablePrivate)); parent_class = g_type_class_ref (GTK_TYPE_WIDGET); #line 104 "src/mn-text-table.gob" gtk_widget_class->size_request = ___4_mn_text_table_size_request; #line 115 "src/mn-text-table.gob" gtk_widget_class->expose_event = ___5_mn_text_table_expose_event; #line 257 "src/mn-text-table.gob" c->clear = ___real_mn_text_table_clear; #line 197 "mn-text-table.c" g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 79 "src/mn-text-table.gob" static void mn_text_table_init (MNTextTable * self G_GNUC_UNUSED) { #line 205 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_TEXT_TABLE,MNTextTablePrivate); #line 67 "src/mn-text-table.gob" self->_priv->rows = g_ptr_array_new(); #line 210 "mn-text-table.c" #line 70 "src/mn-text-table.gob" self->_priv->column_sizes = g_array_new(FALSE, TRUE, sizeof(int)); #line 213 "mn-text-table.c" #line 71 "src/mn-text-table.gob" self->_priv->dirty = TRUE; #line 216 "mn-text-table.c" { #line 80 "src/mn-text-table.gob" GTK_WIDGET_SET_FLAGS(self, GTK_NO_WINDOW); g_object_connect(self, "swapped-signal::style-set", self_context_changed, self, "swapped-signal::direction-changed", self_context_changed, self, NULL); #line 227 "mn-text-table.c" } } #undef __GOB_FUNCTION__ #line 89 "src/mn-text-table.gob" static void mn_text_table_row_free (Row * row) { #line 238 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::row_free" #line 89 "src/mn-text-table.gob" g_return_if_fail (row != NULL); #line 242 "mn-text-table.c" { #line 91 "src/mn-text-table.gob" mn_g_ptr_array_free_deep_custom(row->cells, (GFunc) self_cell_free, NULL); g_free(row); }} #line 249 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 96 "src/mn-text-table.gob" static void mn_text_table_cell_free (MNTextTableCell * cell) { #line 256 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::cell_free" #line 96 "src/mn-text-table.gob" g_return_if_fail (cell != NULL); #line 260 "mn-text-table.c" { #line 98 "src/mn-text-table.gob" if (cell->layout) g_object_unref(cell->layout); g_free(cell); }} #line 268 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 104 "src/mn-text-table.gob" static void ___4_mn_text_table_size_request (GtkWidget * widget G_GNUC_UNUSED, GtkRequisition * requisition) #line 274 "mn-text-table.c" #define PARENT_HANDLER(___widget,___requisition) \ { if(GTK_WIDGET_CLASS(parent_class)->size_request) \ (* GTK_WIDGET_CLASS(parent_class)->size_request)(___widget,___requisition); } { #define __GOB_FUNCTION__ "MN:Text:Table::size_request" { #line 106 "src/mn-text-table.gob" Self *self = SELF(widget); self_relayout(self); requisition->width = selfp->width; requisition->height = selfp->height; }} #line 290 "mn-text-table.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 115 "src/mn-text-table.gob" static gboolean ___5_mn_text_table_expose_event (GtkWidget * widget G_GNUC_UNUSED, GdkEventExpose * event) #line 297 "mn-text-table.c" #define PARENT_HANDLER(___widget,___event) \ ((GTK_WIDGET_CLASS(parent_class)->expose_event)? \ (* GTK_WIDGET_CLASS(parent_class)->expose_event)(___widget,___event): \ ((gboolean )0)) { #define __GOB_FUNCTION__ "MN:Text:Table::expose_event" { #line 117 "src/mn-text-table.gob" Self *self = SELF(widget); int i; int y = widget->allocation.y; if (! GTK_WIDGET_DRAWABLE(widget)) return FALSE; self_relayout(self); MN_ARRAY_FOREACH(i, selfp->rows) { Row *row = g_ptr_array_index(selfp->rows, i); int j; int x = widget->allocation.x; int column = 0; MN_ARRAY_FOREACH(j, row->cells) { MNTextTableCell *cell = g_ptr_array_index(row->cells, j); if (cell->layout) gtk_paint_layout(widget->style, widget->window, GTK_WIDGET_STATE(widget), FALSE, &event->area, widget, NULL, x, y + row->height - cell->height, cell->layout); x += COLUMN_SIZE(self, column); if (j < row->cells->len - 1) x += HORIZONTAL_SPACING; column++; } y += row->height; if (i < selfp->rows->len - 1) y += VERTICAL_SPACING; } return FALSE; }} #line 353 "mn-text-table.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 165 "src/mn-text-table.gob" static void mn_text_table_set_dirty (MNTextTable * self) { #line 361 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::set_dirty" #line 165 "src/mn-text-table.gob" g_return_if_fail (self != NULL); #line 165 "src/mn-text-table.gob" g_return_if_fail (MN_IS_TEXT_TABLE (self)); #line 367 "mn-text-table.c" { #line 167 "src/mn-text-table.gob" if (! selfp->dirty) { selfp->dirty = TRUE; gtk_widget_queue_resize(GTK_WIDGET(self)); } }} #line 377 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 175 "src/mn-text-table.gob" static void mn_text_table_context_changed (MNTextTable * self) { #line 384 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::context_changed" #line 175 "src/mn-text-table.gob" g_return_if_fail (self != NULL); #line 175 "src/mn-text-table.gob" g_return_if_fail (MN_IS_TEXT_TABLE (self)); #line 390 "mn-text-table.c" { #line 177 "src/mn-text-table.gob" int i; MN_ARRAY_FOREACH(i, selfp->rows) { Row *row = g_ptr_array_index(selfp->rows, i); int j; MN_ARRAY_FOREACH(j, row->cells) { MNTextTableCell *cell = g_ptr_array_index(row->cells, j); if (cell->layout) { pango_layout_context_changed(cell->layout); cell->dirty = TRUE; } } } self_set_dirty(self); }} #line 415 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 200 "src/mn-text-table.gob" static void mn_text_table_relayout (MNTextTable * self) { #line 422 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::relayout" #line 200 "src/mn-text-table.gob" g_return_if_fail (self != NULL); #line 200 "src/mn-text-table.gob" g_return_if_fail (MN_IS_TEXT_TABLE (self)); #line 428 "mn-text-table.c" { #line 202 "src/mn-text-table.gob" int i; if (! selfp->dirty) return; selfp->width = 0; selfp->height = 0; MN_ARRAY_FOREACH(i, selfp->column_sizes) COLUMN_SIZE(self, i) = 0; MN_ARRAY_FOREACH(i, selfp->rows) { Row *row = g_ptr_array_index(selfp->rows, i); int j; row->height = 0; MN_ARRAY_FOREACH(j, row->cells) { MNTextTableCell *cell = g_ptr_array_index(row->cells, j); int n_columns = j + 1; if (cell->dirty) { g_assert(cell->layout != NULL); pango_layout_get_pixel_size(cell->layout, &cell->width, &cell->height); cell->dirty = FALSE; } if (n_columns > selfp->column_sizes->len) g_array_set_size(selfp->column_sizes, n_columns); if (cell->width > COLUMN_SIZE(self, j)) COLUMN_SIZE(self, j) = cell->width; if (cell->height > row->height) row->height = cell->height; } selfp->height += row->height; } MN_ARRAY_FOREACH(i, selfp->column_sizes) selfp->width += COLUMN_SIZE(self, i); if (selfp->column_sizes->len > 1) selfp->width += HORIZONTAL_SPACING * (selfp->column_sizes->len - 1); if (selfp->rows->len > 1) selfp->height += VERTICAL_SPACING * (selfp->rows->len - 1); selfp->dirty = FALSE; }} #line 485 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 257 "src/mn-text-table.gob" void mn_text_table_clear (MNTextTable * self) { #line 492 "mn-text-table.c" MNTextTableClass *klass; #line 257 "src/mn-text-table.gob" g_return_if_fail (self != NULL); #line 257 "src/mn-text-table.gob" g_return_if_fail (MN_IS_TEXT_TABLE (self)); #line 498 "mn-text-table.c" klass = MN_TEXT_TABLE_GET_CLASS(self); if(klass->clear) (*klass->clear)(self); } #line 257 "src/mn-text-table.gob" static void ___real_mn_text_table_clear (MNTextTable * self G_GNUC_UNUSED) { #line 508 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::clear" { #line 259 "src/mn-text-table.gob" mn_g_ptr_array_free_deep_custom(selfp->rows, (GFunc) self_row_free, NULL); selfp->rows = g_ptr_array_new(); g_array_set_size(selfp->column_sizes, 0); selfp->row = NULL; self_set_dirty(self); }} #line 522 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 270 "src/mn-text-table.gob" MNTextTableCell * mn_text_table_append_text_cell (MNTextTable * self, const char * text) { #line 529 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::append_text_cell" #line 270 "src/mn-text-table.gob" g_return_val_if_fail (self != NULL, (MNTextTableCell * )0); #line 270 "src/mn-text-table.gob" g_return_val_if_fail (MN_IS_TEXT_TABLE (self), (MNTextTableCell * )0); #line 535 "mn-text-table.c" { #line 272 "src/mn-text-table.gob" return self_append_text_cell_from_layout(self, gtk_widget_create_pango_layout(GTK_WIDGET(self), text)); }} #line 541 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 276 "src/mn-text-table.gob" MNTextTableCell * mn_text_table_append_text_cell_from_markup (MNTextTable * self, const char * markup) { #line 548 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::append_text_cell_from_markup" #line 276 "src/mn-text-table.gob" g_return_val_if_fail (self != NULL, (MNTextTableCell * )0); #line 276 "src/mn-text-table.gob" g_return_val_if_fail (MN_IS_TEXT_TABLE (self), (MNTextTableCell * )0); #line 276 "src/mn-text-table.gob" g_return_val_if_fail (markup != NULL, (MNTextTableCell * )0); #line 556 "mn-text-table.c" { #line 278 "src/mn-text-table.gob" PangoLayout *layout; layout = gtk_widget_create_pango_layout(GTK_WIDGET(self), NULL); pango_layout_set_markup(layout, markup, -1); return self_append_text_cell_from_layout(self, layout); }} #line 567 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 287 "src/mn-text-table.gob" MNTextTableCell * mn_text_table_append_text_cell_from_layout (MNTextTable * self, PangoLayout * layout) { #line 574 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::append_text_cell_from_layout" #line 287 "src/mn-text-table.gob" g_return_val_if_fail (self != NULL, (MNTextTableCell * )0); #line 287 "src/mn-text-table.gob" g_return_val_if_fail (MN_IS_TEXT_TABLE (self), (MNTextTableCell * )0); #line 287 "src/mn-text-table.gob" g_return_val_if_fail (layout != NULL, (MNTextTableCell * )0); #line 582 "mn-text-table.c" { #line 289 "src/mn-text-table.gob" MNTextTableCell *cell; cell = g_new(MNTextTableCell, 1); cell->layout = layout; cell->dirty = TRUE; self_append_cell_real(self, cell); return cell; }} #line 596 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 301 "src/mn-text-table.gob" MNTextTableCell * mn_text_table_append_blank_cell (MNTextTable * self, int width, int height) { #line 603 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::append_blank_cell" #line 301 "src/mn-text-table.gob" g_return_val_if_fail (self != NULL, (MNTextTableCell * )0); #line 301 "src/mn-text-table.gob" g_return_val_if_fail (MN_IS_TEXT_TABLE (self), (MNTextTableCell * )0); #line 609 "mn-text-table.c" { #line 303 "src/mn-text-table.gob" MNTextTableCell *cell; cell = g_new(MNTextTableCell, 1); cell->layout = NULL; cell->dirty = FALSE; cell->width = width; cell->height = height; self_append_cell_real(self, cell); return cell; }} #line 625 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 317 "src/mn-text-table.gob" static void mn_text_table_append_cell_real (MNTextTable * self, MNTextTableCell * cell) { #line 632 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::append_cell_real" #line 317 "src/mn-text-table.gob" g_return_if_fail (self != NULL); #line 317 "src/mn-text-table.gob" g_return_if_fail (MN_IS_TEXT_TABLE (self)); #line 638 "mn-text-table.c" { #line 319 "src/mn-text-table.gob" if (! selfp->row) { selfp->row = g_new(Row, 1); selfp->row->cells = g_ptr_array_new(); g_ptr_array_add(selfp->rows, selfp->row); } g_ptr_array_add(selfp->row->cells, cell); self_set_dirty(self); }} #line 654 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 333 "src/mn-text-table.gob" void mn_text_table_cell_set_text (MNTextTable * self, MNTextTableCell * cell, const char * text) { #line 661 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::cell_set_text" #line 333 "src/mn-text-table.gob" g_return_if_fail (self != NULL); #line 333 "src/mn-text-table.gob" g_return_if_fail (MN_IS_TEXT_TABLE (self)); #line 333 "src/mn-text-table.gob" g_return_if_fail (cell != NULL); #line 333 "src/mn-text-table.gob" g_return_if_fail (text != NULL); #line 671 "mn-text-table.c" { #line 337 "src/mn-text-table.gob" const char *current_text; g_return_if_fail(cell->layout != NULL); current_text = pango_layout_get_text(cell->layout); if (! current_text || strcmp(current_text, text)) { pango_layout_set_text(cell->layout, text, -1); cell->dirty = TRUE; self_set_dirty(self); } }} #line 687 "mn-text-table.c" #undef __GOB_FUNCTION__ #line 351 "src/mn-text-table.gob" void mn_text_table_line_break (MNTextTable * self) { #line 694 "mn-text-table.c" #define __GOB_FUNCTION__ "MN:Text:Table::line_break" #line 351 "src/mn-text-table.gob" g_return_if_fail (self != NULL); #line 351 "src/mn-text-table.gob" g_return_if_fail (MN_IS_TEXT_TABLE (self)); #line 700 "mn-text-table.c" { #line 353 "src/mn-text-table.gob" selfp->row = NULL; }} #line 706 "mn-text-table.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-dialog.h0000644000175000001440000000232511015312644021560 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_DIALOG_H__ #define __MN_DIALOG_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_DIALOG (mn_dialog_get_type()) #define MN_DIALOG(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_dialog_get_type(), MNDialog) #define MN_DIALOG_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_dialog_get_type(), MNDialog const) #define MN_DIALOG_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_dialog_get_type(), MNDialogClass) #define MN_IS_DIALOG(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_dialog_get_type ()) #define MN_DIALOG_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_dialog_get_type(), MNDialogClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_DIALOG__ #define __TYPEDEF_MN_DIALOG__ typedef struct _MNDialog MNDialog; #endif struct _MNDialog { GtkDialog __parent__; }; /* * Class definition */ typedef struct _MNDialogClass MNDialogClass; struct _MNDialogClass { GtkDialogClass __parent__; }; /* * Public methods */ GType mn_dialog_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-yahoo-mailbox.gob.stamp0000644000175000001440000000000011015312646024522 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-test-mailbox.h0000644000175000001440000000273111015312645022733 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-mailbox.h" #ifndef __MN_TEST_MAILBOX_H__ #define __MN_TEST_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_TEST_MAILBOX (mn_test_mailbox_get_type()) #define MN_TEST_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_test_mailbox_get_type(), MNTestMailbox) #define MN_TEST_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_test_mailbox_get_type(), MNTestMailbox const) #define MN_TEST_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_test_mailbox_get_type(), MNTestMailboxClass) #define MN_IS_TEST_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_test_mailbox_get_type ()) #define MN_TEST_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_test_mailbox_get_type(), MNTestMailboxClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_TEST_MAILBOX__ #define __TYPEDEF_MN_TEST_MAILBOX__ typedef struct _MNTestMailbox MNTestMailbox; #endif struct _MNTestMailbox { MNMailbox __parent__; }; /* * Class definition */ typedef struct _MNTestMailboxClass MNTestMailboxClass; struct _MNTestMailboxClass { MNMailboxClass __parent__; }; /* * Public methods */ GType mn_test_mailbox_get_type (void) G_GNUC_CONST; #line 76 "src/mn-test-mailbox.gob" MNMailbox * mn_test_mailbox_new (void); #line 55 "mn-test-mailbox.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-tooltips-private.h0000644000175000001440000000156211015312645023651 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_TOOLTIPS_PRIVATE_H__ #define __MN_TOOLTIPS_PRIVATE_H__ #include "mn-tooltips.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 32 "src/mn-tooltips.gob" typedef struct { MNTooltips *self; GtkWidget *widget; GtkWidget *tip_widget; } TooltipsData; #line 23 "mn-tooltips-private.h" struct _MNTooltipsPrivate { #line 76 "src/mn-tooltips.gob" GtkWidget * window; #line 77 "src/mn-tooltips.gob" TooltipsData * active_data; #line 78 "src/mn-tooltips.gob" GSList * data_list; #line 80 "src/mn-tooltips.gob" gboolean use_sticky_delay; #line 81 "src/mn-tooltips.gob" GTimeVal last_popdown; #line 82 "src/mn-tooltips.gob" unsigned int timeout_id; #line 84 "src/mn-tooltips.gob" int border_width; #line 39 "mn-tooltips-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-webmail-mailbox.c0000644000175000001440000005542611015312647023402 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-webmail-mailbox.h" #include "mn-webmail-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-webmail-mailbox.gob" #include #include #include #include #include #include #include #include #include "mn-mailbox-private.h" #include "mn-authenticated-mailbox-private.h" #include "mn-message-mime.h" #include "mn-util.h" #line 41 "mn-webmail-mailbox.c" /* self casting macros */ #define SELF(x) MN_WEBMAIL_MAILBOX(x) #define SELF_CONST(x) MN_WEBMAIL_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_WEBMAIL_MAILBOX(x) #define TYPE_SELF MN_TYPE_WEBMAIL_MAILBOX #define SELF_CLASS(x) MN_WEBMAIL_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_WEBMAIL_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNWebmailMailbox Self; typedef MNWebmailMailboxClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-webmail-mailbox.gob" static void mn_webmail_mailbox_init (MNWebmailMailbox * o); #line 60 "mn-webmail-mailbox.c" #line 0 "src/mn-webmail-mailbox.gob" static void mn_webmail_mailbox_class_init (MNWebmailMailboxClass * c); #line 63 "mn-webmail-mailbox.c" #line 50 "src/mn-webmail-mailbox.gob" static void ___1_mn_webmail_mailbox_seal (MNMailbox * mailbox); #line 66 "mn-webmail-mailbox.c" #line 73 "src/mn-webmail-mailbox.gob" static int mn_webmail_mailbox_create_temporary_file (char ** filename, GError ** err); #line 69 "mn-webmail-mailbox.c" #line 163 "src/mn-webmail-mailbox.gob" static char * mn_webmail_mailbox_get_error_message (MNWebmailMailbox * self, const char * helper_stdout, const char * helper_stderr, gboolean * is_auth_failure); #line 72 "mn-webmail-mailbox.c" #line 169 "src/mn-webmail-mailbox.gob" static void mn_webmail_mailbox_print_multiline_text (MNWebmailMailbox * self, const char * text, const char * line_prefix); #line 75 "mn-webmail-mailbox.c" #line 196 "src/mn-webmail-mailbox.gob" static void mn_webmail_mailbox_print_output (MNWebmailMailbox * self, const char * header, const char * contents); #line 78 "mn-webmail-mailbox.c" #line 318 "src/mn-webmail-mailbox.gob" static gboolean mn_webmail_mailbox_webmail_check (MNWebmailMailbox * self, GError ** err); #line 81 "mn-webmail-mailbox.c" #line 321 "src/mn-webmail-mailbox.gob" static void ___d_mn_webmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox); #line 84 "mn-webmail-mailbox.c" enum { PROP_0, PROP_FOLDER }; /* pointer to the class of our parent */ static MNAuthenticatedMailboxClass *parent_class = NULL; /* Short form macros */ #define self_parse_username mn_webmail_mailbox_parse_username #define self_create_temporary_file mn_webmail_mailbox_create_temporary_file #define self_create_spool_file mn_webmail_mailbox_create_spool_file #define self_write_temporary_file mn_webmail_mailbox_write_temporary_file #define self_get_error_message mn_webmail_mailbox_get_error_message #define self_print_multiline_text mn_webmail_mailbox_print_multiline_text #define self_print_config mn_webmail_mailbox_print_config #define self_print_output mn_webmail_mailbox_print_output #define self_run_helper mn_webmail_mailbox_run_helper #define self_read_spool_file mn_webmail_mailbox_read_spool_file #define self_webmail_check mn_webmail_mailbox_webmail_check #define self_build_name mn_webmail_mailbox_build_name GType mn_webmail_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNWebmailMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_webmail_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNWebmailMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_webmail_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_AUTHENTICATED_MAILBOX, "MNWebmailMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNWebmailMailbox *)g_object_new(mn_webmail_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNWebmailMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNWebmailMailbox * GET_NEW_VARG (const char *first, ...) { MNWebmailMailbox *ret; va_list ap; va_start (ap, first); ret = (MNWebmailMailbox *)g_object_new_valist (mn_webmail_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::finalize" MNWebmailMailbox *self G_GNUC_UNUSED = MN_WEBMAIL_MAILBOX (obj_self); if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 43 "src/mn-webmail-mailbox.gob" if(self->folder) { g_free ((gpointer) self->folder); self->folder = NULL; } #line 159 "mn-webmail-mailbox.c" } #undef __GOB_FUNCTION__ static void mn_webmail_mailbox_init (MNWebmailMailbox * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::init" } #undef __GOB_FUNCTION__ static void mn_webmail_mailbox_class_init (MNWebmailMailboxClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)c; MNAuthenticatedMailboxClass *mn_authenticated_mailbox_class = (MNAuthenticatedMailboxClass *)c; parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX); #line 50 "src/mn-webmail-mailbox.gob" mn_mailbox_class->seal = ___1_mn_webmail_mailbox_seal; #line 181 "mn-webmail-mailbox.c" c->get_error_message = NULL; c->webmail_check = NULL; #line 321 "src/mn-webmail-mailbox.gob" mn_authenticated_mailbox_class->authenticated_check = ___d_mn_webmail_mailbox_authenticated_check; #line 186 "mn-webmail-mailbox.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_string ("folder" /* name */, NULL /* nick */, NULL /* blurb */, "Inbox" /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_LOAD_SAVE | G_PARAM_CONSTRUCT)); g_object_class_install_property (g_object_class, PROP_FOLDER, param_spec); } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::set_property" { MNWebmailMailbox *self G_GNUC_UNUSED; self = MN_WEBMAIL_MAILBOX (object); switch (property_id) { case PROP_FOLDER: { #line 44 "src/mn-webmail-mailbox.gob" { char *old = self->folder; self->folder = g_value_dup_string (VAL); g_free (old); } #line 222 "mn-webmail-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::get_property" { MNWebmailMailbox *self G_GNUC_UNUSED; self = MN_WEBMAIL_MAILBOX (object); switch (property_id) { case PROP_FOLDER: { #line 44 "src/mn-webmail-mailbox.gob" g_value_set_string (VAL, self->folder); #line 253 "mn-webmail-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 50 "src/mn-webmail-mailbox.gob" static void ___1_mn_webmail_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED) #line 273 "mn-webmail-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->seal) \ (* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::seal" { #line 52 "src/mn-webmail-mailbox.gob" MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (! mailbox->runtime_name) mailbox->runtime_name = self_build_name(SELF_GET_CLASS(self), MN_AUTHENTICATED_MAILBOX(mailbox)->username, self->folder); if (! auth_mailbox->keyring_domain) auth_mailbox->keyring_domain = g_strdup(MN_WEBMAIL_MAILBOX_CLASS(SELF_GET_CLASS(self))->default_domain); }} #line 293 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 65 "src/mn-webmail-mailbox.gob" void mn_webmail_mailbox_parse_username (MNWebmailMailbox * self, char ** username, char ** domain) { #line 301 "mn-webmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::parse_username" #line 65 "src/mn-webmail-mailbox.gob" g_return_if_fail (self != NULL); #line 65 "src/mn-webmail-mailbox.gob" g_return_if_fail (MN_IS_WEBMAIL_MAILBOX (self)); #line 65 "src/mn-webmail-mailbox.gob" g_return_if_fail (username != NULL); #line 65 "src/mn-webmail-mailbox.gob" g_return_if_fail (domain != NULL); #line 311 "mn-webmail-mailbox.c" { #line 67 "src/mn-webmail-mailbox.gob" mn_authenticated_mailbox_parse_username(MN_AUTHENTICATED_MAILBOX(self), username, domain); if (! *domain) *domain = g_strdup(MN_WEBMAIL_MAILBOX_CLASS(SELF_GET_CLASS(self))->default_domain); }} #line 319 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #line 73 "src/mn-webmail-mailbox.gob" static int mn_webmail_mailbox_create_temporary_file (char ** filename, GError ** err) { #line 326 "mn-webmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::create_temporary_file" #line 73 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (filename != NULL, (int )0); #line 330 "mn-webmail-mailbox.c" { #line 75 "src/mn-webmail-mailbox.gob" int fd; char *_filename; GError *tmp_err = NULL; /* GetLive chokes on the hyphen in "mail-notification", so use "mn" */ fd = g_file_open_tmp("mn.XXXXXX", &_filename, &tmp_err); if (fd == -1) { g_set_error(err, 0, 0, _("unable to create a temporary file: %s"), tmp_err->message); g_error_free(tmp_err); return -1; } if (fchmod(fd, S_IRUSR | S_IWUSR) < 0) { g_set_error(err, 0, 0, _("unable to change the permissions of the temporary file: %s"), g_strerror(errno)); g_free(_filename); close(fd); return -1; } *filename = _filename; return fd; }} #line 358 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #line 101 "src/mn-webmail-mailbox.gob" char * mn_webmail_mailbox_create_spool_file (GError ** err) { #line 365 "mn-webmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::create_spool_file" { #line 103 "src/mn-webmail-mailbox.gob" int fd; char *filename; fd = self_create_temporary_file(&filename, err); if (fd == -1) return NULL; close(fd); return filename; }} #line 381 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #line 116 "src/mn-webmail-mailbox.gob" char * mn_webmail_mailbox_write_temporary_file (const char * contents, const char * encoding, GError ** err) { #line 388 "mn-webmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::write_temporary_file" #line 116 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (contents != NULL, (char * )0); #line 116 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (encoding != NULL, (char * )0); #line 394 "mn-webmail-mailbox.c" { #line 120 "src/mn-webmail-mailbox.gob" int fd; GError *tmp_err = NULL; char *filename; GIOChannel *channel; gsize bytes_written; fd = self_create_temporary_file(&filename, err); if (fd == -1) return NULL; channel = g_io_channel_unix_new(fd); if (g_io_channel_set_encoding(channel, encoding, &tmp_err) != G_IO_STATUS_NORMAL) { g_set_error(err, 0, 0, _("unable to set encoding of %s: %s"), filename, tmp_err->message); goto error; } if (g_io_channel_write_chars(channel, contents, -1, &bytes_written, &tmp_err) != G_IO_STATUS_NORMAL) { g_set_error(err, 0, 0, _("unable to write to %s: %s"), filename, tmp_err->message); goto error; } if (g_io_channel_shutdown(channel, TRUE, &tmp_err) != G_IO_STATUS_NORMAL) { g_set_error(err, 0, 0, _("unable to close %s: %s"), filename, tmp_err->message); goto error_noshutdown; } g_io_channel_unref(channel); return filename; error: g_io_channel_shutdown(channel, FALSE, NULL); error_noshutdown: g_io_channel_unref(channel); g_free(filename); return NULL; }} #line 439 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #line 163 "src/mn-webmail-mailbox.gob" static char * mn_webmail_mailbox_get_error_message (MNWebmailMailbox * self, const char * helper_stdout, const char * helper_stderr, gboolean * is_auth_failure) { #line 446 "mn-webmail-mailbox.c" MNWebmailMailboxClass *klass; #line 163 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (self != NULL, (char * )0); #line 163 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (MN_IS_WEBMAIL_MAILBOX (self), (char * )0); #line 163 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (is_auth_failure != NULL, (char * )0); #line 454 "mn-webmail-mailbox.c" klass = MN_WEBMAIL_MAILBOX_GET_CLASS(self); if(klass->get_error_message) return (*klass->get_error_message)(self,helper_stdout,helper_stderr,is_auth_failure); else return (char * )(0); } #line 169 "src/mn-webmail-mailbox.gob" static void mn_webmail_mailbox_print_multiline_text (MNWebmailMailbox * self, const char * text, const char * line_prefix) { #line 467 "mn-webmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::print_multiline_text" #line 169 "src/mn-webmail-mailbox.gob" g_return_if_fail (self != NULL); #line 169 "src/mn-webmail-mailbox.gob" g_return_if_fail (MN_IS_WEBMAIL_MAILBOX (self)); #line 169 "src/mn-webmail-mailbox.gob" g_return_if_fail (text != NULL); #line 169 "src/mn-webmail-mailbox.gob" g_return_if_fail (line_prefix != NULL); #line 477 "mn-webmail-mailbox.c" { #line 173 "src/mn-webmail-mailbox.gob" char **lines; int i; lines = g_strsplit(text, "\n", 0); for (i = 0; lines[i]; i++) { // do not print the empty last line if (! lines[i + 1] && ! lines[i][0]) break; mn_mailbox_notice(MN_MAILBOX(self), "%s%s", line_prefix, lines[i]); } g_strfreev(lines); }} #line 495 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #line 189 "src/mn-webmail-mailbox.gob" void mn_webmail_mailbox_print_config (MNWebmailMailbox * self, const char * config) { #line 502 "mn-webmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::print_config" #line 189 "src/mn-webmail-mailbox.gob" g_return_if_fail (self != NULL); #line 189 "src/mn-webmail-mailbox.gob" g_return_if_fail (MN_IS_WEBMAIL_MAILBOX (self)); #line 189 "src/mn-webmail-mailbox.gob" g_return_if_fail (config != NULL); #line 510 "mn-webmail-mailbox.c" { #line 191 "src/mn-webmail-mailbox.gob" mn_mailbox_notice(MN_MAILBOX(self), _("configuration:")); self_print_multiline_text(self, config, "> "); }} #line 517 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #line 196 "src/mn-webmail-mailbox.gob" static void mn_webmail_mailbox_print_output (MNWebmailMailbox * self, const char * header, const char * contents) { #line 524 "mn-webmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::print_output" #line 196 "src/mn-webmail-mailbox.gob" g_return_if_fail (self != NULL); #line 196 "src/mn-webmail-mailbox.gob" g_return_if_fail (MN_IS_WEBMAIL_MAILBOX (self)); #line 196 "src/mn-webmail-mailbox.gob" g_return_if_fail (header != NULL); #line 532 "mn-webmail-mailbox.c" { #line 200 "src/mn-webmail-mailbox.gob" if (! contents || ! *contents) return; mn_mailbox_notice(MN_MAILBOX(self), "%s", header); self_print_multiline_text(self, contents, "< "); }} #line 542 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #line 208 "src/mn-webmail-mailbox.gob" gboolean mn_webmail_mailbox_run_helper (MNWebmailMailbox * self, const char * name, const char * command, GError ** err) { #line 549 "mn-webmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::run_helper" #line 208 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 208 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (MN_IS_WEBMAIL_MAILBOX (self), (gboolean )0); #line 208 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (name != NULL, (gboolean )0); #line 208 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (command != NULL, (gboolean )0); #line 559 "mn-webmail-mailbox.c" { #line 213 "src/mn-webmail-mailbox.gob" GError *tmp_err = NULL; char *helper_stdout; char *helper_stderr; int exit_status; gboolean status = FALSE; mn_mailbox_notice(MN_MAILBOX(self), _("running %s"), command); if (! g_spawn_command_line_sync(command, &helper_stdout, &helper_stderr, &exit_status, &tmp_err)) { g_set_error(err, 0, 0, _("cannot execute \"%s\": %s"), name, tmp_err->message); g_error_free(tmp_err); return FALSE; } self_print_output(self, _("standard output:"), helper_stdout); self_print_output(self, _("standard error output:"), helper_stderr); if (WEXITSTATUS(exit_status) != 0) { char *message; gboolean is_auth_failure = FALSE; message = self_get_error_message(self, helper_stdout, helper_stderr, &is_auth_failure); if (message) { g_set_error(err, 0, 0, "%s", message); g_free(message); } else /* translators: %s is a program name, as in "unknown fetchyahoo failure" */ g_set_error(err, 0, 0, _("unknown %s failure"), name); if (is_auth_failure && MN_AUTHENTICATED_MAILBOX(self)->auth_prompted) mn_authenticated_mailbox_auth_failed(MN_AUTHENTICATED_MAILBOX(self)); goto end; } status = TRUE; end: g_free(helper_stdout); g_free(helper_stderr); return status; }} #line 613 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #line 265 "src/mn-webmail-mailbox.gob" gboolean mn_webmail_mailbox_read_spool_file (MNWebmailMailbox * self, const char * spool_file, GError ** err) { #line 620 "mn-webmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::read_spool_file" #line 265 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 265 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (MN_IS_WEBMAIL_MAILBOX (self), (gboolean )0); #line 265 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (spool_file != NULL, (gboolean )0); #line 628 "mn-webmail-mailbox.c" { #line 267 "src/mn-webmail-mailbox.gob" int fd; GMimeStream *stream; GMimeParser *parser; GSList *messages = NULL; fd = open(spool_file, O_RDONLY); if (fd < 0) { g_set_error(err, 0, 0, _("unable to open %s: %s"), spool_file, strerror(errno)); return FALSE; } stream = g_mime_stream_fs_new(fd); parser = g_mime_parser_new_with_stream(stream); g_object_unref(stream); g_mime_parser_set_scan_from(parser, TRUE); while (! g_mime_parser_eos(parser)) { GMimeMessage *mime_message; mime_message = g_mime_parser_construct_message(parser); if (mime_message) { MNMessage *message; message = mn_message_new_from_mime_message(MN_MAILBOX(self), mime_message, NULL, 0, TRUE); g_object_unref(mime_message); if (message) messages = g_slist_prepend(messages, message); } } g_object_unref(parser); /* the fd is owned by the stream and closed by it */ GDK_THREADS_ENTER(); mn_mailbox_set_messages(MN_MAILBOX(self), messages); mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); return TRUE; }} #line 681 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #line 318 "src/mn-webmail-mailbox.gob" static gboolean mn_webmail_mailbox_webmail_check (MNWebmailMailbox * self, GError ** err) { #line 688 "mn-webmail-mailbox.c" MNWebmailMailboxClass *klass; #line 318 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 318 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (MN_IS_WEBMAIL_MAILBOX (self), (gboolean )0); #line 694 "mn-webmail-mailbox.c" klass = MN_WEBMAIL_MAILBOX_GET_CLASS(self); if(klass->webmail_check) return (*klass->webmail_check)(self,err); else return (gboolean )(0); } #line 321 "src/mn-webmail-mailbox.gob" static void ___d_mn_webmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED) #line 706 "mn-webmail-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check) \ (* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::authenticated_check" { #line 323 "src/mn-webmail-mailbox.gob" Self *self = SELF(mailbox); GError *err = NULL; PARENT_HANDLER(mailbox); again: if (! mn_authenticated_mailbox_fill_password(mailbox, TRUE)) return; if (! self_webmail_check(self, &err)) { if (mailbox->auth_prompted && mailbox->auth_failed) { g_clear_error(&err); goto again; } GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), "%s", err->message); g_error_free(err); gdk_flush(); GDK_THREADS_LEAVE(); } }} #line 741 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 351 "src/mn-webmail-mailbox.gob" char * mn_webmail_mailbox_build_name (MNWebmailMailboxClass * class, const char * username, const char * folder) { #line 749 "mn-webmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Webmail:Mailbox::build_name" #line 351 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (class != NULL, (char * )0); #line 351 "src/mn-webmail-mailbox.gob" g_return_val_if_fail (username != NULL, (char * )0); #line 755 "mn-webmail-mailbox.c" { #line 355 "src/mn-webmail-mailbox.gob" GString *name; name = g_string_new(NULL); if (strchr(username, '@')) g_string_append(name, username); else g_string_append_printf(name, "%s@%s", username, class->default_domain); if (folder && strcmp(folder, "Inbox")) g_string_append_printf(name, "/%s", folder); return g_string_free(name, FALSE); }} #line 773 "mn-webmail-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-system-vfs-mailbox-properties.h0000644000175000001440000000464311015312647026274 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-mailbox-properties.h" #ifndef __MN_SYSTEM_VFS_MAILBOX_PROPERTIES_H__ #define __MN_SYSTEM_VFS_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_SYSTEM_VFS_MAILBOX_PROPERTIES (mn_system_vfs_mailbox_properties_get_type()) #define MN_SYSTEM_VFS_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_system_vfs_mailbox_properties_get_type(), MNSystemVFSMailboxProperties) #define MN_SYSTEM_VFS_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_system_vfs_mailbox_properties_get_type(), MNSystemVFSMailboxProperties const) #define MN_SYSTEM_VFS_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_system_vfs_mailbox_properties_get_type(), MNSystemVFSMailboxPropertiesClass) #define MN_IS_SYSTEM_VFS_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_system_vfs_mailbox_properties_get_type ()) #define MN_SYSTEM_VFS_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_system_vfs_mailbox_properties_get_type(), MNSystemVFSMailboxPropertiesClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_SYSTEM_VFS_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_SYSTEM_VFS_MAILBOX_PROPERTIES__ typedef struct _MNSystemVFSMailboxProperties MNSystemVFSMailboxProperties; #endif struct _MNSystemVFSMailboxProperties { MNMailboxProperties __parent__; }; /* * Class definition */ typedef struct _MNSystemVFSMailboxPropertiesClass MNSystemVFSMailboxPropertiesClass; struct _MNSystemVFSMailboxPropertiesClass { MNMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_system_vfs_mailbox_properties_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_SYSTEM_VFS_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete", __extension__ ({gboolean *z = (arg); z;}) #define MN_SYSTEM_VFS_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_SYSTEM_VFS_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete",(gboolean *)(arg) #define MN_SYSTEM_VFS_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-text-table-private.h0000644000175000001440000000137511015312645024047 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_TEXT_TABLE_PRIVATE_H__ #define __MN_TEXT_TABLE_PRIVATE_H__ #include "mn-text-table.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 28 "src/mn-text-table.gob" typedef struct { GPtrArray *cells; int height; } Row; #line 22 "mn-text-table-private.h" struct _MNTextTablePrivate { #line 67 "src/mn-text-table.gob" GPtrArray * rows; #line 70 "src/mn-text-table.gob" GArray * column_sizes; #line 73 "src/mn-text-table.gob" Row * row; #line 75 "src/mn-text-table.gob" gboolean dirty; #line 76 "src/mn-text-table.gob" int width; #line 77 "src/mn-text-table.gob" int height; #line 36 "mn-text-table-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-popups-private.h0000644000175000001440000000056411015312645023323 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_POPUPS_PRIVATE_H__ #define __MN_POPUPS_PRIVATE_H__ #include "mn-popups.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNPopupsPrivate { #line 38 "src/mn-popups.gob" GHashTable * popups; #line 16 "mn-popups-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mail-icon-widget.c0000644000175000001440000004732311015312644023454 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-mail-icon-widget.h" #include "mn-mail-icon-widget-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-mail-icon-widget.gob" #include #include "mn-util.h" #define ICON_XALIGN 0.5 #define ICON_YALIGN 0.5 #define COUNT_BOX_XPAD 3 #define COUNT_BOX_YPAD 3 #define COUNT_BOX_XMARGIN 0 #define COUNT_BOX_YMARGIN 0 #line 40 "mn-mail-icon-widget.c" /* self casting macros */ #define SELF(x) MN_MAIL_ICON_WIDGET(x) #define SELF_CONST(x) MN_MAIL_ICON_WIDGET_CONST(x) #define IS_SELF(x) MN_IS_MAIL_ICON_WIDGET(x) #define TYPE_SELF MN_TYPE_MAIL_ICON_WIDGET #define SELF_CLASS(x) MN_MAIL_ICON_WIDGET_CLASS(x) #define SELF_GET_CLASS(x) MN_MAIL_ICON_WIDGET_GET_CLASS(x) /* self typedefs */ typedef MNMailIconWidget Self; typedef MNMailIconWidgetClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-mail-icon-widget.gob" static void mn_mail_icon_widget_class_init (MNMailIconWidgetClass * c); #line 59 "mn-mail-icon-widget.c" #line 92 "src/mn-mail-icon-widget.gob" static void mn_mail_icon_widget_init (MNMailIconWidget * self); #line 62 "mn-mail-icon-widget.c" #line 105 "src/mn-mail-icon-widget.gob" static void mn_mail_icon_widget_dispose (MNMailIconWidget * self); #line 65 "mn-mail-icon-widget.c" #line 110 "src/mn-mail-icon-widget.gob" static void ___7_mn_mail_icon_widget_size_request (GtkWidget * widget, GtkRequisition * requisition); #line 68 "mn-mail-icon-widget.c" #line 132 "src/mn-mail-icon-widget.gob" static gboolean ___8_mn_mail_icon_widget_expose_event (GtkWidget * widget, GdkEventExpose * event); #line 71 "mn-mail-icon-widget.c" #line 244 "src/mn-mail-icon-widget.gob" static GdkPixbuf * mn_mail_icon_widget_render_icon (MNMailIconWidget * self); #line 74 "mn-mail-icon-widget.c" #line 256 "src/mn-mail-icon-widget.gob" static void mn_mail_icon_widget_context_changed (MNMailIconWidget * self); #line 77 "mn-mail-icon-widget.c" #line 266 "src/mn-mail-icon-widget.gob" static void mn_mail_icon_widget_invalidate_count_layout (MNMailIconWidget * self); #line 80 "mn-mail-icon-widget.c" #line 276 "src/mn-mail-icon-widget.gob" static gboolean mn_mail_icon_widget_blink_timeout_cb (gpointer data); #line 83 "mn-mail-icon-widget.c" enum { PROP_0, PROP_BLINKING, PROP_COUNT }; /* pointer to the class of our parent */ static GtkWidgetClass *parent_class = NULL; /* Short form macros */ #define self_get_blinking mn_mail_icon_widget_get_blinking #define self_set_blinking mn_mail_icon_widget_set_blinking #define self_get_count mn_mail_icon_widget_get_count #define self_set_count mn_mail_icon_widget_set_count #define self_render_icon mn_mail_icon_widget_render_icon #define self_context_changed mn_mail_icon_widget_context_changed #define self_invalidate_count_layout mn_mail_icon_widget_invalidate_count_layout #define self_blink_timeout_cb mn_mail_icon_widget_blink_timeout_cb #define self_new mn_mail_icon_widget_new #define self_set_from_stock mn_mail_icon_widget_set_from_stock GType mn_mail_icon_widget_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMailIconWidgetClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_mail_icon_widget_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMailIconWidget), 0 /* n_preallocs */, (GInstanceInitFunc) mn_mail_icon_widget_init, NULL }; type = g_type_register_static (GTK_TYPE_WIDGET, "MNMailIconWidget", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMailIconWidget *)g_object_new(mn_mail_icon_widget_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMailIconWidget * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMailIconWidget * GET_NEW_VARG (const char *first, ...) { MNMailIconWidget *ret; va_list ap; va_start (ap, first); ret = (MNMailIconWidget *)g_object_new_valist (mn_mail_icon_widget_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::dispose" MNMailIconWidget *self G_GNUC_UNUSED = MN_MAIL_ICON_WIDGET (obj_self); #line 105 "src/mn-mail-icon-widget.gob" mn_mail_icon_widget_dispose (self); #line 155 "mn-mail-icon-widget.c" if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 67 "src/mn-mail-icon-widget.gob" if(self->_priv->count_layout) { g_object_unref ((gpointer) self->_priv->count_layout); self->_priv->count_layout = NULL; } #line 160 "mn-mail-icon-widget.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::finalize" MNMailIconWidget *self G_GNUC_UNUSED = MN_MAIL_ICON_WIDGET (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 89 "src/mn-mail-icon-widget.gob" if(self->_priv->stock_id) { g_free ((gpointer) self->_priv->stock_id); self->_priv->stock_id = NULL; } #line 175 "mn-mail-icon-widget.c" } #undef __GOB_FUNCTION__ static void mn_mail_icon_widget_class_init (MNMailIconWidgetClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; GtkWidgetClass *gtk_widget_class = (GtkWidgetClass *)c; g_type_class_add_private(c,sizeof(MNMailIconWidgetPrivate)); parent_class = g_type_class_ref (GTK_TYPE_WIDGET); #line 110 "src/mn-mail-icon-widget.gob" gtk_widget_class->size_request = ___7_mn_mail_icon_widget_size_request; #line 132 "src/mn-mail-icon-widget.gob" gtk_widget_class->expose_event = ___8_mn_mail_icon_widget_expose_event; #line 194 "mn-mail-icon-widget.c" g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_boolean ("blinking" /* name */, NULL /* nick */, NULL /* blurb */, FALSE /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_BLINKING, param_spec); param_spec = g_param_spec_int ("count" /* name */, NULL /* nick */, NULL /* blurb */, G_MININT /* minimum */, G_MAXINT /* maximum */, 0 /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_COUNT, param_spec); } } #undef __GOB_FUNCTION__ #line 92 "src/mn-mail-icon-widget.gob" static void mn_mail_icon_widget_init (MNMailIconWidget * self G_GNUC_UNUSED) { #line 229 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAIL_ICON_WIDGET,MNMailIconWidgetPrivate); #line 82 "src/mn-mail-icon-widget.gob" self->_priv->is_on = TRUE; #line 234 "mn-mail-icon-widget.c" { #line 93 "src/mn-mail-icon-widget.gob" GTK_WIDGET_SET_FLAGS(self, GTK_NO_WINDOW); gtk_widget_set_name(GTK_WIDGET(self), "mn-mail-icon"); g_object_connect(self, "swapped-signal::size-allocate", self_invalidate_count_layout, self, "swapped-signal::style-set", self_context_changed, self, "swapped-signal::direction-changed", self_context_changed, self, NULL); #line 248 "mn-mail-icon-widget.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::set_property" { MNMailIconWidget *self G_GNUC_UNUSED; self = MN_MAIL_ICON_WIDGET (object); switch (property_id) { case PROP_BLINKING: { #line 43 "src/mn-mail-icon-widget.gob" gboolean blinking = g_value_get_boolean(VAL); if (blinking != selfp->blinking) { selfp->blinking = blinking; if (blinking) { g_assert(selfp->blink_timeout_id == 0); selfp->blink_timeout_id = gdk_threads_add_timeout(500, self_blink_timeout_cb, self); } else { g_assert(selfp->blink_timeout_id != 0); mn_source_clear(&selfp->blink_timeout_id); selfp->is_on = TRUE; gtk_widget_queue_draw(GTK_WIDGET(self)); } } #line 287 "mn-mail-icon-widget.c" } break; case PROP_COUNT: { #line 72 "src/mn-mail-icon-widget.gob" int count = g_value_get_int(VAL); if (count != selfp->count) { selfp->count = count; self_invalidate_count_layout(self); gtk_widget_queue_draw(GTK_WIDGET(self)); } #line 302 "mn-mail-icon-widget.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::get_property" { MNMailIconWidget *self G_GNUC_UNUSED; self = MN_MAIL_ICON_WIDGET (object); switch (property_id) { case PROP_BLINKING: { #line 63 "src/mn-mail-icon-widget.gob" g_value_set_boolean(VAL, selfp->blinking); #line 335 "mn-mail-icon-widget.c" } break; case PROP_COUNT: { #line 82 "src/mn-mail-icon-widget.gob" g_value_set_int(VAL, selfp->count); #line 344 "mn-mail-icon-widget.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 63 "src/mn-mail-icon-widget.gob" gboolean mn_mail_icon_widget_get_blinking (MNMailIconWidget * self) { #line 364 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::get_blinking" { #line 41 "src/mn-mail-icon-widget.gob" gboolean val; g_object_get (G_OBJECT (self), "blinking", &val, NULL); return val; }} #line 370 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #line 43 "src/mn-mail-icon-widget.gob" void mn_mail_icon_widget_set_blinking (MNMailIconWidget * self, gboolean val) { #line 377 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::set_blinking" { #line 41 "src/mn-mail-icon-widget.gob" g_object_set (G_OBJECT (self), "blinking", val, NULL); }} #line 383 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #line 82 "src/mn-mail-icon-widget.gob" gint mn_mail_icon_widget_get_count (MNMailIconWidget * self) { #line 390 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::get_count" { #line 70 "src/mn-mail-icon-widget.gob" gint val; g_object_get (G_OBJECT (self), "count", &val, NULL); return val; }} #line 396 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #line 72 "src/mn-mail-icon-widget.gob" void mn_mail_icon_widget_set_count (MNMailIconWidget * self, gint val) { #line 403 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::set_count" { #line 70 "src/mn-mail-icon-widget.gob" g_object_set (G_OBJECT (self), "count", val, NULL); }} #line 409 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #line 105 "src/mn-mail-icon-widget.gob" static void mn_mail_icon_widget_dispose (MNMailIconWidget * self) { #line 417 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::dispose" { #line 106 "src/mn-mail-icon-widget.gob" mn_source_clear(&selfp->blink_timeout_id); }} #line 424 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #line 110 "src/mn-mail-icon-widget.gob" static void ___7_mn_mail_icon_widget_size_request (GtkWidget * widget G_GNUC_UNUSED, GtkRequisition * requisition) #line 430 "mn-mail-icon-widget.c" #define PARENT_HANDLER(___widget,___requisition) \ { if(GTK_WIDGET_CLASS(parent_class)->size_request) \ (* GTK_WIDGET_CLASS(parent_class)->size_request)(___widget,___requisition); } { #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::size_request" { #line 112 "src/mn-mail-icon-widget.gob" Self *self = SELF(widget); GdkPixbuf *pixbuf; pixbuf = self_render_icon(self); if (pixbuf) { requisition->width = gdk_pixbuf_get_width(pixbuf); requisition->height = gdk_pixbuf_get_height(pixbuf); g_object_unref(pixbuf); } else { requisition->width = 0; requisition->height = 0; } }} #line 457 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 132 "src/mn-mail-icon-widget.gob" static gboolean ___8_mn_mail_icon_widget_expose_event (GtkWidget * widget G_GNUC_UNUSED, GdkEventExpose * event) #line 464 "mn-mail-icon-widget.c" #define PARENT_HANDLER(___widget,___event) \ ((GTK_WIDGET_CLASS(parent_class)->expose_event)? \ (* GTK_WIDGET_CLASS(parent_class)->expose_event)(___widget,___event): \ ((gboolean )0)) { #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::expose_event" { #line 134 "src/mn-mail-icon-widget.gob" Self *self = SELF(widget); if (! GTK_WIDGET_DRAWABLE(widget) || ! selfp->stock_id) return FALSE; if (selfp->is_on) { int x; int y; GdkRectangle image_area; /* note: widget->requisition is the pixbuf size, see size_request() */ x = floor(widget->allocation.x + ((widget->allocation.width - widget->requisition.width) * ICON_XALIGN)); y = floor(widget->allocation.y + ((widget->allocation.height - widget->requisition.height) * ICON_YALIGN)); image_area.x = x; image_area.y = y; image_area.width = widget->requisition.width; image_area.height = widget->requisition.height; if (gdk_rectangle_intersect(&event->area, &image_area, &image_area)) { GdkPixbuf *pixbuf; pixbuf = self_render_icon(self); gdk_draw_pixbuf(widget->window, NULL, pixbuf, image_area.x - x, image_area.y - y, image_area.x, image_area.y, image_area.width, image_area.height, GDK_RGB_DITHER_NORMAL, 0, 0); g_object_unref(pixbuf); } } if (selfp->count) { PangoRectangle count_rect; int count_x; int count_y; int box_x; int box_y; int box_width; int box_height; if (! selfp->count_layout) { const char *size; char *markup; if (widget->allocation.height < 32) size = "small"; else size = "medium"; selfp->count_layout = gtk_widget_create_pango_layout(widget, NULL); markup = g_strdup_printf("%i", size, selfp->count); pango_layout_set_markup(selfp->count_layout, markup, -1); g_free(markup); } pango_layout_get_pixel_extents(selfp->count_layout, &count_rect, NULL); box_width = count_rect.width + COUNT_BOX_XPAD * 2; box_height = count_rect.height + COUNT_BOX_YPAD * 2; box_x = widget->allocation.x + widget->allocation.width - box_width - COUNT_BOX_XMARGIN; box_y = widget->allocation.y + widget->allocation.height - box_height - COUNT_BOX_YMARGIN; count_x = box_x - count_rect.x + COUNT_BOX_XPAD; count_y = box_y - count_rect.y + COUNT_BOX_YPAD; gtk_paint_box(widget->style, widget->window, GTK_WIDGET_STATE(widget), GTK_SHADOW_OUT, &event->area, widget, NULL, box_x, box_y, box_width, box_height); gtk_paint_layout(widget->style, widget->window, GTK_WIDGET_STATE(widget), FALSE, &event->area, widget, NULL, count_x, count_y, selfp->count_layout); } return FALSE; }} #line 582 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 244 "src/mn-mail-icon-widget.gob" static GdkPixbuf * mn_mail_icon_widget_render_icon (MNMailIconWidget * self) { #line 590 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::render_icon" #line 244 "src/mn-mail-icon-widget.gob" g_return_val_if_fail (self != NULL, (GdkPixbuf * )0); #line 244 "src/mn-mail-icon-widget.gob" g_return_val_if_fail (MN_IS_MAIL_ICON_WIDGET (self), (GdkPixbuf * )0); #line 596 "mn-mail-icon-widget.c" { #line 246 "src/mn-mail-icon-widget.gob" if (selfp->stock_id) return gtk_widget_render_icon(GTK_WIDGET(self), selfp->stock_id, selfp->icon_size, NULL); else return NULL; }} #line 608 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #line 256 "src/mn-mail-icon-widget.gob" static void mn_mail_icon_widget_context_changed (MNMailIconWidget * self) { #line 615 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::context_changed" #line 256 "src/mn-mail-icon-widget.gob" g_return_if_fail (self != NULL); #line 256 "src/mn-mail-icon-widget.gob" g_return_if_fail (MN_IS_MAIL_ICON_WIDGET (self)); #line 621 "mn-mail-icon-widget.c" { #line 258 "src/mn-mail-icon-widget.gob" if (selfp->count_layout) { pango_layout_context_changed(selfp->count_layout); gtk_widget_queue_draw(GTK_WIDGET(self)); } }} #line 631 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #line 266 "src/mn-mail-icon-widget.gob" static void mn_mail_icon_widget_invalidate_count_layout (MNMailIconWidget * self) { #line 638 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::invalidate_count_layout" #line 266 "src/mn-mail-icon-widget.gob" g_return_if_fail (self != NULL); #line 266 "src/mn-mail-icon-widget.gob" g_return_if_fail (MN_IS_MAIL_ICON_WIDGET (self)); #line 644 "mn-mail-icon-widget.c" { #line 268 "src/mn-mail-icon-widget.gob" if (selfp->count_layout) { g_object_unref(selfp->count_layout); selfp->count_layout = NULL; } }} #line 654 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #line 276 "src/mn-mail-icon-widget.gob" static gboolean mn_mail_icon_widget_blink_timeout_cb (gpointer data) { #line 661 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::blink_timeout_cb" { #line 278 "src/mn-mail-icon-widget.gob" Self *self = data; selfp->is_on = ! selfp->is_on; gtk_widget_queue_draw(GTK_WIDGET(self)); return TRUE; }} #line 674 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #line 288 "src/mn-mail-icon-widget.gob" GtkWidget * mn_mail_icon_widget_new (void) { #line 681 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::new" { #line 290 "src/mn-mail-icon-widget.gob" return GTK_WIDGET(GET_NEW); }} #line 688 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ #line 294 "src/mn-mail-icon-widget.gob" void mn_mail_icon_widget_set_from_stock (MNMailIconWidget * self, const char * stock_id, GtkIconSize icon_size) { #line 695 "mn-mail-icon-widget.c" #define __GOB_FUNCTION__ "MN:Mail:Icon:Widget::set_from_stock" #line 294 "src/mn-mail-icon-widget.gob" g_return_if_fail (self != NULL); #line 294 "src/mn-mail-icon-widget.gob" g_return_if_fail (MN_IS_MAIL_ICON_WIDGET (self)); #line 294 "src/mn-mail-icon-widget.gob" g_return_if_fail (stock_id != NULL); #line 703 "mn-mail-icon-widget.c" { #line 298 "src/mn-mail-icon-widget.gob" g_free(selfp->stock_id); selfp->stock_id = g_strdup(stock_id); selfp->icon_size = icon_size; /* affects the size request: call queue_resize(), not queue_draw() */ gtk_widget_queue_resize(GTK_WIDGET(self)); }} #line 714 "mn-mail-icon-widget.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-mail-icon-widget-private.h0000644000175000001440000000143211015312644025120 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MAIL_ICON_WIDGET_PRIVATE_H__ #define __MN_MAIL_ICON_WIDGET_PRIVATE_H__ #include "mn-mail-icon-widget.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNMailIconWidgetPrivate { #line 40 "src/mn-mail-icon-widget.gob" gboolean blinking; #line 67 "src/mn-mail-icon-widget.gob" PangoLayout * count_layout; #line 69 "src/mn-mail-icon-widget.gob" int count; #line 86 "src/mn-mail-icon-widget.gob" unsigned int blink_timeout_id; #line 87 "src/mn-mail-icon-widget.gob" gboolean is_on; #line 89 "src/mn-mail-icon-widget.gob" char * stock_id; #line 90 "src/mn-mail-icon-widget.gob" GtkIconSize icon_size; #line 28 "mn-mail-icon-widget-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-imap-mailbox-private.h0000644000175000001440000000111111015312646024342 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_IMAP_MAILBOX_PRIVATE_H__ #define __MN_IMAP_MAILBOX_PRIVATE_H__ #include "mn-imap-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 38 "src/mn-imap-mailbox.gob" #include "mn-client-session.h" #line 18 "mn-imap-mailbox-private.h" struct _MNIMAPMailboxPrivate { #line 160 "src/mn-imap-mailbox.gob" GMutex * mutex; #line 162 "src/mn-imap-mailbox.gob" MNClientSessionPrivate * idle_session; #line 24 "mn-imap-mailbox-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-gmime-stream-vfs.h0000644000175000001440000000351411015312647023510 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include #ifndef __MN_GMIME_STREAM_VFS_H__ #define __MN_GMIME_STREAM_VFS_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_GMIME_STREAM_VFS (mn_gmime_stream_vfs_get_type()) #define MN_GMIME_STREAM_VFS(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFS) #define MN_GMIME_STREAM_VFS_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFS const) #define MN_GMIME_STREAM_VFS_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFSClass) #define MN_IS_GMIME_STREAM_VFS(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_gmime_stream_vfs_get_type ()) #define MN_GMIME_STREAM_VFS_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFSClass) /* Private structure type */ typedef struct _MNGMimeStreamVFSPrivate MNGMimeStreamVFSPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_GMIME_STREAM_VFS__ #define __TYPEDEF_MN_GMIME_STREAM_VFS__ typedef struct _MNGMimeStreamVFS MNGMimeStreamVFS; #endif struct _MNGMimeStreamVFS { GMimeStream __parent__; /*< private >*/ MNGMimeStreamVFSPrivate *_priv; }; /* * Class definition */ typedef struct _MNGMimeStreamVFSClass MNGMimeStreamVFSClass; struct _MNGMimeStreamVFSClass { GMimeStreamClass __parent__; }; /* * Public methods */ GType mn_gmime_stream_vfs_get_type (void) G_GNUC_CONST; #line 242 "src/mn-gmime-stream-vfs.gob" GMimeStream * mn_gmime_stream_vfs_new (GnomeVFSHandle * handle, GnomeVFSURI * uri, GnomeVFSResult * result); #line 63 "mn-gmime-stream-vfs.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-yahoo-mailbox-properties-private.h0000644000175000001440000000047311015312646026737 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_YAHOO_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_YAHOO_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-yahoo-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-server-private.h0000644000175000001440000000040511015312645023275 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_SERVER_PRIVATE_H__ #define __MN_SERVER_PRIVATE_H__ #include "mn-server.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-custom-vfs-mailbox.c0000644000175000001440000002163511015312647024063 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-custom-vfs-mailbox.h" #include "mn-custom-vfs-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-custom-vfs-mailbox.gob" #include #include "mn-mailbox-private.h" #line 31 "mn-custom-vfs-mailbox.c" /* self casting macros */ #define SELF(x) MN_CUSTOM_VFS_MAILBOX(x) #define SELF_CONST(x) MN_CUSTOM_VFS_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_CUSTOM_VFS_MAILBOX(x) #define TYPE_SELF MN_TYPE_CUSTOM_VFS_MAILBOX #define SELF_CLASS(x) MN_CUSTOM_VFS_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_CUSTOM_VFS_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNCustomVFSMailbox Self; typedef MNCustomVFSMailboxClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-custom-vfs-mailbox.gob" static void mn_custom_vfs_mailbox_init (MNCustomVFSMailbox * o); #line 50 "mn-custom-vfs-mailbox.c" #line 34 "src/mn-custom-vfs-mailbox.gob" static void mn_custom_vfs_mailbox_class_init (MNCustomVFSMailboxClass * class); #line 53 "mn-custom-vfs-mailbox.c" #line 39 "src/mn-custom-vfs-mailbox.gob" static void ___2_mn_custom_vfs_mailbox_seal (MNMailbox * mailbox); #line 56 "mn-custom-vfs-mailbox.c" #line 47 "src/mn-custom-vfs-mailbox.gob" static MNMailbox * ___3_mn_custom_vfs_mailbox_parse_uri (MNMailbox * dummy, const char * uri); #line 59 "mn-custom-vfs-mailbox.c" #line 63 "src/mn-custom-vfs-mailbox.gob" static void ___4_mn_custom_vfs_mailbox_check (MNMailbox * mailbox); #line 62 "mn-custom-vfs-mailbox.c" enum { PROP_0, PROP_URI }; /* pointer to the class of our parent */ static MNVFSMailboxClass *parent_class = NULL; GType mn_custom_vfs_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNCustomVFSMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_custom_vfs_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNCustomVFSMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_custom_vfs_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_VFS_MAILBOX, "MNCustomVFSMailbox", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNCustomVFSMailbox *)g_object_new(mn_custom_vfs_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNCustomVFSMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNCustomVFSMailbox * GET_NEW_VARG (const char *first, ...) { MNCustomVFSMailbox *ret; va_list ap; va_start (ap, first); ret = (MNCustomVFSMailbox *)g_object_new_valist (mn_custom_vfs_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::finalize" MNCustomVFSMailbox *self G_GNUC_UNUSED = MN_CUSTOM_VFS_MAILBOX (obj_self); if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 31 "src/mn-custom-vfs-mailbox.gob" if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; } #line 124 "mn-custom-vfs-mailbox.c" } #undef __GOB_FUNCTION__ static void mn_custom_vfs_mailbox_init (MNCustomVFSMailbox * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::init" } #undef __GOB_FUNCTION__ #line 34 "src/mn-custom-vfs-mailbox.gob" static void mn_custom_vfs_mailbox_class_init (MNCustomVFSMailboxClass * class G_GNUC_UNUSED) { #line 138 "mn-custom-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class; parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX); #line 39 "src/mn-custom-vfs-mailbox.gob" mn_mailbox_class->seal = ___2_mn_custom_vfs_mailbox_seal; #line 47 "src/mn-custom-vfs-mailbox.gob" mn_mailbox_class->parse_uri = ___3_mn_custom_vfs_mailbox_parse_uri; #line 63 "src/mn-custom-vfs-mailbox.gob" mn_mailbox_class->check = ___4_mn_custom_vfs_mailbox_check; #line 151 "mn-custom-vfs-mailbox.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_string ("uri" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_URI, param_spec); } { #line 35 "src/mn-custom-vfs-mailbox.gob" MN_MAILBOX_CLASS(class)->type = "custom-vfs"; #line 173 "mn-custom-vfs-mailbox.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::set_property" { MNCustomVFSMailbox *self G_GNUC_UNUSED; self = MN_CUSTOM_VFS_MAILBOX (object); switch (property_id) { case PROP_URI: { #line 32 "src/mn-custom-vfs-mailbox.gob" { char *old = self->uri; self->uri = g_value_dup_string (VAL); g_free (old); } #line 194 "mn-custom-vfs-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::get_property" { MNCustomVFSMailbox *self G_GNUC_UNUSED; self = MN_CUSTOM_VFS_MAILBOX (object); switch (property_id) { case PROP_URI: { #line 32 "src/mn-custom-vfs-mailbox.gob" g_value_set_string (VAL, self->uri); #line 225 "mn-custom-vfs-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 39 "src/mn-custom-vfs-mailbox.gob" static void ___2_mn_custom_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED) #line 245 "mn-custom-vfs-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->seal) \ (* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::seal" { #line 41 "src/mn-custom-vfs-mailbox.gob" MN_VFS_MAILBOX(mailbox)->uri = gnome_vfs_make_uri_canonical(SELF(mailbox)->uri); PARENT_HANDLER(mailbox); }} #line 258 "mn-custom-vfs-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 47 "src/mn-custom-vfs-mailbox.gob" static MNMailbox * ___3_mn_custom_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri) #line 265 "mn-custom-vfs-mailbox.c" #define PARENT_HANDLER(___dummy,___uri) \ ((MN_MAILBOX_CLASS(parent_class)->parse_uri)? \ (* MN_MAILBOX_CLASS(parent_class)->parse_uri)(___dummy,___uri): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::parse_uri" { #line 49 "src/mn-custom-vfs-mailbox.gob" GnomeVFSURI *vfs_uri; MNMailbox *mailbox = NULL; vfs_uri = gnome_vfs_uri_new(uri); if (vfs_uri) { mailbox = mn_mailbox_new("custom-vfs", "uri", uri, NULL); gnome_vfs_uri_unref(vfs_uri); } return mailbox; }} #line 287 "mn-custom-vfs-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 63 "src/mn-custom-vfs-mailbox.gob" static void ___4_mn_custom_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED) #line 294 "mn-custom-vfs-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->check) \ (* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::check" { #line 65 "src/mn-custom-vfs-mailbox.gob" if (MN_VFS_MAILBOX(mailbox)->vfs_uri) { PARENT_HANDLER(mailbox); } else { mn_mailbox_set_error(mailbox, _("invalid location")); mn_mailbox_set_poll(mailbox, FALSE); /* disable the mailbox */ } }} #line 313 "mn-custom-vfs-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-standard-message-view.h0000644000175000001440000000335211015312645024515 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-message-view.h" #ifndef __MN_STANDARD_MESSAGE_VIEW_H__ #define __MN_STANDARD_MESSAGE_VIEW_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_STANDARD_MESSAGE_VIEW (mn_standard_message_view_get_type()) #define MN_STANDARD_MESSAGE_VIEW(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_standard_message_view_get_type(), MNStandardMessageView) #define MN_STANDARD_MESSAGE_VIEW_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_standard_message_view_get_type(), MNStandardMessageView const) #define MN_STANDARD_MESSAGE_VIEW_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_standard_message_view_get_type(), MNStandardMessageViewClass) #define MN_IS_STANDARD_MESSAGE_VIEW(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_standard_message_view_get_type ()) #define MN_STANDARD_MESSAGE_VIEW_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_standard_message_view_get_type(), MNStandardMessageViewClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_STANDARD_MESSAGE_VIEW__ #define __TYPEDEF_MN_STANDARD_MESSAGE_VIEW__ typedef struct _MNStandardMessageView MNStandardMessageView; #endif struct _MNStandardMessageView { MNMessageView __parent__; }; /* * Class definition */ typedef struct _MNStandardMessageViewClass MNStandardMessageViewClass; struct _MNStandardMessageViewClass { MNMessageViewClass __parent__; }; /* * Public methods */ GType mn_standard_message_view_get_type (void) G_GNUC_CONST; #line 78 "src/mn-standard-message-view.gob" GtkWidget * mn_standard_message_view_new (void); #line 55 "mn-standard-message-view.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-message.c0000644000175000001440000011206711015312644021745 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-message.h" #include "mn-message-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 76 "src/mn-message.gob" #include #include #include #include #include "mn-conf.h" #include "mn-util.h" typedef struct { MNMessageActionRequest *request; MNMessageActionPerformCallback callback; gpointer user_data; } PerformInfo; #line 42 "mn-message.c" /* self casting macros */ #define SELF(x) MN_MESSAGE(x) #define SELF_CONST(x) MN_MESSAGE_CONST(x) #define IS_SELF(x) MN_IS_MESSAGE(x) #define TYPE_SELF MN_TYPE_MESSAGE #define SELF_CLASS(x) MN_MESSAGE_CLASS(x) #define SELF_GET_CLASS(x) MN_MESSAGE_GET_CLASS(x) /* self typedefs */ typedef MNMessage Self; typedef MNMessageClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-message.gob" static void mn_message_init (MNMessage * o); #line 61 "mn-message.c" #line 0 "src/mn-message.gob" static void mn_message_class_init (MNMessageClass * c); #line 64 "mn-message.c" #line 225 "src/mn-message.gob" static void mn_message_constructor (MNMessage * self); #line 67 "mn-message.c" #line 267 "src/mn-message.gob" static gboolean mn_message_subst_command_cb (const char * name, char ** value, gpointer data); #line 70 "mn-message.c" #line 297 "src/mn-message.gob" static gboolean mn_message_execute_command_real (MNMessage * self, const char * command, GError ** err); #line 73 "mn-message.c" #line 325 "src/mn-message.gob" static gboolean mn_message_execute_command (MNMessage * self, const char * id, GError ** err); #line 76 "mn-message.c" #line 394 "src/mn-message.gob" static void mn_message_perform_action_in_thread_cb (PerformInfo * info); #line 79 "mn-message.c" #line 412 "src/mn-message.gob" static void mn_message_action_done_real (MNMessage * self, MNMessageAction * action, GError * err, MNMessageActionResultCallback callback, gpointer data); #line 82 "mn-message.c" static gboolean ___real_mn_message_builtin_can_open (MNMessage * self); #line 440 "src/mn-message.gob" static gboolean mn_message_builtin_can_open (MNMessage * self); #line 86 "mn-message.c" static void ___real_mn_message_builtin_open (MNMessage * self, MNMessageActionRequest * request); #line 446 "src/mn-message.gob" static void mn_message_builtin_open (MNMessage * self, MNMessageActionRequest * request); #line 90 "mn-message.c" #line 456 "src/mn-message.gob" static void mn_message_open_done (MNMessage * self, GError * err); #line 93 "mn-message.c" static gboolean ___real_mn_message_builtin_can_mark_as_read (MNMessage * self); #line 463 "src/mn-message.gob" static gboolean mn_message_builtin_can_mark_as_read (MNMessage * self); #line 97 "mn-message.c" #line 469 "src/mn-message.gob" static void mn_message_builtin_mark_as_read (MNMessage * self, MNMessageActionRequest * request); #line 100 "mn-message.c" #line 472 "src/mn-message.gob" static void mn_message_mark_as_read_done (MNMessage * self, GError * err); #line 103 "mn-message.c" static gboolean ___real_mn_message_builtin_can_mark_as_spam (MNMessage * self); #line 479 "src/mn-message.gob" static gboolean mn_message_builtin_can_mark_as_spam (MNMessage * self); #line 107 "mn-message.c" #line 485 "src/mn-message.gob" static void mn_message_builtin_mark_as_spam (MNMessage * self, MNMessageActionRequest * request); #line 110 "mn-message.c" #line 488 "src/mn-message.gob" static void mn_message_mark_as_spam_done (MNMessage * self, GError * err); #line 113 "mn-message.c" static gboolean ___real_mn_message_builtin_can_delete (MNMessage * self); #line 495 "src/mn-message.gob" static gboolean mn_message_builtin_can_delete (MNMessage * self); #line 117 "mn-message.c" #line 501 "src/mn-message.gob" static void mn_message_builtin_delete (MNMessage * self, MNMessageActionRequest * request); #line 120 "mn-message.c" #line 504 "src/mn-message.gob" static void mn_message_delete_done (MNMessage * self, GError * err); #line 123 "mn-message.c" enum { PROP_0, PROP_MAILBOX, PROP_SENT_TIME, PROP_ID, PROP_MID, PROP_FROM, PROP_SUBJECT, PROP_URI, PROP_FILENAME, PROP_FLAGS }; /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_get_action mn_message_get_action #define self_subst_command_cb mn_message_subst_command_cb #define self_execute_command_real mn_message_execute_command_real #define self_execute_command mn_message_execute_command #define self_can_perform_action mn_message_can_perform_action #define self_perform_action mn_message_perform_action #define self_perform_action_in_thread mn_message_perform_action_in_thread #define self_perform_action_in_thread_cb mn_message_perform_action_in_thread_cb #define self_action_done_real mn_message_action_done_real #define self_action_done mn_message_action_done #define self_action_error_quark mn_message_action_error_quark #define self_builtin_can_open mn_message_builtin_can_open #define self_builtin_open mn_message_builtin_open #define self_open_done mn_message_open_done #define self_builtin_can_mark_as_read mn_message_builtin_can_mark_as_read #define self_builtin_mark_as_read mn_message_builtin_mark_as_read #define self_mark_as_read_done mn_message_mark_as_read_done #define self_builtin_can_mark_as_spam mn_message_builtin_can_mark_as_spam #define self_builtin_mark_as_spam mn_message_builtin_mark_as_spam #define self_mark_as_spam_done mn_message_mark_as_spam_done #define self_builtin_can_delete mn_message_builtin_can_delete #define self_builtin_delete mn_message_builtin_delete #define self_delete_done mn_message_delete_done #define self_consider_as_read mn_message_consider_as_read #define self_consider_as_read_list mn_message_consider_as_read_list #define self_new mn_message_new #define self_xml_node_new mn_message_xml_node_new GType mn_message_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMessageClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_message_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMessage), 0 /* n_preallocs */, (GInstanceInitFunc) mn_message_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNMessage", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMessage *)g_object_new(mn_message_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMessage * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMessage * GET_NEW_VARG (const char *first, ...) { MNMessage *ret; va_list ap; va_start (ap, first); ret = (MNMessage *)g_object_new_valist (mn_message_get_type (), first, ap); va_end (ap); return ret; } #line 92 "src/mn-message.gob" static const MNMessageAction message_actions[] = { { "open", "mail-open", /* translators: header capitalization */ N_("Open"), N_("Unable to open message"), self_builtin_can_open, self_builtin_open, self_open_done }, { "mark-as-read", "mark", /* translators: header capitalization */ N_("Mark as Read"), N_("Unable to mark message as read"), self_builtin_can_mark_as_read, self_builtin_mark_as_read, self_mark_as_read_done }, { "mark-as-spam", "spam", /* translators: header capitalization */ N_("Mark as Spam"), N_("Unable to mark message as spam"), self_builtin_can_mark_as_spam, self_builtin_mark_as_spam, self_mark_as_spam_done }, { "delete", "delete", /* translators: header capitalization */ N_("Delete"), N_("Unable to mark message as spam"), self_builtin_can_delete, self_builtin_delete, self_delete_done } }; #line 257 "mn-message.c" static GObject * ___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { #define __GOB_FUNCTION__ "MN:Message::constructor" GObject *obj_self; MNMessage *self; obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties); self = MN_MESSAGE (obj_self); #line 225 "src/mn-message.gob" mn_message_constructor (self); #line 269 "mn-message.c" return obj_self; } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Message::finalize" MNMessage *self G_GNUC_UNUSED = MN_MESSAGE (obj_self); if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 164 "src/mn-message.gob" if(self->id) { g_free ((gpointer) self->id); self->id = NULL; } #line 284 "mn-message.c" #line 179 "src/mn-message.gob" if(self->mid) { g_free ((gpointer) self->mid); self->mid = NULL; } #line 287 "mn-message.c" #line 183 "src/mn-message.gob" if(self->from) { g_free ((gpointer) self->from); self->from = NULL; } #line 290 "mn-message.c" #line 187 "src/mn-message.gob" if(self->subject) { g_free ((gpointer) self->subject); self->subject = NULL; } #line 293 "mn-message.c" #line 191 "src/mn-message.gob" if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; } #line 296 "mn-message.c" } #undef __GOB_FUNCTION__ static void mn_message_init (MNMessage * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Message::init" } #undef __GOB_FUNCTION__ static void mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Message::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; parent_class = g_type_class_ref (G_TYPE_OBJECT); #line 440 "src/mn-message.gob" c->builtin_can_open = ___real_mn_message_builtin_can_open; #line 446 "src/mn-message.gob" c->builtin_open = ___real_mn_message_builtin_open; #line 463 "src/mn-message.gob" c->builtin_can_mark_as_read = ___real_mn_message_builtin_can_mark_as_read; #line 320 "mn-message.c" c->builtin_mark_as_read = NULL; #line 479 "src/mn-message.gob" c->builtin_can_mark_as_spam = ___real_mn_message_builtin_can_mark_as_spam; #line 324 "mn-message.c" c->builtin_mark_as_spam = NULL; #line 495 "src/mn-message.gob" c->builtin_can_delete = ___real_mn_message_builtin_can_delete; #line 328 "mn-message.c" c->builtin_delete = NULL; g_object_class->constructor = ___constructor; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_pointer ("mailbox" /* name */, NULL /* nick */, NULL /* blurb */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_MAILBOX, param_spec); param_spec = g_param_spec_ulong ("sent_time" /* name */, NULL /* nick */, NULL /* blurb */, 0 /* minimum */, G_MAXULONG /* maximum */, 0 /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_SENT_TIME, param_spec); param_spec = g_param_spec_string ("id" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_ID, param_spec); param_spec = g_param_spec_string ("mid" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_MID, param_spec); param_spec = g_param_spec_string ("from" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_FROM, param_spec); param_spec = g_param_spec_string ("subject" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_SUBJECT, param_spec); param_spec = g_param_spec_string ("uri" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_URI, param_spec); param_spec = g_param_spec_string ("filename" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | MN_MESSAGE_PARAM_EXPORT)); g_object_class_install_property (g_object_class, PROP_FILENAME, param_spec); param_spec = g_param_spec_uint ("flags" /* name */, NULL /* nick */, NULL /* blurb */, 0 /* minimum */, G_MAXUINT /* maximum */, 0 /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_FLAGS, param_spec); } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Message::set_property" { MNMessage *self G_GNUC_UNUSED; self = MN_MESSAGE (object); switch (property_id) { case PROP_MAILBOX: { #line 147 "src/mn-message.gob" self->mailbox = g_value_get_pointer (VAL); #line 441 "mn-message.c" } break; case PROP_SENT_TIME: { #line 151 "src/mn-message.gob" self->sent_time = g_value_get_ulong (VAL); #line 448 "mn-message.c" } break; case PROP_ID: { #line 165 "src/mn-message.gob" { char *old = self->id; self->id = g_value_dup_string (VAL); g_free (old); } #line 455 "mn-message.c" } break; case PROP_MID: { #line 180 "src/mn-message.gob" { char *old = self->mid; self->mid = g_value_dup_string (VAL); g_free (old); } #line 462 "mn-message.c" } break; case PROP_FROM: { #line 184 "src/mn-message.gob" { char *old = self->from; self->from = g_value_dup_string (VAL); g_free (old); } #line 469 "mn-message.c" } break; case PROP_SUBJECT: { #line 188 "src/mn-message.gob" { char *old = self->subject; self->subject = g_value_dup_string (VAL); g_free (old); } #line 476 "mn-message.c" } break; case PROP_URI: { #line 192 "src/mn-message.gob" { char *old = self->uri; self->uri = g_value_dup_string (VAL); g_free (old); } #line 483 "mn-message.c" } break; case PROP_FLAGS: { #line 201 "src/mn-message.gob" self->flags = g_value_get_uint (VAL); #line 490 "mn-message.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Message::get_property" { MNMessage *self G_GNUC_UNUSED; self = MN_MESSAGE (object); switch (property_id) { case PROP_MAILBOX: { #line 147 "src/mn-message.gob" g_value_set_pointer (VAL, self->mailbox); #line 521 "mn-message.c" } break; case PROP_SENT_TIME: { #line 151 "src/mn-message.gob" g_value_set_ulong (VAL, self->sent_time); #line 528 "mn-message.c" } break; case PROP_ID: { #line 165 "src/mn-message.gob" g_value_set_string (VAL, self->id); #line 535 "mn-message.c" } break; case PROP_MID: { #line 180 "src/mn-message.gob" g_value_set_string (VAL, self->mid); #line 542 "mn-message.c" } break; case PROP_FROM: { #line 184 "src/mn-message.gob" g_value_set_string (VAL, self->from); #line 549 "mn-message.c" } break; case PROP_SUBJECT: { #line 188 "src/mn-message.gob" g_value_set_string (VAL, self->subject); #line 556 "mn-message.c" } break; case PROP_URI: { #line 192 "src/mn-message.gob" g_value_set_string (VAL, self->uri); #line 563 "mn-message.c" } break; case PROP_FILENAME: { #line 196 "src/mn-message.gob" g_value_take_string(VAL, self->uri ? gnome_vfs_get_local_path_from_uri(self->uri) : NULL); #line 572 "mn-message.c" } break; case PROP_FLAGS: { #line 201 "src/mn-message.gob" g_value_set_uint (VAL, self->flags); #line 579 "mn-message.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 203 "src/mn-message.gob" MNMessageAction * mn_message_get_action (const char * name) { #line 600 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::get_action" #line 203 "src/mn-message.gob" g_return_val_if_fail (name != NULL, (MNMessageAction * )0); #line 604 "mn-message.c" { #line 205 "src/mn-message.gob" static GHashTable *actions = NULL; if (! actions) { int i; actions = g_hash_table_new(g_str_hash, g_str_equal); for (i = 0; i < G_N_ELEMENTS(message_actions); i++) { const MNMessageAction *action = &message_actions[i]; g_hash_table_insert(actions, (gpointer) action->name, (gpointer) action); } } return g_hash_table_lookup(actions, name); }} #line 626 "mn-message.c" #undef __GOB_FUNCTION__ #line 225 "src/mn-message.gob" static void mn_message_constructor (MNMessage * self) { #line 633 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::constructor" { #line 226 "src/mn-message.gob" g_assert(MN_IS_MAILBOX(self->mailbox)); if (! self->id) { GString *id; /* no ID was provided, try to generate a persistent one */ id = g_string_new(NULL); if (self->sent_time > 0) g_string_append_printf(id, ":sent-time:%i:", (int) self->sent_time); if (self->from) g_string_append_printf(id, ":from:%s:", self->from); if (self->subject) g_string_append_printf(id, ":subject:%s:", self->subject); if (! *id->str) { static int unique = 0; /* * We could not generate a persistent ID. Fallback to a * non-persistent one. */ g_string_append_printf(id, "%i", g_atomic_int_exchange_and_add(&unique, 1)); } self->id = g_string_free(id, FALSE); } /* these fields must only be filled after we have generated an ID */ if (! self->from) self->from = g_strdup(""); if (! self->subject) self->subject = g_strdup(""); }} #line 677 "mn-message.c" #undef __GOB_FUNCTION__ #line 267 "src/mn-message.gob" static gboolean mn_message_subst_command_cb (const char * name, char ** value, gpointer data) { #line 684 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::subst_command_cb" { #line 269 "src/mn-message.gob" Self *self = data; GParamSpec **properties; unsigned int n_properties; gboolean status = FALSE; int i; properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties); for (i = 0; i < n_properties; i++) if ((properties[i]->flags & MN_MESSAGE_PARAM_EXPORT) != 0 && ! strcmp(g_param_spec_get_name(properties[i]), name)) { GValue gvalue = { 0, }; g_value_init(&gvalue, G_PARAM_SPEC_VALUE_TYPE(properties[i])); g_object_get_property(G_OBJECT(self), name, &gvalue); *value = mn_g_value_to_string(&gvalue); g_value_unset(&gvalue); status = TRUE; break; } g_free(properties); return status; }} #line 715 "mn-message.c" #undef __GOB_FUNCTION__ #line 297 "src/mn-message.gob" static gboolean mn_message_execute_command_real (MNMessage * self, const char * command, GError ** err) { #line 722 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::execute_command_real" #line 297 "src/mn-message.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 297 "src/mn-message.gob" g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0); #line 297 "src/mn-message.gob" g_return_val_if_fail (command != NULL, (gboolean )0); #line 730 "mn-message.c" { #line 301 "src/mn-message.gob" char *subst; int status; subst = mn_subst_command(command, self_subst_command_cb, self, err); if (! subst) return FALSE; status = gnome_execute_shell(NULL, subst); g_free(subst); if (status < 0) { g_set_error(err, 0, 0, "%s", g_strerror(errno)); return FALSE; } return TRUE; }} #line 752 "mn-message.c" #undef __GOB_FUNCTION__ #line 325 "src/mn-message.gob" static gboolean mn_message_execute_command (MNMessage * self, const char * id, GError ** err) { #line 759 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::execute_command" #line 325 "src/mn-message.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 325 "src/mn-message.gob" g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0); #line 325 "src/mn-message.gob" g_return_val_if_fail (id != NULL, (gboolean )0); #line 767 "mn-message.c" { #line 327 "src/mn-message.gob" char *command; GError *tmp_err = NULL; command = mn_mailbox_get_command(self->mailbox, id); if (! command) return FALSE; if (! self_execute_command_real(self, command, &tmp_err)) { g_set_error(err, 0, 0, _("Unable to execute \"%s\": %s."), command, tmp_err->message); g_error_free(tmp_err); } g_free(command); return TRUE; }} #line 787 "mn-message.c" #undef __GOB_FUNCTION__ #line 345 "src/mn-message.gob" gboolean mn_message_can_perform_action (MNMessage * self, MNMessageAction * action) { #line 794 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::can_perform_action" #line 345 "src/mn-message.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 345 "src/mn-message.gob" g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0); #line 345 "src/mn-message.gob" g_return_val_if_fail (action != NULL, (gboolean )0); #line 802 "mn-message.c" { #line 347 "src/mn-message.gob" return mn_mailbox_has_command(self->mailbox, action->name) || action->can_perform(self); }} #line 809 "mn-message.c" #undef __GOB_FUNCTION__ #line 352 "src/mn-message.gob" void mn_message_perform_action (MNMessage * self, MNMessageAction * action, MNMessageActionResultCallback callback, gpointer data) { #line 816 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::perform_action" #line 352 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 352 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 352 "src/mn-message.gob" g_return_if_fail (action != NULL); #line 352 "src/mn-message.gob" g_return_if_fail (callback != NULL); #line 826 "mn-message.c" { #line 357 "src/mn-message.gob" GError *err = NULL; if (self_execute_command(self, action->name, &err)) self_action_done_real(self, action, err, callback, data); else { MNMessageActionRequest *request; request = g_new0(MNMessageActionRequest, 1); request->message = g_object_ref(self); request->action = action; request->callback = callback; request->data = data; action->perform(self, request); } }} #line 847 "mn-message.c" #undef __GOB_FUNCTION__ #line 376 "src/mn-message.gob" void mn_message_perform_action_in_thread (MNMessageActionRequest * request, MNMessageActionPerformCallback callback, gpointer user_data) { #line 854 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::perform_action_in_thread" #line 376 "src/mn-message.gob" g_return_if_fail (request != NULL); #line 376 "src/mn-message.gob" g_return_if_fail (callback != NULL); #line 860 "mn-message.c" { #line 380 "src/mn-message.gob" PerformInfo *info; info = g_new0(PerformInfo, 1); info->request = request; info->callback = callback; info->user_data = user_data; g_object_ref(request->message); g_object_ref(request->message->mailbox); mn_thread_create((GThreadFunc) self_perform_action_in_thread_cb, info); }} #line 876 "mn-message.c" #undef __GOB_FUNCTION__ #line 394 "src/mn-message.gob" static void mn_message_perform_action_in_thread_cb (PerformInfo * info) { #line 883 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::perform_action_in_thread_cb" { #line 396 "src/mn-message.gob" GError *err; err = info->callback(info->request->message, info->user_data); GDK_THREADS_ENTER(); self_action_done(info->request, err); g_object_unref(info->request->message->mailbox); g_object_unref(info->request->message); gdk_flush(); GDK_THREADS_LEAVE(); }} #line 902 "mn-message.c" #undef __GOB_FUNCTION__ #line 412 "src/mn-message.gob" static void mn_message_action_done_real (MNMessage * self, MNMessageAction * action, GError * err, MNMessageActionResultCallback callback, gpointer data) { #line 909 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::action_done_real" #line 412 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 412 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 412 "src/mn-message.gob" g_return_if_fail (action != NULL); #line 917 "mn-message.c" { #line 418 "src/mn-message.gob" action->done(self, err); callback(action, err, data); }} #line 924 "mn-message.c" #undef __GOB_FUNCTION__ #line 423 "src/mn-message.gob" void mn_message_action_done (MNMessageActionRequest * request, GError * err) { #line 931 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::action_done" #line 423 "src/mn-message.gob" g_return_if_fail (request != NULL); #line 935 "mn-message.c" { #line 425 "src/mn-message.gob" Self *self = request->message; self_action_done_real(self, request->action, err, request->callback, request->data); g_object_unref(request->message); g_free(request); }} #line 946 "mn-message.c" #undef __GOB_FUNCTION__ #line 434 "src/mn-message.gob" GQuark mn_message_action_error_quark (void) { #line 953 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::action_error_quark" { #line 436 "src/mn-message.gob" return g_quark_from_static_string("mn-message-action-error"); }} #line 960 "mn-message.c" #undef __GOB_FUNCTION__ #line 440 "src/mn-message.gob" static gboolean mn_message_builtin_can_open (MNMessage * self) { #line 967 "mn-message.c" MNMessageClass *klass; #line 440 "src/mn-message.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 440 "src/mn-message.gob" g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0); #line 973 "mn-message.c" klass = MN_MESSAGE_GET_CLASS(self); if(klass->builtin_can_open) return (*klass->builtin_can_open)(self); else return (gboolean )(0); } #line 440 "src/mn-message.gob" static gboolean ___real_mn_message_builtin_can_open (MNMessage * self G_GNUC_UNUSED) { #line 985 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::builtin_can_open" { #line 442 "src/mn-message.gob" return self->uri != NULL; }} #line 992 "mn-message.c" #undef __GOB_FUNCTION__ #line 446 "src/mn-message.gob" static void mn_message_builtin_open (MNMessage * self, MNMessageActionRequest * request) { #line 999 "mn-message.c" MNMessageClass *klass; #line 446 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 446 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 1005 "mn-message.c" klass = MN_MESSAGE_GET_CLASS(self); if(klass->builtin_open) (*klass->builtin_open)(self,request); } #line 446 "src/mn-message.gob" static void ___real_mn_message_builtin_open (MNMessage * self G_GNUC_UNUSED, MNMessageActionRequest * request) { #line 1015 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::builtin_open" { #line 448 "src/mn-message.gob" GError *err = NULL; gnome_url_show(self->uri, &err); self_action_done(request, err); }} #line 1026 "mn-message.c" #undef __GOB_FUNCTION__ #line 456 "src/mn-message.gob" static void mn_message_open_done (MNMessage * self, GError * err) { #line 1033 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::open_done" #line 456 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 456 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 1039 "mn-message.c" { #line 458 "src/mn-message.gob" if (! err) self_consider_as_read(self); /* [1] */ }} #line 1046 "mn-message.c" #undef __GOB_FUNCTION__ #line 463 "src/mn-message.gob" static gboolean mn_message_builtin_can_mark_as_read (MNMessage * self) { #line 1053 "mn-message.c" MNMessageClass *klass; #line 463 "src/mn-message.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 463 "src/mn-message.gob" g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0); #line 1059 "mn-message.c" klass = MN_MESSAGE_GET_CLASS(self); if(klass->builtin_can_mark_as_read) return (*klass->builtin_can_mark_as_read)(self); else return (gboolean )(0); } #line 463 "src/mn-message.gob" static gboolean ___real_mn_message_builtin_can_mark_as_read (MNMessage * self G_GNUC_UNUSED) { #line 1071 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::builtin_can_mark_as_read" { #line 465 "src/mn-message.gob" return SELF_GET_CLASS(self)->builtin_mark_as_read != NULL; }} #line 1078 "mn-message.c" #undef __GOB_FUNCTION__ #line 469 "src/mn-message.gob" static void mn_message_builtin_mark_as_read (MNMessage * self, MNMessageActionRequest * request) { #line 1085 "mn-message.c" MNMessageClass *klass; #line 469 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 469 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 1091 "mn-message.c" klass = MN_MESSAGE_GET_CLASS(self); if(klass->builtin_mark_as_read) (*klass->builtin_mark_as_read)(self,request); } #line 472 "src/mn-message.gob" static void mn_message_mark_as_read_done (MNMessage * self, GError * err) { #line 1102 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::mark_as_read_done" #line 472 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 472 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 1108 "mn-message.c" { #line 474 "src/mn-message.gob" if (! err) self_consider_as_read(self); /* [1] */ }} #line 1115 "mn-message.c" #undef __GOB_FUNCTION__ #line 479 "src/mn-message.gob" static gboolean mn_message_builtin_can_mark_as_spam (MNMessage * self) { #line 1122 "mn-message.c" MNMessageClass *klass; #line 479 "src/mn-message.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 479 "src/mn-message.gob" g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0); #line 1128 "mn-message.c" klass = MN_MESSAGE_GET_CLASS(self); if(klass->builtin_can_mark_as_spam) return (*klass->builtin_can_mark_as_spam)(self); else return (gboolean )(0); } #line 479 "src/mn-message.gob" static gboolean ___real_mn_message_builtin_can_mark_as_spam (MNMessage * self G_GNUC_UNUSED) { #line 1140 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::builtin_can_mark_as_spam" { #line 481 "src/mn-message.gob" return SELF_GET_CLASS(self)->builtin_mark_as_spam != NULL; }} #line 1147 "mn-message.c" #undef __GOB_FUNCTION__ #line 485 "src/mn-message.gob" static void mn_message_builtin_mark_as_spam (MNMessage * self, MNMessageActionRequest * request) { #line 1154 "mn-message.c" MNMessageClass *klass; #line 485 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 485 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 1160 "mn-message.c" klass = MN_MESSAGE_GET_CLASS(self); if(klass->builtin_mark_as_spam) (*klass->builtin_mark_as_spam)(self,request); } #line 488 "src/mn-message.gob" static void mn_message_mark_as_spam_done (MNMessage * self, GError * err) { #line 1171 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::mark_as_spam_done" #line 488 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 488 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 1177 "mn-message.c" { #line 490 "src/mn-message.gob" if (! err) self_consider_as_read(self); /* [1] */ }} #line 1184 "mn-message.c" #undef __GOB_FUNCTION__ #line 495 "src/mn-message.gob" static gboolean mn_message_builtin_can_delete (MNMessage * self) { #line 1191 "mn-message.c" MNMessageClass *klass; #line 495 "src/mn-message.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 495 "src/mn-message.gob" g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0); #line 1197 "mn-message.c" klass = MN_MESSAGE_GET_CLASS(self); if(klass->builtin_can_delete) return (*klass->builtin_can_delete)(self); else return (gboolean )(0); } #line 495 "src/mn-message.gob" static gboolean ___real_mn_message_builtin_can_delete (MNMessage * self G_GNUC_UNUSED) { #line 1209 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::builtin_can_delete" { #line 497 "src/mn-message.gob" return SELF_GET_CLASS(self)->builtin_delete != NULL; }} #line 1216 "mn-message.c" #undef __GOB_FUNCTION__ #line 501 "src/mn-message.gob" static void mn_message_builtin_delete (MNMessage * self, MNMessageActionRequest * request) { #line 1223 "mn-message.c" MNMessageClass *klass; #line 501 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 501 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 1229 "mn-message.c" klass = MN_MESSAGE_GET_CLASS(self); if(klass->builtin_delete) (*klass->builtin_delete)(self,request); } #line 504 "src/mn-message.gob" static void mn_message_delete_done (MNMessage * self, GError * err) { #line 1240 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::delete_done" #line 504 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 504 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 1246 "mn-message.c" { #line 506 "src/mn-message.gob" if (! err) self_consider_as_read(self); /* [1] */ }} #line 1253 "mn-message.c" #undef __GOB_FUNCTION__ #line 511 "src/mn-message.gob" void mn_message_consider_as_read (MNMessage * self) { #line 1260 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::consider_as_read" #line 511 "src/mn-message.gob" g_return_if_fail (self != NULL); #line 511 "src/mn-message.gob" g_return_if_fail (MN_IS_MESSAGE (self)); #line 1266 "mn-message.c" { #line 513 "src/mn-message.gob" GSList *list; GSList *l; gboolean exists = FALSE; list = mn_conf_get_string_list(MN_CONF_MESSAGES_CONSIDERED_AS_READ); MN_LIST_FOREACH(l, list) { const char *id = l->data; if (! strcmp(id, self->id)) { exists = TRUE; break; } } if (! exists) { list = g_slist_prepend(list, g_strdup(self->id)); mn_conf_set_string_list(MN_CONF_MESSAGES_CONSIDERED_AS_READ, list); } mn_g_slist_free_deep(list); }} #line 1296 "mn-message.c" #undef __GOB_FUNCTION__ #line 545 "src/mn-message.gob" void mn_message_consider_as_read_list (GList * messages) { #line 1303 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::consider_as_read_list" { #line 547 "src/mn-message.gob" GHashTable *set; unsigned int old_size; GList *l; set = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ); old_size = g_hash_table_size(set); MN_LIST_FOREACH(l, messages) { MNMessage *message = l->data; g_hash_table_replace(set, g_strdup(message->id), GINT_TO_POINTER(TRUE)); } if (g_hash_table_size(set) != old_size) mn_conf_set_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ, set); g_hash_table_destroy(set); }} #line 1328 "mn-message.c" #undef __GOB_FUNCTION__ #line 569 "src/mn-message.gob" MNMessage * mn_message_new (MNMailbox * mailbox, time_t sent_time, const char * id, const char * mid, const char * from, const char * subject, const char * uri, MNMessageFlags flags) { #line 1335 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::new" #line 569 "src/mn-message.gob" g_return_val_if_fail (mailbox != NULL, (MNMessage * )0); #line 569 "src/mn-message.gob" g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (MNMessage * )0); #line 1341 "mn-message.c" { #line 578 "src/mn-message.gob" return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX(mailbox), MN_MESSAGE_PROP_SENT_TIME(sent_time), MN_MESSAGE_PROP_ID((char *) id), MN_MESSAGE_PROP_MID((char *) mid), MN_MESSAGE_PROP_FROM((char *) from), MN_MESSAGE_PROP_SUBJECT((char *) subject), MN_MESSAGE_PROP_URI((char *) uri), MN_MESSAGE_PROP_FLAGS(flags), NULL); }} #line 1355 "mn-message.c" #undef __GOB_FUNCTION__ #line 590 "src/mn-message.gob" xmlNode * mn_message_xml_node_new (MNMessage * self) { #line 1362 "mn-message.c" #define __GOB_FUNCTION__ "MN:Message::xml_node_new" #line 590 "src/mn-message.gob" g_return_val_if_fail (self != NULL, (xmlNode * )0); #line 590 "src/mn-message.gob" g_return_val_if_fail (MN_IS_MESSAGE (self), (xmlNode * )0); #line 1368 "mn-message.c" { #line 592 "src/mn-message.gob" xmlNode *node; node = xmlNewNode(NULL, "message"); xmlSetProp(node, "mailbox", self->mailbox->runtime_name); if ((self->flags & MN_MESSAGE_NEW) != 0) xmlSetProp(node, "new", "true"); mn_xml_export_properties(G_OBJECT(self), node); return node; }} #line 1385 "mn-message.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-gmail-mailbox.h0000644000175000001440000000512311015312646023044 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-authenticated-mailbox.h" #ifndef __MN_GMAIL_MAILBOX_H__ #define __MN_GMAIL_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_GMAIL_MAILBOX (mn_gmail_mailbox_get_type()) #define MN_GMAIL_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_gmail_mailbox_get_type(), MNGmailMailbox) #define MN_GMAIL_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_gmail_mailbox_get_type(), MNGmailMailbox const) #define MN_GMAIL_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_gmail_mailbox_get_type(), MNGmailMailboxClass) #define MN_IS_GMAIL_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_gmail_mailbox_get_type ()) #define MN_GMAIL_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_gmail_mailbox_get_type(), MNGmailMailboxClass) /* Private structure type */ typedef struct _MNGmailMailboxPrivate MNGmailMailboxPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_GMAIL_MAILBOX__ #define __TYPEDEF_MN_GMAIL_MAILBOX__ typedef struct _MNGmailMailbox MNGmailMailbox; #endif struct _MNGmailMailbox { MNAuthenticatedMailbox __parent__; /*< public >*/ char * location; char * label; /*< private >*/ MNGmailMailboxPrivate *_priv; }; /* * Class definition */ typedef struct _MNGmailMailboxClass MNGmailMailboxClass; struct _MNGmailMailboxClass { MNAuthenticatedMailboxClass __parent__; }; /* * Public methods */ GType mn_gmail_mailbox_get_type (void) G_GNUC_CONST; #line 386 "src/mn-gmail-mailbox.gob" char * mn_gmail_mailbox_build_name (const char * username, const char * label); #line 64 "mn-gmail-mailbox.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_GMAIL_MAILBOX_PROP_LOCATION(arg) "location", __extension__ ({gchar *z = (arg); z;}) #define MN_GMAIL_MAILBOX_GET_PROP_LOCATION(arg) "location", __extension__ ({gchar **z = (arg); z;}) #define MN_GMAIL_MAILBOX_PROP_LABEL(arg) "label", __extension__ ({gchar *z = (arg); z;}) #define MN_GMAIL_MAILBOX_GET_PROP_LABEL(arg) "label", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_GMAIL_MAILBOX_PROP_LOCATION(arg) "location",(gchar *)(arg) #define MN_GMAIL_MAILBOX_GET_PROP_LOCATION(arg) "location",(gchar **)(arg) #define MN_GMAIL_MAILBOX_PROP_LABEL(arg) "label",(gchar *)(arg) #define MN_GMAIL_MAILBOX_GET_PROP_LABEL(arg) "label",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-server.gob.stamp0000644000175000001440000000000011015312644025300 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-vfs-mailbox-backend.h0000644000175000001440000000574311015312647024147 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-vfs-mailbox.h" #ifndef __MN_VFS_MAILBOX_BACKEND_H__ #define __MN_VFS_MAILBOX_BACKEND_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_VFS_MAILBOX_BACKEND (mn_vfs_mailbox_backend_get_type()) #define MN_VFS_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_vfs_mailbox_backend_get_type(), MNVFSMailboxBackend) #define MN_VFS_MAILBOX_BACKEND_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_vfs_mailbox_backend_get_type(), MNVFSMailboxBackend const) #define MN_VFS_MAILBOX_BACKEND_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_vfs_mailbox_backend_get_type(), MNVFSMailboxBackendClass) #define MN_IS_VFS_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_vfs_mailbox_backend_get_type ()) #define MN_VFS_MAILBOX_BACKEND_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_vfs_mailbox_backend_get_type(), MNVFSMailboxBackendClass) /* Private structure type */ typedef struct _MNVFSMailboxBackendPrivate MNVFSMailboxBackendPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_VFS_MAILBOX_BACKEND__ #define __TYPEDEF_MN_VFS_MAILBOX_BACKEND__ typedef struct _MNVFSMailboxBackend MNVFSMailboxBackend; #endif struct _MNVFSMailboxBackend { GObject __parent__; /*< private >*/ MNVFSMailbox * mailbox; /* protected */ int check_latency; /* protected */ MNVFSMailboxBackendPrivate *_priv; }; /* * Class definition */ typedef struct _MNVFSMailboxBackendClass MNVFSMailboxBackendClass; struct _MNVFSMailboxBackendClass { GObjectClass __parent__; void (* monitor_cb) (MNVFSMailboxBackend * self, const char * info_uri, GnomeVFSMonitorEventType event_type); gboolean (* is) (MNVFSMailboxBackend * self, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox); void (* check) (MNVFSMailboxBackend * self, int check_id); const char * format; }; /* * Public methods */ GType mn_vfs_mailbox_backend_get_type (void) G_GNUC_CONST; #line 135 "src/mn-vfs-mailbox-backend.gob" gboolean mn_vfs_mailbox_backend_is (MNVFSMailboxBackend * self, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox); #line 68 "mn-vfs-mailbox-backend.h" #line 138 "src/mn-vfs-mailbox-backend.gob" void mn_vfs_mailbox_backend_check (MNVFSMailboxBackend * self, int check_id); #line 72 "mn-vfs-mailbox-backend.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_VFS_MAILBOX_BACKEND_PROP_MAILBOX(arg) "mailbox", __extension__ ({MNVFSMailbox * z = (arg); z;}) #define MN_VFS_MAILBOX_BACKEND_GET_PROP_MAILBOX(arg) "mailbox", __extension__ ({MNVFSMailbox * *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_VFS_MAILBOX_BACKEND_PROP_MAILBOX(arg) "mailbox",(MNVFSMailbox * )(arg) #define MN_VFS_MAILBOX_BACKEND_GET_PROP_MAILBOX(arg) "mailbox",(MNVFSMailbox * *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-folder-tree-server.gob.stamp0000644000175000001440000000000011015312644027506 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-vfs-mailbox-backend-private.h0000644000175000001440000000147111015312647025611 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_VFS_MAILBOX_BACKEND_PRIVATE_H__ #define __MN_VFS_MAILBOX_BACKEND_PRIVATE_H__ #include "mn-vfs-mailbox-backend.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNVFSMailboxBackendPrivate { #line 47 "src/mn-vfs-mailbox-backend.gob" unsigned int queue_check_id; #line 16 "mn-vfs-mailbox-backend-private.h" }; #line 70 "src/mn-vfs-mailbox-backend.gob" void mn_vfs_mailbox_backend_monitor (MNVFSMailboxBackend * self, int check_id, const char * uri, GnomeVFSMonitorType type); #line 20 "mn-vfs-mailbox-backend-private.h" #line 112 "src/mn-vfs-mailbox-backend.gob" void mn_vfs_mailbox_backend_queue_check (MNVFSMailboxBackend * self); #line 23 "mn-vfs-mailbox-backend-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-mailbox.gob.stamp0000644000175000001440000000000011015312647025430 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-webmail-mailbox-properties-private.h0000644000175000001440000000120511015312647027233 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_WEBMAIL_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_WEBMAIL_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-webmail-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNWebmailMailboxPropertiesPrivate { #line 35 "src/mn-webmail-mailbox-properties.gob" GtkWidget * inbox_radio; #line 36 "src/mn-webmail-mailbox-properties.gob" GtkWidget * other_radio; #line 37 "src/mn-webmail-mailbox-properties.gob" GtkWidget * folder_entry; #line 20 "mn-webmail-mailbox-properties-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-auth-combo-box.h0000644000175000001440000000506411015312646023152 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_AUTH_COMBO_BOX_H__ #define __MN_AUTH_COMBO_BOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_AUTH_COMBO_BOX (mn_auth_combo_box_get_type()) #define MN_AUTH_COMBO_BOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_auth_combo_box_get_type(), MNAuthComboBox) #define MN_AUTH_COMBO_BOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_auth_combo_box_get_type(), MNAuthComboBox const) #define MN_AUTH_COMBO_BOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_auth_combo_box_get_type(), MNAuthComboBoxClass) #define MN_IS_AUTH_COMBO_BOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_auth_combo_box_get_type ()) #define MN_AUTH_COMBO_BOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_auth_combo_box_get_type(), MNAuthComboBoxClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_AUTH_COMBO_BOX__ #define __TYPEDEF_MN_AUTH_COMBO_BOX__ typedef struct _MNAuthComboBox MNAuthComboBox; #endif struct _MNAuthComboBox { GtkComboBox __parent__; }; /* * Class definition */ typedef struct _MNAuthComboBoxClass MNAuthComboBoxClass; struct _MNAuthComboBoxClass { GtkComboBoxClass __parent__; }; /* * Public methods */ GType mn_auth_combo_box_get_type (void) G_GNUC_CONST; #line 70 "src/mn-auth-combo-box.gob" gchar * mn_auth_combo_box_get_active_mechanism (MNAuthComboBox * self); #line 55 "mn-auth-combo-box.h" #line 44 "src/mn-auth-combo-box.gob" void mn_auth_combo_box_set_active_mechanism (MNAuthComboBox * self, gchar * val); #line 59 "mn-auth-combo-box.h" #line 155 "src/mn-auth-combo-box.gob" void mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const char * label); #line 64 "mn-auth-combo-box.h" #line 170 "src/mn-auth-combo-box.gob" GtkWidget * mn_auth_combo_box_new (void); #line 67 "mn-auth-combo-box.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_AUTH_COMBO_BOX_PROP_ACTIVE_MECHANISM(arg) "active_mechanism", __extension__ ({gchar *z = (arg); z;}) #define MN_AUTH_COMBO_BOX_GET_PROP_ACTIVE_MECHANISM(arg) "active_mechanism", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_AUTH_COMBO_BOX_PROP_ACTIVE_MECHANISM(arg) "active_mechanism",(gchar *)(arg) #define MN_AUTH_COMBO_BOX_GET_PROP_ACTIVE_MECHANISM(arg) "active_mechanism",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-file-chooser-button.c0000644000175000001440000003726511015312644024217 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-file-chooser-button.h" #include "mn-file-chooser-button-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 39 "src/mn-file-chooser-button.gob" #include #include #include "mn-util.h" #line 32 "mn-file-chooser-button.c" /* self casting macros */ #define SELF(x) MN_FILE_CHOOSER_BUTTON(x) #define SELF_CONST(x) MN_FILE_CHOOSER_BUTTON_CONST(x) #define IS_SELF(x) MN_IS_FILE_CHOOSER_BUTTON(x) #define TYPE_SELF MN_TYPE_FILE_CHOOSER_BUTTON #define SELF_CLASS(x) MN_FILE_CHOOSER_BUTTON_CLASS(x) #define SELF_GET_CLASS(x) MN_FILE_CHOOSER_BUTTON_GET_CLASS(x) /* self typedefs */ typedef MNFileChooserButton Self; typedef MNFileChooserButtonClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_class_init (MNFileChooserButtonClass * c); #line 51 "mn-file-chooser-button.c" #line 73 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_init (MNFileChooserButton * self); #line 54 "mn-file-chooser-button.c" #line 111 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_clicked_h (GtkButton * button, gpointer data); #line 57 "mn-file-chooser-button.c" #line 147 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_update (MNFileChooserButton * self); #line 60 "mn-file-chooser-button.c" #line 207 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_get_file_info_cb (GnomeVFSAsyncHandle * handle, GList * results, gpointer data); #line 63 "mn-file-chooser-button.c" #line 253 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_response_h (GtkDialog * dialog, int response, gpointer user_data); #line 66 "mn-file-chooser-button.c" enum { PROP_0, PROP_FILENAME }; /* pointer to the class of our parent */ static GtkHBoxClass *parent_class = NULL; /* Short form macros */ #define self_get_filename mn_file_chooser_button_get_filename #define self_set_filename mn_file_chooser_button_set_filename #define self_clicked_h mn_file_chooser_button_clicked_h #define self_update mn_file_chooser_button_update #define self_get_file_info_cb mn_file_chooser_button_get_file_info_cb #define self_response_h mn_file_chooser_button_response_h #define self_new mn_file_chooser_button_new GType mn_file_chooser_button_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNFileChooserButtonClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_file_chooser_button_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNFileChooserButton), 0 /* n_preallocs */, (GInstanceInitFunc) mn_file_chooser_button_init, NULL }; type = g_type_register_static (GTK_TYPE_HBOX, "MNFileChooserButton", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNFileChooserButton *)g_object_new(mn_file_chooser_button_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNFileChooserButton * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNFileChooserButton * GET_NEW_VARG (const char *first, ...) { MNFileChooserButton *ret; va_list ap; va_start (ap, first); ret = (MNFileChooserButton *)g_object_new_valist (mn_file_chooser_button_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:File:Chooser:Button::dispose" MNFileChooserButton *self G_GNUC_UNUSED = MN_FILE_CHOOSER_BUTTON (obj_self); if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 69 "src/mn-file-chooser-button.gob" if(self->_priv->dialog) { gtk_widget_destroy ((gpointer) self->_priv->dialog); self->_priv->dialog = NULL; } #line 136 "mn-file-chooser-button.c" #line 71 "src/mn-file-chooser-button.gob" if(self->_priv->async_handle) { gnome_vfs_async_cancel ((gpointer) self->_priv->async_handle); self->_priv->async_handle = NULL; } #line 139 "mn-file-chooser-button.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:File:Chooser:Button::finalize" MNFileChooserButton *self G_GNUC_UNUSED = MN_FILE_CHOOSER_BUTTON (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 47 "src/mn-file-chooser-button.gob" if(self->_priv->filename) { g_free ((gpointer) self->_priv->filename); self->_priv->filename = NULL; } #line 154 "mn-file-chooser-button.c" } #undef __GOB_FUNCTION__ static void mn_file_chooser_button_class_init (MNFileChooserButtonClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:File:Chooser:Button::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNFileChooserButtonPrivate)); parent_class = g_type_class_ref (GTK_TYPE_HBOX); g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_string ("filename" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_FILENAME, param_spec); } } #undef __GOB_FUNCTION__ #line 73 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_init (MNFileChooserButton * self G_GNUC_UNUSED) { #line 191 "mn-file-chooser-button.c" #define __GOB_FUNCTION__ "MN:File:Chooser:Button::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_FILE_CHOOSER_BUTTON,MNFileChooserButtonPrivate); { #line 74 "src/mn-file-chooser-button.gob" GtkWidget *button; GtkWidget *box; GtkWidget *separator; GtkWidget *image; button = gtk_button_new(); gtk_container_add(GTK_CONTAINER(self), button); gtk_widget_show(button); box = gtk_hbox_new(FALSE, 4); gtk_container_add(GTK_CONTAINER(button), box); gtk_widget_show(box); selfp->image = gtk_image_new(); gtk_box_pack_start(GTK_BOX(box), selfp->image, FALSE, FALSE, 0); gtk_widget_show(selfp->image); selfp->label = gtk_label_new(NULL); gtk_label_set_ellipsize(GTK_LABEL(selfp->label), PANGO_ELLIPSIZE_END); gtk_misc_set_alignment(GTK_MISC(selfp->label), 0.0, 0.5); gtk_container_add(GTK_CONTAINER(box), selfp->label); gtk_widget_show(selfp->label); separator = gtk_vseparator_new(); gtk_box_pack_start(GTK_BOX(box), separator, FALSE, FALSE, 0); gtk_widget_show(separator); image = gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU); gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); gtk_widget_show(image); g_signal_connect(button, "clicked", G_CALLBACK(self_clicked_h), self); self_update(self); #line 232 "mn-file-chooser-button.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:File:Chooser:Button::set_property" { MNFileChooserButton *self G_GNUC_UNUSED; self = MN_FILE_CHOOSER_BUTTON (object); switch (property_id) { case PROP_FILENAME: { #line 54 "src/mn-file-chooser-button.gob" g_free(selfp->filename); selfp->filename = g_value_dup_string(VAL); self_update(self); if (selfp->dialog) gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(selfp->dialog), selfp->filename); #line 261 "mn-file-chooser-button.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:File:Chooser:Button::get_property" { MNFileChooserButton *self G_GNUC_UNUSED; self = MN_FILE_CHOOSER_BUTTON (object); switch (property_id) { case PROP_FILENAME: { #line 50 "src/mn-file-chooser-button.gob" g_value_set_string(VAL, selfp->filename); #line 294 "mn-file-chooser-button.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 50 "src/mn-file-chooser-button.gob" gchar * mn_file_chooser_button_get_filename (MNFileChooserButton * self) { #line 314 "mn-file-chooser-button.c" #define __GOB_FUNCTION__ "MN:File:Chooser:Button::get_filename" { #line 48 "src/mn-file-chooser-button.gob" gchar* val; g_object_get (G_OBJECT (self), "filename", &val, NULL); return val; }} #line 320 "mn-file-chooser-button.c" #undef __GOB_FUNCTION__ #line 54 "src/mn-file-chooser-button.gob" void mn_file_chooser_button_set_filename (MNFileChooserButton * self, gchar * val) { #line 327 "mn-file-chooser-button.c" #define __GOB_FUNCTION__ "MN:File:Chooser:Button::set_filename" { #line 48 "src/mn-file-chooser-button.gob" g_object_set (G_OBJECT (self), "filename", val, NULL); }} #line 333 "mn-file-chooser-button.c" #undef __GOB_FUNCTION__ #line 111 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_clicked_h (GtkButton * button, gpointer data) { #line 341 "mn-file-chooser-button.c" #define __GOB_FUNCTION__ "MN:File:Chooser:Button::clicked_h" { #line 113 "src/mn-file-chooser-button.gob" Self *self = data; if (! selfp->dialog) { /* translators: header capitalization */ selfp->dialog = GTK_WIDGET(selfp->create_dialog(selfp->create_dialog_data)); g_assert(GTK_IS_FILE_CHOOSER_DIALOG(selfp->dialog)); mn_add_weak_pointer(&selfp->dialog); if (selfp->filename) gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(selfp->dialog), selfp->filename); g_signal_connect(selfp->dialog, "response", G_CALLBACK(self_response_h), self); } if (! GTK_WIDGET_VISIBLE(selfp->dialog)) { GtkWindow *parent; parent = mn_widget_get_parent_window(GTK_WIDGET(self)); if (parent) { if (parent != gtk_window_get_transient_for(GTK_WINDOW(selfp->dialog))) gtk_window_set_transient_for(GTK_WINDOW(selfp->dialog), parent); gtk_window_set_modal(GTK_WINDOW(selfp->dialog), gtk_window_get_modal(parent)); } } mn_window_present_from_event(GTK_WINDOW(selfp->dialog)); }} #line 378 "mn-file-chooser-button.c" #undef __GOB_FUNCTION__ #line 147 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_update (MNFileChooserButton * self) { #line 385 "mn-file-chooser-button.c" #define __GOB_FUNCTION__ "MN:File:Chooser:Button::update" #line 147 "src/mn-file-chooser-button.gob" g_return_if_fail (self != NULL); #line 147 "src/mn-file-chooser-button.gob" g_return_if_fail (MN_IS_FILE_CHOOSER_BUTTON (self)); #line 391 "mn-file-chooser-button.c" { #line 149 "src/mn-file-chooser-button.gob" GnomeVFSURI *uri = NULL; if (selfp->async_handle) { gnome_vfs_async_cancel(selfp->async_handle); selfp->async_handle = NULL; } if (selfp->filename && *selfp->filename) { char *text_uri; char *base; base = g_path_get_basename(selfp->filename); gtk_label_set_text(GTK_LABEL(selfp->label), base); g_free(base); text_uri = gnome_vfs_get_uri_from_local_path(selfp->filename); if (text_uri) { uri = gnome_vfs_uri_new(text_uri); g_free(text_uri); } } else /* * translators: GTK+ has the same message used in the same * context; please use the GTK+ translation for consistency */ gtk_label_set_text(GTK_LABEL(selfp->label), _("(None)")); /* * Do not use MN_STOCK_UNKNOWN: we want to appear exactly as a * GtkFileChooserButton. */ gtk_image_set_from_icon_name(GTK_IMAGE(selfp->image), "stock_unknown", GTK_ICON_SIZE_MENU); if (uri) { GList *uri_list = NULL; uri_list = g_list_append(uri_list, uri); g_object_ref(self); gnome_vfs_async_get_file_info(&selfp->async_handle, uri_list, GNOME_VFS_FILE_INFO_GET_MIME_TYPE | GNOME_VFS_FILE_INFO_FOLLOW_LINKS, GNOME_VFS_PRIORITY_DEFAULT, self_get_file_info_cb, self); gnome_vfs_uri_unref(uri); g_list_free(uri_list); } }} #line 451 "mn-file-chooser-button.c" #undef __GOB_FUNCTION__ #line 207 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_get_file_info_cb (GnomeVFSAsyncHandle * handle, GList * results, gpointer data) { #line 458 "mn-file-chooser-button.c" #define __GOB_FUNCTION__ "MN:File:Chooser:Button::get_file_info_cb" { #line 209 "src/mn-file-chooser-button.gob" Self *self = data; GDK_THREADS_ENTER(); if (results) { GnomeVFSGetFileInfoResult *result = results->data; if (result->result == GNOME_VFS_OK && (result->file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE) != 0) { char *uri; char *icon_name; uri = gnome_vfs_get_uri_from_local_path(selfp->filename); g_assert(uri != NULL); icon_name = gnome_icon_lookup(gtk_icon_theme_get_default(), NULL, uri, NULL, result->file_info, result->file_info->mime_type, GNOME_ICON_LOOKUP_FLAGS_NONE, NULL); g_free(uri); if (icon_name) { gtk_image_set_from_icon_name(GTK_IMAGE(selfp->image), icon_name, GTK_ICON_SIZE_MENU); g_free(icon_name); } } } selfp->async_handle = NULL; g_object_unref(self); /* do not call gdk_flush(), we're normally in the main thread */ GDK_THREADS_LEAVE(); }} #line 505 "mn-file-chooser-button.c" #undef __GOB_FUNCTION__ #line 253 "src/mn-file-chooser-button.gob" static void mn_file_chooser_button_response_h (GtkDialog * dialog, int response, gpointer user_data) { #line 512 "mn-file-chooser-button.c" #define __GOB_FUNCTION__ "MN:File:Chooser:Button::response_h" { #line 255 "src/mn-file-chooser-button.gob" Self *self = user_data; if (response == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); self_set_filename(self, filename); g_free(filename); } gtk_widget_destroy(GTK_WIDGET(dialog)); }} #line 530 "mn-file-chooser-button.c" #undef __GOB_FUNCTION__ #line 270 "src/mn-file-chooser-button.gob" GtkWidget * mn_file_chooser_button_new (MNFileChooserButtonCreateDialogFunction create_dialog, gpointer data) { #line 537 "mn-file-chooser-button.c" #define __GOB_FUNCTION__ "MN:File:Chooser:Button::new" #line 270 "src/mn-file-chooser-button.gob" g_return_val_if_fail (create_dialog != NULL, (GtkWidget * )0); #line 541 "mn-file-chooser-button.c" { #line 273 "src/mn-file-chooser-button.gob" Self *self = GET_NEW; selfp->create_dialog = create_dialog; selfp->create_dialog_data = data; return GTK_WIDGET(self); }} #line 552 "mn-file-chooser-button.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-system-vfs-mailbox.h0000644000175000001440000000322211015312647024072 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-vfs-mailbox.h" #ifndef __MN_SYSTEM_VFS_MAILBOX_H__ #define __MN_SYSTEM_VFS_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_SYSTEM_VFS_MAILBOX (mn_system_vfs_mailbox_get_type()) #define MN_SYSTEM_VFS_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_system_vfs_mailbox_get_type(), MNSystemVFSMailbox) #define MN_SYSTEM_VFS_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_system_vfs_mailbox_get_type(), MNSystemVFSMailbox const) #define MN_SYSTEM_VFS_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_system_vfs_mailbox_get_type(), MNSystemVFSMailboxClass) #define MN_IS_SYSTEM_VFS_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_system_vfs_mailbox_get_type ()) #define MN_SYSTEM_VFS_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_system_vfs_mailbox_get_type(), MNSystemVFSMailboxClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_SYSTEM_VFS_MAILBOX__ #define __TYPEDEF_MN_SYSTEM_VFS_MAILBOX__ typedef struct _MNSystemVFSMailbox MNSystemVFSMailbox; #endif struct _MNSystemVFSMailbox { MNVFSMailbox __parent__; }; /* * Class definition */ typedef struct _MNSystemVFSMailboxClass MNSystemVFSMailboxClass; struct _MNSystemVFSMailboxClass { MNVFSMailboxClass __parent__; }; /* * Public methods */ GType mn_system_vfs_mailbox_get_type (void) G_GNUC_CONST; #line 76 "src/mn-system-vfs-mailbox.gob" const char * mn_system_vfs_mailbox_get_uri (void); #line 55 "mn-system-vfs-mailbox.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-maildir-mailbox-backend.h0000644000175000001440000000325711015312645024766 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-vfs-mailbox-backend.h" #ifndef __MN_MAILDIR_MAILBOX_BACKEND_H__ #define __MN_MAILDIR_MAILBOX_BACKEND_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MAILDIR_MAILBOX_BACKEND (mn_maildir_mailbox_backend_get_type()) #define MN_MAILDIR_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_maildir_mailbox_backend_get_type(), MNMaildirMailboxBackend) #define MN_MAILDIR_MAILBOX_BACKEND_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_maildir_mailbox_backend_get_type(), MNMaildirMailboxBackend const) #define MN_MAILDIR_MAILBOX_BACKEND_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_maildir_mailbox_backend_get_type(), MNMaildirMailboxBackendClass) #define MN_IS_MAILDIR_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_maildir_mailbox_backend_get_type ()) #define MN_MAILDIR_MAILBOX_BACKEND_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_maildir_mailbox_backend_get_type(), MNMaildirMailboxBackendClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_MAILDIR_MAILBOX_BACKEND__ #define __TYPEDEF_MN_MAILDIR_MAILBOX_BACKEND__ typedef struct _MNMaildirMailboxBackend MNMaildirMailboxBackend; #endif struct _MNMaildirMailboxBackend { MNVFSMailboxBackend __parent__; }; /* * Class definition */ typedef struct _MNMaildirMailboxBackendClass MNMaildirMailboxBackendClass; struct _MNMaildirMailboxBackendClass { MNVFSMailboxBackendClass __parent__; }; /* * Public methods */ GType mn_maildir_mailbox_backend_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-yahoo-mailbox-properties.h0000644000175000001440000000333711015312646025271 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-webmail-mailbox-properties.h" #ifndef __MN_YAHOO_MAILBOX_PROPERTIES_H__ #define __MN_YAHOO_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_YAHOO_MAILBOX_PROPERTIES (mn_yahoo_mailbox_properties_get_type()) #define MN_YAHOO_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_yahoo_mailbox_properties_get_type(), MNYahooMailboxProperties) #define MN_YAHOO_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_yahoo_mailbox_properties_get_type(), MNYahooMailboxProperties const) #define MN_YAHOO_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_yahoo_mailbox_properties_get_type(), MNYahooMailboxPropertiesClass) #define MN_IS_YAHOO_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_yahoo_mailbox_properties_get_type ()) #define MN_YAHOO_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_yahoo_mailbox_properties_get_type(), MNYahooMailboxPropertiesClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_YAHOO_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_YAHOO_MAILBOX_PROPERTIES__ typedef struct _MNYahooMailboxProperties MNYahooMailboxProperties; #endif struct _MNYahooMailboxProperties { MNWebmailMailboxProperties __parent__; }; /* * Class definition */ typedef struct _MNYahooMailboxPropertiesClass MNYahooMailboxPropertiesClass; struct _MNYahooMailboxPropertiesClass { MNWebmailMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_yahoo_mailbox_properties_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-sound-player.c0000644000175000001440000003671211015312645022746 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-sound-player.h" #include "mn-sound-player-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-sound-player.gob" #include #include #include #include #include "mn-conf.h" #include "mn-locked-callback.h" #include "mn-util.h" #line 36 "mn-sound-player.c" /* self casting macros */ #define SELF(x) MN_SOUND_PLAYER(x) #define SELF_CONST(x) MN_SOUND_PLAYER_CONST(x) #define IS_SELF(x) MN_IS_SOUND_PLAYER(x) #define TYPE_SELF MN_TYPE_SOUND_PLAYER #define SELF_CLASS(x) MN_SOUND_PLAYER_CLASS(x) #define SELF_GET_CLASS(x) MN_SOUND_PLAYER_GET_CLASS(x) /* self typedefs */ typedef MNSoundPlayer Self; typedef MNSoundPlayerClass SelfClass; /* here are local prototypes */ static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-sound-player.gob" static void mn_sound_player_class_init (MNSoundPlayerClass * c); #line 54 "mn-sound-player.c" #line 52 "src/mn-sound-player.gob" static void mn_sound_player_init (MNSoundPlayer * self); #line 57 "mn-sound-player.c" #line 62 "src/mn-sound-player.gob" static void mn_sound_player_dispose (MNSoundPlayer * self); #line 60 "mn-sound-player.c" #line 68 "src/mn-sound-player.gob" static void mn_sound_player_notify_play_command_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data); #line 63 "mn-sound-player.c" #line 85 "src/mn-sound-player.gob" static gboolean mn_sound_player_can_play (MNSoundPlayer * self); #line 66 "mn-sound-player.c" #line 182 "src/mn-sound-player.gob" static gboolean mn_sound_player_subst_cb (const char * name, char ** value, gpointer data); #line 69 "mn-sound-player.c" #line 202 "src/mn-sound-player.gob" static void mn_sound_player_stop_real (MNSoundPlayer * self, gboolean notify_can_stop); #line 72 "mn-sound-player.c" #line 225 "src/mn-sound-player.gob" static void mn_sound_player_watch_abandoned_cb (GPid pid, int status, gpointer data); #line 75 "mn-sound-player.c" #line 231 "src/mn-sound-player.gob" static void mn_sound_player_watch_cb (GPid pid, int status, gpointer data); #line 78 "mn-sound-player.c" enum { PROP_0, PROP_CAN_PLAY, PROP_CAN_STOP }; /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_get_can_play mn_sound_player_get_can_play #define self_get_can_stop mn_sound_player_get_can_stop #define self_notify_play_command_cb mn_sound_player_notify_play_command_cb #define self_can_play mn_sound_player_can_play #define self_play mn_sound_player_play #define self_subst_cb mn_sound_player_subst_cb #define self_stop mn_sound_player_stop #define self_stop_real mn_sound_player_stop_real #define self_watch_abandoned_cb mn_sound_player_watch_abandoned_cb #define self_watch_cb mn_sound_player_watch_cb #define self_new mn_sound_player_new GType mn_sound_player_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNSoundPlayerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_sound_player_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNSoundPlayer), 0 /* n_preallocs */, (GInstanceInitFunc) mn_sound_player_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNSoundPlayer", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNSoundPlayer *)g_object_new(mn_sound_player_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNSoundPlayer * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNSoundPlayer * GET_NEW_VARG (const char *first, ...) { MNSoundPlayer *ret; va_list ap; va_start (ap, first); ret = (MNSoundPlayer *)g_object_new_valist (mn_sound_player_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Sound:Player::dispose" MNSoundPlayer *self G_GNUC_UNUSED = MN_SOUND_PLAYER (obj_self); #line 62 "src/mn-sound-player.gob" mn_sound_player_dispose (self); #line 151 "mn-sound-player.c" if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Sound:Player::finalize" MNSoundPlayer *self G_GNUC_UNUSED = MN_SOUND_PLAYER (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_sound_player_class_init (MNSoundPlayerClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Sound:Player::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNSoundPlayerPrivate)); parent_class = g_type_class_ref (G_TYPE_OBJECT); g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; { GParamSpec *param_spec; param_spec = g_param_spec_boolean ("can_play" /* name */, NULL /* nick */, NULL /* blurb */, FALSE /* default_value */, (GParamFlags)(G_PARAM_READABLE)); g_object_class_install_property (g_object_class, PROP_CAN_PLAY, param_spec); param_spec = g_param_spec_boolean ("can_stop" /* name */, NULL /* nick */, NULL /* blurb */, FALSE /* default_value */, (GParamFlags)(G_PARAM_READABLE)); g_object_class_install_property (g_object_class, PROP_CAN_STOP, param_spec); } } #undef __GOB_FUNCTION__ #line 52 "src/mn-sound-player.gob" static void mn_sound_player_init (MNSoundPlayer * self G_GNUC_UNUSED) { #line 210 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_SOUND_PLAYER,MNSoundPlayerPrivate); { #line 53 "src/mn-sound-player.gob" selfp->can_play = self_can_play(self); mn_g_object_gconf_notification_add_gdk_locked(self, MN_CONF_SOUNDS_PLAY_COMMAND, self_notify_play_command_cb, self); #line 223 "mn-sound-player.c" } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Sound:Player::get_property" { MNSoundPlayer *self G_GNUC_UNUSED; self = MN_SOUND_PLAYER (object); switch (property_id) { case PROP_CAN_PLAY: { #line 39 "src/mn-sound-player.gob" g_value_set_boolean(VAL, selfp->can_play); #line 246 "mn-sound-player.c" } break; case PROP_CAN_STOP: { #line 45 "src/mn-sound-player.gob" g_value_set_boolean(VAL, selfp->pid != 0); #line 255 "mn-sound-player.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 39 "src/mn-sound-player.gob" gboolean mn_sound_player_get_can_play (MNSoundPlayer * self) { #line 275 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::get_can_play" { #line 37 "src/mn-sound-player.gob" gboolean val; g_object_get (G_OBJECT (self), "can_play", &val, NULL); return val; }} #line 281 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 45 "src/mn-sound-player.gob" gboolean mn_sound_player_get_can_stop (MNSoundPlayer * self) { #line 288 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::get_can_stop" { #line 43 "src/mn-sound-player.gob" gboolean val; g_object_get (G_OBJECT (self), "can_stop", &val, NULL); return val; }} #line 294 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 62 "src/mn-sound-player.gob" static void mn_sound_player_dispose (MNSoundPlayer * self) { #line 302 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::dispose" { #line 63 "src/mn-sound-player.gob" /* do not emit notify::can-stop at finalization time (pass FALSE) */ self_stop_real(self, FALSE); }} #line 310 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 68 "src/mn-sound-player.gob" static void mn_sound_player_notify_play_command_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) { #line 317 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::notify_play_command_cb" { #line 73 "src/mn-sound-player.gob" Self *self = user_data; gboolean can_play; can_play = self_can_play(self); if (can_play != selfp->can_play) { selfp->can_play = can_play; g_object_notify(G_OBJECT(self), "can-play"); } }} #line 332 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 85 "src/mn-sound-player.gob" static gboolean mn_sound_player_can_play (MNSoundPlayer * self) { #line 339 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::can_play" #line 85 "src/mn-sound-player.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 85 "src/mn-sound-player.gob" g_return_val_if_fail (MN_IS_SOUND_PLAYER (self), (gboolean )0); #line 345 "mn-sound-player.c" { #line 87 "src/mn-sound-player.gob" char *command; gboolean can; command = mn_conf_get_string(MN_CONF_SOUNDS_PLAY_COMMAND); can = command && *command; g_free(command); return can; }} #line 358 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 98 "src/mn-sound-player.gob" void mn_sound_player_play (MNSoundPlayer * self, const char * filename, GtkWindow * parent) { #line 365 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::play" #line 98 "src/mn-sound-player.gob" g_return_if_fail (self != NULL); #line 98 "src/mn-sound-player.gob" g_return_if_fail (MN_IS_SOUND_PLAYER (self)); #line 98 "src/mn-sound-player.gob" g_return_if_fail (filename != NULL); #line 373 "mn-sound-player.c" { #line 100 "src/mn-sound-player.gob" const char *error_message; char *command = NULL; char *subst_command; char *shell; char *argv[4]; GError *err = NULL; g_return_if_fail(parent == NULL || GTK_IS_WINDOW(parent)); g_return_if_fail(selfp->can_play); self_stop(self); /* * If a parent window is provided, we are normally called because * the user interacted with the UI. Otherwise, we are called because * a background event has occurred, and for clarity we should * mention the originating application in the error message. */ if (parent) error_message = N_("Unable to play sound"); else error_message = N_("A command error has occurred in Mail Notification"); command = mn_conf_get_string(MN_CONF_SOUNDS_PLAY_COMMAND); if (! command || ! *command) goto end; subst_command = mn_subst_command(command, self_subst_cb, (gpointer) filename, &err); if (! subst_command) { mn_show_error_dialog(parent, _(error_message), _("Unable to execute \"%s\": %s."), command, err->message); g_error_free(err); goto end; } /* * We cannot use gnome_execute_child() because it does not reap the * child, which is needed for GChildWatch. */ shell = gnome_util_user_shell(); argv[0] = shell; argv[1] = "-c"; argv[2] = subst_command; argv[3] = NULL; if (g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &selfp->pid, &err)) { GSource *source; g_object_notify(G_OBJECT(self), "can-stop"); g_assert(selfp->watch_source == NULL); source = g_child_watch_source_new(selfp->pid); g_source_set_callback(source, (GSourceFunc) self_watch_cb, self, NULL); g_source_attach(source, NULL); selfp->watch_source = source; } else { mn_show_error_dialog(parent, _(error_message), _("Unable to execute \"%s\": %s."), command, err->message); g_error_free(err); } g_free(subst_command); g_free(shell); end: g_free(command); }} #line 457 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 182 "src/mn-sound-player.gob" static gboolean mn_sound_player_subst_cb (const char * name, char ** value, gpointer data) { #line 464 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::subst_cb" { #line 184 "src/mn-sound-player.gob" const char *filename = data; if (! strcmp(name, "file")) { *value = g_strdup(filename); return TRUE; } return FALSE; }} #line 479 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 196 "src/mn-sound-player.gob" void mn_sound_player_stop (MNSoundPlayer * self) { #line 486 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::stop" #line 196 "src/mn-sound-player.gob" g_return_if_fail (self != NULL); #line 196 "src/mn-sound-player.gob" g_return_if_fail (MN_IS_SOUND_PLAYER (self)); #line 492 "mn-sound-player.c" { #line 198 "src/mn-sound-player.gob" self_stop_real(self, TRUE); }} #line 498 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 202 "src/mn-sound-player.gob" static void mn_sound_player_stop_real (MNSoundPlayer * self, gboolean notify_can_stop) { #line 505 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::stop_real" #line 202 "src/mn-sound-player.gob" g_return_if_fail (self != NULL); #line 202 "src/mn-sound-player.gob" g_return_if_fail (MN_IS_SOUND_PLAYER (self)); #line 511 "mn-sound-player.c" { #line 204 "src/mn-sound-player.gob" /* * If we remove the watch, a zombie will be left since GLib will * not have waited for the process, so we just abandon the watch. */ if (selfp->watch_source) { g_source_set_callback(selfp->watch_source, (GSourceFunc) self_watch_abandoned_cb, NULL, NULL); g_source_unref(selfp->watch_source); selfp->watch_source = NULL; } if (selfp->pid) { kill(selfp->pid, SIGTERM); selfp->pid = 0; if (notify_can_stop) g_object_notify(G_OBJECT(self), "can-stop"); } }} #line 534 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 225 "src/mn-sound-player.gob" static void mn_sound_player_watch_abandoned_cb (GPid pid, int status, gpointer data) { #line 541 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::watch_abandoned_cb" { #line 227 "src/mn-sound-player.gob" /* no op */ }} #line 548 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 231 "src/mn-sound-player.gob" static void mn_sound_player_watch_cb (GPid pid, int status, gpointer data) { #line 555 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::watch_cb" { #line 233 "src/mn-sound-player.gob" Self *self = data; GDK_THREADS_ENTER(); g_assert(selfp->watch_source != NULL); g_source_unref(selfp->watch_source); selfp->watch_source = NULL; selfp->pid = 0; g_object_notify(G_OBJECT(self), "can-stop"); /* do not call gdk_flush(), we're normally in the main thread */ GDK_THREADS_LEAVE(); }} #line 575 "mn-sound-player.c" #undef __GOB_FUNCTION__ #line 250 "src/mn-sound-player.gob" MNSoundPlayer * mn_sound_player_new (void) { #line 582 "mn-sound-player.c" #define __GOB_FUNCTION__ "MN:Sound:Player::new" { #line 252 "src/mn-sound-player.gob" return GET_NEW; }} #line 589 "mn-sound-player.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-mailbox-view.gob.stamp0000644000175000001440000000000011015312644024353 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-authenticated-mailbox-properties-private.h0000644000175000001440000000327511015312646030445 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_AUTHENTICATED_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_AUTHENTICATED_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-authenticated-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 25 "src/mn-authenticated-mailbox-properties.gob" #include "mn-authenticated-mailbox.h" #line 18 "mn-authenticated-mailbox-properties-private.h" struct _MNAuthenticatedMailboxPropertiesPrivate { #line 44 "src/mn-authenticated-mailbox-properties.gob" GtkWidget * password_operation_label; #line 45 "src/mn-authenticated-mailbox-properties.gob" GtkWidget * password_widget; #line 47 "src/mn-authenticated-mailbox-properties.gob" MNAuthenticatedMailbox * mailbox_setting_password; #line 48 "src/mn-authenticated-mailbox-properties.gob" gpointer get_password_request; #line 28 "mn-authenticated-mailbox-properties-private.h" }; #line 93 "src/mn-authenticated-mailbox-properties.gob" GtkWidget * mn_authenticated_mailbox_properties_field_new (MNAuthenticatedMailboxProperties * self, const char * mnemonic, GtkWidget ** label, GtkWidget ** entry); #line 32 "mn-authenticated-mailbox-properties-private.h" #line 270 "src/mn-authenticated-mailbox-properties.gob" void mn_authenticated_mailbox_properties_get_contents (MNAuthenticatedMailboxProperties * self, const char ** username, const char ** password); #line 35 "mn-authenticated-mailbox-properties-private.h" #line 291 "src/mn-authenticated-mailbox-properties.gob" gboolean mn_authenticated_mailbox_properties_is_complete (MNAuthenticatedMailboxProperties * self); #line 38 "mn-authenticated-mailbox-properties-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-sylpheed-mailbox-backend.h0000644000175000001440000000331211015312646025153 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-vfs-mailbox-backend.h" #ifndef __MN_SYLPHEED_MAILBOX_BACKEND_H__ #define __MN_SYLPHEED_MAILBOX_BACKEND_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_SYLPHEED_MAILBOX_BACKEND (mn_sylpheed_mailbox_backend_get_type()) #define MN_SYLPHEED_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_sylpheed_mailbox_backend_get_type(), MNSylpheedMailboxBackend) #define MN_SYLPHEED_MAILBOX_BACKEND_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_sylpheed_mailbox_backend_get_type(), MNSylpheedMailboxBackend const) #define MN_SYLPHEED_MAILBOX_BACKEND_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_sylpheed_mailbox_backend_get_type(), MNSylpheedMailboxBackendClass) #define MN_IS_SYLPHEED_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_sylpheed_mailbox_backend_get_type ()) #define MN_SYLPHEED_MAILBOX_BACKEND_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_sylpheed_mailbox_backend_get_type(), MNSylpheedMailboxBackendClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_SYLPHEED_MAILBOX_BACKEND__ #define __TYPEDEF_MN_SYLPHEED_MAILBOX_BACKEND__ typedef struct _MNSylpheedMailboxBackend MNSylpheedMailboxBackend; #endif struct _MNSylpheedMailboxBackend { MNVFSMailboxBackend __parent__; }; /* * Class definition */ typedef struct _MNSylpheedMailboxBackendClass MNSylpheedMailboxBackendClass; struct _MNSylpheedMailboxBackendClass { MNVFSMailboxBackendClass __parent__; }; /* * Public methods */ GType mn_sylpheed_mailbox_backend_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-gmail-mailbox-properties.gob.stamp0000644000175000001440000000000011015312646026666 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-webmail-mailbox.h0000644000175000001440000000467511015312647023407 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-authenticated-mailbox.h" #ifndef __MN_WEBMAIL_MAILBOX_H__ #define __MN_WEBMAIL_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_WEBMAIL_MAILBOX (mn_webmail_mailbox_get_type()) #define MN_WEBMAIL_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_webmail_mailbox_get_type(), MNWebmailMailbox) #define MN_WEBMAIL_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_webmail_mailbox_get_type(), MNWebmailMailbox const) #define MN_WEBMAIL_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_webmail_mailbox_get_type(), MNWebmailMailboxClass) #define MN_IS_WEBMAIL_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_webmail_mailbox_get_type ()) #define MN_WEBMAIL_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_webmail_mailbox_get_type(), MNWebmailMailboxClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_WEBMAIL_MAILBOX__ #define __TYPEDEF_MN_WEBMAIL_MAILBOX__ typedef struct _MNWebmailMailbox MNWebmailMailbox; #endif struct _MNWebmailMailbox { MNAuthenticatedMailbox __parent__; /*< public >*/ char * folder; }; /* * Class definition */ typedef struct _MNWebmailMailboxClass MNWebmailMailboxClass; struct _MNWebmailMailboxClass { MNAuthenticatedMailboxClass __parent__; char * (* get_error_message) (MNWebmailMailbox * self, const char * helper_stdout, const char * helper_stderr, gboolean * is_auth_failure); gboolean (* webmail_check) (MNWebmailMailbox * self, GError ** err); const char * default_domain; }; /* * Public methods */ GType mn_webmail_mailbox_get_type (void) G_GNUC_CONST; #line 351 "src/mn-webmail-mailbox.gob" char * mn_webmail_mailbox_build_name (MNWebmailMailboxClass * class, const char * username, const char * folder); #line 62 "mn-webmail-mailbox.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_WEBMAIL_MAILBOX_PROP_FOLDER(arg) "folder", __extension__ ({gchar *z = (arg); z;}) #define MN_WEBMAIL_MAILBOX_GET_PROP_FOLDER(arg) "folder", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_WEBMAIL_MAILBOX_PROP_FOLDER(arg) "folder",(gchar *)(arg) #define MN_WEBMAIL_MAILBOX_GET_PROP_FOLDER(arg) "folder",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-standard-message-view.c0000644000175000001440000002052311015312645024507 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-standard-message-view.h" #include "mn-standard-message-view-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-standard-message-view.gob" #include #include "mn-message-view-private.h" #include "mn-message.h" #include "mn-util.h" #include "mn-text-table.h" #line 34 "mn-standard-message-view.c" /* self casting macros */ #define SELF(x) MN_STANDARD_MESSAGE_VIEW(x) #define SELF_CONST(x) MN_STANDARD_MESSAGE_VIEW_CONST(x) #define IS_SELF(x) MN_IS_STANDARD_MESSAGE_VIEW(x) #define TYPE_SELF MN_TYPE_STANDARD_MESSAGE_VIEW #define SELF_CLASS(x) MN_STANDARD_MESSAGE_VIEW_CLASS(x) #define SELF_GET_CLASS(x) MN_STANDARD_MESSAGE_VIEW_GET_CLASS(x) /* self typedefs */ typedef MNStandardMessageView Self; typedef MNStandardMessageViewClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-standard-message-view.gob" static void mn_standard_message_view_init (MNStandardMessageView * o); #line 51 "mn-standard-message-view.c" #line 0 "src/mn-standard-message-view.gob" static void mn_standard_message_view_class_init (MNStandardMessageViewClass * c); #line 54 "mn-standard-message-view.c" #line 34 "src/mn-standard-message-view.gob" static void ___1_mn_standard_message_view_append_message (MNMessageView * view, MNMessage * message, time_t now); #line 57 "mn-standard-message-view.c" #line 51 "src/mn-standard-message-view.gob" static void ___2_mn_standard_message_view_append_message_separator (MNMessageView * view); #line 60 "mn-standard-message-view.c" #line 58 "src/mn-standard-message-view.gob" static void mn_standard_message_view_append_row (MNStandardMessageView * self, const char * name, const char * value); #line 63 "mn-standard-message-view.c" #line 68 "src/mn-standard-message-view.gob" static void mn_standard_message_view_append_header (MNStandardMessageView * self, const char * name); #line 66 "mn-standard-message-view.c" /* pointer to the class of our parent */ static MNMessageViewClass *parent_class = NULL; /* Short form macros */ #define self_append_row mn_standard_message_view_append_row #define self_append_header mn_standard_message_view_append_header #define self_new mn_standard_message_view_new GType mn_standard_message_view_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNStandardMessageViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_standard_message_view_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNStandardMessageView), 0 /* n_preallocs */, (GInstanceInitFunc) mn_standard_message_view_init, NULL }; type = g_type_register_static (MN_TYPE_MESSAGE_VIEW, "MNStandardMessageView", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNStandardMessageView *)g_object_new(mn_standard_message_view_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNStandardMessageView * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNStandardMessageView * GET_NEW_VARG (const char *first, ...) { MNStandardMessageView *ret; va_list ap; va_start (ap, first); ret = (MNStandardMessageView *)g_object_new_valist (mn_standard_message_view_get_type (), first, ap); va_end (ap); return ret; } static void mn_standard_message_view_init (MNStandardMessageView * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Standard:Message:View::init" } #undef __GOB_FUNCTION__ static void mn_standard_message_view_class_init (MNStandardMessageViewClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Standard:Message:View::class_init" MNMessageViewClass *mn_message_view_class = (MNMessageViewClass *)c; parent_class = g_type_class_ref (MN_TYPE_MESSAGE_VIEW); #line 34 "src/mn-standard-message-view.gob" mn_message_view_class->append_message = ___1_mn_standard_message_view_append_message; #line 51 "src/mn-standard-message-view.gob" mn_message_view_class->append_message_separator = ___2_mn_standard_message_view_append_message_separator; #line 135 "mn-standard-message-view.c" } #undef __GOB_FUNCTION__ #line 34 "src/mn-standard-message-view.gob" static void ___1_mn_standard_message_view_append_message (MNMessageView * view G_GNUC_UNUSED, MNMessage * message, time_t now) #line 144 "mn-standard-message-view.c" #define PARENT_HANDLER(___view,___message,___now) \ { if(MN_MESSAGE_VIEW_CLASS(parent_class)->append_message) \ (* MN_MESSAGE_VIEW_CLASS(parent_class)->append_message)(___view,___message,___now); } { #define __GOB_FUNCTION__ "MN:Standard:Message:View::append_message" { #line 36 "src/mn-standard-message-view.gob" Self *self = SELF(view); self_append_row(self, _("Mailbox:"), message->mailbox->runtime_name); self_append_row(self, _("From:"), message->from); self_append_row(self, _("Subject:"), message->subject); if (message->sent_time > 0) { self_append_header(self, _("Sent:")); mn_message_view_append_past_time_cell(MN_MESSAGE_VIEW(self), message->sent_time, now); mn_text_table_line_break(MN_TEXT_TABLE(self)); } }} #line 166 "mn-standard-message-view.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 51 "src/mn-standard-message-view.gob" static void ___2_mn_standard_message_view_append_message_separator (MNMessageView * view G_GNUC_UNUSED) #line 173 "mn-standard-message-view.c" #define PARENT_HANDLER(___view) \ { if(MN_MESSAGE_VIEW_CLASS(parent_class)->append_message_separator) \ (* MN_MESSAGE_VIEW_CLASS(parent_class)->append_message_separator)(___view); } { #define __GOB_FUNCTION__ "MN:Standard:Message:View::append_message_separator" { #line 53 "src/mn-standard-message-view.gob" mn_text_table_append_blank_cell(MN_TEXT_TABLE(view), 0, 12); mn_text_table_line_break(MN_TEXT_TABLE(view)); }} #line 185 "mn-standard-message-view.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 58 "src/mn-standard-message-view.gob" static void mn_standard_message_view_append_row (MNStandardMessageView * self, const char * name, const char * value) { #line 193 "mn-standard-message-view.c" #define __GOB_FUNCTION__ "MN:Standard:Message:View::append_row" #line 58 "src/mn-standard-message-view.gob" g_return_if_fail (self != NULL); #line 58 "src/mn-standard-message-view.gob" g_return_if_fail (MN_IS_STANDARD_MESSAGE_VIEW (self)); #line 58 "src/mn-standard-message-view.gob" g_return_if_fail (name != NULL); #line 58 "src/mn-standard-message-view.gob" g_return_if_fail (value != NULL); #line 203 "mn-standard-message-view.c" { #line 62 "src/mn-standard-message-view.gob" self_append_header(self, name); mn_text_table_append_text_cell(MN_TEXT_TABLE(self), value); mn_text_table_line_break(MN_TEXT_TABLE(self)); }} #line 211 "mn-standard-message-view.c" #undef __GOB_FUNCTION__ #line 68 "src/mn-standard-message-view.gob" static void mn_standard_message_view_append_header (MNStandardMessageView * self, const char * name) { #line 218 "mn-standard-message-view.c" #define __GOB_FUNCTION__ "MN:Standard:Message:View::append_header" #line 68 "src/mn-standard-message-view.gob" g_return_if_fail (self != NULL); #line 68 "src/mn-standard-message-view.gob" g_return_if_fail (MN_IS_STANDARD_MESSAGE_VIEW (self)); #line 68 "src/mn-standard-message-view.gob" g_return_if_fail (name != NULL); #line 226 "mn-standard-message-view.c" { #line 70 "src/mn-standard-message-view.gob" char *markup; markup = g_markup_printf_escaped("%s", name); mn_text_table_append_text_cell_from_markup(MN_TEXT_TABLE(self), markup); g_free(markup); }} #line 236 "mn-standard-message-view.c" #undef __GOB_FUNCTION__ #line 78 "src/mn-standard-message-view.gob" GtkWidget * mn_standard_message_view_new (void) { #line 243 "mn-standard-message-view.c" #define __GOB_FUNCTION__ "MN:Standard:Message:View::new" { #line 80 "src/mn-standard-message-view.gob" return GTK_WIDGET(GET_NEW); }} #line 250 "mn-standard-message-view.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-pop3-mailbox.h0000644000175000001440000000334611015312646022641 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-pi-mailbox.h" #ifndef __MN_POP3_MAILBOX_H__ #define __MN_POP3_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ extern int mn_pop3_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES]; /* * Type checking and casting macros */ #define MN_TYPE_POP3_MAILBOX (mn_pop3_mailbox_get_type()) #define MN_POP3_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_pop3_mailbox_get_type(), MNPOP3Mailbox) #define MN_POP3_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_pop3_mailbox_get_type(), MNPOP3Mailbox const) #define MN_POP3_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_pop3_mailbox_get_type(), MNPOP3MailboxClass) #define MN_IS_POP3_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_pop3_mailbox_get_type ()) #define MN_POP3_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_pop3_mailbox_get_type(), MNPOP3MailboxClass) /* Private structure type */ typedef struct _MNPOP3MailboxPrivate MNPOP3MailboxPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_POP3_MAILBOX__ #define __TYPEDEF_MN_POP3_MAILBOX__ typedef struct _MNPOP3Mailbox MNPOP3Mailbox; #endif struct _MNPOP3Mailbox { MNPIMailbox __parent__; /*< private >*/ MNPOP3MailboxPrivate *_priv; }; /* * Class definition */ typedef struct _MNPOP3MailboxClass MNPOP3MailboxClass; struct _MNPOP3MailboxClass { MNPIMailboxClass __parent__; }; /* * Public methods */ GType mn_pop3_mailbox_get_type (void) G_GNUC_CONST; #line 1292 "src/mn-pop3-mailbox.gob" char * mn_pop3_mailbox_build_name (const char * username, const char * server); #line 65 "mn-pop3-mailbox.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mailbox-view-private.h0000644000175000001440000000150111015312644024367 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MAILBOX_VIEW_PRIVATE_H__ #define __MN_MAILBOX_VIEW_PRIVATE_H__ #include "mn-mailbox-view.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNMailboxViewPrivate { #line 75 "src/mn-mailbox-view.gob" GtkWidget * menu; #line 76 "src/mn-mailbox-view.gob" GtkWidget * properties_item; #line 77 "src/mn-mailbox-view.gob" GtkWidget * update_item; #line 78 "src/mn-mailbox-view.gob" GtkWidget * remove_item; #line 79 "src/mn-mailbox-view.gob" GtkWidget * cut_item; #line 80 "src/mn-mailbox-view.gob" GtkWidget * copy_item; #line 81 "src/mn-mailbox-view.gob" GtkWidget * paste_item; #line 82 "src/mn-mailbox-view.gob" GtkWidget * select_all_item; #line 30 "mn-mailbox-view-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-pi-mailbox-private.h0000644000175000001440000000432111015312646024032 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_PI_MAILBOX_PRIVATE_H__ #define __MN_PI_MAILBOX_PRIVATE_H__ #include "mn-pi-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 28 "src/mn-pi-mailbox.gob" #include #include "mn-client-session.h" #define MN_PI_MAILBOX_SESSION_PRIVATE \ MNMailbox *mailbox; \ MNAuthenticatedMailbox *auth_mailbox; \ MNPIMailbox *pi_mailbox; \ MNClientSession *session #line 25 "mn-pi-mailbox-private.h" struct _MNPIMailboxPrivate { #line 85 "src/mn-pi-mailbox.gob" GtkWidget * untrusted_dialog; #line 29 "mn-pi-mailbox-private.h" }; #line 156 "src/mn-pi-mailbox.gob" gboolean mn_pi_mailbox_split_uri (const char * uri, int maxlen, char * scheme, char * auth, char * location); #line 33 "mn-pi-mailbox-private.h" #line 173 "src/mn-pi-mailbox.gob" gboolean mn_pi_mailbox_split_uri_auth (const char * auth, int maxlen, char * username, char * authmech, gboolean * has_authmech); #line 36 "mn-pi-mailbox-private.h" #line 195 "src/mn-pi-mailbox.gob" void mn_pi_mailbox_split_uri_hostport (const char * hostport, int maxlen, char * hostname, int * port); #line 39 "mn-pi-mailbox-private.h" #line 223 "src/mn-pi-mailbox.gob" void mn_pi_mailbox_session_private_init (MNPIMailbox * self, MNClientSessionPrivate * priv); #line 42 "mn-pi-mailbox-private.h" #line 231 "src/mn-pi-mailbox.gob" gboolean mn_pi_mailbox_sasl_get_credentials_cb (MNClientSession * session, MNClientSessionPrivate * priv, const char ** username, const char ** password); #line 45 "mn-pi-mailbox-private.h" #line 264 "src/mn-pi-mailbox.gob" gboolean mn_pi_mailbox_ssl_trust_server_cb (MNClientSession * session, const char * server, int port, const char * fingerprint, const char * verify_error, MNClientSessionPrivate * priv); #line 48 "mn-pi-mailbox-private.h" #line 384 "src/mn-pi-mailbox.gob" void mn_pi_mailbox_notice_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv); #line 51 "mn-pi-mailbox-private.h" #line 392 "src/mn-pi-mailbox.gob" void mn_pi_mailbox_warning_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv); #line 54 "mn-pi-mailbox-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-hotmail-mailbox-properties.gob.stamp0000644000175000001440000000000011015312647027233 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-popup.h0000644000175000001440000000425011015312645021464 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-message.h" #ifndef __MN_POPUP_H__ #define __MN_POPUP_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_POPUP (mn_popup_get_type()) #define MN_POPUP(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_popup_get_type(), MNPopup) #define MN_POPUP_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_popup_get_type(), MNPopup const) #define MN_POPUP_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_popup_get_type(), MNPopupClass) #define MN_IS_POPUP(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_popup_get_type ()) #define MN_POPUP_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_popup_get_type(), MNPopupClass) /* Private structure type */ typedef struct _MNPopupPrivate MNPopupPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_POPUP__ #define __TYPEDEF_MN_POPUP__ typedef struct _MNPopup MNPopup; #endif struct _MNPopup { NotifyNotification __parent__; /*< public >*/ gboolean visible; GTimeVal show_timestamp; /*< private >*/ MNPopupPrivate *_priv; }; /* * Class definition */ typedef struct _MNPopupClass MNPopupClass; struct _MNPopupClass { NotifyNotificationClass __parent__; }; /* * Public methods */ GType mn_popup_get_type (void) G_GNUC_CONST; #line 166 "src/mn-popup.gob" void mn_popup_show (MNPopup * self); #line 64 "mn-popup.h" #line 184 "src/mn-popup.gob" void mn_popup_close (MNPopup * self); #line 67 "mn-popup.h" #line 199 "src/mn-popup.gob" MNPopup * mn_popup_new (MNMessage * message); #line 70 "mn-popup.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_POPUP_PROP_MESSAGE(arg) "message", __extension__ ({MNMessage * z = (arg); z;}) #define MN_POPUP_GET_PROP_MESSAGE(arg) "message", __extension__ ({MNMessage * *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_POPUP_PROP_MESSAGE(arg) "message",(MNMessage * )(arg) #define MN_POPUP_GET_PROP_MESSAGE(arg) "message",(MNMessage * *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-message-view.h0000644000175000001440000000354711015312644022724 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-text-table.h" #include "mn-message.h" #ifndef __MN_MESSAGE_VIEW_H__ #define __MN_MESSAGE_VIEW_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MESSAGE_VIEW (mn_message_view_get_type()) #define MN_MESSAGE_VIEW(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_view_get_type(), MNMessageView) #define MN_MESSAGE_VIEW_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_view_get_type(), MNMessageView const) #define MN_MESSAGE_VIEW_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_message_view_get_type(), MNMessageViewClass) #define MN_IS_MESSAGE_VIEW(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_message_view_get_type ()) #define MN_MESSAGE_VIEW_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_message_view_get_type(), MNMessageViewClass) /* Private structure type */ typedef struct _MNMessageViewPrivate MNMessageViewPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_MESSAGE_VIEW__ #define __TYPEDEF_MN_MESSAGE_VIEW__ typedef struct _MNMessageView MNMessageView; #endif struct _MNMessageView { MNTextTable __parent__; /*< private >*/ MNMessageViewPrivate *_priv; }; /* * Class definition */ typedef struct _MNMessageViewClass MNMessageViewClass; struct _MNMessageViewClass { MNTextTableClass __parent__; void (* append_header) (MNMessageView * self); void (* append_message) (MNMessageView * self, MNMessage * message, time_t now); void (* append_message_separator) (MNMessageView * self); }; /* * Public methods */ GType mn_message_view_get_type (void) G_GNUC_CONST; #line 63 "src/mn-message-view.gob" void mn_message_view_set_messages (MNMessageView * self, GSList * messages); #line 65 "mn-message-view.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mh-mailbox-backend-private.h0000644000175000001440000000045111015312645025412 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MH_MAILBOX_BACKEND_PRIVATE_H__ #define __MN_MH_MAILBOX_BACKEND_PRIVATE_H__ #include "mn-mh-mailbox-backend.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-custom-vfs-mailbox-private.h0000644000175000001440000000045111015312647025531 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_CUSTOM_VFS_MAILBOX_PRIVATE_H__ #define __MN_CUSTOM_VFS_MAILBOX_PRIVATE_H__ #include "mn-custom-vfs-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-dialog-private.h0000644000175000001440000000040511015312644023225 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_DIALOG_PRIVATE_H__ #define __MN_DIALOG_PRIVATE_H__ #include "mn-dialog.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-dialog.gob.stamp0000644000175000001440000000000011015312644023207 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-hotmail-mailbox.h0000644000175000001440000000272711015312647023420 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-webmail-mailbox.h" #ifndef __MN_HOTMAIL_MAILBOX_H__ #define __MN_HOTMAIL_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_HOTMAIL_MAILBOX (mn_hotmail_mailbox_get_type()) #define MN_HOTMAIL_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_hotmail_mailbox_get_type(), MNHotmailMailbox) #define MN_HOTMAIL_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_hotmail_mailbox_get_type(), MNHotmailMailbox const) #define MN_HOTMAIL_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_hotmail_mailbox_get_type(), MNHotmailMailboxClass) #define MN_IS_HOTMAIL_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_hotmail_mailbox_get_type ()) #define MN_HOTMAIL_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_hotmail_mailbox_get_type(), MNHotmailMailboxClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_HOTMAIL_MAILBOX__ #define __TYPEDEF_MN_HOTMAIL_MAILBOX__ typedef struct _MNHotmailMailbox MNHotmailMailbox; #endif struct _MNHotmailMailbox { MNWebmailMailbox __parent__; }; /* * Class definition */ typedef struct _MNHotmailMailboxClass MNHotmailMailboxClass; struct _MNHotmailMailboxClass { MNWebmailMailboxClass __parent__; }; /* * Public methods */ GType mn_hotmail_mailbox_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-pi-mailbox-properties.gob.stamp0000644000175000001440000000000011015312646026205 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-file-chooser-button-private.h0000644000175000001440000000175411015312644025666 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_FILE_CHOOSER_BUTTON_PRIVATE_H__ #define __MN_FILE_CHOOSER_BUTTON_PRIVATE_H__ #include "mn-file-chooser-button.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 35 "src/mn-file-chooser-button.gob" #include #line 18 "mn-file-chooser-button-private.h" struct _MNFileChooserButtonPrivate { #line 47 "src/mn-file-chooser-button.gob" char * filename; #line 64 "src/mn-file-chooser-button.gob" MNFileChooserButtonCreateDialogFunction create_dialog; #line 65 "src/mn-file-chooser-button.gob" gpointer create_dialog_data; #line 67 "src/mn-file-chooser-button.gob" GtkWidget * image; #line 68 "src/mn-file-chooser-button.gob" GtkWidget * label; #line 69 "src/mn-file-chooser-button.gob" GtkWidget * dialog; #line 71 "src/mn-file-chooser-button.gob" GnomeVFSAsyncHandle * async_handle; #line 34 "mn-file-chooser-button-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-auth-combo-box-private.h0000644000175000001440000000043511015312646024617 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_AUTH_COMBO_BOX_PRIVATE_H__ #define __MN_AUTH_COMBO_BOX_PRIVATE_H__ #include "mn-auth-combo-box.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-sound-player.gob.stamp0000644000175000001440000000000011015312645024373 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-auth-combo-box.c0000644000175000001440000002511111015312646023140 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-auth-combo-box.h" #include "mn-auth-combo-box-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-auth-combo-box.gob" #include #if WITH_SASL #include #include "mn-sasl.h" #endif /* WITH_SASL */ #include "mn-util.h" enum { COLUMN_MECHANISM, COLUMN_LABEL, N_COLUMNS }; #line 42 "mn-auth-combo-box.c" /* self casting macros */ #define SELF(x) MN_AUTH_COMBO_BOX(x) #define SELF_CONST(x) MN_AUTH_COMBO_BOX_CONST(x) #define IS_SELF(x) MN_IS_AUTH_COMBO_BOX(x) #define TYPE_SELF MN_TYPE_AUTH_COMBO_BOX #define SELF_CLASS(x) MN_AUTH_COMBO_BOX_CLASS(x) #define SELF_GET_CLASS(x) MN_AUTH_COMBO_BOX_GET_CLASS(x) /* self typedefs */ typedef MNAuthComboBox Self; typedef MNAuthComboBoxClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-auth-combo-box.gob" static void mn_auth_combo_box_class_init (MNAuthComboBoxClass * c); #line 61 "mn-auth-combo-box.c" #line 83 "src/mn-auth-combo-box.gob" static void mn_auth_combo_box_init (MNAuthComboBox * self); #line 64 "mn-auth-combo-box.c" #line 120 "src/mn-auth-combo-box.gob" static int mn_auth_combo_box_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data); #line 67 "mn-auth-combo-box.c" enum { PROP_0, PROP_ACTIVE_MECHANISM }; /* pointer to the class of our parent */ static GtkComboBoxClass *parent_class = NULL; /* Short form macros */ #define self_get_active_mechanism mn_auth_combo_box_get_active_mechanism #define self_set_active_mechanism mn_auth_combo_box_set_active_mechanism #define self_sort_cb mn_auth_combo_box_sort_cb #define self_append mn_auth_combo_box_append #define self_new mn_auth_combo_box_new GType mn_auth_combo_box_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNAuthComboBoxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_auth_combo_box_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNAuthComboBox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_auth_combo_box_init, NULL }; type = g_type_register_static (GTK_TYPE_COMBO_BOX, "MNAuthComboBox", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNAuthComboBox *)g_object_new(mn_auth_combo_box_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNAuthComboBox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNAuthComboBox * GET_NEW_VARG (const char *first, ...) { MNAuthComboBox *ret; va_list ap; va_start (ap, first); ret = (MNAuthComboBox *)g_object_new_valist (mn_auth_combo_box_get_type (), first, ap); va_end (ap); return ret; } static void mn_auth_combo_box_class_init (MNAuthComboBoxClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; parent_class = g_type_class_ref (GTK_TYPE_COMBO_BOX); g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_string ("active_mechanism" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_ACTIVE_MECHANISM, param_spec); } } #undef __GOB_FUNCTION__ #line 83 "src/mn-auth-combo-box.gob" static void mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED) { #line 154 "mn-auth-combo-box.c" #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::init" { #line 84 "src/mn-auth-combo-box.gob" GtkListStore *store; GtkCellRenderer *renderer; store = gtk_list_store_new(N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING); gtk_combo_box_set_model(GTK_COMBO_BOX(self), GTK_TREE_MODEL(store)); g_object_unref(store); renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(self), renderer, TRUE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(self), renderer, "text", COLUMN_LABEL, NULL); self_append(self, NULL, _("Autodetect")); #if WITH_SASL if (mn_sasl_init(NULL)) { const char **mechanisms; mechanisms = sasl_global_listmech(); if (mechanisms) { int i; for (i = 0; mechanisms[i]; i++) self_append(self, mechanisms[i], mechanisms[i]); } } #endif /* WITH_SASL */ gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(store), self_sort_cb, NULL, NULL); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); self_set_active_mechanism(self, NULL); #line 193 "mn-auth-combo-box.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::set_property" { MNAuthComboBox *self G_GNUC_UNUSED; self = MN_AUTH_COMBO_BOX (object); switch (property_id) { case PROP_ACTIVE_MECHANISM: { #line 44 "src/mn-auth-combo-box.gob" const char *mechanism = g_value_get_string(VAL); GtkTreeModel *model; GtkTreeIter iter; gboolean valid; model = gtk_combo_box_get_model(GTK_COMBO_BOX(self)); MN_TREE_MODEL_FOREACH(valid, &iter, model) { char *this_mech; gboolean found; gtk_tree_model_get(model, &iter, COLUMN_MECHANISM, &this_mech, -1); found = (! this_mech && ! mechanism) || (this_mech && mechanism && ! strcmp(this_mech, mechanism)); g_free(this_mech); if (found) { gtk_combo_box_set_active_iter(GTK_COMBO_BOX(self), &iter); break; } } #line 238 "mn-auth-combo-box.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::get_property" { MNAuthComboBox *self G_GNUC_UNUSED; self = MN_AUTH_COMBO_BOX (object); switch (property_id) { case PROP_ACTIVE_MECHANISM: { #line 70 "src/mn-auth-combo-box.gob" char *mechanism = NULL; GtkTreeIter iter; if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(self), &iter)) { GtkTreeModel *model = gtk_combo_box_get_model(GTK_COMBO_BOX(self)); gtk_tree_model_get(model, &iter, COLUMN_MECHANISM, &mechanism, -1); } g_value_take_string(VAL, mechanism); #line 280 "mn-auth-combo-box.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 70 "src/mn-auth-combo-box.gob" gchar * mn_auth_combo_box_get_active_mechanism (MNAuthComboBox * self) { #line 300 "mn-auth-combo-box.c" #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::get_active_mechanism" { #line 42 "src/mn-auth-combo-box.gob" gchar* val; g_object_get (G_OBJECT (self), "active_mechanism", &val, NULL); return val; }} #line 306 "mn-auth-combo-box.c" #undef __GOB_FUNCTION__ #line 44 "src/mn-auth-combo-box.gob" void mn_auth_combo_box_set_active_mechanism (MNAuthComboBox * self, gchar * val) { #line 313 "mn-auth-combo-box.c" #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::set_active_mechanism" { #line 42 "src/mn-auth-combo-box.gob" g_object_set (G_OBJECT (self), "active_mechanism", val, NULL); }} #line 319 "mn-auth-combo-box.c" #undef __GOB_FUNCTION__ #line 120 "src/mn-auth-combo-box.gob" static int mn_auth_combo_box_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data) { #line 327 "mn-auth-combo-box.c" #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::sort_cb" { #line 125 "src/mn-auth-combo-box.gob" char *mechanism_a; char *label_a; char *mechanism_b; char *label_b; int coll; gtk_tree_model_get(model, a, COLUMN_MECHANISM, &mechanism_a, COLUMN_LABEL, &label_a, -1); gtk_tree_model_get(model, b, COLUMN_MECHANISM, &mechanism_b, COLUMN_LABEL, &label_b, -1); /* put "autodetect" (NULL mechanism) on top of the list */ if (mechanism_a && mechanism_b) coll = g_utf8_collate(label_a, label_b); else if (mechanism_a || mechanism_b) coll = mechanism_a ? 1 : -1; else coll = 0; g_free(mechanism_a); g_free(mechanism_b); return coll; }} #line 360 "mn-auth-combo-box.c" #undef __GOB_FUNCTION__ #line 155 "src/mn-auth-combo-box.gob" void mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const char * label) { #line 367 "mn-auth-combo-box.c" #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::append" #line 155 "src/mn-auth-combo-box.gob" g_return_if_fail (self != NULL); #line 155 "src/mn-auth-combo-box.gob" g_return_if_fail (MN_IS_AUTH_COMBO_BOX (self)); #line 155 "src/mn-auth-combo-box.gob" g_return_if_fail (label != NULL); #line 375 "mn-auth-combo-box.c" { #line 157 "src/mn-auth-combo-box.gob" GtkTreeModel *model; GtkTreeIter iter; model = gtk_combo_box_get_model(GTK_COMBO_BOX(self)); gtk_list_store_append(GTK_LIST_STORE(model), &iter); gtk_list_store_set(GTK_LIST_STORE(model), &iter, COLUMN_MECHANISM, mechanism, COLUMN_LABEL, label, -1); }} #line 390 "mn-auth-combo-box.c" #undef __GOB_FUNCTION__ #line 170 "src/mn-auth-combo-box.gob" GtkWidget * mn_auth_combo_box_new (void) { #line 397 "mn-auth-combo-box.c" #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::new" { #line 172 "src/mn-auth-combo-box.gob" return GTK_WIDGET(GET_NEW); }} #line 404 "mn-auth-combo-box.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-test-mailbox-private.h0000644000175000001440000000042711015312645024403 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_TEST_MAILBOX_PRIVATE_H__ #define __MN_TEST_MAILBOX_PRIVATE_H__ #include "mn-test-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-folder-tree-server-private.h0000644000175000001440000000137011015312644027526 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_EVOLUTION_FOLDER_TREE_SERVER_PRIVATE_H__ #define __MN_EVOLUTION_FOLDER_TREE_SERVER_PRIVATE_H__ #include "mn-evolution-folder-tree-server.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 20 "src/mn-evolution-folder-tree-server.gob" #include #line 18 "mn-evolution-folder-tree-server-private.h" struct _MNEvolutionFolderTreeServerPrivate { #line 37 "src/mn-evolution-folder-tree-server.gob" guint32 id; #line 40 "src/mn-evolution-folder-tree-server.gob" GtkWidget * plug; #line 41 "src/mn-evolution-folder-tree-server.gob" GtkWidget * tree; #line 26 "mn-evolution-folder-tree-server-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-webmail-mailbox.gob.stamp0000644000175000001440000000000011015312647025024 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-system-vfs-mailbox.c0000644000175000001440000001703311015312647024072 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-system-vfs-mailbox.h" #include "mn-system-vfs-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-system-vfs-mailbox.gob" #include #include "mn-stock.h" #include "mn-mailbox-private.h" #line 32 "mn-system-vfs-mailbox.c" /* self casting macros */ #define SELF(x) MN_SYSTEM_VFS_MAILBOX(x) #define SELF_CONST(x) MN_SYSTEM_VFS_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_SYSTEM_VFS_MAILBOX(x) #define TYPE_SELF MN_TYPE_SYSTEM_VFS_MAILBOX #define SELF_CLASS(x) MN_SYSTEM_VFS_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_SYSTEM_VFS_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNSystemVFSMailbox Self; typedef MNSystemVFSMailboxClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-system-vfs-mailbox.gob" static void mn_system_vfs_mailbox_init (MNSystemVFSMailbox * o); #line 49 "mn-system-vfs-mailbox.c" #line 32 "src/mn-system-vfs-mailbox.gob" static void mn_system_vfs_mailbox_class_init (MNSystemVFSMailboxClass * class); #line 52 "mn-system-vfs-mailbox.c" #line 37 "src/mn-system-vfs-mailbox.gob" static void ___2_mn_system_vfs_mailbox_seal (MNMailbox * mailbox); #line 55 "mn-system-vfs-mailbox.c" #line 49 "src/mn-system-vfs-mailbox.gob" static MNMailbox * ___3_mn_system_vfs_mailbox_parse_uri (MNMailbox * dummy, const char * uri); #line 58 "mn-system-vfs-mailbox.c" #line 62 "src/mn-system-vfs-mailbox.gob" static void ___4_mn_system_vfs_mailbox_check (MNMailbox * mailbox); #line 61 "mn-system-vfs-mailbox.c" /* pointer to the class of our parent */ static MNVFSMailboxClass *parent_class = NULL; /* Short form macros */ #define self_get_uri mn_system_vfs_mailbox_get_uri GType mn_system_vfs_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNSystemVFSMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_system_vfs_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNSystemVFSMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_system_vfs_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_VFS_MAILBOX, "MNSystemVFSMailbox", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNSystemVFSMailbox *)g_object_new(mn_system_vfs_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNSystemVFSMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNSystemVFSMailbox * GET_NEW_VARG (const char *first, ...) { MNSystemVFSMailbox *ret; va_list ap; va_start (ap, first); ret = (MNSystemVFSMailbox *)g_object_new_valist (mn_system_vfs_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void mn_system_vfs_mailbox_init (MNSystemVFSMailbox * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::init" } #undef __GOB_FUNCTION__ #line 32 "src/mn-system-vfs-mailbox.gob" static void mn_system_vfs_mailbox_class_init (MNSystemVFSMailboxClass * class G_GNUC_UNUSED) { #line 120 "mn-system-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::class_init" MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class; parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX); #line 37 "src/mn-system-vfs-mailbox.gob" mn_mailbox_class->seal = ___2_mn_system_vfs_mailbox_seal; #line 49 "src/mn-system-vfs-mailbox.gob" mn_mailbox_class->parse_uri = ___3_mn_system_vfs_mailbox_parse_uri; #line 62 "src/mn-system-vfs-mailbox.gob" mn_mailbox_class->check = ___4_mn_system_vfs_mailbox_check; #line 132 "mn-system-vfs-mailbox.c" { #line 33 "src/mn-system-vfs-mailbox.gob" MN_MAILBOX_CLASS(class)->type = "system-vfs"; #line 138 "mn-system-vfs-mailbox.c" } } #undef __GOB_FUNCTION__ #line 37 "src/mn-system-vfs-mailbox.gob" static void ___2_mn_system_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED) #line 148 "mn-system-vfs-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->seal) \ (* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); } { #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::seal" { #line 39 "src/mn-system-vfs-mailbox.gob" mn_mailbox_set_stock_id(mailbox, MN_STOCK_SYSTEM_MAILBOX); MN_VFS_MAILBOX(mailbox)->uri = g_strdup(self_get_uri()); mailbox->runtime_name = g_strdup(_("System mailbox")); PARENT_HANDLER(mailbox); }} #line 165 "mn-system-vfs-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 49 "src/mn-system-vfs-mailbox.gob" static MNMailbox * ___3_mn_system_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri) #line 172 "mn-system-vfs-mailbox.c" #define PARENT_HANDLER(___dummy,___uri) \ ((MN_MAILBOX_CLASS(parent_class)->parse_uri)? \ (* MN_MAILBOX_CLASS(parent_class)->parse_uri)(___dummy,___uri): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::parse_uri" { #line 51 "src/mn-system-vfs-mailbox.gob" const char *system_uri; MNMailbox *mailbox = NULL; system_uri = self_get_uri(); if (system_uri && gnome_vfs_uris_match(uri, system_uri)) mailbox = mn_mailbox_new("system-vfs", NULL); return mailbox; }} #line 191 "mn-system-vfs-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 62 "src/mn-system-vfs-mailbox.gob" static void ___4_mn_system_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED) #line 198 "mn-system-vfs-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->check) \ (* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::check" { #line 64 "src/mn-system-vfs-mailbox.gob" if (MN_VFS_MAILBOX(mailbox)->uri) { PARENT_HANDLER(mailbox); } else { mn_mailbox_set_error(mailbox, _("system mailbox not found")); mn_mailbox_set_poll(mailbox, FALSE); /* disable the mailbox */ } }} #line 217 "mn-system-vfs-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 76 "src/mn-system-vfs-mailbox.gob" const char * mn_system_vfs_mailbox_get_uri (void) { #line 225 "mn-system-vfs-mailbox.c" #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::get_uri" { #line 78 "src/mn-system-vfs-mailbox.gob" static char *global_uri = NULL; G_LOCK_DEFINE_STATIC(global_uri); const char *uri; G_LOCK(global_uri); if (! global_uri) { const char *mail = g_getenv("MAIL"); if (mail && g_path_is_absolute(mail) && g_file_test(mail, G_FILE_TEST_EXISTS)) global_uri = gnome_vfs_get_uri_from_local_path(mail); if (! global_uri) /* no MAIL or invalid contents */ { const char *username = g_get_user_name(); static const char *spool_paths[] = { "/var/spool/mail", "/var/mail" }; int i; for (i = 0; i < G_N_ELEMENTS(spool_paths); i++) { char *path; path = g_build_filename(spool_paths[i], username, NULL); if (g_file_test(path, G_FILE_TEST_EXISTS)) global_uri = gnome_vfs_get_uri_from_local_path(path); g_free(path); if (global_uri) break; } } } uri = global_uri; G_UNLOCK(global_uri); return uri; }} #line 267 "mn-system-vfs-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-hotmail-mailbox-properties-private.h0000644000175000001440000000050111015312647027246 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_HOTMAIL_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_HOTMAIL_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-hotmail-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-hotmail-mailbox-properties.h0000644000175000001440000000342511015312647025606 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-webmail-mailbox-properties.h" #ifndef __MN_HOTMAIL_MAILBOX_PROPERTIES_H__ #define __MN_HOTMAIL_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_HOTMAIL_MAILBOX_PROPERTIES (mn_hotmail_mailbox_properties_get_type()) #define MN_HOTMAIL_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_hotmail_mailbox_properties_get_type(), MNHotmailMailboxProperties) #define MN_HOTMAIL_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_hotmail_mailbox_properties_get_type(), MNHotmailMailboxProperties const) #define MN_HOTMAIL_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_hotmail_mailbox_properties_get_type(), MNHotmailMailboxPropertiesClass) #define MN_IS_HOTMAIL_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_hotmail_mailbox_properties_get_type ()) #define MN_HOTMAIL_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_hotmail_mailbox_properties_get_type(), MNHotmailMailboxPropertiesClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_HOTMAIL_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_HOTMAIL_MAILBOX_PROPERTIES__ typedef struct _MNHotmailMailboxProperties MNHotmailMailboxProperties; #endif struct _MNHotmailMailboxProperties { MNWebmailMailboxProperties __parent__; }; /* * Class definition */ typedef struct _MNHotmailMailboxPropertiesClass MNHotmailMailboxPropertiesClass; struct _MNHotmailMailboxPropertiesClass { MNWebmailMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_hotmail_mailbox_properties_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-folder-tree-client.gob.stamp0000644000175000001440000000000011015312647027461 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-sound-player.h0000644000175000001440000000520611015312645022745 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #ifndef __MN_SOUND_PLAYER_H__ #define __MN_SOUND_PLAYER_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #include /* * Type checking and casting macros */ #define MN_TYPE_SOUND_PLAYER (mn_sound_player_get_type()) #define MN_SOUND_PLAYER(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_sound_player_get_type(), MNSoundPlayer) #define MN_SOUND_PLAYER_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_sound_player_get_type(), MNSoundPlayer const) #define MN_SOUND_PLAYER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_sound_player_get_type(), MNSoundPlayerClass) #define MN_IS_SOUND_PLAYER(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_sound_player_get_type ()) #define MN_SOUND_PLAYER_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_sound_player_get_type(), MNSoundPlayerClass) /* Private structure type */ typedef struct _MNSoundPlayerPrivate MNSoundPlayerPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_SOUND_PLAYER__ #define __TYPEDEF_MN_SOUND_PLAYER__ typedef struct _MNSoundPlayer MNSoundPlayer; #endif struct _MNSoundPlayer { GObject __parent__; /*< private >*/ MNSoundPlayerPrivate *_priv; }; /* * Class definition */ typedef struct _MNSoundPlayerClass MNSoundPlayerClass; struct _MNSoundPlayerClass { GObjectClass __parent__; }; /* * Public methods */ GType mn_sound_player_get_type (void) G_GNUC_CONST; #line 39 "src/mn-sound-player.gob" gboolean mn_sound_player_get_can_play (MNSoundPlayer * self); #line 60 "mn-sound-player.h" #line 45 "src/mn-sound-player.gob" gboolean mn_sound_player_get_can_stop (MNSoundPlayer * self); #line 63 "mn-sound-player.h" #line 98 "src/mn-sound-player.gob" void mn_sound_player_play (MNSoundPlayer * self, const char * filename, GtkWindow * parent); #line 68 "mn-sound-player.h" #line 196 "src/mn-sound-player.gob" void mn_sound_player_stop (MNSoundPlayer * self); #line 71 "mn-sound-player.h" #line 250 "src/mn-sound-player.gob" MNSoundPlayer * mn_sound_player_new (void); #line 74 "mn-sound-player.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_SOUND_PLAYER_GET_PROP_CAN_PLAY(arg) "can_play", __extension__ ({gboolean *z = (arg); z;}) #define MN_SOUND_PLAYER_GET_PROP_CAN_STOP(arg) "can_stop", __extension__ ({gboolean *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_SOUND_PLAYER_GET_PROP_CAN_PLAY(arg) "can_play",(gboolean *)(arg) #define MN_SOUND_PLAYER_GET_PROP_CAN_STOP(arg) "can_stop",(gboolean *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mozilla-mailbox-backend.gob.stamp0000644000175000001440000000000011015312645026436 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-evolution-message.gob.stamp0000644000175000001440000000000011015312647025421 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-evolution-mailbox.h0000644000175000001440000000506311015312647024003 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-mailbox.h" #ifndef __MN_EVOLUTION_MAILBOX_H__ #define __MN_EVOLUTION_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_EVOLUTION_MAILBOX (mn_evolution_mailbox_get_type()) #define MN_EVOLUTION_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_mailbox_get_type(), MNEvolutionMailbox) #define MN_EVOLUTION_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_mailbox_get_type(), MNEvolutionMailbox const) #define MN_EVOLUTION_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_evolution_mailbox_get_type(), MNEvolutionMailboxClass) #define MN_IS_EVOLUTION_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_evolution_mailbox_get_type ()) #define MN_EVOLUTION_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_evolution_mailbox_get_type(), MNEvolutionMailboxClass) /* Private structure type */ typedef struct _MNEvolutionMailboxPrivate MNEvolutionMailboxPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_EVOLUTION_MAILBOX__ #define __TYPEDEF_MN_EVOLUTION_MAILBOX__ typedef struct _MNEvolutionMailbox MNEvolutionMailbox; #endif struct _MNEvolutionMailbox { MNMailbox __parent__; /*< public >*/ char * uri; char * folder_name; /*< private >*/ MNEvolutionMailboxPrivate *_priv; }; /* * Class definition */ typedef struct _MNEvolutionMailboxClass MNEvolutionMailboxClass; struct _MNEvolutionMailboxClass { MNMailboxClass __parent__; }; /* * Public methods */ GType mn_evolution_mailbox_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_EVOLUTION_MAILBOX_PROP_URI(arg) "uri", __extension__ ({gchar *z = (arg); z;}) #define MN_EVOLUTION_MAILBOX_GET_PROP_URI(arg) "uri", __extension__ ({gchar **z = (arg); z;}) #define MN_EVOLUTION_MAILBOX_PROP_FOLDER_NAME(arg) "folder_name", __extension__ ({gchar *z = (arg); z;}) #define MN_EVOLUTION_MAILBOX_GET_PROP_FOLDER_NAME(arg) "folder_name", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_EVOLUTION_MAILBOX_PROP_URI(arg) "uri",(gchar *)(arg) #define MN_EVOLUTION_MAILBOX_GET_PROP_URI(arg) "uri",(gchar **)(arg) #define MN_EVOLUTION_MAILBOX_PROP_FOLDER_NAME(arg) "folder_name",(gchar *)(arg) #define MN_EVOLUTION_MAILBOX_GET_PROP_FOLDER_NAME(arg) "folder_name",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-custom-vfs-mailbox.gob.stamp0000644000175000001440000000000011015312647025512 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-evolution-mailbox-properties.h0000644000175000001440000000510311015312647026170 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-mailbox-properties.h" #ifndef __MN_EVOLUTION_MAILBOX_PROPERTIES_H__ #define __MN_EVOLUTION_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_EVOLUTION_MAILBOX_PROPERTIES (mn_evolution_mailbox_properties_get_type()) #define MN_EVOLUTION_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_mailbox_properties_get_type(), MNEvolutionMailboxProperties) #define MN_EVOLUTION_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_mailbox_properties_get_type(), MNEvolutionMailboxProperties const) #define MN_EVOLUTION_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_evolution_mailbox_properties_get_type(), MNEvolutionMailboxPropertiesClass) #define MN_IS_EVOLUTION_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_evolution_mailbox_properties_get_type ()) #define MN_EVOLUTION_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_evolution_mailbox_properties_get_type(), MNEvolutionMailboxPropertiesClass) /* Private structure type */ typedef struct _MNEvolutionMailboxPropertiesPrivate MNEvolutionMailboxPropertiesPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_EVOLUTION_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_EVOLUTION_MAILBOX_PROPERTIES__ typedef struct _MNEvolutionMailboxProperties MNEvolutionMailboxProperties; #endif struct _MNEvolutionMailboxProperties { MNMailboxProperties __parent__; /*< private >*/ MNEvolutionMailboxPropertiesPrivate *_priv; }; /* * Class definition */ typedef struct _MNEvolutionMailboxPropertiesClass MNEvolutionMailboxPropertiesClass; struct _MNEvolutionMailboxPropertiesClass { MNMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_evolution_mailbox_properties_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_EVOLUTION_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete", __extension__ ({gboolean *z = (arg); z;}) #define MN_EVOLUTION_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_EVOLUTION_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete",(gboolean *)(arg) #define MN_EVOLUTION_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mh-mailbox-backend.c0000644000175000001440000003107011015312645023736 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-mh-mailbox-backend.h" #include "mn-mh-mailbox-backend-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-mh-mailbox-backend.gob" #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #include "mn-vfs-mailbox-backend-private.h" #include "mn-vfs.h" #include "mn-util.h" #include "mn-message-mime.h" #define SEQUENCES_FILE ".mh_sequences" #define XMH_CACHE_FILE ".xmhcache" #line 39 "mn-mh-mailbox-backend.c" /* self casting macros */ #define SELF(x) MN_MH_MAILBOX_BACKEND(x) #define SELF_CONST(x) MN_MH_MAILBOX_BACKEND_CONST(x) #define IS_SELF(x) MN_IS_MH_MAILBOX_BACKEND(x) #define TYPE_SELF MN_TYPE_MH_MAILBOX_BACKEND #define SELF_CLASS(x) MN_MH_MAILBOX_BACKEND_CLASS(x) #define SELF_GET_CLASS(x) MN_MH_MAILBOX_BACKEND_GET_CLASS(x) /* self typedefs */ typedef MNMHMailboxBackend Self; typedef MNMHMailboxBackendClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-mh-mailbox-backend.gob" static void mn_mh_mailbox_backend_init (MNMHMailboxBackend * o); #line 56 "mn-mh-mailbox-backend.c" #line 39 "src/mn-mh-mailbox-backend.gob" static void mn_mh_mailbox_backend_class_init (MNMHMailboxBackendClass * class); #line 59 "mn-mh-mailbox-backend.c" #line 44 "src/mn-mh-mailbox-backend.gob" static void mn_mh_mailbox_backend_constructor (MNMHMailboxBackend * self); #line 62 "mn-mh-mailbox-backend.c" #line 56 "src/mn-mh-mailbox-backend.gob" static void ___3_mn_mh_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend, const char * info_uri, GnomeVFSMonitorEventType event_type); #line 65 "mn-mh-mailbox-backend.c" #line 78 "src/mn-mh-mailbox-backend.gob" static gboolean ___4_mn_mh_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox); #line 68 "mn-mh-mailbox-backend.c" #line 102 "src/mn-mh-mailbox-backend.gob" static void ___5_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend, int check_id); #line 71 "mn-mh-mailbox-backend.c" /* pointer to the class of our parent */ static MNVFSMailboxBackendClass *parent_class = NULL; GType mn_mh_mailbox_backend_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMHMailboxBackendClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_mh_mailbox_backend_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMHMailboxBackend), 0 /* n_preallocs */, (GInstanceInitFunc) mn_mh_mailbox_backend_init, NULL }; type = g_type_register_static (MN_TYPE_VFS_MAILBOX_BACKEND, "MNMHMailboxBackend", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMHMailboxBackend *)g_object_new(mn_mh_mailbox_backend_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMHMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMHMailboxBackend * GET_NEW_VARG (const char *first, ...) { MNMHMailboxBackend *ret; va_list ap; va_start (ap, first); ret = (MNMHMailboxBackend *)g_object_new_valist (mn_mh_mailbox_backend_get_type (), first, ap); va_end (ap); return ret; } static GObject * ___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::constructor" GObject *obj_self; MNMHMailboxBackend *self; obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties); self = MN_MH_MAILBOX_BACKEND (obj_self); #line 44 "src/mn-mh-mailbox-backend.gob" mn_mh_mailbox_backend_constructor (self); #line 129 "mn-mh-mailbox-backend.c" return obj_self; } #undef __GOB_FUNCTION__ static void mn_mh_mailbox_backend_init (MNMHMailboxBackend * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::init" } #undef __GOB_FUNCTION__ #line 39 "src/mn-mh-mailbox-backend.gob" static void mn_mh_mailbox_backend_class_init (MNMHMailboxBackendClass * class G_GNUC_UNUSED) { #line 144 "mn-mh-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNVFSMailboxBackendClass *mn_vfs_mailbox_backend_class = (MNVFSMailboxBackendClass *)class; parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND); #line 56 "src/mn-mh-mailbox-backend.gob" mn_vfs_mailbox_backend_class->monitor_cb = ___3_mn_mh_mailbox_backend_monitor_cb; #line 78 "src/mn-mh-mailbox-backend.gob" mn_vfs_mailbox_backend_class->is = ___4_mn_mh_mailbox_backend_is; #line 102 "src/mn-mh-mailbox-backend.gob" mn_vfs_mailbox_backend_class->check = ___5_mn_mh_mailbox_backend_check; #line 157 "mn-mh-mailbox-backend.c" g_object_class->constructor = ___constructor; { #line 40 "src/mn-mh-mailbox-backend.gob" MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "MH"; #line 164 "mn-mh-mailbox-backend.c" } } #undef __GOB_FUNCTION__ #line 44 "src/mn-mh-mailbox-backend.gob" static void mn_mh_mailbox_backend_constructor (MNMHMailboxBackend * self) { #line 175 "mn-mh-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::constructor" { #line 45 "src/mn-mh-mailbox-backend.gob" MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self); /* * There is no standard way of locking a MH mailbox, so avoid race * conditions by setting a check latency of 3 seconds. */ backend->check_latency = 3000; }} #line 189 "mn-mh-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 56 "src/mn-mh-mailbox-backend.gob" static void ___3_mn_mh_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC_UNUSED, const char * info_uri, GnomeVFSMonitorEventType event_type) #line 195 "mn-mh-mailbox-backend.c" #define PARENT_HANDLER(___backend,___info_uri,___event_type) \ { if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->monitor_cb) \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->monitor_cb)(___backend,___info_uri,___event_type); } { #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::monitor_cb" { #line 60 "src/mn-mh-mailbox-backend.gob" if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED || event_type == GNOME_VFS_MONITOR_EVENT_DELETED || event_type == GNOME_VFS_MONITOR_EVENT_CREATED) { char *filename; filename = mn_vfs_uri_extract_short_name(info_uri); if (filename) { if (! strcmp(filename, SEQUENCES_FILE) || mn_str_isnumeric(filename)) mn_vfs_mailbox_backend_queue_check(backend); g_free(filename); } } }} #line 220 "mn-mh-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 78 "src/mn-mh-mailbox-backend.gob" static gboolean ___4_mn_mh_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox) #line 227 "mn-mh-mailbox-backend.c" #define PARENT_HANDLER(___dummy,___class,___mailbox) \ ((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)? \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___class,___mailbox): \ ((gboolean )0)) { #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::is" { #line 82 "src/mn-mh-mailbox-backend.gob" GnomeVFSURI *sequences_uri; gboolean is; sequences_uri = gnome_vfs_uri_append_file_name(mailbox->vfs_uri, SEQUENCES_FILE); is = mn_vfs_test(sequences_uri, G_FILE_TEST_IS_REGULAR); gnome_vfs_uri_unref(sequences_uri); if (! is) { GnomeVFSURI *cache_uri; cache_uri = gnome_vfs_uri_append_file_name(mailbox->vfs_uri, XMH_CACHE_FILE); is = mn_vfs_test(cache_uri, G_FILE_TEST_IS_REGULAR); gnome_vfs_uri_unref(cache_uri); } return is; }} #line 255 "mn-mh-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 102 "src/mn-mh-mailbox-backend.gob" static void ___5_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, int check_id) #line 262 "mn-mh-mailbox-backend.c" #define PARENT_HANDLER(___backend,___check_id) \ { if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check) \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check)(___backend,___check_id); } { #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::check" { #line 104 "src/mn-mh-mailbox-backend.gob" GnomeVFSURI *sequences_uri; GnomeVFSResult result; GnomeVFSHandle *handle; mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_DIRECTORY); sequences_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, SEQUENCES_FILE); result = gnome_vfs_open_uri(&handle, sequences_uri, GNOME_VFS_OPEN_READ); gnome_vfs_uri_unref(sequences_uri); if (result == GNOME_VFS_OK) { MNVFSReadLineContext *context = NULL; const char *line; GSList *messages = NULL; int num_errors = 0; GnomeVFSResult close_result; while ((result = mn_vfs_read_line(&context, handle, &line)) == GNOME_VFS_OK) if (g_str_has_prefix(line, "unseen: ")) { int first; char **elements; int i; elements = g_strsplit(line + 8, " ", 0); for (i = 0; elements[i]; i++) { int last; int n; n = sscanf(elements[i], "%d-%d", &first, &last); if (n >= 1) { int j; if (n == 1) last = first; for (j = first; j <= last; j++) { char *filename; GnomeVFSURI *message_uri; MNMessage *message; GError *err = NULL; if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { g_strfreev(elements); goto loop_end; } filename = g_strdup_printf("%i", j); message_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, filename); g_free(filename); /* * We set handle_status to FALSE, since * messages in the unseen sequence are by * definition unseen (that is, new). */ message = mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri, MN_MESSAGE_NEW, FALSE, &err); if (message) messages = g_slist_prepend(messages, message); else if (err) { char *message_text_uri; message_text_uri = gnome_vfs_uri_to_string(message_uri, GNOME_VFS_URI_HIDE_PASSWORD); mn_mailbox_warning(MN_MAILBOX(backend->mailbox), "cannot read message \"%s\": %s", message_text_uri, err->message); g_free(message_text_uri); g_error_free(err); num_errors++; } gnome_vfs_uri_unref(message_uri); } } } g_strfreev(elements); } loop_end: mn_vfs_read_line_context_free(context); close_result = gnome_vfs_close(handle); GDK_THREADS_ENTER(); if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK) { if (close_result == GNOME_VFS_OK) { mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages); if (num_errors != 0) mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), ngettext("cannot read %i message", "cannot read %i messages", num_errors), num_errors); } else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to close %s: %s"), SEQUENCES_FILE, gnome_vfs_result_to_string(close_result)); } else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("error while reading %s: %s"), SEQUENCES_FILE, gnome_vfs_result_to_string(result)); } mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); } else { GnomeVFSURI *cache_uri; gboolean cache_exists; cache_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, XMH_CACHE_FILE); cache_exists = mn_vfs_test(cache_uri, G_FILE_TEST_IS_REGULAR); gnome_vfs_uri_unref(cache_uri); if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { GDK_THREADS_ENTER(); if (cache_exists) mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), NULL); else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to open %s: %s"), SEQUENCES_FILE, gnome_vfs_result_to_string(result)); gdk_flush(); GDK_THREADS_LEAVE(); } } }} #line 416 "mn-mh-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-pi-mailbox.c0000644000175000001440000005464111015312646022367 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-pi-mailbox.h" #include "mn-pi-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 39 "src/mn-pi-mailbox.gob" #include #include "mn-authenticated-mailbox-private.h" #include "mn-mailbox-private.h" #include "mn-util.h" #include "mn-stock.h" #include "mn-conf.h" struct _MNClientSessionPrivate { MN_PI_MAILBOX_SESSION_PRIVATE; }; #line 40 "mn-pi-mailbox.c" static const GEnumValue _mn_pi_mailbox_connection_type_values[] = { { MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL, (char *)"MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL", (char *)"normal" }, { MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL, (char *)"MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL", (char *)"inband-ssl" }, { MN_PI_MAILBOX_CONNECTION_TYPE_SSL, (char *)"MN_PI_MAILBOX_CONNECTION_TYPE_SSL", (char *)"ssl" }, { 0, NULL, NULL } }; GType mn_pi_mailbox_connection_type_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) type = g_enum_register_static ("MNPIMailboxConnectionType", _mn_pi_mailbox_connection_type_values); return type; } /* self casting macros */ #define SELF(x) MN_PI_MAILBOX(x) #define SELF_CONST(x) MN_PI_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_PI_MAILBOX(x) #define TYPE_SELF MN_TYPE_PI_MAILBOX #define SELF_CLASS(x) MN_PI_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_PI_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNPIMailbox Self; typedef MNPIMailboxClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 87 "src/mn-pi-mailbox.gob" static void mn_pi_mailbox_class_init (MNPIMailboxClass * class); #line 75 "mn-pi-mailbox.c" #line 96 "src/mn-pi-mailbox.gob" static void mn_pi_mailbox_init (MNPIMailbox * self); #line 78 "mn-pi-mailbox.c" #line 101 "src/mn-pi-mailbox.gob" static void ___3_mn_pi_mailbox_seal (MNMailbox * mailbox); #line 81 "mn-pi-mailbox.c" #line 121 "src/mn-pi-mailbox.gob" static void ___4_mn_pi_mailbox_removed (MNMailbox * mailbox); #line 84 "mn-pi-mailbox.c" #line 132 "src/mn-pi-mailbox.gob" static void ___5_mn_pi_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox); #line 87 "mn-pi-mailbox.c" #line 324 "src/mn-pi-mailbox.gob" static gboolean mn_pi_mailbox_run_untrusted_dialog (MNPIMailbox * self, const char * server, const char * reason, const char * cert_fingerprint); #line 90 "mn-pi-mailbox.c" enum { PROP_0, PROP_CONNECTION_TYPE, PROP_AUTHMECH, PROP_HOSTNAME, PROP_PORT }; /* pointer to the class of our parent */ static MNAuthenticatedMailboxClass *parent_class = NULL; /* Short form macros */ #define self_split_uri mn_pi_mailbox_split_uri #define self_split_uri_auth mn_pi_mailbox_split_uri_auth #define self_split_uri_hostport mn_pi_mailbox_split_uri_hostport #define self_session_private_init mn_pi_mailbox_session_private_init #define self_sasl_get_credentials_cb mn_pi_mailbox_sasl_get_credentials_cb #define self_ssl_trust_server_cb mn_pi_mailbox_ssl_trust_server_cb #define self_run_untrusted_dialog mn_pi_mailbox_run_untrusted_dialog #define self_notice_cb mn_pi_mailbox_notice_cb #define self_warning_cb mn_pi_mailbox_warning_cb GType mn_pi_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNPIMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_pi_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNPIMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_pi_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_AUTHENTICATED_MAILBOX, "MNPIMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNPIMailbox *)g_object_new(mn_pi_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNPIMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNPIMailbox * GET_NEW_VARG (const char *first, ...) { MNPIMailbox *ret; va_list ap; va_start (ap, first); ret = (MNPIMailbox *)g_object_new_valist (mn_pi_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:PI:Mailbox::finalize" MNPIMailbox *self G_GNUC_UNUSED = MN_PI_MAILBOX (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 70 "src/mn-pi-mailbox.gob" if(self->authmech) { g_free ((gpointer) self->authmech); self->authmech = NULL; } #line 166 "mn-pi-mailbox.c" #line 74 "src/mn-pi-mailbox.gob" if(self->hostname) { g_free ((gpointer) self->hostname); self->hostname = NULL; } #line 169 "mn-pi-mailbox.c" } #undef __GOB_FUNCTION__ #line 87 "src/mn-pi-mailbox.gob" static void mn_pi_mailbox_class_init (MNPIMailboxClass * class G_GNUC_UNUSED) { #line 177 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class; MNAuthenticatedMailboxClass *mn_authenticated_mailbox_class = (MNAuthenticatedMailboxClass *)class; g_type_class_add_private(class,sizeof(MNPIMailboxPrivate)); parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX); #line 101 "src/mn-pi-mailbox.gob" mn_mailbox_class->seal = ___3_mn_pi_mailbox_seal; #line 121 "src/mn-pi-mailbox.gob" mn_mailbox_class->removed = ___4_mn_pi_mailbox_removed; #line 132 "src/mn-pi-mailbox.gob" mn_authenticated_mailbox_class->authenticated_check = ___5_mn_pi_mailbox_authenticated_check; #line 193 "mn-pi-mailbox.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_enum ("connection_type" /* name */, NULL /* nick */, NULL /* blurb */, MN_TYPE_PI_MAILBOX_CONNECTION_TYPE /* enum_type */, MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE | G_PARAM_CONSTRUCT)); g_object_class_install_property (g_object_class, PROP_CONNECTION_TYPE, param_spec); param_spec = g_param_spec_string ("authmech" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_AUTHMECH, param_spec); param_spec = g_param_spec_string ("hostname" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_HOSTNAME, param_spec); param_spec = g_param_spec_int ("port" /* name */, NULL /* nick */, NULL /* blurb */, 0 /* minimum */, 65535 /* maximum */, 0 /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_PORT, param_spec); } { #line 88 "src/mn-pi-mailbox.gob" /* * 5 minutes is a good default check delay for remote POP3/IMAP * mailboxes. */ MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5; #line 249 "mn-pi-mailbox.c" } } #undef __GOB_FUNCTION__ #line 96 "src/mn-pi-mailbox.gob" static void mn_pi_mailbox_init (MNPIMailbox * self G_GNUC_UNUSED) { #line 257 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_PI_MAILBOX,MNPIMailboxPrivate); { #line 97 "src/mn-pi-mailbox.gob" mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_REMOTE); #line 265 "mn-pi-mailbox.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:PI:Mailbox::set_property" { MNPIMailbox *self G_GNUC_UNUSED; self = MN_PI_MAILBOX (object); switch (property_id) { case PROP_CONNECTION_TYPE: { #line 65 "src/mn-pi-mailbox.gob" self->connection_type = g_value_get_enum (VAL); #line 286 "mn-pi-mailbox.c" } break; case PROP_AUTHMECH: { #line 71 "src/mn-pi-mailbox.gob" { char *old = self->authmech; self->authmech = g_value_dup_string (VAL); g_free (old); } #line 293 "mn-pi-mailbox.c" } break; case PROP_HOSTNAME: { #line 75 "src/mn-pi-mailbox.gob" { char *old = self->hostname; self->hostname = g_value_dup_string (VAL); g_free (old); } #line 300 "mn-pi-mailbox.c" } break; case PROP_PORT: { #line 78 "src/mn-pi-mailbox.gob" self->port = g_value_get_int (VAL); #line 307 "mn-pi-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:PI:Mailbox::get_property" { MNPIMailbox *self G_GNUC_UNUSED; self = MN_PI_MAILBOX (object); switch (property_id) { case PROP_CONNECTION_TYPE: { #line 65 "src/mn-pi-mailbox.gob" g_value_set_enum (VAL, self->connection_type); #line 338 "mn-pi-mailbox.c" } break; case PROP_AUTHMECH: { #line 71 "src/mn-pi-mailbox.gob" g_value_set_string (VAL, self->authmech); #line 345 "mn-pi-mailbox.c" } break; case PROP_HOSTNAME: { #line 75 "src/mn-pi-mailbox.gob" g_value_set_string (VAL, self->hostname); #line 352 "mn-pi-mailbox.c" } break; case PROP_PORT: { #line 78 "src/mn-pi-mailbox.gob" g_value_set_int (VAL, self->port); #line 359 "mn-pi-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 101 "src/mn-pi-mailbox.gob" static void ___3_mn_pi_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED) #line 379 "mn-pi-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->seal) \ (* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); } { #define __GOB_FUNCTION__ "MN:PI:Mailbox::seal" { #line 103 "src/mn-pi-mailbox.gob" MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); /* do not save default port to mailboxes.xml */ if (self->port == SELF_GET_CLASS(self)->default_ports[self->connection_type]) self->port = 0; self->runtime_port = self->port == 0 ? SELF_GET_CLASS(self)->default_ports[self->connection_type] : self->port; auth_mailbox->keyring_server = g_strdup(self->hostname); auth_mailbox->keyring_port = self->runtime_port; }} #line 404 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 121 "src/mn-pi-mailbox.gob" static void ___4_mn_pi_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED) #line 411 "mn-pi-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->removed) \ (* MN_MAILBOX_CLASS(parent_class)->removed)(___mailbox); } { #define __GOB_FUNCTION__ "MN:PI:Mailbox::removed" { #line 123 "src/mn-pi-mailbox.gob" Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (selfp->untrusted_dialog) gtk_dialog_response(GTK_DIALOG(selfp->untrusted_dialog), GTK_RESPONSE_CANCEL); }} #line 427 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 132 "src/mn-pi-mailbox.gob" static void ___5_mn_pi_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED) #line 434 "mn-pi-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check) \ (* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:PI:Mailbox::authenticated_check" { #line 134 "src/mn-pi-mailbox.gob" #if ! WITH_SSL Self *self = SELF(mailbox); #endif PARENT_HANDLER(mailbox); #if ! WITH_SSL if (self->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL || self->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(mailbox), _("SSL/TLS support has not been compiled in")); mn_mailbox_set_poll(MN_MAILBOX(mailbox), FALSE); /* disable the mailbox */ gdk_flush(); GDK_THREADS_LEAVE(); } #endif }} #line 463 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 156 "src/mn-pi-mailbox.gob" gboolean mn_pi_mailbox_split_uri (const char * uri, int maxlen, char * scheme, char * auth, char * location) { #line 471 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::split_uri" #line 156 "src/mn-pi-mailbox.gob" g_return_val_if_fail (uri != NULL, (gboolean )0); #line 156 "src/mn-pi-mailbox.gob" g_return_val_if_fail (scheme != NULL, (gboolean )0); #line 156 "src/mn-pi-mailbox.gob" g_return_val_if_fail (auth != NULL, (gboolean )0); #line 156 "src/mn-pi-mailbox.gob" g_return_val_if_fail (location != NULL, (gboolean )0); #line 481 "mn-pi-mailbox.c" { #line 162 "src/mn-pi-mailbox.gob" char *pat; int n; pat = g_strdup_printf("%%%i[^:]://%%%i[^@]@%%%is", maxlen, maxlen, maxlen); n = sscanf(uri, pat, scheme, auth, location); g_free(pat); return n == 3; /* MN requires an username, hence the auth part */ }} #line 494 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #line 173 "src/mn-pi-mailbox.gob" gboolean mn_pi_mailbox_split_uri_auth (const char * auth, int maxlen, char * username, char * authmech, gboolean * has_authmech) { #line 501 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::split_uri_auth" #line 173 "src/mn-pi-mailbox.gob" g_return_val_if_fail (auth != NULL, (gboolean )0); #line 173 "src/mn-pi-mailbox.gob" g_return_val_if_fail (username != NULL, (gboolean )0); #line 173 "src/mn-pi-mailbox.gob" g_return_val_if_fail (authmech != NULL, (gboolean )0); #line 173 "src/mn-pi-mailbox.gob" g_return_val_if_fail (has_authmech != NULL, (gboolean )0); #line 511 "mn-pi-mailbox.c" { #line 179 "src/mn-pi-mailbox.gob" char *pat; int n; pat = g_strdup_printf("%%%i[^;];AUTH=%%%is", maxlen, maxlen); n = sscanf(auth, pat, username, authmech); g_free(pat); if (n < 1) return FALSE; /* MN requires an username */ *has_authmech = n == 2; return TRUE; }} #line 529 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #line 195 "src/mn-pi-mailbox.gob" void mn_pi_mailbox_split_uri_hostport (const char * hostport, int maxlen, char * hostname, int * port) { #line 536 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::split_uri_hostport" #line 195 "src/mn-pi-mailbox.gob" g_return_if_fail (hostport != NULL); #line 195 "src/mn-pi-mailbox.gob" g_return_if_fail (hostname != NULL); #line 195 "src/mn-pi-mailbox.gob" g_return_if_fail (port != NULL); #line 544 "mn-pi-mailbox.c" { #line 200 "src/mn-pi-mailbox.gob" char *pat; int n; /* split host:port part in 2 subparts: host and port */ pat = g_strdup_printf("[%%%i[^]]]:%%u", maxlen); n = sscanf(hostport, pat, hostname, port); g_free(pat); if (n < 1) { pat = g_strdup_printf("%%%i[^:]:%%u", maxlen); n = sscanf(hostport, pat, hostname, port); g_free(pat); } g_assert(n >= 1); if (n < 2) *port = 0; }} #line 569 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #line 223 "src/mn-pi-mailbox.gob" void mn_pi_mailbox_session_private_init (MNPIMailbox * self, MNClientSessionPrivate * priv) { #line 576 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::session_private_init" #line 223 "src/mn-pi-mailbox.gob" g_return_if_fail (self != NULL); #line 223 "src/mn-pi-mailbox.gob" g_return_if_fail (MN_IS_PI_MAILBOX (self)); #line 223 "src/mn-pi-mailbox.gob" g_return_if_fail (priv != NULL); #line 584 "mn-pi-mailbox.c" { #line 225 "src/mn-pi-mailbox.gob" priv->mailbox = MN_MAILBOX(self); priv->auth_mailbox = MN_AUTHENTICATED_MAILBOX(self); priv->pi_mailbox = MN_PI_MAILBOX(self); }} #line 592 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #line 231 "src/mn-pi-mailbox.gob" gboolean mn_pi_mailbox_sasl_get_credentials_cb (MNClientSession * session, MNClientSessionPrivate * priv, const char ** username, const char ** password) { #line 599 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::sasl_get_credentials_cb" { #line 236 "src/mn-pi-mailbox.gob" #if WITH_SASL g_return_val_if_fail(username != NULL || password != NULL, FALSE); if (username) *username = priv->auth_mailbox->username; if (password) { if (mn_authenticated_mailbox_fill_password(priv->auth_mailbox, TRUE)) *password = priv->auth_mailbox->runtime_password; else return FALSE; } else /* * Reset auth_cancelled ourselves since we did not call * mn_authenticated_mailbox_fill_password(). */ priv->auth_mailbox->auth_cancelled = FALSE; return TRUE; #else g_assert_not_reached(); return FALSE; #endif /* WITH_SASL */ }} #line 630 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #line 264 "src/mn-pi-mailbox.gob" gboolean mn_pi_mailbox_ssl_trust_server_cb (MNClientSession * session, const char * server, int port, const char * fingerprint, const char * verify_error, MNClientSessionPrivate * priv) { #line 637 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::ssl_trust_server_cb" { #line 271 "src/mn-pi-mailbox.gob" #if WITH_SSL gboolean status = FALSE; if (fingerprint) { GSList *gconf_fingerprints; gconf_fingerprints = mn_conf_get_string_list(MN_CONF_TRUSTED_X509_CERTIFICATES); if (mn_g_str_slist_find(gconf_fingerprints, fingerprint)) status = TRUE; else if (self_run_untrusted_dialog(priv->pi_mailbox, server, verify_error, fingerprint)) { status = TRUE; gconf_fingerprints = g_slist_append(gconf_fingerprints, g_strdup(fingerprint)); mn_conf_set_string_list(MN_CONF_TRUSTED_X509_CERTIFICATES, gconf_fingerprints); } mn_g_slist_free_deep(gconf_fingerprints); } else { char *key; GSList *gconf_servers = NULL; key = g_strdup_printf("%s:%i", server, port); gconf_servers = mn_conf_get_string_list(MN_CONF_TRUSTED_SERVERS); if (mn_g_str_slist_find(gconf_servers, key)) status = TRUE; else { if (self_run_untrusted_dialog(priv->pi_mailbox, server, _("missing certificate"), NULL)) { status = TRUE; gconf_servers = g_slist_append(gconf_servers, g_strdup(key)); mn_conf_set_string_list(MN_CONF_TRUSTED_SERVERS, gconf_servers); } } g_free(key); mn_g_slist_free_deep(gconf_servers); } return status; #else g_assert_not_reached(); return FALSE; #endif /* WITH_SSL */ }} #line 693 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #line 324 "src/mn-pi-mailbox.gob" static gboolean mn_pi_mailbox_run_untrusted_dialog (MNPIMailbox * self, const char * server, const char * reason, const char * cert_fingerprint) { #line 700 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::run_untrusted_dialog" #line 324 "src/mn-pi-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 324 "src/mn-pi-mailbox.gob" g_return_val_if_fail (MN_IS_PI_MAILBOX (self), (gboolean )0); #line 324 "src/mn-pi-mailbox.gob" g_return_val_if_fail (server != NULL, (gboolean )0); #line 324 "src/mn-pi-mailbox.gob" g_return_val_if_fail (reason != NULL, (gboolean )0); #line 710 "mn-pi-mailbox.c" { #line 329 "src/mn-pi-mailbox.gob" #if WITH_SSL GString *secondary; gboolean status; g_return_val_if_fail(server != NULL, FALSE); g_return_val_if_fail(reason != NULL, FALSE); secondary = g_string_new(NULL); g_string_printf(secondary, _("Mail Notification was unable to trust \"%s\" " "(%s). It is possible that someone is " "intercepting your communication to obtain " "your confidential information.\n" "\n" "You should only connect to the server if you " "are certain you are connected to \"%s\". " "If you choose to connect to the server, this " "message will not be shown again."), server, reason, server); if (cert_fingerprint) { g_string_append(secondary, "\n\n"); g_string_append_printf(secondary, _("Certificate fingerprint: %s."), cert_fingerprint); } GDK_THREADS_ENTER(); selfp->untrusted_dialog = mn_alert_dialog_new(NULL, GTK_MESSAGE_WARNING, 0, _("Connect to untrusted server?"), secondary->str); g_string_free(secondary, TRUE); mn_add_weak_pointer(&selfp->untrusted_dialog); gtk_dialog_add_buttons(GTK_DIALOG(selfp->untrusted_dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_CONNECT, GTK_RESPONSE_OK, NULL); status = mn_dialog_run_nonmodal(GTK_DIALOG(selfp->untrusted_dialog)) == GTK_RESPONSE_OK; gtk_widget_destroy(selfp->untrusted_dialog); gdk_flush(); GDK_THREADS_LEAVE(); return status; #else g_assert_not_reached(); return FALSE; #endif /* WITH_SSL */ }} #line 767 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #line 384 "src/mn-pi-mailbox.gob" void mn_pi_mailbox_notice_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv) { #line 774 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::notice_cb" { #line 388 "src/mn-pi-mailbox.gob" mn_mailbox_notice(priv->mailbox, "%s", message); }} #line 781 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ #line 392 "src/mn-pi-mailbox.gob" void mn_pi_mailbox_warning_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv) { #line 788 "mn-pi-mailbox.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox::warning_cb" { #line 396 "src/mn-pi-mailbox.gob" mn_mailbox_warning(priv->mailbox, "%s", message); }} #line 795 "mn-pi-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-autodetect-mailbox-properties.c0000644000175000001440000003731611015312644026310 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-autodetect-mailbox-properties.h" #include "mn-autodetect-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 25 "src/mn-autodetect-mailbox-properties.gob" #include #include "mn-mailbox-properties.h" #include "mn-mailbox-properties-private.h" #include "mn-util.h" #include "mn-properties-dialog.h" #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED #include "mn-custom-vfs-mailbox.h" #endif #include "mn-stock.h" static char *current_folder_uri = NULL; #line 40 "mn-autodetect-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_AUTODETECT_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_AUTODETECT_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_AUTODETECT_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_AUTODETECT_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_AUTODETECT_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNAutodetectMailboxProperties Self; typedef MNAutodetectMailboxPropertiesClass SelfClass; /* here are local prototypes */ static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 100 "src/mn-autodetect-mailbox-properties.gob" static void mn_autodetect_mailbox_properties_class_init (MNAutodetectMailboxPropertiesClass * class); #line 58 "mn-autodetect-mailbox-properties.c" #line 109 "src/mn-autodetect-mailbox-properties.gob" static void mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * self); #line 61 "mn-autodetect-mailbox-properties.c" #line 154 "src/mn-autodetect-mailbox-properties.gob" static void mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer user_data); #line 64 "mn-autodetect-mailbox-properties.c" #line 196 "src/mn-autodetect-mailbox-properties.gob" static void mn_autodetect_mailbox_properties_current_folder_changed_h (GtkFileChooser * chooser, gpointer user_data); #line 67 "mn-autodetect-mailbox-properties.c" #line 203 "src/mn-autodetect-mailbox-properties.gob" static void mn_autodetect_mailbox_properties_chooser_response_h (GtkDialog * dialog, int response, gpointer user_data); #line 70 "mn-autodetect-mailbox-properties.c" #line 219 "src/mn-autodetect-mailbox-properties.gob" static void ___6_mn_autodetect_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox); #line 73 "mn-autodetect-mailbox-properties.c" #line 231 "src/mn-autodetect-mailbox-properties.gob" static MNMailbox * ___7_mn_autodetect_mailbox_properties_get_mailbox (MNMailboxProperties * properties); #line 76 "mn-autodetect-mailbox-properties.c" enum { PROP_0, PROP_COMPLETE, PROP_DEFAULT_NAME, PROP_DEFAULT_CHECK_DELAY }; /* pointer to the class of our parent */ static MNMailboxPropertiesClass *parent_class = NULL; /* Short form macros */ #define self_browse_clicked_h mn_autodetect_mailbox_properties_browse_clicked_h #define self_current_folder_changed_h mn_autodetect_mailbox_properties_current_folder_changed_h #define self_chooser_response_h mn_autodetect_mailbox_properties_chooser_response_h GType mn_autodetect_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNAutodetectMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_autodetect_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNAutodetectMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_autodetect_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_MAILBOX_PROPERTIES, "MNAutodetectMailboxProperties", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNAutodetectMailboxProperties *)g_object_new(mn_autodetect_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNAutodetectMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNAutodetectMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNAutodetectMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNAutodetectMailboxProperties *)g_object_new_valist (mn_autodetect_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::finalize" MNAutodetectMailboxProperties *self G_GNUC_UNUSED = MN_AUTODETECT_MAILBOX_PROPERTIES (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ #line 100 "src/mn-autodetect-mailbox-properties.gob" static void mn_autodetect_mailbox_properties_class_init (MNAutodetectMailboxPropertiesClass * class G_GNUC_UNUSED) { #line 150 "mn-autodetect-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)class; g_type_class_add_private(class,sizeof(MNAutodetectMailboxPropertiesPrivate)); parent_class = g_type_class_ref (MN_TYPE_MAILBOX_PROPERTIES); #line 219 "src/mn-autodetect-mailbox-properties.gob" mn_mailbox_properties_class->set_mailbox = ___6_mn_autodetect_mailbox_properties_set_mailbox; #line 231 "src/mn-autodetect-mailbox-properties.gob" mn_mailbox_properties_class->get_mailbox = ___7_mn_autodetect_mailbox_properties_get_mailbox; #line 163 "mn-autodetect-mailbox-properties.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; { g_object_class_override_property (g_object_class, PROP_COMPLETE, "complete"); g_object_class_override_property (g_object_class, PROP_DEFAULT_NAME, "default_name"); g_object_class_override_property (g_object_class, PROP_DEFAULT_CHECK_DELAY, "default_check_delay"); } { #line 101 "src/mn-autodetect-mailbox-properties.gob" MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "custom-vfs"; p_class->stock_id = MN_STOCK_UNKNOWN; p_class->combo_label = _("Autodetect"); #line 186 "mn-autodetect-mailbox-properties.c" } } #undef __GOB_FUNCTION__ #line 109 "src/mn-autodetect-mailbox-properties.gob" static void mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * self G_GNUC_UNUSED) { #line 194 "mn-autodetect-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES,MNAutodetectMailboxPropertiesPrivate); { #line 110 "src/mn-autodetect-mailbox-properties.gob" MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); GtkWidget *location_vbox; GtkWidget *outer_hbox; GtkWidget *hbox; GtkWidget *label; GtkWidget *button; /* translators: header capitalization */ location_vbox = mn_mailbox_properties_add_general_section(properties, _("Location")); label = gtk_label_new_with_mnemonic(_("_Location:")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); outer_hbox = gtk_hbox_new(FALSE, 12); hbox = gtk_hbox_new(FALSE, 6); selfp->location_entry = gtk_entry_new(); /* translators: header capitalization */ button = gtk_button_new_with_mnemonic(_("_Browse...")); gtk_label_set_mnemonic_widget(GTK_LABEL(label), selfp->location_entry); properties->entries = g_slist_append(properties->entries, selfp->location_entry); gtk_box_pack_start(GTK_BOX(hbox), selfp->location_entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(outer_hbox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(outer_hbox), hbox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(location_vbox), outer_hbox, FALSE, FALSE, 0); gtk_widget_show_all(outer_hbox); gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->label_size_group, label); g_object_connect(selfp->location_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_check_delay, self, NULL); g_signal_connect(button, "clicked", G_CALLBACK(self_browse_clicked_h), self); #line 242 "mn-autodetect-mailbox-properties.c" } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::get_property" { MNAutodetectMailboxProperties *self G_GNUC_UNUSED; self = MN_AUTODETECT_MAILBOX_PROPERTIES (object); switch (property_id) { case PROP_COMPLETE: { #line 46 "src/mn-autodetect-mailbox-properties.gob" const char *location; gboolean complete = FALSE; location = gtk_entry_get_text(GTK_ENTRY(SELF(self)->_priv->location_entry)); if (*location) { MNMailbox *mailbox; mailbox = mn_mailbox_new_from_uri(location); if (mailbox) { complete = TRUE; g_object_unref(mailbox); } } g_value_set_boolean(VAL, complete); #line 281 "mn-autodetect-mailbox-properties.c" } break; case PROP_DEFAULT_NAME: { #line 68 "src/mn-autodetect-mailbox-properties.gob" char *name = NULL; MNMailbox *mailbox; mailbox = mn_mailbox_new_from_uri(gtk_entry_get_text(GTK_ENTRY(selfp->location_entry))); if (mailbox) { mn_mailbox_seal(mailbox); name = g_strdup(mailbox->runtime_name); g_object_unref(mailbox); } g_value_take_string(VAL, name); #line 301 "mn-autodetect-mailbox-properties.c" } break; case PROP_DEFAULT_CHECK_DELAY: { #line 85 "src/mn-autodetect-mailbox-properties.gob" int check_delay = -1; MNMailbox *mailbox; mailbox = mn_mailbox_new_from_uri(gtk_entry_get_text(GTK_ENTRY(selfp->location_entry))); if (mailbox) { mn_mailbox_seal(mailbox); check_delay = mailbox->runtime_check_delay; g_object_unref(mailbox); } g_value_set_int(VAL, check_delay); #line 321 "mn-autodetect-mailbox-properties.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 154 "src/mn-autodetect-mailbox-properties.gob" static void mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer user_data) { #line 342 "mn-autodetect-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::browse_clicked_h" { #line 156 "src/mn-autodetect-mailbox-properties.gob" Self *self = user_data; GtkWidget *toplevel; const char *location; if (selfp->chooser) { mn_window_present_from_event(GTK_WINDOW(selfp->chooser)); return; } toplevel = gtk_widget_get_toplevel(GTK_WIDGET(button)); /* translators: header capitalization */ selfp->chooser = gtk_file_chooser_dialog_new_with_backend(_("Select a File or Folder"), GTK_WINDOW(toplevel), GTK_FILE_CHOOSER_ACTION_OPEN, "gnome-vfs", GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, 1, NULL); mn_add_weak_pointer(&selfp->chooser); gtk_window_set_destroy_with_parent(GTK_WINDOW(selfp->chooser), TRUE); gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(selfp->chooser), FALSE); mn_file_chooser_dialog_allow_select_folder(GTK_FILE_CHOOSER_DIALOG(selfp->chooser), 1); location = gtk_entry_get_text(GTK_ENTRY(selfp->location_entry)); if (*location) gtk_file_chooser_set_uri(GTK_FILE_CHOOSER(selfp->chooser), location); else if (current_folder_uri) gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(selfp->chooser), current_folder_uri); g_object_connect(selfp->chooser, "signal::current-folder-changed", self_current_folder_changed_h, self, "signal::response", self_chooser_response_h, self, NULL); gtk_widget_show(selfp->chooser); }} #line 385 "mn-autodetect-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 196 "src/mn-autodetect-mailbox-properties.gob" static void mn_autodetect_mailbox_properties_current_folder_changed_h (GtkFileChooser * chooser, gpointer user_data) { #line 392 "mn-autodetect-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::current_folder_changed_h" { #line 198 "src/mn-autodetect-mailbox-properties.gob" g_free(current_folder_uri); current_folder_uri = gtk_file_chooser_get_current_folder_uri(chooser); }} #line 400 "mn-autodetect-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 203 "src/mn-autodetect-mailbox-properties.gob" static void mn_autodetect_mailbox_properties_chooser_response_h (GtkDialog * dialog, int response, gpointer user_data) { #line 407 "mn-autodetect-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::chooser_response_h" { #line 205 "src/mn-autodetect-mailbox-properties.gob" if (response == 1) { Self *self = user_data; char *uri; uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); gtk_entry_set_text(GTK_ENTRY(selfp->location_entry), uri); g_free(uri); } gtk_widget_destroy(GTK_WIDGET(dialog)); }} #line 424 "mn-autodetect-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 219 "src/mn-autodetect-mailbox-properties.gob" static void ___6_mn_autodetect_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox) #line 430 "mn-autodetect-mailbox-properties.c" #define PARENT_HANDLER(___properties,___mailbox) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); } { #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::set_mailbox" { #line 221 "src/mn-autodetect-mailbox-properties.gob" #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED g_return_if_fail(MN_IS_CUSTOM_VFS_MAILBOX(mailbox)); gtk_entry_set_text(GTK_ENTRY(SELF(properties)->_priv->location_entry), MN_CUSTOM_VFS_MAILBOX(mailbox)->uri); #else g_assert_not_reached(); #endif }} #line 447 "mn-autodetect-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 231 "src/mn-autodetect-mailbox-properties.gob" static MNMailbox * ___7_mn_autodetect_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED) #line 454 "mn-autodetect-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ ((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::get_mailbox" { #line 233 "src/mn-autodetect-mailbox-properties.gob" const char *uri; uri = gtk_entry_get_text(GTK_ENTRY(SELF(properties)->_priv->location_entry)); return mn_mailbox_new_from_uri(uri); }} #line 469 "mn-autodetect-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-evolution-message.c0000644000175000001440000003311611015312647023767 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-evolution-message.h" #include "mn-evolution-message-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-evolution-message.gob" #include #include #include "mn-evolution-mailbox.h" #include "mn-message-private.h" #include "mn-evolution-client.h" #include "mn-evolution-client-dbus.h" #include "mn-util.h" #define CLIENT_METHOD(invocation) \ { \ MNEvolutionMailbox *mailbox = MN_EVOLUTION_MAILBOX(message->mailbox); \ MNEvolutionClient *client; \ GError *tmp_err = NULL; \ GError *err = NULL; \ \ client = mn_evolution_client_get(); \ \ if (! client->proxy) \ { \ g_set_error(&err, 0, 0, _("Unable to contact Evolution.")); \ goto end; \ } \ \ if (! invocation) \ { \ g_set_error(&err, 0, 0, _("An Evolution error has occurred: %s."), tmp_err->message); \ g_error_free(tmp_err); \ } \ \ end: \ mn_message_action_done(request, err); \ } #line 61 "mn-evolution-message.c" /* self casting macros */ #define SELF(x) MN_EVOLUTION_MESSAGE(x) #define SELF_CONST(x) MN_EVOLUTION_MESSAGE_CONST(x) #define IS_SELF(x) MN_IS_EVOLUTION_MESSAGE(x) #define TYPE_SELF MN_TYPE_EVOLUTION_MESSAGE #define SELF_CLASS(x) MN_EVOLUTION_MESSAGE_CLASS(x) #define SELF_GET_CLASS(x) MN_EVOLUTION_MESSAGE_GET_CLASS(x) /* self typedefs */ typedef MNEvolutionMessage Self; typedef MNEvolutionMessageClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-evolution-message.gob" static void mn_evolution_message_init (MNEvolutionMessage * o); #line 80 "mn-evolution-message.c" #line 0 "src/mn-evolution-message.gob" static void mn_evolution_message_class_init (MNEvolutionMessageClass * c); #line 83 "mn-evolution-message.c" #line 83 "src/mn-evolution-message.gob" static gboolean ___2_mn_evolution_message_builtin_can_open (MNMessage * message); #line 86 "mn-evolution-message.c" #line 89 "src/mn-evolution-message.gob" static void ___3_mn_evolution_message_builtin_open (MNMessage * message, MNMessageActionRequest * request); #line 89 "mn-evolution-message.c" #line 96 "src/mn-evolution-message.gob" static void mn_evolution_message_set_flags (MNEvolutionMessage * self, guint32 flags, MNMessageActionRequest * request); #line 92 "mn-evolution-message.c" #line 103 "src/mn-evolution-message.gob" static void ___5_mn_evolution_message_builtin_mark_as_read (MNMessage * message, MNMessageActionRequest * request); #line 95 "mn-evolution-message.c" #line 109 "src/mn-evolution-message.gob" static void ___6_mn_evolution_message_builtin_mark_as_spam (MNMessage * message, MNMessageActionRequest * request); #line 98 "mn-evolution-message.c" #line 115 "src/mn-evolution-message.gob" static void ___7_mn_evolution_message_builtin_delete (MNMessage * message, MNMessageActionRequest * request); #line 101 "mn-evolution-message.c" enum { PROP_0, PROP_UID }; /* pointer to the class of our parent */ static MNMessageClass *parent_class = NULL; /* Short form macros */ #define self_new mn_evolution_message_new #define self_set_flags mn_evolution_message_set_flags GType mn_evolution_message_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNEvolutionMessageClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_evolution_message_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNEvolutionMessage), 0 /* n_preallocs */, (GInstanceInitFunc) mn_evolution_message_init, NULL }; type = g_type_register_static (MN_TYPE_MESSAGE, "MNEvolutionMessage", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNEvolutionMessage *)g_object_new(mn_evolution_message_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNEvolutionMessage * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNEvolutionMessage * GET_NEW_VARG (const char *first, ...) { MNEvolutionMessage *ret; va_list ap; va_start (ap, first); ret = (MNEvolutionMessage *)g_object_new_valist (mn_evolution_message_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Evolution:Message::finalize" MNEvolutionMessage *self G_GNUC_UNUSED = MN_EVOLUTION_MESSAGE (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 61 "src/mn-evolution-message.gob" if(self->_priv->uid) { g_free ((gpointer) self->_priv->uid); self->_priv->uid = NULL; } #line 167 "mn-evolution-message.c" } #undef __GOB_FUNCTION__ static void mn_evolution_message_init (MNEvolutionMessage * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Evolution:Message::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_EVOLUTION_MESSAGE,MNEvolutionMessagePrivate); } #undef __GOB_FUNCTION__ static void mn_evolution_message_class_init (MNEvolutionMessageClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Evolution:Message::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; MNMessageClass *mn_message_class = (MNMessageClass *)c; g_type_class_add_private(c,sizeof(MNEvolutionMessagePrivate)); parent_class = g_type_class_ref (MN_TYPE_MESSAGE); #line 83 "src/mn-evolution-message.gob" mn_message_class->builtin_can_open = ___2_mn_evolution_message_builtin_can_open; #line 89 "src/mn-evolution-message.gob" mn_message_class->builtin_open = ___3_mn_evolution_message_builtin_open; #line 103 "src/mn-evolution-message.gob" mn_message_class->builtin_mark_as_read = ___5_mn_evolution_message_builtin_mark_as_read; #line 109 "src/mn-evolution-message.gob" mn_message_class->builtin_mark_as_spam = ___6_mn_evolution_message_builtin_mark_as_spam; #line 115 "src/mn-evolution-message.gob" mn_message_class->builtin_delete = ___7_mn_evolution_message_builtin_delete; #line 199 "mn-evolution-message.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_string ("uid" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_UID, param_spec); } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Message::set_property" { MNEvolutionMessage *self G_GNUC_UNUSED; self = MN_EVOLUTION_MESSAGE (object); switch (property_id) { case PROP_UID: { #line 62 "src/mn-evolution-message.gob" { char *old = self->_priv->uid; self->_priv->uid = g_value_dup_string (VAL); g_free (old); } #line 235 "mn-evolution-message.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Message::get_property" { MNEvolutionMessage *self G_GNUC_UNUSED; self = MN_EVOLUTION_MESSAGE (object); switch (property_id) { case PROP_UID: { #line 62 "src/mn-evolution-message.gob" g_value_set_string (VAL, self->_priv->uid); #line 266 "mn-evolution-message.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 64 "src/mn-evolution-message.gob" MNMessage * mn_evolution_message_new (MNMailbox * mailbox, time_t sent_time, const char * id, const char * from, const char * subject, MNMessageFlags flags, const char * uid) { #line 287 "mn-evolution-message.c" #define __GOB_FUNCTION__ "MN:Evolution:Message::new" #line 64 "src/mn-evolution-message.gob" g_return_val_if_fail (uid != NULL, (MNMessage * )0); #line 291 "mn-evolution-message.c" { #line 72 "src/mn-evolution-message.gob" return MN_MESSAGE(GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX(mailbox), MN_MESSAGE_PROP_SENT_TIME(sent_time), MN_MESSAGE_PROP_ID((char *) id), MN_MESSAGE_PROP_FROM((char *) from), MN_MESSAGE_PROP_SUBJECT((char *) subject), MN_MESSAGE_PROP_FLAGS(flags), MN_EVOLUTION_MESSAGE_PROP_UID((char *) uid), NULL)); }} #line 304 "mn-evolution-message.c" #undef __GOB_FUNCTION__ #line 83 "src/mn-evolution-message.gob" static gboolean ___2_mn_evolution_message_builtin_can_open (MNMessage * message G_GNUC_UNUSED) #line 310 "mn-evolution-message.c" #define PARENT_HANDLER(___message) \ ((MN_MESSAGE_CLASS(parent_class)->builtin_can_open)? \ (* MN_MESSAGE_CLASS(parent_class)->builtin_can_open)(___message): \ ((gboolean )0)) { #define __GOB_FUNCTION__ "MN:Evolution:Message::builtin_can_open" { #line 85 "src/mn-evolution-message.gob" return TRUE; }} #line 322 "mn-evolution-message.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 89 "src/mn-evolution-message.gob" static void ___3_mn_evolution_message_builtin_open (MNMessage * message G_GNUC_UNUSED, MNMessageActionRequest * request) #line 329 "mn-evolution-message.c" #define PARENT_HANDLER(___message,___request) \ { if(MN_MESSAGE_CLASS(parent_class)->builtin_open) \ (* MN_MESSAGE_CLASS(parent_class)->builtin_open)(___message,___request); } { #define __GOB_FUNCTION__ "MN:Evolution:Message::builtin_open" { #line 91 "src/mn-evolution-message.gob" Self *self = SELF(message); CLIENT_METHOD(org_gnome_MailNotification_Evolution_open_message(client->proxy, mailbox->uri, selfp->uid, &tmp_err)); }} #line 341 "mn-evolution-message.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 96 "src/mn-evolution-message.gob" static void mn_evolution_message_set_flags (MNEvolutionMessage * self, guint32 flags, MNMessageActionRequest * request) { #line 349 "mn-evolution-message.c" #define __GOB_FUNCTION__ "MN:Evolution:Message::set_flags" #line 96 "src/mn-evolution-message.gob" g_return_if_fail (self != NULL); #line 96 "src/mn-evolution-message.gob" g_return_if_fail (MN_IS_EVOLUTION_MESSAGE (self)); #line 355 "mn-evolution-message.c" { #line 98 "src/mn-evolution-message.gob" MNMessage *message = MN_MESSAGE(self); CLIENT_METHOD(org_gnome_MailNotification_Evolution_set_message_flags(client->proxy, mailbox->uri, selfp->uid, flags, &tmp_err)); }} #line 362 "mn-evolution-message.c" #undef __GOB_FUNCTION__ #line 103 "src/mn-evolution-message.gob" static void ___5_mn_evolution_message_builtin_mark_as_read (MNMessage * message G_GNUC_UNUSED, MNMessageActionRequest * request) #line 368 "mn-evolution-message.c" #define PARENT_HANDLER(___message,___request) \ { if(MN_MESSAGE_CLASS(parent_class)->builtin_mark_as_read) \ (* MN_MESSAGE_CLASS(parent_class)->builtin_mark_as_read)(___message,___request); } { #define __GOB_FUNCTION__ "MN:Evolution:Message::builtin_mark_as_read" { #line 105 "src/mn-evolution-message.gob" self_set_flags(SELF(message), CAMEL_MESSAGE_SEEN, request); }} #line 379 "mn-evolution-message.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 109 "src/mn-evolution-message.gob" static void ___6_mn_evolution_message_builtin_mark_as_spam (MNMessage * message G_GNUC_UNUSED, MNMessageActionRequest * request) #line 386 "mn-evolution-message.c" #define PARENT_HANDLER(___message,___request) \ { if(MN_MESSAGE_CLASS(parent_class)->builtin_mark_as_spam) \ (* MN_MESSAGE_CLASS(parent_class)->builtin_mark_as_spam)(___message,___request); } { #define __GOB_FUNCTION__ "MN:Evolution:Message::builtin_mark_as_spam" { #line 111 "src/mn-evolution-message.gob" self_set_flags(SELF(message), CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_JUNK | CAMEL_MESSAGE_JUNK_LEARN, request); }} #line 397 "mn-evolution-message.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 115 "src/mn-evolution-message.gob" static void ___7_mn_evolution_message_builtin_delete (MNMessage * message G_GNUC_UNUSED, MNMessageActionRequest * request) #line 404 "mn-evolution-message.c" #define PARENT_HANDLER(___message,___request) \ { if(MN_MESSAGE_CLASS(parent_class)->builtin_delete) \ (* MN_MESSAGE_CLASS(parent_class)->builtin_delete)(___message,___request); } { #define __GOB_FUNCTION__ "MN:Evolution:Message::builtin_delete" { #line 117 "src/mn-evolution-message.gob" self_set_flags(SELF(message), CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_DELETED, request); }} #line 415 "mn-evolution-message.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-mail-icon.gob.stamp0000644000175000001440000000000011015312644023620 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-mailboxes.h0000644000175000001440000003206311015312644022306 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-mailbox.h" #ifndef __MN_MAILBOXES_H__ #define __MN_MAILBOXES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MAILBOXES (mn_mailboxes_get_type()) #define MN_MAILBOXES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mailboxes_get_type(), MNMailboxes) #define MN_MAILBOXES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mailboxes_get_type(), MNMailboxes const) #define MN_MAILBOXES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_mailboxes_get_type(), MNMailboxesClass) #define MN_IS_MAILBOXES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mailboxes_get_type ()) #define MN_MAILBOXES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_mailboxes_get_type(), MNMailboxesClass) /* Private structure type */ typedef struct _MNMailboxesPrivate MNMailboxesPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_MAILBOXES__ #define __TYPEDEF_MN_MAILBOXES__ typedef struct _MNMailboxes MNMailboxes; #endif struct _MNMailboxes { GObject __parent__; /*< public >*/ GList * list; GPtrArray * messages; GHashTable * messages_hash_table; gboolean must_save_after_load; /*< private >*/ MNMailboxesPrivate *_priv; }; /* * Class definition */ typedef struct _MNMailboxesClass MNMailboxesClass; struct _MNMailboxesClass { GObjectClass __parent__; /*signal*/void (* mailbox_added) (MNMailboxes * self, MNMailbox * mailbox); /*signal*/void (* mailbox_removed) (MNMailboxes * self, MNMailbox * mailbox); /*signal*/void (* mailbox_notify) (MNMailboxes * self, MNMailbox * mailbox, GParamSpec * pspec); /*signal*/void (* list_changed) (MNMailboxes * self); /*signal*/void (* messages_changed) (MNMailboxes * self, gboolean has_new); /*signal*/void (* error_changed) (MNMailboxes * self); }; /* * Public methods */ GType mn_mailboxes_get_type (void) G_GNUC_CONST; #line 185 "src/mn-mailboxes.gob" gboolean mn_mailboxes_get_manually_checkable (MNMailboxes * self); #line 71 "mn-mailboxes.h" #line 597 "src/mn-mailboxes.gob" void mn_mailboxes_check (MNMailboxes * self); #line 74 "mn-mailboxes.h" #line 619 "src/mn-mailboxes.gob" void mn_mailboxes_add (MNMailboxes * self, MNMailbox * mailbox); #line 78 "mn-mailboxes.h" #line 629 "src/mn-mailboxes.gob" void mn_mailboxes_queue_add (MNMailboxes * self, MNMailbox * mailbox); #line 82 "mn-mailboxes.h" #line 647 "src/mn-mailboxes.gob" void mn_mailboxes_remove (MNMailboxes * self, MNMailbox * mailbox); #line 86 "mn-mailboxes.h" #line 656 "src/mn-mailboxes.gob" void mn_mailboxes_queue_remove (MNMailboxes * self, MNMailbox * mailbox); #line 90 "mn-mailboxes.h" #line 689 "src/mn-mailboxes.gob" int mn_mailboxes_compare_by_name_func (gconstpointer a, gconstpointer b); #line 94 "mn-mailboxes.h" #line 698 "src/mn-mailboxes.gob" MNMailboxes * mn_mailboxes_new (void); #line 97 "mn-mailboxes.h" /* * Signal connection wrapper macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define mn_mailboxes_connect__mailbox_added(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_added",(GCallback) __extension__ ({void (* ___mailbox_added) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_added; }), (data)) #define mn_mailboxes_connect_after__mailbox_added(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_added",(GCallback) __extension__ ({void (* ___mailbox_added) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_added; }), (data)) #define mn_mailboxes_connect_data__mailbox_added(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_added",(GCallback) __extension__ ({void (* ___mailbox_added) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_added; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailboxes_connect__mailbox_removed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_removed",(GCallback) __extension__ ({void (* ___mailbox_removed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_removed; }), (data)) #define mn_mailboxes_connect_after__mailbox_removed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_removed",(GCallback) __extension__ ({void (* ___mailbox_removed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_removed; }), (data)) #define mn_mailboxes_connect_data__mailbox_removed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_removed",(GCallback) __extension__ ({void (* ___mailbox_removed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_removed; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailboxes_connect__mailbox_notify(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_notify",(GCallback) __extension__ ({void (* ___mailbox_notify) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, GParamSpec * ___fake___pspec, gpointer ___data ) = (func); ___mailbox_notify; }), (data)) #define mn_mailboxes_connect_after__mailbox_notify(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_notify",(GCallback) __extension__ ({void (* ___mailbox_notify) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, GParamSpec * ___fake___pspec, gpointer ___data ) = (func); ___mailbox_notify; }), (data)) #define mn_mailboxes_connect_data__mailbox_notify(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_notify",(GCallback) __extension__ ({void (* ___mailbox_notify) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, GParamSpec * ___fake___pspec, gpointer ___data ) = (func); ___mailbox_notify; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailboxes_connect__list_changed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"list_changed",(GCallback) __extension__ ({void (* ___list_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___list_changed; }), (data)) #define mn_mailboxes_connect_after__list_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"list_changed",(GCallback) __extension__ ({void (* ___list_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___list_changed; }), (data)) #define mn_mailboxes_connect_data__list_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"list_changed",(GCallback) __extension__ ({void (* ___list_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___list_changed; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailboxes_connect__messages_changed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailboxes * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data)) #define mn_mailboxes_connect_after__messages_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailboxes * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data)) #define mn_mailboxes_connect_data__messages_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailboxes * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_mailboxes_connect__error_changed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"error_changed",(GCallback) __extension__ ({void (* ___error_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___error_changed; }), (data)) #define mn_mailboxes_connect_after__error_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"error_changed",(GCallback) __extension__ ({void (* ___error_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___error_changed; }), (data)) #define mn_mailboxes_connect_data__error_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"error_changed",(GCallback) __extension__ ({void (* ___error_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___error_changed; }), (data), (destroy_data), (GConnectFlags)(flags)) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define mn_mailboxes_connect__mailbox_added(object,func,data) g_signal_connect(MN_MAILBOXES(object),"mailbox_added",(GCallback)(func),(data)) #define mn_mailboxes_connect_after__mailbox_added(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"mailbox_added",(GCallback)(func),(data)) #define mn_mailboxes_connect_data__mailbox_added(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"mailbox_added",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailboxes_connect__mailbox_removed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"mailbox_removed",(GCallback)(func),(data)) #define mn_mailboxes_connect_after__mailbox_removed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"mailbox_removed",(GCallback)(func),(data)) #define mn_mailboxes_connect_data__mailbox_removed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"mailbox_removed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailboxes_connect__mailbox_notify(object,func,data) g_signal_connect(MN_MAILBOXES(object),"mailbox_notify",(GCallback)(func),(data)) #define mn_mailboxes_connect_after__mailbox_notify(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"mailbox_notify",(GCallback)(func),(data)) #define mn_mailboxes_connect_data__mailbox_notify(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"mailbox_notify",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailboxes_connect__list_changed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"list_changed",(GCallback)(func),(data)) #define mn_mailboxes_connect_after__list_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"list_changed",(GCallback)(func),(data)) #define mn_mailboxes_connect_data__list_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"list_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailboxes_connect__messages_changed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"messages_changed",(GCallback)(func),(data)) #define mn_mailboxes_connect_after__messages_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"messages_changed",(GCallback)(func),(data)) #define mn_mailboxes_connect_data__messages_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"messages_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_mailboxes_connect__error_changed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"error_changed",(GCallback)(func),(data)) #define mn_mailboxes_connect_after__error_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"error_changed",(GCallback)(func),(data)) #define mn_mailboxes_connect_data__error_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"error_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #endif /* __GNUC__ && !__STRICT_ANSI__ */ /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_MAILBOXES_GET_PROP_MANUALLY_CHECKABLE(arg) "manually_checkable", __extension__ ({gboolean *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_MAILBOXES_GET_PROP_MANUALLY_CHECKABLE(arg) "manually_checkable",(gboolean *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-message.h0000644000175000001440000001516411015312644021752 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-mailbox.h" #ifndef __MN_MESSAGE_H__ #define __MN_MESSAGE_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef enum { MN_MESSAGE_NEW = 1 << 0 /* unseen message */ } MNMessageFlags; typedef struct _MNMessageAction MNMessageAction; typedef void (*MNMessageActionResultCallback) (MNMessageAction *action, GError *err, gpointer data); typedef struct { MNMessageAction *action; MNMessage *message; MNMessageActionResultCallback callback; gpointer data; } MNMessageActionRequest; struct _MNMessageAction { const char *name; const char *icon; const char *label; const char *error_message; gboolean (*can_perform) (MNMessage *message); void (*perform) (MNMessage *message, MNMessageActionRequest *request); void (*done) (MNMessage *message, GError *err); }; #define MN_MESSAGE_ACTION_ERROR (mn_message_action_error_quark()) typedef enum { MN_MESSAGE_ACTION_ERROR_OTHER, MN_MESSAGE_ACTION_ERROR_CANCELLED } MNMessageActionError; /* * Type checking and casting macros */ #define MN_TYPE_MESSAGE (mn_message_get_type()) #define MN_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_get_type(), MNMessage) #define MN_MESSAGE_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_get_type(), MNMessage const) #define MN_MESSAGE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_message_get_type(), MNMessageClass) #define MN_IS_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_message_get_type ()) #define MN_MESSAGE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_message_get_type(), MNMessageClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_MESSAGE__ #define __TYPEDEF_MN_MESSAGE__ typedef struct _MNMessage MNMessage; #endif struct _MNMessage { GObject __parent__; /*< public >*/ MNMailbox * mailbox; time_t sent_time; char * id; char * mid; char * from; char * subject; char * uri; MNMessageFlags flags; }; /* * Class definition */ typedef struct _MNMessageClass MNMessageClass; struct _MNMessageClass { GObjectClass __parent__; gboolean (* builtin_can_open) (MNMessage * self); void (* builtin_open) (MNMessage * self, MNMessageActionRequest * request); gboolean (* builtin_can_mark_as_read) (MNMessage * self); void (* builtin_mark_as_read) (MNMessage * self, MNMessageActionRequest * request); gboolean (* builtin_can_mark_as_spam) (MNMessage * self); void (* builtin_mark_as_spam) (MNMessage * self, MNMessageActionRequest * request); gboolean (* builtin_can_delete) (MNMessage * self); void (* builtin_delete) (MNMessage * self, MNMessageActionRequest * request); }; /* * Public methods */ GType mn_message_get_type (void) G_GNUC_CONST; #line 203 "src/mn-message.gob" MNMessageAction * mn_message_get_action (const char * name); #line 112 "mn-message.h" #line 345 "src/mn-message.gob" gboolean mn_message_can_perform_action (MNMessage * self, MNMessageAction * action); #line 116 "mn-message.h" #line 352 "src/mn-message.gob" void mn_message_perform_action (MNMessage * self, MNMessageAction * action, MNMessageActionResultCallback callback, gpointer data); #line 122 "mn-message.h" #line 434 "src/mn-message.gob" GQuark mn_message_action_error_quark (void); #line 125 "mn-message.h" #line 511 "src/mn-message.gob" void mn_message_consider_as_read (MNMessage * self); #line 128 "mn-message.h" #line 545 "src/mn-message.gob" void mn_message_consider_as_read_list (GList * messages); #line 131 "mn-message.h" #line 569 "src/mn-message.gob" MNMessage * mn_message_new (MNMailbox * mailbox, time_t sent_time, const char * id, const char * mid, const char * from, const char * subject, const char * uri, MNMessageFlags flags); #line 141 "mn-message.h" #line 590 "src/mn-message.gob" xmlNode * mn_message_xml_node_new (MNMessage * self); #line 144 "mn-message.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_MESSAGE_PROP_MAILBOX(arg) "mailbox", __extension__ ({MNMailbox * z = (arg); z;}) #define MN_MESSAGE_GET_PROP_MAILBOX(arg) "mailbox", __extension__ ({MNMailbox * *z = (arg); z;}) #define MN_MESSAGE_PROP_SENT_TIME(arg) "sent_time", __extension__ ({time_t z = (arg); z;}) #define MN_MESSAGE_GET_PROP_SENT_TIME(arg) "sent_time", __extension__ ({time_t *z = (arg); z;}) #define MN_MESSAGE_PROP_ID(arg) "id", __extension__ ({gchar *z = (arg); z;}) #define MN_MESSAGE_GET_PROP_ID(arg) "id", __extension__ ({gchar **z = (arg); z;}) #define MN_MESSAGE_PROP_MID(arg) "mid", __extension__ ({gchar *z = (arg); z;}) #define MN_MESSAGE_GET_PROP_MID(arg) "mid", __extension__ ({gchar **z = (arg); z;}) #define MN_MESSAGE_PROP_FROM(arg) "from", __extension__ ({gchar *z = (arg); z;}) #define MN_MESSAGE_GET_PROP_FROM(arg) "from", __extension__ ({gchar **z = (arg); z;}) #define MN_MESSAGE_PROP_SUBJECT(arg) "subject", __extension__ ({gchar *z = (arg); z;}) #define MN_MESSAGE_GET_PROP_SUBJECT(arg) "subject", __extension__ ({gchar **z = (arg); z;}) #define MN_MESSAGE_PROP_URI(arg) "uri", __extension__ ({gchar *z = (arg); z;}) #define MN_MESSAGE_GET_PROP_URI(arg) "uri", __extension__ ({gchar **z = (arg); z;}) #define MN_MESSAGE_GET_PROP_FILENAME(arg) "filename", __extension__ ({gchar **z = (arg); z;}) #define MN_MESSAGE_PROP_FLAGS(arg) "flags", __extension__ ({guint z = (arg); z;}) #define MN_MESSAGE_GET_PROP_FLAGS(arg) "flags", __extension__ ({guint *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_MESSAGE_PROP_MAILBOX(arg) "mailbox",(MNMailbox * )(arg) #define MN_MESSAGE_GET_PROP_MAILBOX(arg) "mailbox",(MNMailbox * *)(arg) #define MN_MESSAGE_PROP_SENT_TIME(arg) "sent_time",(time_t )(arg) #define MN_MESSAGE_GET_PROP_SENT_TIME(arg) "sent_time",(time_t *)(arg) #define MN_MESSAGE_PROP_ID(arg) "id",(gchar *)(arg) #define MN_MESSAGE_GET_PROP_ID(arg) "id",(gchar **)(arg) #define MN_MESSAGE_PROP_MID(arg) "mid",(gchar *)(arg) #define MN_MESSAGE_GET_PROP_MID(arg) "mid",(gchar **)(arg) #define MN_MESSAGE_PROP_FROM(arg) "from",(gchar *)(arg) #define MN_MESSAGE_GET_PROP_FROM(arg) "from",(gchar **)(arg) #define MN_MESSAGE_PROP_SUBJECT(arg) "subject",(gchar *)(arg) #define MN_MESSAGE_GET_PROP_SUBJECT(arg) "subject",(gchar **)(arg) #define MN_MESSAGE_PROP_URI(arg) "uri",(gchar *)(arg) #define MN_MESSAGE_GET_PROP_URI(arg) "uri",(gchar **)(arg) #define MN_MESSAGE_GET_PROP_FILENAME(arg) "filename",(gchar **)(arg) #define MN_MESSAGE_PROP_FLAGS(arg) "flags",(guint )(arg) #define MN_MESSAGE_GET_PROP_FLAGS(arg) "flags",(guint *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mail-icon-widget.gob.stamp0000644000175000001440000000000011015312644025101 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-shell.c0000644000175000001440000014147511015312645021436 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-shell.h" #include "mn-shell-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 33 "src/mn-shell.gob" #include #include #include #include #include #include "mn-properties-dialog.h" #include "mn-util.h" #include "mn-conf.h" #include "mn-mailboxes.h" #include "mn-about-dialog.h" #include "mn-standard-message-view.h" #include "mn-compact-message-view.h" #include "mn-message.h" #include "mn-stock.h" #include "mn-locked-callback.h" MNShell *mn_shell = NULL; typedef struct { int num; const char *name; } UnixSignalInfo; #define SIGNAL_INFO(name) { name, #name } static const UnixSignalInfo unix_quit_signals[] = { SIGNAL_INFO(SIGHUP), SIGNAL_INFO(SIGINT), SIGNAL_INFO(SIGTERM), SIGNAL_INFO(SIGUSR1), SIGNAL_INFO(SIGUSR2) }; #line 62 "mn-shell.c" static const GEnumValue _mn_shell_tooltip_mail_summary_values[] = { { MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD, (char *)"MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD", (char *)"standard" }, { MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT, (char *)"MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT", (char *)"compact" }, { MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE, (char *)"MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE", (char *)"none" }, { 0, NULL, NULL } }; GType mn_shell_tooltip_mail_summary_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) type = g_enum_register_static ("MNShellTooltipMailSummary", _mn_shell_tooltip_mail_summary_values); return type; } /* self casting macros */ #define SELF(x) MN_SHELL(x) #define SELF_CONST(x) MN_SHELL_CONST(x) #define IS_SELF(x) MN_IS_SHELL(x) #define TYPE_SELF MN_TYPE_SHELL #define SELF_CLASS(x) MN_SHELL_CLASS(x) #define SELF_GET_CLASS(x) MN_SHELL_GET_CLASS(x) /* self typedefs */ typedef MNShell Self; typedef MNShellClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-shell.gob" static void mn_shell_init (MNShell * o); #line 97 "mn-shell.c" #line 0 "src/mn-shell.gob" static void mn_shell_class_init (MNShellClass * c); #line 100 "mn-shell.c" #line 99 "src/mn-shell.gob" static void mn_shell_constructor (MNShell * self); #line 103 "mn-shell.c" #line 150 "src/mn-shell.gob" static void mn_shell_finalize (MNShell * self); #line 106 "mn-shell.c" #line 193 "src/mn-shell.gob" static gboolean mn_shell_install_unix_quit_signal_handlers (MNShell * self); #line 109 "mn-shell.c" #line 254 "src/mn-shell.gob" static void mn_shell_unix_quit_signal_handler (int signum); #line 112 "mn-shell.c" #line 260 "src/mn-shell.gob" static const UnixSignalInfo * mn_shell_lookup_unix_quit_signal (int signum); #line 115 "mn-shell.c" #line 273 "src/mn-shell.gob" static gboolean mn_shell_unix_quit_signal_watch_cb (GIOChannel * source, GIOCondition condition, gpointer data); #line 118 "mn-shell.c" #line 299 "src/mn-shell.gob" static void mn_shell_weak_notify_cb (gpointer data, GObject * former_object); #line 121 "mn-shell.c" #line 305 "src/mn-shell.gob" static void mn_shell_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data); #line 124 "mn-shell.c" #line 328 "src/mn-shell.gob" static void mn_shell_play_new_mail_sound (MNShell * self); #line 127 "mn-shell.c" #line 344 "src/mn-shell.gob" static void mn_shell_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data); #line 130 "mn-shell.c" #line 358 "src/mn-shell.gob" static void mn_shell_init_icon (MNShell * self); #line 133 "mn-shell.c" #line 382 "src/mn-shell.gob" static void mn_shell_notify_icon_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data); #line 136 "mn-shell.c" #line 393 "src/mn-shell.gob" static void mn_shell_notify_tooltip_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data); #line 139 "mn-shell.c" #line 404 "src/mn-shell.gob" static void mn_shell_notify_mail_reader_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data); #line 142 "mn-shell.c" #line 415 "src/mn-shell.gob" static void mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data); #line 145 "mn-shell.c" #line 466 "src/mn-shell.gob" static void mn_shell_icon_activate_mail_reader_h (MNMailIcon * icon, gpointer user_data); #line 148 "mn-shell.c" #line 472 "src/mn-shell.gob" static void mn_shell_icon_activate_open_latest_message_h (MNMailIcon * icon, gpointer user_data); #line 151 "mn-shell.c" #line 479 "src/mn-shell.gob" static void mn_shell_icon_activate_properties_h (MNMailIcon * icon, gpointer user_data); #line 154 "mn-shell.c" #line 486 "src/mn-shell.gob" static void mn_shell_icon_activate_help_h (MNMailIcon * icon, gpointer user_data); #line 157 "mn-shell.c" #line 492 "src/mn-shell.gob" static void mn_shell_icon_activate_about_h (MNMailIcon * icon, gpointer user_data); #line 160 "mn-shell.c" #line 499 "src/mn-shell.gob" static void mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data); #line 163 "mn-shell.c" #line 508 "src/mn-shell.gob" static void mn_shell_update_sensitivity (MNShell * self); #line 166 "mn-shell.c" #line 523 "src/mn-shell.gob" static void mn_shell_update_icon (MNShell * self); #line 169 "mn-shell.c" #line 569 "src/mn-shell.gob" static void mn_shell_update_tooltip (MNShell * self); #line 172 "mn-shell.c" #line 719 "src/mn-shell.gob" static int mn_shell_new_mailboxes_compare_cb (MNMailbox * a, MNMailbox * b); #line 175 "mn-shell.c" #line 738 "src/mn-shell.gob" static GtkWidget * mn_shell_tooltip_section_new (GtkVBox ** vbox, const char * title); #line 178 "mn-shell.c" #line 758 "src/mn-shell.gob" static void mn_shell_tooltip_text_section_new (GtkVBox ** vbox, const char * title, const char * text); #line 181 "mn-shell.c" #line 775 "src/mn-shell.gob" static void mn_shell_open_latest_message (MNShell * self); #line 184 "mn-shell.c" #line 792 "src/mn-shell.gob" static void mn_shell_open_latest_message_done_cb (MNMessageAction * action, GError * err, gpointer data); #line 187 "mn-shell.c" #line 848 "src/mn-shell.gob" static void mn_shell_show_window (MNShell * self, GType type, GtkWidget ** ptr, guint32 timestamp); #line 190 "mn-shell.c" #line 876 "src/mn-shell.gob" static void mn_shell_mailbox_properties_dialog_weak_notify_cb (gpointer data, GObject * former_object); #line 193 "mn-shell.c" enum { PROP_0, PROP_SESSION_BUS, PROP_SESSION_BUS_PROXY }; /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_install_unix_quit_signal_handlers mn_shell_install_unix_quit_signal_handlers #define self_unix_quit_signal_handler mn_shell_unix_quit_signal_handler #define self_lookup_unix_quit_signal mn_shell_lookup_unix_quit_signal #define self_unix_quit_signal_watch_cb mn_shell_unix_quit_signal_watch_cb #define self_weak_notify_cb mn_shell_weak_notify_cb #define self_messages_changed_h mn_shell_messages_changed_h #define self_play_new_mail_sound mn_shell_play_new_mail_sound #define self_mailbox_removed_h mn_shell_mailbox_removed_h #define self_init_icon mn_shell_init_icon #define self_notify_icon_cb mn_shell_notify_icon_cb #define self_notify_tooltip_cb mn_shell_notify_tooltip_cb #define self_notify_mail_reader_cb mn_shell_notify_mail_reader_cb #define self_icon_activate_h mn_shell_icon_activate_h #define self_icon_activate_mail_reader_h mn_shell_icon_activate_mail_reader_h #define self_icon_activate_open_latest_message_h mn_shell_icon_activate_open_latest_message_h #define self_icon_activate_properties_h mn_shell_icon_activate_properties_h #define self_icon_activate_help_h mn_shell_icon_activate_help_h #define self_icon_activate_about_h mn_shell_icon_activate_about_h #define self_icon_destroy_h mn_shell_icon_destroy_h #define self_update_sensitivity mn_shell_update_sensitivity #define self_update_icon mn_shell_update_icon #define self_update_tooltip mn_shell_update_tooltip #define self_new_mailboxes_compare_cb mn_shell_new_mailboxes_compare_cb #define self_tooltip_section_new mn_shell_tooltip_section_new #define self_tooltip_text_section_new mn_shell_tooltip_text_section_new #define self_open_latest_message mn_shell_open_latest_message #define self_open_latest_message_done_cb mn_shell_open_latest_message_done_cb #define self_new mn_shell_new #define self_consider_new_mail_as_read mn_shell_consider_new_mail_as_read #define self_update mn_shell_update #define self_quit mn_shell_quit #define self_show_properties_dialog mn_shell_show_properties_dialog #define self_show_about_dialog mn_shell_show_about_dialog #define self_show_window mn_shell_show_window #define self_add_mailbox_properties_dialog mn_shell_add_mailbox_properties_dialog #define self_mailbox_properties_dialog_weak_notify_cb mn_shell_mailbox_properties_dialog_weak_notify_cb #define self_get_mailbox_properties_dialog mn_shell_get_mailbox_properties_dialog #define self_get_summary mn_shell_get_summary GType mn_shell_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNShellClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_shell_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNShell), 0 /* n_preallocs */, (GInstanceInitFunc) mn_shell_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNShell", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNShell *)g_object_new(mn_shell_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNShell * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNShell * GET_NEW_VARG (const char *first, ...) { MNShell *ret; va_list ap; va_start (ap, first); ret = (MNShell *)g_object_new_valist (mn_shell_get_type (), first, ap); va_end (ap); return ret; } static GObject * ___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { #define __GOB_FUNCTION__ "MN:Shell::constructor" GObject *obj_self; MNShell *self; obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties); self = MN_SHELL (obj_self); #line 99 "src/mn-shell.gob" mn_shell_constructor (self); #line 296 "mn-shell.c" return obj_self; } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Shell::finalize" MNShell *self G_GNUC_UNUSED = MN_SHELL (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 150 "src/mn-shell.gob" mn_shell_finalize (self); #line 310 "mn-shell.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_shell_init (MNShell * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Shell::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_SHELL,MNShellPrivate); } #undef __GOB_FUNCTION__ static void mn_shell_class_init (MNShellClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Shell::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNShellPrivate)); parent_class = g_type_class_ref (G_TYPE_OBJECT); g_object_class->constructor = ___constructor; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_pointer ("session_bus" /* name */, NULL /* nick */, NULL /* blurb */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_SESSION_BUS, param_spec); param_spec = g_param_spec_pointer ("session_bus_proxy" /* name */, NULL /* nick */, NULL /* blurb */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_SESSION_BUS_PROXY, param_spec); } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Shell::set_property" { MNShell *self G_GNUC_UNUSED; self = MN_SHELL (object); switch (property_id) { case PROP_SESSION_BUS: { #line 84 "src/mn-shell.gob" self->session_bus = g_value_get_pointer (VAL); #line 376 "mn-shell.c" } break; case PROP_SESSION_BUS_PROXY: { #line 87 "src/mn-shell.gob" self->session_bus_proxy = g_value_get_pointer (VAL); #line 383 "mn-shell.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Shell::get_property" { MNShell *self G_GNUC_UNUSED; self = MN_SHELL (object); switch (property_id) { case PROP_SESSION_BUS: { #line 84 "src/mn-shell.gob" g_value_set_pointer (VAL, self->session_bus); #line 414 "mn-shell.c" } break; case PROP_SESSION_BUS_PROXY: { #line 87 "src/mn-shell.gob" g_value_set_pointer (VAL, self->session_bus_proxy); #line 421 "mn-shell.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 99 "src/mn-shell.gob" static void mn_shell_constructor (MNShell * self) { #line 442 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::constructor" { #line 100 "src/mn-shell.gob" g_assert(mn_shell == NULL); mn_shell = self; g_object_weak_ref(G_OBJECT(self), self_weak_notify_cb, NULL); selfp->sound_player = mn_sound_player_new(); mn_add_weak_pointer(&selfp->sound_player); /* * self->mailboxes is assigned in MNMailboxes itself, so that * mailboxes can access it even during construction of * MNMailboxes. */ mn_mailboxes_new(); mn_add_weak_pointer(&self->mailboxes); self_init_icon(self); mn_g_object_gconf_notifications_add_gdk_locked(self, MN_CONF_BLINK_ON_ERRORS, self_notify_icon_cb, self, MN_CONF_ALWAYS_DISPLAY_ICON, self_notify_icon_cb, self, MN_CONF_DISPLAY_MESSAGE_COUNT, self_notify_icon_cb, self, MN_CONF_GNOME_MAIL_READER_NAMESPACE, self_notify_mail_reader_cb, self, MN_CONF_TOOLTIP_MAIL_SUMMARY, self_notify_tooltip_cb, self, MN_CONF_TOOLTIP_MAIL_SUMMARY_LIMIT, self_notify_tooltip_cb, self, NULL); g_object_connect(self->mailboxes, "signal::messages-changed", self_messages_changed_h, self, "signal::mailbox-removed", self_mailbox_removed_h, self, "swapped-signal::notify::manually-checkable", self_update_sensitivity, self, "swapped-signal::list-changed", self_update_tooltip, self, "swapped-signal::list-changed", self_update_icon, self, "swapped-signal::error-changed", self_update_tooltip, self, "swapped-signal::error-changed", self_update_icon, self, NULL); self->popups = mn_popups_new(); mn_add_weak_pointer(&self->popups); /* * Exit gracefully (unreferencing our components) when receiving a * UNIX signal. */ if (! self_install_unix_quit_signal_handlers(self)) /* unlikely and unimportant, not worth a translation */ g_warning("unable to install UNIX quit signal handlers"); }} #line 495 "mn-shell.c" #undef __GOB_FUNCTION__ #line 150 "src/mn-shell.gob" static void mn_shell_finalize (MNShell * self) { #line 502 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::finalize" { #line 151 "src/mn-shell.gob" /* * We explicitly unreference or destroy each component, even * though MN will exit after the shell is finalized. This is done * for the sake of respecting encapsulation: we should not know * whether a particular component has something to do on exit or * not (for instance, MNSoundPlayer must kill the play process). * * Of course, the order in which we get rid of the components * matters: for instance, when destroyed, MNPropertiesDialog might * remove the test mailbox and thus requires a valid MNMailboxes * object. We destroy the components in the inverse order of their * creation. * * Also note that we do not need to nullify the pointers after * destruction since we use mn_add_weak_pointer() at creation * time. */ g_slist_foreach(selfp->mailbox_properties_dialogs, (GFunc) gtk_widget_destroy, NULL); /* the list is freed in mailbox_properties_dialog_weak_notify_cb() */ if (selfp->properties_dialog) gtk_widget_destroy(selfp->properties_dialog); if (selfp->about_dialog) gtk_widget_destroy(selfp->about_dialog); mn_g_object_null_unref(self->popups); if (self->icon) { /* do not recreate the icon after we destroy it */ g_signal_handlers_disconnect_by_func(self->icon, self_icon_destroy_h, self); gtk_widget_destroy(GTK_WIDGET(self->icon)); } mn_g_object_null_unref(self->mailboxes); mn_g_object_null_unref(selfp->sound_player); }} #line 547 "mn-shell.c" #undef __GOB_FUNCTION__ #line 193 "src/mn-shell.gob" static gboolean mn_shell_install_unix_quit_signal_handlers (MNShell * self) { #line 554 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::install_unix_quit_signal_handlers" #line 193 "src/mn-shell.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 193 "src/mn-shell.gob" g_return_val_if_fail (MN_IS_SHELL (self), (gboolean )0); #line 560 "mn-shell.c" { #line 195 "src/mn-shell.gob" int sigpipe[2]; int flags; GIOChannel *read_channel = NULL; int i; if (pipe(sigpipe) < 0) return FALSE; /* * Enable non-blocking mode for the write end, so that if another * signal occurs while the main thread is busy processing the * first signal, the signal handler will not block in write(). */ flags = fcntl(sigpipe[1], F_GETFL); if (flags < 0) goto error; if (fcntl(sigpipe[1], F_SETFL, flags | O_NONBLOCK) < 0) goto error; selfp->unix_signal_pipe_write_end = sigpipe[1]; read_channel = g_io_channel_unix_new(sigpipe[0]); if (g_io_channel_set_encoding(read_channel, NULL, NULL) != G_IO_STATUS_NORMAL) goto error; for (i = 0; i < G_N_ELEMENTS(unix_quit_signals); i++) { struct sigaction sa; sa.sa_handler = self_unix_quit_signal_handler; sa.sa_flags = 0; sigemptyset(&sa.sa_mask); if (sigaction(unix_quit_signals[i].num, &sa, NULL) < 0) goto error; } g_io_add_watch(read_channel, G_IO_IN | G_IO_PRI, self_unix_quit_signal_watch_cb, self); return TRUE; /* ok */ error: if (read_channel) { g_io_channel_shutdown(read_channel, FALSE, NULL); g_io_channel_unref(read_channel); } else close(sigpipe[0]); close(sigpipe[1]); return FALSE; }} #line 621 "mn-shell.c" #undef __GOB_FUNCTION__ #line 254 "src/mn-shell.gob" static void mn_shell_unix_quit_signal_handler (int signum) { #line 628 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::unix_quit_signal_handler" { #line 256 "src/mn-shell.gob" write(mn_shell->_priv->unix_signal_pipe_write_end, &signum, sizeof(signum)); }} #line 635 "mn-shell.c" #undef __GOB_FUNCTION__ #line 260 "src/mn-shell.gob" static const UnixSignalInfo * mn_shell_lookup_unix_quit_signal (int signum) { #line 642 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::lookup_unix_quit_signal" { #line 262 "src/mn-shell.gob" int i; for (i = 0; i < G_N_ELEMENTS(unix_quit_signals); i++) if (unix_quit_signals[i].num == signum) return &unix_quit_signals[i]; g_assert_not_reached(); return NULL; }} #line 656 "mn-shell.c" #undef __GOB_FUNCTION__ #line 273 "src/mn-shell.gob" static gboolean mn_shell_unix_quit_signal_watch_cb (GIOChannel * source, GIOCondition condition, gpointer data) { #line 663 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::unix_quit_signal_watch_cb" { #line 277 "src/mn-shell.gob" Self *self = data; GIOStatus status; int signum; gsize bytes_read; const UnixSignalInfo *info; status = g_io_channel_read_chars(source, (char *) &signum, sizeof(signum), &bytes_read, NULL); g_assert(status == G_IO_STATUS_NORMAL); g_assert(bytes_read == sizeof(signum)); info = self_lookup_unix_quit_signal(signum); g_message(_("received %s signal, exiting"), info->name); GDK_THREADS_ENTER(); self_quit(self); GDK_THREADS_LEAVE(); return FALSE; /* remove source */ }} #line 688 "mn-shell.c" #undef __GOB_FUNCTION__ #line 299 "src/mn-shell.gob" static void mn_shell_weak_notify_cb (gpointer data, GObject * former_object) { #line 695 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::weak_notify_cb" { #line 301 "src/mn-shell.gob" gtk_main_quit(); }} #line 702 "mn-shell.c" #undef __GOB_FUNCTION__ #line 305 "src/mn-shell.gob" static void mn_shell_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data) { #line 709 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::messages_changed_h" { #line 309 "src/mn-shell.gob" Self *self = user_data; if (mn_conf_has_command(MN_CONF_COMMANDS_MAIL_CHANGED_NAMESPACE)) mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_CHANGED_COMMAND); if (has_new) { self_play_new_mail_sound(self); if (mn_conf_has_command(MN_CONF_COMMANDS_NEW_MAIL_NAMESPACE)) mn_conf_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND); } self_update_sensitivity(self); self_update_tooltip(self); self_update_icon(self); }} #line 731 "mn-shell.c" #undef __GOB_FUNCTION__ #line 328 "src/mn-shell.gob" static void mn_shell_play_new_mail_sound (MNShell * self) { #line 738 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::play_new_mail_sound" #line 328 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 328 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 744 "mn-shell.c" { #line 330 "src/mn-shell.gob" char *file; if (! mn_conf_get_bool(MN_CONF_SOUNDS_NEW_MAIL_ENABLED)) return; file = mn_conf_get_string(MN_CONF_SOUNDS_NEW_MAIL_FILE); if (file && *file) mn_sound_player_play(selfp->sound_player, file, NULL); g_free(file); }} #line 760 "mn-shell.c" #undef __GOB_FUNCTION__ #line 344 "src/mn-shell.gob" static void mn_shell_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data) { #line 767 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::mailbox_removed_h" { #line 348 "src/mn-shell.gob" Self *self = user_data; MNMailboxPropertiesDialog *dialog; /* destroy the associated properties dialog, if any */ dialog = self_get_mailbox_properties_dialog(self, mailbox); if (dialog) gtk_widget_destroy(GTK_WIDGET(dialog)); }} #line 780 "mn-shell.c" #undef __GOB_FUNCTION__ #line 358 "src/mn-shell.gob" static void mn_shell_init_icon (MNShell * self) { #line 787 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::init_icon" #line 358 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 358 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 793 "mn-shell.c" { #line 360 "src/mn-shell.gob" self->icon = MN_MAIL_ICON(mn_mail_icon_new()); mn_add_weak_pointer(&self->icon); g_object_connect(self->icon, "signal::activate", self_icon_activate_h, self, "signal::activate-mail-reader", self_icon_activate_mail_reader_h, self, "signal::activate-open-latest-message", self_icon_activate_open_latest_message_h, self, "swapped-signal::activate-consider-new-mail-as-read", self_consider_new_mail_as_read, self, "swapped-signal::activate-update", self_update, self, "signal::activate-properties", self_icon_activate_properties_h, self, "signal::activate-help", self_icon_activate_help_h, self, "signal::activate-about", self_icon_activate_about_h, self, "swapped-signal::activate-remove", self_quit, self, "signal::destroy", self_icon_destroy_h, self, NULL); self_update_sensitivity(self); self_update_tooltip(self); self_update_icon(self); }} #line 817 "mn-shell.c" #undef __GOB_FUNCTION__ #line 382 "src/mn-shell.gob" static void mn_shell_notify_icon_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) { #line 824 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::notify_icon_cb" { #line 387 "src/mn-shell.gob" Self *self = user_data; self_update_icon(self); }} #line 833 "mn-shell.c" #undef __GOB_FUNCTION__ #line 393 "src/mn-shell.gob" static void mn_shell_notify_tooltip_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) { #line 840 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::notify_tooltip_cb" { #line 398 "src/mn-shell.gob" Self *self = user_data; self_update_tooltip(self); }} #line 849 "mn-shell.c" #undef __GOB_FUNCTION__ #line 404 "src/mn-shell.gob" static void mn_shell_notify_mail_reader_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) { #line 856 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::notify_mail_reader_cb" { #line 409 "src/mn-shell.gob" Self *self = user_data; self_update_sensitivity(self); }} #line 865 "mn-shell.c" #undef __GOB_FUNCTION__ #line 415 "src/mn-shell.gob" static void mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data) { #line 872 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::icon_activate_h" { #line 417 "src/mn-shell.gob" MNShell *self = user_data; MNAction action; action = mn_conf_get_enum_value(MN_TYPE_ACTION, MN_CONF_CLICK_ACTION); switch (action) { case MN_ACTION_LAUNCH_MAIL_READER: if (mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE)) mn_conf_execute_mail_reader(); else mn_show_error_dialog_with_markup(NULL, _("No mail reader is configured"), _("You can configure a mail reader by choosing System → Preferences → Preferred Applications.")); break; case MN_ACTION_OPEN_LATEST_MESSAGE: if (self->mailboxes->messages->len != 0) { MNMessage *message = g_ptr_array_index(self->mailboxes->messages, 0); if (mn_message_can_perform_action(message, mn_message_get_action("open"))) self_open_latest_message(self); else mn_show_error_dialog(NULL, _("Unable to open the latest message"), _("Messages of mailbox \"%s\" cannot be opened."), message->mailbox->runtime_name); } else mn_show_error_dialog(NULL, _("Unable to open the latest message"), _("You have no new mail.")); break; case MN_ACTION_CONSIDER_NEW_MAIL_AS_READ: self_consider_new_mail_as_read(self); break; case MN_ACTION_UPDATE_MAIL_STATUS: mn_mailboxes_check(self->mailboxes); break; default: g_assert_not_reached(); } }} #line 924 "mn-shell.c" #undef __GOB_FUNCTION__ #line 466 "src/mn-shell.gob" static void mn_shell_icon_activate_mail_reader_h (MNMailIcon * icon, gpointer user_data) { #line 931 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::icon_activate_mail_reader_h" { #line 468 "src/mn-shell.gob" mn_conf_execute_mail_reader(); }} #line 938 "mn-shell.c" #undef __GOB_FUNCTION__ #line 472 "src/mn-shell.gob" static void mn_shell_icon_activate_open_latest_message_h (MNMailIcon * icon, gpointer user_data) { #line 945 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::icon_activate_open_latest_message_h" { #line 474 "src/mn-shell.gob" Self *self = user_data; self_open_latest_message(self); }} #line 953 "mn-shell.c" #undef __GOB_FUNCTION__ #line 479 "src/mn-shell.gob" static void mn_shell_icon_activate_properties_h (MNMailIcon * icon, gpointer user_data) { #line 960 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::icon_activate_properties_h" { #line 481 "src/mn-shell.gob" Self *self = user_data; self_show_properties_dialog(self, gtk_get_current_event_time()); }} #line 968 "mn-shell.c" #undef __GOB_FUNCTION__ #line 486 "src/mn-shell.gob" static void mn_shell_icon_activate_help_h (MNMailIcon * icon, gpointer user_data) { #line 975 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::icon_activate_help_h" { #line 488 "src/mn-shell.gob" mn_show_help(NULL, NULL); }} #line 982 "mn-shell.c" #undef __GOB_FUNCTION__ #line 492 "src/mn-shell.gob" static void mn_shell_icon_activate_about_h (MNMailIcon * icon, gpointer user_data) { #line 989 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::icon_activate_about_h" { #line 494 "src/mn-shell.gob" Self *self = user_data; self_show_about_dialog(self, gtk_get_current_event_time()); }} #line 997 "mn-shell.c" #undef __GOB_FUNCTION__ #line 499 "src/mn-shell.gob" static void mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data) { #line 1004 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::icon_destroy_h" { #line 501 "src/mn-shell.gob" Self *self = user_data; /* The Notification Area applet has been terminated. Recreate the icon. */ self_init_icon(self); }} #line 1014 "mn-shell.c" #undef __GOB_FUNCTION__ #line 508 "src/mn-shell.gob" static void mn_shell_update_sensitivity (MNShell * self) { #line 1021 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::update_sensitivity" #line 508 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 508 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 1027 "mn-shell.c" { #line 510 "src/mn-shell.gob" gtk_widget_set_sensitive(self->icon->mail_reader_item, mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE)); gtk_widget_set_sensitive(self->icon->open_latest_message_item, self->mailboxes->messages->len != 0 && mn_message_can_perform_action(g_ptr_array_index(self->mailboxes->messages, 0), mn_message_get_action("open"))); gtk_widget_set_sensitive(self->icon->consider_new_mail_as_read_item, self->mailboxes->messages->len != 0); gtk_widget_set_sensitive(self->icon->update_item, mn_mailboxes_get_manually_checkable(self->mailboxes)); }} #line 1042 "mn-shell.c" #undef __GOB_FUNCTION__ #line 523 "src/mn-shell.gob" static void mn_shell_update_icon (MNShell * self) { #line 1049 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::update_icon" #line 523 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 523 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 1055 "mn-shell.c" { #line 525 "src/mn-shell.gob" GList *l; gboolean has_new = FALSE; gboolean blink = FALSE; gboolean always = mn_conf_get_bool(MN_CONF_ALWAYS_DISPLAY_ICON); MN_LIST_FOREACH(l, self->mailboxes->list) { MNMailbox *mailbox = l->data; if (g_hash_table_size(mailbox->messages) != 0) has_new = TRUE; if (mailbox->error) blink = TRUE; } if (selfp->has_new && ! has_new && mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READ_NAMESPACE)) mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND); selfp->has_new = has_new; if (blink && ! mn_conf_get_bool(MN_CONF_BLINK_ON_ERRORS)) blink = FALSE; if (has_new || blink || always) { int count; if (mn_conf_get_bool(MN_CONF_DISPLAY_MESSAGE_COUNT)) count = self->mailboxes->messages->len; else count = 0; mn_mail_icon_set_from_stock(self->icon, has_new ? MN_STOCK_MAIL : MN_STOCK_NO_MAIL); mn_mail_icon_set_blinking(self->icon, blink); mn_mail_icon_set_count(self->icon, count); gtk_widget_show(GTK_WIDGET(self->icon)); } else { gtk_widget_hide(GTK_WIDGET(self->icon)); mn_mail_icon_set_blinking(self->icon, FALSE); } }} #line 1101 "mn-shell.c" #undef __GOB_FUNCTION__ #line 569 "src/mn-shell.gob" static void mn_shell_update_tooltip (MNShell * self) { #line 1108 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::update_tooltip" #line 569 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 569 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 1114 "mn-shell.c" { #line 571 "src/mn-shell.gob" GtkVBox *vbox = NULL; if (self->mailboxes->list) { GList *la; GSList *lb; GSList *new_mailboxes = NULL; GSList *error_mailboxes = NULL; MN_LIST_FOREACH(la, self->mailboxes->list) { MNMailbox *mailbox = la->data; if (g_hash_table_size(mailbox->messages) != 0) new_mailboxes = g_slist_insert_sorted(new_mailboxes, mailbox, (GCompareFunc) self_new_mailboxes_compare_cb); if (mailbox->error) error_mailboxes = g_slist_insert_sorted(error_mailboxes, mailbox, mn_mailboxes_compare_by_name_func); } if (new_mailboxes) { GString *string = g_string_new(NULL); MN_LIST_FOREACH(lb, new_mailboxes) { MNMailbox *mailbox = lb->data; g_assert(g_hash_table_size(mailbox->messages) != 0); if (*string->str) g_string_append_c(string, '\n'); g_string_append_printf(string, _("%s (%i)"), mailbox->runtime_name, (int) g_hash_table_size(mailbox->messages)); } g_slist_free(new_mailboxes); /* translators: header capitalization */ self_tooltip_text_section_new(&vbox, _("Mailboxes Having New Mail"), string->str); g_string_free(string, TRUE); } if (error_mailboxes) { GString *string = g_string_new(NULL); MN_LIST_FOREACH(lb, error_mailboxes) { MNMailbox *mailbox = lb->data; if (*string->str) g_string_append_c(string, '\n'); g_string_append_printf(string, _("%s: %s"), mailbox->runtime_name, mailbox->error); } g_slist_free(error_mailboxes); /* translators: header capitalization */ self_tooltip_text_section_new(&vbox, _("Errors"), string->str); g_string_free(string, TRUE); } } if (self->mailboxes->messages->len != 0) { MNShellTooltipMailSummary mail_summary; mail_summary = mn_conf_get_enum_value(MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY, MN_CONF_TOOLTIP_MAIL_SUMMARY); if (mail_summary != MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE) { GtkWidget *alignment; GtkWidget *message_view; int limit; GSList *messages = NULL; int num_messages; int i; /* translators: header capitalization */ alignment = self_tooltip_section_new(&vbox, _("Mail Summary")); switch (mail_summary) { case MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD: message_view = mn_standard_message_view_new(); break; case MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT: message_view = mn_compact_message_view_new(); break; default: g_assert_not_reached(); break; } gtk_widget_set_name(message_view, "mn-message-view"); limit = mn_conf_get_int(MN_CONF_TOOLTIP_MAIL_SUMMARY_LIMIT); num_messages = MIN(self->mailboxes->messages->len, limit); for (i = num_messages - 1; i >= 0; i--) messages = g_slist_prepend(messages, g_ptr_array_index(self->mailboxes->messages, i)); mn_message_view_set_messages(MN_MESSAGE_VIEW(message_view), messages); g_slist_free(messages); if (self->mailboxes->messages->len <= limit) gtk_container_add(GTK_CONTAINER(alignment), message_view); else { int remaining; char *markup; GtkWidget *label; GtkWidget *summary_vbox; remaining = self->mailboxes->messages->len - limit; label = gtk_label_new(NULL); markup = g_strdup_printf(ngettext("%i message is not displayed", "%i messages are not displayed", remaining), remaining); gtk_label_set_markup(GTK_LABEL(label), markup); g_free(markup); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); summary_vbox = gtk_vbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(summary_vbox), message_view, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(summary_vbox), label, FALSE, FALSE, 0); gtk_container_add(GTK_CONTAINER(alignment), summary_vbox); } } } if (vbox) { gtk_widget_show_all(GTK_WIDGET(vbox)); mn_mail_icon_set_tip_widget(self->icon, GTK_WIDGET(vbox)); } else mn_mail_icon_set_tip(self->icon, _("You have no new mail.")); }} #line 1264 "mn-shell.c" #undef __GOB_FUNCTION__ #line 719 "src/mn-shell.gob" static int mn_shell_new_mailboxes_compare_cb (MNMailbox * a, MNMailbox * b) { #line 1271 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::new_mailboxes_compare_cb" { #line 721 "src/mn-shell.gob" int cmp; /* sort by timestamp (descending order) */ cmp = b->timestamp - a->timestamp; if (cmp != 0) return cmp; /* sort by number of messages (descending order) */ cmp = (int) g_hash_table_size(b->messages) - g_hash_table_size(a->messages); if (cmp != 0) return cmp; /* sort by name (ascending order) */ return mn_mailboxes_compare_by_name_func(a, b); }} #line 1291 "mn-shell.c" #undef __GOB_FUNCTION__ #line 738 "src/mn-shell.gob" static GtkWidget * mn_shell_tooltip_section_new (GtkVBox ** vbox, const char * title) { #line 1298 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::tooltip_section_new" #line 738 "src/mn-shell.gob" g_return_val_if_fail (vbox != NULL, (GtkWidget * )0); #line 738 "src/mn-shell.gob" g_return_val_if_fail (title != NULL, (GtkWidget * )0); #line 1304 "mn-shell.c" { #line 741 "src/mn-shell.gob" GtkWidget *section; GtkWidget *label; GtkWidget *alignment; if (! *vbox) *vbox = GTK_VBOX(gtk_vbox_new(FALSE, 18)); section = mn_hig_section_new(title, &label, &alignment); gtk_widget_set_name(label, "mn-tooltip-section-title"); gtk_box_pack_start(GTK_BOX(*vbox), section, TRUE, TRUE, 0); return alignment; }} #line 1323 "mn-shell.c" #undef __GOB_FUNCTION__ #line 758 "src/mn-shell.gob" static void mn_shell_tooltip_text_section_new (GtkVBox ** vbox, const char * title, const char * text) { #line 1330 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::tooltip_text_section_new" #line 758 "src/mn-shell.gob" g_return_if_fail (vbox != NULL); #line 758 "src/mn-shell.gob" g_return_if_fail (title != NULL); #line 758 "src/mn-shell.gob" g_return_if_fail (text != NULL); #line 1338 "mn-shell.c" { #line 762 "src/mn-shell.gob" GtkWidget *alignment; GtkWidget *label; alignment = self_tooltip_section_new(vbox, title); label = gtk_label_new(text); gtk_widget_set_name(label, "mn-tooltip-section-body"); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_container_add(GTK_CONTAINER(alignment), label); }} #line 1353 "mn-shell.c" #undef __GOB_FUNCTION__ #line 775 "src/mn-shell.gob" static void mn_shell_open_latest_message (MNShell * self) { #line 1360 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::open_latest_message" #line 775 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 775 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 1366 "mn-shell.c" { #line 777 "src/mn-shell.gob" MNMessage *message; MNMessageAction *action; g_return_if_fail(self->mailboxes->messages->len != 0); message = g_ptr_array_index(self->mailboxes->messages, 0); action = mn_message_get_action("open"); g_return_if_fail(action != NULL); g_return_if_fail(mn_message_can_perform_action(message, action)); mn_message_perform_action(message, action, self_open_latest_message_done_cb, NULL); }} #line 1383 "mn-shell.c" #undef __GOB_FUNCTION__ #line 792 "src/mn-shell.gob" static void mn_shell_open_latest_message_done_cb (MNMessageAction * action, GError * err, gpointer data) { #line 1390 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::open_latest_message_done_cb" { #line 794 "src/mn-shell.gob" if (err && ! g_error_matches(err, MN_MESSAGE_ACTION_ERROR, MN_MESSAGE_ACTION_ERROR_CANCELLED)) mn_show_error_dialog(NULL, _("Unable to open the latest message"), "%s", err->message); }} #line 1398 "mn-shell.c" #undef __GOB_FUNCTION__ #line 799 "src/mn-shell.gob" MNShell * mn_shell_new (DBusGConnection * session_bus, DBusGProxy * session_bus_proxy) { #line 1405 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::new" #line 799 "src/mn-shell.gob" g_return_val_if_fail (session_bus != NULL, (MNShell * )0); #line 799 "src/mn-shell.gob" g_return_val_if_fail (session_bus_proxy != NULL, (MNShell * )0); #line 1411 "mn-shell.c" { #line 802 "src/mn-shell.gob" return GET_NEW_VARG(MN_SHELL_PROP_SESSION_BUS(session_bus), MN_SHELL_PROP_SESSION_BUS_PROXY(session_bus_proxy), NULL); }} #line 1419 "mn-shell.c" #undef __GOB_FUNCTION__ #line 808 "src/mn-shell.gob" void mn_shell_consider_new_mail_as_read (MNShell * self) { #line 1426 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::consider_new_mail_as_read" #line 808 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 808 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 1432 "mn-shell.c" { #line 810 "src/mn-shell.gob" GList *l; MN_LIST_FOREACH(l, self->mailboxes->list) { MNMailbox *mailbox = l->data; GList *list; list = g_hash_table_get_values(mailbox->messages); mn_message_consider_as_read_list(list); g_list_free(list); } }} #line 1448 "mn-shell.c" #undef __GOB_FUNCTION__ #line 824 "src/mn-shell.gob" void mn_shell_update (MNShell * self) { #line 1455 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::update" #line 824 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 824 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 1461 "mn-shell.c" { #line 826 "src/mn-shell.gob" mn_mailboxes_check(self->mailboxes); }} #line 1467 "mn-shell.c" #undef __GOB_FUNCTION__ #line 830 "src/mn-shell.gob" void mn_shell_quit (MNShell * self) { #line 1474 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::quit" #line 830 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 830 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 1480 "mn-shell.c" { #line 832 "src/mn-shell.gob" g_object_unref(self); }} #line 1486 "mn-shell.c" #undef __GOB_FUNCTION__ #line 836 "src/mn-shell.gob" void mn_shell_show_properties_dialog (MNShell * self, guint32 timestamp) { #line 1493 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::show_properties_dialog" #line 836 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 836 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 1499 "mn-shell.c" { #line 838 "src/mn-shell.gob" self_show_window(self, MN_TYPE_PROPERTIES_DIALOG, &selfp->properties_dialog, timestamp); }} #line 1505 "mn-shell.c" #undef __GOB_FUNCTION__ #line 842 "src/mn-shell.gob" void mn_shell_show_about_dialog (MNShell * self, guint32 timestamp) { #line 1512 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::show_about_dialog" #line 842 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 842 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 1518 "mn-shell.c" { #line 844 "src/mn-shell.gob" self_show_window(self, MN_TYPE_ABOUT_DIALOG, &selfp->about_dialog, timestamp); }} #line 1524 "mn-shell.c" #undef __GOB_FUNCTION__ #line 848 "src/mn-shell.gob" static void mn_shell_show_window (MNShell * self, GType type, GtkWidget ** ptr, guint32 timestamp) { #line 1531 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::show_window" #line 848 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 848 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 848 "src/mn-shell.gob" g_return_if_fail (type != 0); #line 848 "src/mn-shell.gob" g_return_if_fail (ptr != NULL); #line 1541 "mn-shell.c" { #line 853 "src/mn-shell.gob" if (*ptr) { if (timestamp) gtk_window_present_with_time(GTK_WINDOW(*ptr), timestamp); else gtk_window_present(GTK_WINDOW(*ptr)); return; } *ptr = g_object_new(type, NULL); mn_add_weak_pointer(ptr); gtk_widget_show(*ptr); }} #line 1559 "mn-shell.c" #undef __GOB_FUNCTION__ #line 869 "src/mn-shell.gob" void mn_shell_add_mailbox_properties_dialog (MNShell * self, MNMailboxPropertiesDialog * dialog) { #line 1566 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::add_mailbox_properties_dialog" #line 869 "src/mn-shell.gob" g_return_if_fail (self != NULL); #line 869 "src/mn-shell.gob" g_return_if_fail (MN_IS_SHELL (self)); #line 869 "src/mn-shell.gob" g_return_if_fail (dialog != NULL); #line 869 "src/mn-shell.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (dialog)); #line 1576 "mn-shell.c" { #line 871 "src/mn-shell.gob" selfp->mailbox_properties_dialogs = g_slist_append(selfp->mailbox_properties_dialogs, dialog); g_object_weak_ref(G_OBJECT(dialog), self_mailbox_properties_dialog_weak_notify_cb, self); }} #line 1583 "mn-shell.c" #undef __GOB_FUNCTION__ #line 876 "src/mn-shell.gob" static void mn_shell_mailbox_properties_dialog_weak_notify_cb (gpointer data, GObject * former_object) { #line 1590 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::mailbox_properties_dialog_weak_notify_cb" { #line 879 "src/mn-shell.gob" Self *self = data; selfp->mailbox_properties_dialogs = g_slist_remove(selfp->mailbox_properties_dialogs, former_object); }} #line 1599 "mn-shell.c" #undef __GOB_FUNCTION__ #line 885 "src/mn-shell.gob" MNMailboxPropertiesDialog * mn_shell_get_mailbox_properties_dialog (MNShell * self, MNMailbox * mailbox) { #line 1606 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::get_mailbox_properties_dialog" #line 885 "src/mn-shell.gob" g_return_val_if_fail (self != NULL, (MNMailboxPropertiesDialog * )0); #line 885 "src/mn-shell.gob" g_return_val_if_fail (MN_IS_SHELL (self), (MNMailboxPropertiesDialog * )0); #line 885 "src/mn-shell.gob" g_return_val_if_fail (mailbox != NULL, (MNMailboxPropertiesDialog * )0); #line 885 "src/mn-shell.gob" g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (MNMailboxPropertiesDialog * )0); #line 1616 "mn-shell.c" { #line 887 "src/mn-shell.gob" GSList *l; MN_LIST_FOREACH(l, selfp->mailbox_properties_dialogs) { MNMailboxPropertiesDialog *dialog = l->data; MNMailbox *this_mailbox; gboolean found; this_mailbox = mn_mailbox_properties_dialog_get_mailbox(dialog); found = this_mailbox == mailbox; g_object_unref(this_mailbox); if (found) return dialog; } return NULL; }} #line 1638 "mn-shell.c" #undef __GOB_FUNCTION__ #line 907 "src/mn-shell.gob" char * mn_shell_get_summary (MNShell * self) { #line 1645 "mn-shell.c" #define __GOB_FUNCTION__ "MN:Shell::get_summary" #line 907 "src/mn-shell.gob" g_return_val_if_fail (self != NULL, (char * )0); #line 907 "src/mn-shell.gob" g_return_val_if_fail (MN_IS_SHELL (self), (char * )0); #line 1651 "mn-shell.c" { #line 909 "src/mn-shell.gob" int indent; xmlDoc *doc; xmlNode *root; int i; xmlChar *summary; indent = xmlIndentTreeOutput; xmlIndentTreeOutput = 1; doc = xmlNewDoc("1.0"); root = xmlNewNode(NULL, "messages"); xmlDocSetRootElement(doc, root); MN_ARRAY_FOREACH(i, self->mailboxes->messages) { MNMessage *message = g_ptr_array_index(self->mailboxes->messages, i); xmlNode *node; node = mn_message_xml_node_new(message); xmlAddChild(root, node); /* owns node */ } xmlDocDumpFormatMemory(doc, &summary, NULL, 1); xmlFreeDoc(doc); xmlIndentTreeOutput = indent; return summary; }} #line 1684 "mn-shell.c" #undef __GOB_FUNCTION__ static const GEnumValue _mn_action_values[] = { { MN_ACTION_LAUNCH_MAIL_READER, (char *)"MN_ACTION_LAUNCH_MAIL_READER", (char *)"launch-mail-reader" }, { MN_ACTION_OPEN_LATEST_MESSAGE, (char *)"MN_ACTION_OPEN_LATEST_MESSAGE", (char *)"open-latest-message" }, { MN_ACTION_CONSIDER_NEW_MAIL_AS_READ, (char *)"MN_ACTION_CONSIDER_NEW_MAIL_AS_READ", (char *)"consider-new-mail-as-read" }, { MN_ACTION_UPDATE_MAIL_STATUS, (char *)"MN_ACTION_UPDATE_MAIL_STATUS", (char *)"update-mail-status" }, { 0, NULL, NULL } }; GType mn_action_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) type = g_enum_register_static ("MNAction", _mn_action_values); return type; } static const GEnumValue _mn_expiration_enabled_values[] = { { MN_EXPIRATION_ENABLED_DEFAULT, (char *)"MN_EXPIRATION_ENABLED_DEFAULT", (char *)"default" }, { MN_EXPIRATION_ENABLED_FALSE, (char *)"MN_EXPIRATION_ENABLED_FALSE", (char *)"false" }, { MN_EXPIRATION_ENABLED_TRUE, (char *)"MN_EXPIRATION_ENABLED_TRUE", (char *)"true" }, { 0, NULL, NULL } }; GType mn_expiration_enabled_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) type = g_enum_register_static ("MNExpirationEnabled", _mn_expiration_enabled_values); return type; } static const GEnumValue _mn_popup_position_values[] = { { MN_POPUP_POSITION_ATTACHED, (char *)"MN_POPUP_POSITION_ATTACHED", (char *)"attached" }, { MN_POPUP_POSITION_FREE, (char *)"MN_POPUP_POSITION_FREE", (char *)"free" }, { 0, NULL, NULL } }; GType mn_popup_position_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) type = g_enum_register_static ("MNPopupPosition", _mn_popup_position_values); return type; } mail-notification-5.4.dfsg.1/build/src/mn-pi-mailbox.gob.stamp0000644000175000001440000000000011015312646024013 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-authenticated-mailbox-private.h0000644000175000001440000000275711015312646026257 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_AUTHENTICATED_MAILBOX_PRIVATE_H__ #define __MN_AUTHENTICATED_MAILBOX_PRIVATE_H__ #include "mn-authenticated-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 25 "src/mn-authenticated-mailbox.gob" #include #line 18 "mn-authenticated-mailbox-private.h" struct _MNAuthenticatedMailboxPrivate { #line 67 "src/mn-authenticated-mailbox.gob" gpointer get_password_request; #line 68 "src/mn-authenticated-mailbox.gob" gpointer set_password_request; #line 75 "src/mn-authenticated-mailbox.gob" gboolean checking; #line 79 "src/mn-authenticated-mailbox.gob" GtkWidget * auth_dialog; #line 84 "src/mn-authenticated-mailbox.gob" char * prompted_password_keyring; #line 85 "src/mn-authenticated-mailbox.gob" guint32 prompted_password_item_id; #line 32 "mn-authenticated-mailbox-private.h" }; #line 251 "src/mn-authenticated-mailbox.gob" void mn_authenticated_mailbox_parse_username (MNAuthenticatedMailbox * self, char ** username, char ** domain); #line 36 "mn-authenticated-mailbox-private.h" #line 278 "src/mn-authenticated-mailbox.gob" gboolean mn_authenticated_mailbox_fill_password (MNAuthenticatedMailbox * self, gboolean may_prompt); #line 39 "mn-authenticated-mailbox-private.h" #line 341 "src/mn-authenticated-mailbox.gob" void mn_authenticated_mailbox_auth_failed (MNAuthenticatedMailbox * self); #line 42 "mn-authenticated-mailbox-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mailbox-properties-dialog-private.h0000644000175000001440000000647211015312644027062 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MAILBOX_PROPERTIES_DIALOG_PRIVATE_H__ #define __MN_MAILBOX_PROPERTIES_DIALOG_PRIVATE_H__ #include "mn-mailbox-properties-dialog.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 25 "src/mn-mailbox-properties-dialog.gob" #include "mn-mailbox-properties.h" #line 18 "mn-mailbox-properties-dialog-private.h" struct _MNMailboxPropertiesDialogPrivate { #line 80 "src/mn-mailbox-properties-dialog.gob" GtkWindow * dialog_parent; #line 83 "src/mn-mailbox-properties-dialog.gob" MNMailbox * mailbox; #line 116 "src/mn-mailbox-properties-dialog.gob" gboolean apply_used; #line 119 "src/mn-mailbox-properties-dialog.gob" MNMailboxConfiguration * orig_mailbox_configuration; #line 123 "src/mn-mailbox-properties-dialog.gob" GtkWidget * type_label; #line 124 "src/mn-mailbox-properties-dialog.gob" GtkWidget * type_combo; #line 125 "src/mn-mailbox-properties-dialog.gob" GtkWidget * name_default_radio; #line 126 "src/mn-mailbox-properties-dialog.gob" GtkWidget * name_default_label; #line 127 "src/mn-mailbox-properties-dialog.gob" GtkWidget * name_other_radio; #line 128 "src/mn-mailbox-properties-dialog.gob" GtkWidget * name_entry; #line 129 "src/mn-mailbox-properties-dialog.gob" GtkWidget * delay_vbox; #line 130 "src/mn-mailbox-properties-dialog.gob" GtkWidget * delay_default_radio; #line 131 "src/mn-mailbox-properties-dialog.gob" GtkWidget * delay_default_label; #line 132 "src/mn-mailbox-properties-dialog.gob" GtkWidget * delay_other_radio; #line 133 "src/mn-mailbox-properties-dialog.gob" GtkWidget * delay_scale; #line 135 "src/mn-mailbox-properties-dialog.gob" GtkWidget * apply_button; #line 136 "src/mn-mailbox-properties-dialog.gob" GtkWidget * accept_button; #line 138 "src/mn-mailbox-properties-dialog.gob" GtkListStore * store; #line 140 "src/mn-mailbox-properties-dialog.gob" MNMailboxProperties * active_properties; #line 142 "src/mn-mailbox-properties-dialog.gob" GtkSizeGroup * details_size_group; #line 60 "mn-mailbox-properties-dialog-private.h" }; #line 626 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_set_help_section (GtkWidget * page, const char * section); #line 64 "mn-mailbox-properties-dialog-private.h" #line 643 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_type_changed_h (MNMailboxPropertiesDialog * self, GtkComboBox * combobox); #line 67 "mn-mailbox-properties-dialog-private.h" #line 666 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_name_toggled_h (MNMailboxPropertiesDialog * self, GtkToggleButton * button); #line 70 "mn-mailbox-properties-dialog-private.h" #line 672 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_delay_toggled_h (MNMailboxPropertiesDialog * self, GtkToggleButton * button); #line 73 "mn-mailbox-properties-dialog-private.h" #line 678 "src/mn-mailbox-properties-dialog.gob" char * mn_mailbox_properties_dialog_delay_format_value_h (MNMailboxPropertiesDialog * self, double arg, GtkScale * scale); #line 76 "mn-mailbox-properties-dialog-private.h" #line 684 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_entry_activate_h (MNMailboxPropertiesDialog * self, GtkEntry * entry); #line 79 "mn-mailbox-properties-dialog-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-sylpheed-message.h0000644000175000001440000000274611015312646023571 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-vfs-message.h" #ifndef __MN_SYLPHEED_MESSAGE_H__ #define __MN_SYLPHEED_MESSAGE_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_SYLPHEED_MESSAGE (mn_sylpheed_message_get_type()) #define MN_SYLPHEED_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_sylpheed_message_get_type(), MNSylpheedMessage) #define MN_SYLPHEED_MESSAGE_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_sylpheed_message_get_type(), MNSylpheedMessage const) #define MN_SYLPHEED_MESSAGE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_sylpheed_message_get_type(), MNSylpheedMessageClass) #define MN_IS_SYLPHEED_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_sylpheed_message_get_type ()) #define MN_SYLPHEED_MESSAGE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_sylpheed_message_get_type(), MNSylpheedMessageClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_SYLPHEED_MESSAGE__ #define __TYPEDEF_MN_SYLPHEED_MESSAGE__ typedef struct _MNSylpheedMessage MNSylpheedMessage; #endif struct _MNSylpheedMessage { MNVFSMessage __parent__; }; /* * Class definition */ typedef struct _MNSylpheedMessageClass MNSylpheedMessageClass; struct _MNSylpheedMessageClass { MNVFSMessageClass __parent__; }; /* * Public methods */ GType mn_sylpheed_message_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-maildir-message.h0000644000175000001440000000271311015312645023366 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-vfs-message.h" #ifndef __MN_MAILDIR_MESSAGE_H__ #define __MN_MAILDIR_MESSAGE_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MAILDIR_MESSAGE (mn_maildir_message_get_type()) #define MN_MAILDIR_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_maildir_message_get_type(), MNMaildirMessage) #define MN_MAILDIR_MESSAGE_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_maildir_message_get_type(), MNMaildirMessage const) #define MN_MAILDIR_MESSAGE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_maildir_message_get_type(), MNMaildirMessageClass) #define MN_IS_MAILDIR_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_maildir_message_get_type ()) #define MN_MAILDIR_MESSAGE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_maildir_message_get_type(), MNMaildirMessageClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_MAILDIR_MESSAGE__ #define __TYPEDEF_MN_MAILDIR_MESSAGE__ typedef struct _MNMaildirMessage MNMaildirMessage; #endif struct _MNMaildirMessage { MNVFSMessage __parent__; }; /* * Class definition */ typedef struct _MNMaildirMessageClass MNMaildirMessageClass; struct _MNMaildirMessageClass { MNVFSMessageClass __parent__; }; /* * Public methods */ GType mn_maildir_message_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mailbox-properties-dialog.h0000644000175000001440000001004211015312644025376 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-dialog.h" #include "mn-mailbox.h" #ifndef __MN_MAILBOX_PROPERTIES_DIALOG_H__ #define __MN_MAILBOX_PROPERTIES_DIALOG_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MAILBOX_PROPERTIES_DIALOG (mn_mailbox_properties_dialog_get_type()) #define MN_MAILBOX_PROPERTIES_DIALOG(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mailbox_properties_dialog_get_type(), MNMailboxPropertiesDialog) #define MN_MAILBOX_PROPERTIES_DIALOG_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mailbox_properties_dialog_get_type(), MNMailboxPropertiesDialog const) #define MN_MAILBOX_PROPERTIES_DIALOG_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_mailbox_properties_dialog_get_type(), MNMailboxPropertiesDialogClass) #define MN_IS_MAILBOX_PROPERTIES_DIALOG(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mailbox_properties_dialog_get_type ()) #define MN_MAILBOX_PROPERTIES_DIALOG_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_mailbox_properties_dialog_get_type(), MNMailboxPropertiesDialogClass) /* Private structure type */ typedef struct _MNMailboxPropertiesDialogPrivate MNMailboxPropertiesDialogPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_MAILBOX_PROPERTIES_DIALOG__ #define __TYPEDEF_MN_MAILBOX_PROPERTIES_DIALOG__ typedef struct _MNMailboxPropertiesDialog MNMailboxPropertiesDialog; #endif struct _MNMailboxPropertiesDialog { MNDialog __parent__; /*< private >*/ GtkWidget * notebook; /* protected */ GtkWidget * general_vbox; /* protected */ MNMailboxPropertiesDialogPrivate *_priv; }; /* * Class definition */ typedef struct _MNMailboxPropertiesDialogClass MNMailboxPropertiesDialogClass; struct _MNMailboxPropertiesDialogClass { MNDialogClass __parent__; }; /* * Public methods */ GType mn_mailbox_properties_dialog_get_type (void) G_GNUC_CONST; #line 112 "src/mn-mailbox-properties-dialog.gob" MNMailbox * mn_mailbox_properties_dialog_get_mailbox (MNMailboxPropertiesDialog * self); #line 63 "mn-mailbox-properties-dialog.h" #line 89 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_set_mailbox (MNMailboxPropertiesDialog * self, MNMailbox * val); #line 67 "mn-mailbox-properties-dialog.h" #line 440 "src/mn-mailbox-properties-dialog.gob" MNMailbox * mn_mailbox_properties_dialog_get_current_mailbox (MNMailboxPropertiesDialog * self); #line 70 "mn-mailbox-properties-dialog.h" #line 459 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_apply (MNMailboxPropertiesDialog * self); #line 73 "mn-mailbox-properties-dialog.h" #line 478 "src/mn-mailbox-properties-dialog.gob" void mn_mailbox_properties_dialog_cancel (MNMailboxPropertiesDialog * self); #line 76 "mn-mailbox-properties-dialog.h" #line 633 "src/mn-mailbox-properties-dialog.gob" GtkWidget * mn_mailbox_properties_dialog_new (GtkWindow * parent, MNMailbox * mailbox); #line 80 "mn-mailbox-properties-dialog.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_MAILBOX_PROPERTIES_DIALOG_PROP_DIALOG_PARENT(arg) "dialog_parent", __extension__ ({GtkWindow * z = (arg); z;}) #define MN_MAILBOX_PROPERTIES_DIALOG_GET_PROP_DIALOG_PARENT(arg) "dialog_parent", __extension__ ({GtkWindow * *z = (arg); z;}) #define MN_MAILBOX_PROPERTIES_DIALOG_PROP_MAILBOX(arg) "mailbox", __extension__ ({MNMailbox * z = (arg); z;}) #define MN_MAILBOX_PROPERTIES_DIALOG_GET_PROP_MAILBOX(arg) "mailbox", __extension__ ({MNMailbox * *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_MAILBOX_PROPERTIES_DIALOG_PROP_DIALOG_PARENT(arg) "dialog_parent",(GtkWindow * )(arg) #define MN_MAILBOX_PROPERTIES_DIALOG_GET_PROP_DIALOG_PARENT(arg) "dialog_parent",(GtkWindow * *)(arg) #define MN_MAILBOX_PROPERTIES_DIALOG_PROP_MAILBOX(arg) "mailbox",(MNMailbox * )(arg) #define MN_MAILBOX_PROPERTIES_DIALOG_GET_PROP_MAILBOX(arg) "mailbox",(MNMailbox * *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-base-mbox-mailbox-backend-private.h0000644000175000001440000000136711015312645026672 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_BASE_MBOX_MAILBOX_BACKEND_PRIVATE_H__ #define __MN_BASE_MBOX_MAILBOX_BACKEND_PRIVATE_H__ #include "mn-base-mbox-mailbox-backend.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNBaseMboxMailboxBackendPrivate { #line 47 "src/mn-base-mbox-mailbox-backend.gob" GnomeVFSURI * uri; #line 48 "src/mn-base-mbox-mailbox-backend.gob" GnomeVFSFileSize last_size; #line 49 "src/mn-base-mbox-mailbox-backend.gob" time_t last_mtime; #line 50 "src/mn-base-mbox-mailbox-backend.gob" time_t last_ctime; #line 52 "src/mn-base-mbox-mailbox-backend.gob" GMutex * mutex; #line 24 "mn-base-mbox-mailbox-backend-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-auth-combo-box.gob.stamp0000644000175000001440000000000011015312646024576 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-popups.gob.stamp0000644000175000001440000000000011015312645023277 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-mailbox-properties.c0000644000175000001440000004131711015312644024145 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-mailbox-properties.h" #include "mn-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 25 "src/mn-mailbox-properties.gob" #include "mn-util.h" #include "mn-mailbox-properties-dialog.h" #line 31 "mn-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNMailboxProperties Self; typedef MNMailboxPropertiesClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-mailbox-properties.gob" static void mn_mailbox_properties_init (MNMailboxProperties * o); #line 50 "mn-mailbox-properties.c" #line 0 "src/mn-mailbox-properties.gob" static void mn_mailbox_properties_class_init (MNMailboxPropertiesClass * c); #line 53 "mn-mailbox-properties.c" static MNMailbox * ___real_mn_mailbox_properties_get_mailbox (MNMailboxProperties * self); #line 91 "src/mn-mailbox-properties.gob" static void ___6_mn_mailbox_properties_activate (MNMailboxProperties * properties); #line 57 "mn-mailbox-properties.c" #line 101 "src/mn-mailbox-properties.gob" static void ___7_mn_mailbox_properties_deactivate (MNMailboxProperties * properties); #line 60 "mn-mailbox-properties.c" enum { PROP_0, PROP_DIALOG, PROP_COMPLETE, PROP_DEFAULT_NAME, PROP_DEFAULT_CHECK_DELAY }; /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_activate mn_mailbox_properties_activate #define self_deactivate mn_mailbox_properties_deactivate #define self_set_mailbox mn_mailbox_properties_set_mailbox #define self_get_mailbox mn_mailbox_properties_get_mailbox #define self_add_general_section mn_mailbox_properties_add_general_section #define self_notify_complete mn_mailbox_properties_notify_complete #define self_notify_default_name mn_mailbox_properties_notify_default_name #define self_notify_default_check_delay mn_mailbox_properties_notify_default_check_delay GType mn_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_mailbox_properties_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNMailboxProperties", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMailboxProperties *)g_object_new(mn_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNMailboxProperties *)g_object_new_valist (mn_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mailbox:Properties::dispose" MNMailboxProperties *self G_GNUC_UNUSED = MN_MAILBOX_PROPERTIES (obj_self); if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 40 "src/mn-mailbox-properties.gob" if(self->label_size_group) { g_object_unref ((gpointer) self->label_size_group); self->label_size_group = NULL; } #line 134 "mn-mailbox-properties.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mailbox:Properties::finalize" MNMailboxProperties *self G_GNUC_UNUSED = MN_MAILBOX_PROPERTIES (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 42 "src/mn-mailbox-properties.gob" if(self->entries) { g_slist_free ((gpointer) self->entries); self->entries = NULL; } #line 149 "mn-mailbox-properties.c" #line 44 "src/mn-mailbox-properties.gob" if(self->_priv->general_sections) { mn_g_object_slist_free ((gpointer) self->_priv->general_sections); self->_priv->general_sections = NULL; } #line 152 "mn-mailbox-properties.c" } #undef __GOB_FUNCTION__ static void mn_mailbox_properties_init (MNMailboxProperties * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Mailbox:Properties::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_MAILBOX_PROPERTIES,MNMailboxPropertiesPrivate); #line 40 "src/mn-mailbox-properties.gob" o->label_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); #line 163 "mn-mailbox-properties.c" } #undef __GOB_FUNCTION__ static void mn_mailbox_properties_class_init (MNMailboxPropertiesClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Mailbox:Properties::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)c; g_type_class_add_private(c,sizeof(MNMailboxPropertiesPrivate)); #line 25 "src/mn-mailbox-properties.gob" c->enable_check_delay = TRUE; #line 176 "mn-mailbox-properties.c" parent_class = g_type_class_ref (G_TYPE_OBJECT); c->activate = NULL; c->deactivate = NULL; c->set_mailbox = NULL; #line 71 "src/mn-mailbox-properties.gob" c->get_mailbox = ___real_mn_mailbox_properties_get_mailbox; #line 91 "src/mn-mailbox-properties.gob" mn_mailbox_properties_class->activate = ___6_mn_mailbox_properties_activate; #line 101 "src/mn-mailbox-properties.gob" mn_mailbox_properties_class->deactivate = ___7_mn_mailbox_properties_deactivate; #line 189 "mn-mailbox-properties.c" g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_pointer ("dialog" /* name */, NULL /* nick */, NULL /* blurb */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_DIALOG, param_spec); param_spec = g_param_spec_boolean ("complete" /* name */, NULL /* nick */, NULL /* blurb */, FALSE /* default_value */, (GParamFlags)(G_PARAM_READABLE)); g_object_class_install_property (g_object_class, PROP_COMPLETE, param_spec); param_spec = g_param_spec_string ("default_name" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE)); g_object_class_install_property (g_object_class, PROP_DEFAULT_NAME, param_spec); param_spec = g_param_spec_int ("default_check_delay" /* name */, NULL /* nick */, NULL /* blurb */, G_MININT /* minimum */, G_MAXINT /* maximum */, 0 /* default_value */, (GParamFlags)(G_PARAM_READABLE)); g_object_class_install_property (g_object_class, PROP_DEFAULT_CHECK_DELAY, param_spec); } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Mailbox:Properties::set_property" { MNMailboxProperties *self G_GNUC_UNUSED; self = MN_MAILBOX_PROPERTIES (object); switch (property_id) { case PROP_DIALOG: { #line 38 "src/mn-mailbox-properties.gob" self->dialog = g_value_get_pointer (VAL); #line 254 "mn-mailbox-properties.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Mailbox:Properties::get_property" { MNMailboxProperties *self G_GNUC_UNUSED; self = MN_MAILBOX_PROPERTIES (object); switch (property_id) { case PROP_DIALOG: { #line 38 "src/mn-mailbox-properties.gob" g_value_set_pointer (VAL, self->dialog); #line 285 "mn-mailbox-properties.c" } break; case PROP_COMPLETE: { #line 47 "src/mn-mailbox-properties.gob" g_value_set_boolean(VAL, TRUE); #line 292 "mn-mailbox-properties.c" } break; case PROP_DEFAULT_NAME: { #line 50 "src/mn-mailbox-properties.gob" g_value_set_string(VAL, NULL); #line 299 "mn-mailbox-properties.c" } break; case PROP_DEFAULT_CHECK_DELAY: { #line 54 "src/mn-mailbox-properties.gob" MNMailboxClass *class; class = mn_mailbox_get_class_from_name(SELF_GET_CLASS(self)->type); g_value_set_int(VAL, class->default_check_delay); g_type_class_unref(class); #line 312 "mn-mailbox-properties.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 62 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_activate (MNMailboxProperties * self) { #line 333 "mn-mailbox-properties.c" MNMailboxPropertiesClass *klass; #line 62 "src/mn-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 62 "src/mn-mailbox-properties.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self)); #line 339 "mn-mailbox-properties.c" klass = MN_MAILBOX_PROPERTIES_GET_CLASS(self); if(klass->activate) (*klass->activate)(self); } #line 65 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_deactivate (MNMailboxProperties * self) { #line 350 "mn-mailbox-properties.c" MNMailboxPropertiesClass *klass; #line 65 "src/mn-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 65 "src/mn-mailbox-properties.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self)); #line 356 "mn-mailbox-properties.c" klass = MN_MAILBOX_PROPERTIES_GET_CLASS(self); if(klass->deactivate) (*klass->deactivate)(self); } #line 68 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_set_mailbox (MNMailboxProperties * self, MNMailbox * mailbox) { #line 367 "mn-mailbox-properties.c" MNMailboxPropertiesClass *klass; #line 68 "src/mn-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 68 "src/mn-mailbox-properties.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self)); #line 68 "src/mn-mailbox-properties.gob" g_return_if_fail (mailbox != NULL); #line 68 "src/mn-mailbox-properties.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 377 "mn-mailbox-properties.c" klass = MN_MAILBOX_PROPERTIES_GET_CLASS(self); if(klass->set_mailbox) (*klass->set_mailbox)(self,mailbox); } #line 71 "src/mn-mailbox-properties.gob" MNMailbox * mn_mailbox_properties_get_mailbox (MNMailboxProperties * self) { #line 388 "mn-mailbox-properties.c" MNMailboxPropertiesClass *klass; #line 71 "src/mn-mailbox-properties.gob" g_return_val_if_fail (self != NULL, (MNMailbox * )0); #line 71 "src/mn-mailbox-properties.gob" g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (MNMailbox * )0); #line 394 "mn-mailbox-properties.c" klass = MN_MAILBOX_PROPERTIES_GET_CLASS(self); if(klass->get_mailbox) return (*klass->get_mailbox)(self); else return (MNMailbox * )(0); } #line 71 "src/mn-mailbox-properties.gob" static MNMailbox * ___real_mn_mailbox_properties_get_mailbox (MNMailboxProperties * self G_GNUC_UNUSED) { #line 406 "mn-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties::get_mailbox" { #line 73 "src/mn-mailbox-properties.gob" return mn_mailbox_new(SELF_GET_CLASS(self)->type, NULL); }} #line 413 "mn-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 77 "src/mn-mailbox-properties.gob" GtkWidget * mn_mailbox_properties_add_general_section (MNMailboxProperties * self, const char * title) { #line 420 "mn-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties::add_general_section" #line 77 "src/mn-mailbox-properties.gob" g_return_val_if_fail (self != NULL, (GtkWidget * )0); #line 77 "src/mn-mailbox-properties.gob" g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (GtkWidget * )0); #line 77 "src/mn-mailbox-properties.gob" g_return_val_if_fail (title != NULL, (GtkWidget * )0); #line 428 "mn-mailbox-properties.c" { #line 79 "src/mn-mailbox-properties.gob" GtkWidget *section; GtkWidget *vbox; section = mn_hig_section_new_with_box(title, NULL, &vbox); g_object_ref_sink(section); gtk_widget_show(section); selfp->general_sections = g_slist_append(selfp->general_sections, section); return vbox; }} #line 442 "mn-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 91 "src/mn-mailbox-properties.gob" static void ___6_mn_mailbox_properties_activate (MNMailboxProperties * properties G_GNUC_UNUSED) #line 448 "mn-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->activate) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->activate)(___properties); } { #define __GOB_FUNCTION__ "MN:Mailbox:Properties::activate" { #line 93 "src/mn-mailbox-properties.gob" Self *self = SELF(properties); GSList *l; MN_LIST_FOREACH(l, selfp->general_sections) gtk_box_pack_start(GTK_BOX(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->general_vbox), l->data, FALSE, FALSE, 0); }} #line 463 "mn-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 101 "src/mn-mailbox-properties.gob" static void ___7_mn_mailbox_properties_deactivate (MNMailboxProperties * properties G_GNUC_UNUSED) #line 470 "mn-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->deactivate) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->deactivate)(___properties); } { #define __GOB_FUNCTION__ "MN:Mailbox:Properties::deactivate" { #line 103 "src/mn-mailbox-properties.gob" Self *self = SELF(properties); GSList *l; MN_LIST_FOREACH(l, selfp->general_sections) gtk_container_remove(GTK_CONTAINER(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->general_vbox), l->data); }} #line 485 "mn-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 111 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_notify_complete (MNMailboxProperties * self) { #line 493 "mn-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties::notify_complete" #line 111 "src/mn-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 111 "src/mn-mailbox-properties.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self)); #line 499 "mn-mailbox-properties.c" { #line 113 "src/mn-mailbox-properties.gob" g_object_notify(G_OBJECT(self), "complete"); }} #line 505 "mn-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 117 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_notify_default_name (MNMailboxProperties * self) { #line 512 "mn-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties::notify_default_name" #line 117 "src/mn-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 117 "src/mn-mailbox-properties.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self)); #line 518 "mn-mailbox-properties.c" { #line 119 "src/mn-mailbox-properties.gob" g_object_notify(G_OBJECT(self), "default-name"); }} #line 524 "mn-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 123 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_notify_default_check_delay (MNMailboxProperties * self) { #line 531 "mn-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Mailbox:Properties::notify_default_check_delay" #line 123 "src/mn-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 123 "src/mn-mailbox-properties.gob" g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self)); #line 537 "mn-mailbox-properties.c" { #line 125 "src/mn-mailbox-properties.gob" g_object_notify(G_OBJECT(self), "default-check-delay"); }} #line 543 "mn-mailbox-properties.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-tooltips.h0000644000175000001440000000363511015312645022204 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_TOOLTIPS_H__ #define __MN_TOOLTIPS_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_TOOLTIPS (mn_tooltips_get_type()) #define MN_TOOLTIPS(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_tooltips_get_type(), MNTooltips) #define MN_TOOLTIPS_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_tooltips_get_type(), MNTooltips const) #define MN_TOOLTIPS_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_tooltips_get_type(), MNTooltipsClass) #define MN_IS_TOOLTIPS(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_tooltips_get_type ()) #define MN_TOOLTIPS_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_tooltips_get_type(), MNTooltipsClass) /* Private structure type */ typedef struct _MNTooltipsPrivate MNTooltipsPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_TOOLTIPS__ #define __TYPEDEF_MN_TOOLTIPS__ typedef struct _MNTooltips MNTooltips; #endif struct _MNTooltips { GObject __parent__; /*< private >*/ MNTooltipsPrivate *_priv; }; /* * Class definition */ typedef struct _MNTooltipsClass MNTooltipsClass; struct _MNTooltipsClass { GObjectClass __parent__; }; /* * Public methods */ GType mn_tooltips_get_type (void) G_GNUC_CONST; #line 261 "src/mn-tooltips.gob" void mn_tooltips_set_tip (MNTooltips * self, GtkWidget * widget, const char * tip_text); #line 62 "mn-tooltips.h" #line 279 "src/mn-tooltips.gob" void mn_tooltips_set_tip_widget (MNTooltips * self, GtkWidget * widget, GtkWidget * tip_widget); #line 67 "mn-tooltips.h" #line 669 "src/mn-tooltips.gob" void mn_tooltips_toggle_keyboard_mode (GtkWidget * widget); #line 70 "mn-tooltips.h" #line 678 "src/mn-tooltips.gob" MNTooltips * mn_tooltips_new (void); #line 73 "mn-tooltips.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-hotmail-mailbox-properties.c0000644000175000001440000000737711015312647025613 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-hotmail-mailbox-properties.h" #include "mn-hotmail-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-hotmail-mailbox-properties.gob" #include "mn-stock.h" #line 30 "mn-hotmail-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_HOTMAIL_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_HOTMAIL_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_HOTMAIL_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_HOTMAIL_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_HOTMAIL_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_HOTMAIL_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNHotmailMailboxProperties Self; typedef MNHotmailMailboxPropertiesClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-hotmail-mailbox-properties.gob" static void mn_hotmail_mailbox_properties_init (MNHotmailMailboxProperties * o); #line 47 "mn-hotmail-mailbox-properties.c" #line 30 "src/mn-hotmail-mailbox-properties.gob" static void mn_hotmail_mailbox_properties_class_init (MNHotmailMailboxPropertiesClass * class); #line 50 "mn-hotmail-mailbox-properties.c" /* pointer to the class of our parent */ static MNWebmailMailboxPropertiesClass *parent_class = NULL; GType mn_hotmail_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNHotmailMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_hotmail_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNHotmailMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_hotmail_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_WEBMAIL_MAILBOX_PROPERTIES, "MNHotmailMailboxProperties", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNHotmailMailboxProperties *)g_object_new(mn_hotmail_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNHotmailMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNHotmailMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNHotmailMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNHotmailMailboxProperties *)g_object_new_valist (mn_hotmail_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } static void mn_hotmail_mailbox_properties_init (MNHotmailMailboxProperties * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox:Properties::init" } #undef __GOB_FUNCTION__ #line 30 "src/mn-hotmail-mailbox-properties.gob" static void mn_hotmail_mailbox_properties_class_init (MNHotmailMailboxPropertiesClass * class G_GNUC_UNUSED) { #line 107 "mn-hotmail-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox:Properties::class_init" parent_class = g_type_class_ref (MN_TYPE_WEBMAIL_MAILBOX_PROPERTIES); { #line 31 "src/mn-hotmail-mailbox-properties.gob" MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "hotmail"; p_class->stock_id = MN_STOCK_HOTMAIL; p_class->combo_label = "Windows Live Hotmail"; #line 121 "mn-hotmail-mailbox-properties.c" } } #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-autodetect-mailbox-properties-private.h0000644000175000001440000000111511015312644027751 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_AUTODETECT_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_AUTODETECT_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-autodetect-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNAutodetectMailboxPropertiesPrivate { #line 41 "src/mn-autodetect-mailbox-properties.gob" GtkWidget * location_entry; #line 42 "src/mn-autodetect-mailbox-properties.gob" GtkWidget * chooser; #line 18 "mn-autodetect-mailbox-properties-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-message-view-private.h0000644000175000001440000000124311015312644024363 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MESSAGE_VIEW_PRIVATE_H__ #define __MN_MESSAGE_VIEW_PRIVATE_H__ #include "mn-message-view.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 25 "src/mn-message-view.gob" #include #line 18 "mn-message-view-private.h" struct _MNMessageViewPrivate { #line 48 "src/mn-message-view.gob" GSList * past_time_cells; #line 22 "mn-message-view-private.h" }; #line 94 "src/mn-message-view.gob" void mn_message_view_append_past_time_cell (MNMessageView * self, time_t past_time, time_t now); #line 26 "mn-message-view-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mh-mailbox-backend.gob.stamp0000644000175000001440000000000011015312645025373 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-reentrant-mailbox.c0000644000175000001440000002427111015312647023756 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-reentrant-mailbox.h" #include "mn-reentrant-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-reentrant-mailbox.gob" #include #include "mn-mailbox-private.h" #include "mn-util.h" typedef struct { MNReentrantMailbox *self; int check_id; } CheckInfo; #line 38 "mn-reentrant-mailbox.c" /* self casting macros */ #define SELF(x) MN_REENTRANT_MAILBOX(x) #define SELF_CONST(x) MN_REENTRANT_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_REENTRANT_MAILBOX(x) #define TYPE_SELF MN_TYPE_REENTRANT_MAILBOX #define SELF_CLASS(x) MN_REENTRANT_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_REENTRANT_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNReentrantMailbox Self; typedef MNReentrantMailboxClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-reentrant-mailbox.gob" static void mn_reentrant_mailbox_init (MNReentrantMailbox * o); #line 55 "mn-reentrant-mailbox.c" #line 0 "src/mn-reentrant-mailbox.gob" static void mn_reentrant_mailbox_class_init (MNReentrantMailboxClass * c); #line 58 "mn-reentrant-mailbox.c" #line 43 "src/mn-reentrant-mailbox.gob" static void ___1_mn_reentrant_mailbox_removed (MNMailbox * mailbox); #line 61 "mn-reentrant-mailbox.c" #line 54 "src/mn-reentrant-mailbox.gob" static void mn_reentrant_mailbox_finalize (MNReentrantMailbox * self); #line 64 "mn-reentrant-mailbox.c" #line 76 "src/mn-reentrant-mailbox.gob" static gboolean mn_reentrant_mailbox_queue_check_cb (gpointer data); #line 67 "mn-reentrant-mailbox.c" #line 87 "src/mn-reentrant-mailbox.gob" static void ___5_mn_reentrant_mailbox_check (MNMailbox * mailbox); #line 70 "mn-reentrant-mailbox.c" #line 109 "src/mn-reentrant-mailbox.gob" static void mn_reentrant_mailbox_check_thread_cb (CheckInfo * info); #line 73 "mn-reentrant-mailbox.c" #line 128 "src/mn-reentrant-mailbox.gob" static void mn_reentrant_mailbox_reentrant_check (MNReentrantMailbox * self, int check_id); #line 76 "mn-reentrant-mailbox.c" /* pointer to the class of our parent */ static MNMailboxClass *parent_class = NULL; /* Short form macros */ #define self_queue_check mn_reentrant_mailbox_queue_check #define self_queue_check_cb mn_reentrant_mailbox_queue_check_cb #define self_check_thread_cb mn_reentrant_mailbox_check_thread_cb #define self_reentrant_check mn_reentrant_mailbox_reentrant_check #define self_check_aborted mn_reentrant_mailbox_check_aborted GType mn_reentrant_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNReentrantMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_reentrant_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNReentrantMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_reentrant_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_MAILBOX, "MNReentrantMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNReentrantMailbox *)g_object_new(mn_reentrant_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNReentrantMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNReentrantMailbox * GET_NEW_VARG (const char *first, ...) { MNReentrantMailbox *ret; va_list ap; va_start (ap, first); ret = (MNReentrantMailbox *)g_object_new_valist (mn_reentrant_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::finalize" MNReentrantMailbox *self G_GNUC_UNUSED = MN_REENTRANT_MAILBOX (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 54 "src/mn-reentrant-mailbox.gob" mn_reentrant_mailbox_finalize (self); #line 138 "mn-reentrant-mailbox.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_reentrant_mailbox_init (MNReentrantMailbox * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_REENTRANT_MAILBOX,MNReentrantMailboxPrivate); } #undef __GOB_FUNCTION__ static void mn_reentrant_mailbox_class_init (MNReentrantMailboxClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)c; g_type_class_add_private(c,sizeof(MNReentrantMailboxPrivate)); parent_class = g_type_class_ref (MN_TYPE_MAILBOX); #line 43 "src/mn-reentrant-mailbox.gob" mn_mailbox_class->removed = ___1_mn_reentrant_mailbox_removed; #line 87 "src/mn-reentrant-mailbox.gob" mn_mailbox_class->check = ___5_mn_reentrant_mailbox_check; #line 166 "mn-reentrant-mailbox.c" c->reentrant_check = NULL; g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 43 "src/mn-reentrant-mailbox.gob" static void ___1_mn_reentrant_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED) #line 177 "mn-reentrant-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->removed) \ (* MN_MAILBOX_CLASS(parent_class)->removed)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::removed" { #line 45 "src/mn-reentrant-mailbox.gob" Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); /* abort the current check */ g_atomic_int_set(&selfp->check_id, 0); }} #line 193 "mn-reentrant-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 54 "src/mn-reentrant-mailbox.gob" static void mn_reentrant_mailbox_finalize (MNReentrantMailbox * self) { #line 201 "mn-reentrant-mailbox.c" #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::finalize" { #line 55 "src/mn-reentrant-mailbox.gob" if (selfp->queue_check_id) g_source_remove(selfp->queue_check_id); }} #line 209 "mn-reentrant-mailbox.c" #undef __GOB_FUNCTION__ #line 69 "src/mn-reentrant-mailbox.gob" void mn_reentrant_mailbox_queue_check (MNReentrantMailbox * self) { #line 216 "mn-reentrant-mailbox.c" #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::queue_check" #line 69 "src/mn-reentrant-mailbox.gob" g_return_if_fail (self != NULL); #line 69 "src/mn-reentrant-mailbox.gob" g_return_if_fail (MN_IS_REENTRANT_MAILBOX (self)); #line 222 "mn-reentrant-mailbox.c" { #line 71 "src/mn-reentrant-mailbox.gob" if (! selfp->queue_check_id) selfp->queue_check_id = gdk_threads_add_idle(self_queue_check_cb, self); }} #line 229 "mn-reentrant-mailbox.c" #undef __GOB_FUNCTION__ #line 76 "src/mn-reentrant-mailbox.gob" static gboolean mn_reentrant_mailbox_queue_check_cb (gpointer data) { #line 236 "mn-reentrant-mailbox.c" #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::queue_check_cb" { #line 78 "src/mn-reentrant-mailbox.gob" Self *self = data; mn_mailbox_check(MN_MAILBOX(self)); selfp->queue_check_id = 0; return FALSE; /* remove source */ }} #line 248 "mn-reentrant-mailbox.c" #undef __GOB_FUNCTION__ #line 87 "src/mn-reentrant-mailbox.gob" static void ___5_mn_reentrant_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED) #line 254 "mn-reentrant-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->check) \ (* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check" { #line 89 "src/mn-reentrant-mailbox.gob" Self *self = SELF(mailbox); CheckInfo *info; PARENT_HANDLER(mailbox); mn_mailbox_set_error(mailbox, NULL); if (++selfp->check_unique_id == 0) ++selfp->check_unique_id; info = g_new(CheckInfo, 1); info->self = g_object_ref(self); info->check_id = selfp->check_unique_id; g_atomic_int_set(&selfp->check_id, info->check_id); mn_thread_create((GThreadFunc) self_check_thread_cb, info); }} #line 281 "mn-reentrant-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 109 "src/mn-reentrant-mailbox.gob" static void mn_reentrant_mailbox_check_thread_cb (CheckInfo * info) { #line 289 "mn-reentrant-mailbox.c" #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check_thread_cb" { #line 111 "src/mn-reentrant-mailbox.gob" Self *self = info->self; self_reentrant_check(self, info->check_id); g_atomic_int_compare_and_exchange(&selfp->check_id, info->check_id, 0); GDK_THREADS_ENTER(); g_object_unref(self); gdk_flush(); GDK_THREADS_LEAVE(); g_free(info); }} #line 309 "mn-reentrant-mailbox.c" #undef __GOB_FUNCTION__ #line 128 "src/mn-reentrant-mailbox.gob" static void mn_reentrant_mailbox_reentrant_check (MNReentrantMailbox * self, int check_id) { #line 316 "mn-reentrant-mailbox.c" MNReentrantMailboxClass *klass; #line 128 "src/mn-reentrant-mailbox.gob" g_return_if_fail (self != NULL); #line 128 "src/mn-reentrant-mailbox.gob" g_return_if_fail (MN_IS_REENTRANT_MAILBOX (self)); #line 128 "src/mn-reentrant-mailbox.gob" g_return_if_fail (check_id != 0); #line 324 "mn-reentrant-mailbox.c" klass = MN_REENTRANT_MAILBOX_GET_CLASS(self); if(klass->reentrant_check) (*klass->reentrant_check)(self,check_id); } #line 131 "src/mn-reentrant-mailbox.gob" gboolean mn_reentrant_mailbox_check_aborted (MNReentrantMailbox * self, int check_id) { #line 335 "mn-reentrant-mailbox.c" #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check_aborted" #line 131 "src/mn-reentrant-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 131 "src/mn-reentrant-mailbox.gob" g_return_val_if_fail (MN_IS_REENTRANT_MAILBOX (self), (gboolean )0); #line 131 "src/mn-reentrant-mailbox.gob" g_return_val_if_fail (check_id != 0, (gboolean )0); #line 343 "mn-reentrant-mailbox.c" { #line 133 "src/mn-reentrant-mailbox.gob" return g_atomic_int_get(&selfp->check_id) != check_id; }} #line 349 "mn-reentrant-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-evolution-mailbox-properties.c0000644000175000001440000003002511015312647026164 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-evolution-mailbox-properties.h" #include "mn-evolution-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 28 "src/mn-evolution-mailbox-properties.gob" #include #include "mn-evolution-mailbox.h" #include "mn-stock.h" #include "mn-mailbox-properties-private.h" #include "mn-shell.h" #include "mn-evolution-client-dbus.h" #include "mn-util.h" #include "mn-evolution-folder-tree-client.h" #line 37 "mn-evolution-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_EVOLUTION_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_EVOLUTION_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_EVOLUTION_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_EVOLUTION_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_EVOLUTION_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_EVOLUTION_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNEvolutionMailboxProperties Self; typedef MNEvolutionMailboxPropertiesClass SelfClass; /* here are local prototypes */ static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 55 "src/mn-evolution-mailbox-properties.gob" static void mn_evolution_mailbox_properties_class_init (MNEvolutionMailboxPropertiesClass * class); #line 55 "mn-evolution-mailbox-properties.c" #line 65 "src/mn-evolution-mailbox-properties.gob" static void mn_evolution_mailbox_properties_init (MNEvolutionMailboxProperties * self); #line 58 "mn-evolution-mailbox-properties.c" #line 84 "src/mn-evolution-mailbox-properties.gob" static void mn_evolution_mailbox_properties_notify_selected_uri_h (GObject * object, GParamSpec * pspec, gpointer user_data); #line 61 "mn-evolution-mailbox-properties.c" #line 102 "src/mn-evolution-mailbox-properties.gob" static void mn_evolution_mailbox_properties_folder_activated_h (MNEvolutionFolderTreeClient * client, gpointer user_data); #line 64 "mn-evolution-mailbox-properties.c" #line 110 "src/mn-evolution-mailbox-properties.gob" static void ___5_mn_evolution_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox); #line 67 "mn-evolution-mailbox-properties.c" #line 122 "src/mn-evolution-mailbox-properties.gob" static MNMailbox * ___6_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properties); #line 70 "mn-evolution-mailbox-properties.c" enum { PROP_0, PROP_COMPLETE, PROP_DEFAULT_NAME }; /* pointer to the class of our parent */ static MNMailboxPropertiesClass *parent_class = NULL; /* Short form macros */ #define self_notify_selected_uri_h mn_evolution_mailbox_properties_notify_selected_uri_h #define self_folder_activated_h mn_evolution_mailbox_properties_folder_activated_h GType mn_evolution_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNEvolutionMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_evolution_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNEvolutionMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_evolution_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_MAILBOX_PROPERTIES, "MNEvolutionMailboxProperties", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNEvolutionMailboxProperties *)g_object_new(mn_evolution_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNEvolutionMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNEvolutionMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNEvolutionMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNEvolutionMailboxProperties *)g_object_new_valist (mn_evolution_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::finalize" MNEvolutionMailboxProperties *self G_GNUC_UNUSED = MN_EVOLUTION_MAILBOX_PROPERTIES (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 43 "src/mn-evolution-mailbox-properties.gob" if(self->_priv->name) { g_free ((gpointer) self->_priv->name); self->_priv->name = NULL; } #line 137 "mn-evolution-mailbox-properties.c" } #undef __GOB_FUNCTION__ #line 55 "src/mn-evolution-mailbox-properties.gob" static void mn_evolution_mailbox_properties_class_init (MNEvolutionMailboxPropertiesClass * class G_GNUC_UNUSED) { #line 145 "mn-evolution-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)class; g_type_class_add_private(class,sizeof(MNEvolutionMailboxPropertiesPrivate)); parent_class = g_type_class_ref (MN_TYPE_MAILBOX_PROPERTIES); #line 110 "src/mn-evolution-mailbox-properties.gob" mn_mailbox_properties_class->set_mailbox = ___5_mn_evolution_mailbox_properties_set_mailbox; #line 122 "src/mn-evolution-mailbox-properties.gob" mn_mailbox_properties_class->get_mailbox = ___6_mn_evolution_mailbox_properties_get_mailbox; #line 158 "mn-evolution-mailbox-properties.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; { g_object_class_override_property (g_object_class, PROP_COMPLETE, "complete"); g_object_class_override_property (g_object_class, PROP_DEFAULT_NAME, "default_name"); } { #line 56 "src/mn-evolution-mailbox-properties.gob" MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "evolution"; p_class->stock_id = MN_STOCK_EVOLUTION_MAILBOX; p_class->combo_label = "Evolution"; p_class->enable_check_delay = FALSE; #line 179 "mn-evolution-mailbox-properties.c" } } #undef __GOB_FUNCTION__ #line 65 "src/mn-evolution-mailbox-properties.gob" static void mn_evolution_mailbox_properties_init (MNEvolutionMailboxProperties * self G_GNUC_UNUSED) { #line 187 "mn-evolution-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_EVOLUTION_MAILBOX_PROPERTIES,MNEvolutionMailboxPropertiesPrivate); { #line 66 "src/mn-evolution-mailbox-properties.gob" MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); GtkWidget *vbox; /* translators: header capitalization */ vbox = mn_mailbox_properties_add_general_section(properties, _("Folder")); selfp->tree = mn_evolution_folder_tree_client_new(); gtk_box_pack_start(GTK_BOX(vbox), selfp->tree, TRUE, TRUE, 0); gtk_widget_show(selfp->tree); g_object_connect(selfp->tree, "swapped-signal::notify::connected", mn_mailbox_properties_notify_complete, self, "signal::notify::selected-uri", self_notify_selected_uri_h, self, "signal::folder-activated", self_folder_activated_h, self, NULL); #line 209 "mn-evolution-mailbox-properties.c" } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::get_property" { MNEvolutionMailboxProperties *self G_GNUC_UNUSED; self = MN_EVOLUTION_MAILBOX_PROPERTIES (object); switch (property_id) { case PROP_COMPLETE: { #line 47 "src/mn-evolution-mailbox-properties.gob" MNEvolutionFolderTreeClient *tree = MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree); g_value_set_boolean(VAL, mn_evolution_folder_tree_client_get_connected(tree) && tree->selected_uri != NULL); #line 233 "mn-evolution-mailbox-properties.c" } break; case PROP_DEFAULT_NAME: { #line 53 "src/mn-evolution-mailbox-properties.gob" g_value_set_string(VAL, selfp->name); #line 240 "mn-evolution-mailbox-properties.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 84 "src/mn-evolution-mailbox-properties.gob" static void mn_evolution_mailbox_properties_notify_selected_uri_h (GObject * object, GParamSpec * pspec, gpointer user_data) { #line 261 "mn-evolution-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::notify_selected_uri_h" { #line 86 "src/mn-evolution-mailbox-properties.gob" Self *self = user_data; MNEvolutionClient *client; char *name = NULL; client = mn_evolution_client_get(); if (client->proxy) org_gnome_MailNotification_Evolution_get_folder_name(client->proxy, MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree)->selected_uri, &name, NULL); g_free(selfp->name); selfp->name = name; g_object_notify(G_OBJECT(self), "complete"); g_object_notify(G_OBJECT(self), "default-name"); }} #line 280 "mn-evolution-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 102 "src/mn-evolution-mailbox-properties.gob" static void mn_evolution_mailbox_properties_folder_activated_h (MNEvolutionFolderTreeClient * client, gpointer user_data) { #line 287 "mn-evolution-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::folder_activated_h" { #line 104 "src/mn-evolution-mailbox-properties.gob" Self *self = user_data; gtk_window_activate_default(GTK_WINDOW(MN_MAILBOX_PROPERTIES(self)->dialog)); }} #line 296 "mn-evolution-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 110 "src/mn-evolution-mailbox-properties.gob" static void ___5_mn_evolution_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox) #line 302 "mn-evolution-mailbox-properties.c" #define PARENT_HANDLER(___properties,___mailbox) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); } { #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::set_mailbox" { #line 112 "src/mn-evolution-mailbox-properties.gob" Self *self = SELF(properties); MNEvolutionMailbox *evolution_mailbox = MN_EVOLUTION_MAILBOX(mailbox); mn_evolution_folder_tree_client_set_selected_uri(MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree), evolution_mailbox->uri); g_free(selfp->name); selfp->name = g_strdup(evolution_mailbox->folder_name); }} #line 319 "mn-evolution-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 122 "src/mn-evolution-mailbox-properties.gob" static MNMailbox * ___6_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED) #line 326 "mn-evolution-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ ((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::get_mailbox" { #line 124 "src/mn-evolution-mailbox-properties.gob" Self *self = SELF(properties); MNMailbox *mailbox; mailbox = PARENT_HANDLER(properties); g_object_set(mailbox, MN_EVOLUTION_MAILBOX_PROP_URI(MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree)->selected_uri), MN_EVOLUTION_MAILBOX_PROP_FOLDER_NAME(selfp->name), NULL); return mailbox; }} #line 348 "mn-evolution-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-imap-mailbox-properties.gob.stamp0000644000175000001440000000000011015312646026523 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-sylpheed-mailbox-backend.c0000644000175000001440000006407111015312646025157 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include "mn-sylpheed-mailbox-backend.h" #include "mn-sylpheed-mailbox-backend-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 41 "src/mn-sylpheed-mailbox-backend.gob" #include #include #include #include #include #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #include "mn-vfs-mailbox-private.h" #include "mn-vfs-mailbox-backend-private.h" #include "mn-vfs.h" #include "mn-util.h" #include "mn-message-mime.h" #include "mn-sylpheed-message.h" /* taken from defs.h in the Sylpheed sources */ #define SYLPHEED_MARK_VERSION 2 /* taken from defs.h in the Claws Mail sources */ #define CLAWS_MAIL_CACHE_FILE ".sylpheed_claws_cache" #line 47 "mn-sylpheed-mailbox-backend.c" /* self casting macros */ #define SELF(x) MN_SYLPHEED_MAILBOX_BACKEND(x) #define SELF_CONST(x) MN_SYLPHEED_MAILBOX_BACKEND_CONST(x) #define IS_SELF(x) MN_IS_SYLPHEED_MAILBOX_BACKEND(x) #define TYPE_SELF MN_TYPE_SYLPHEED_MAILBOX_BACKEND #define SELF_CLASS(x) MN_SYLPHEED_MAILBOX_BACKEND_CLASS(x) #define SELF_GET_CLASS(x) MN_SYLPHEED_MAILBOX_BACKEND_GET_CLASS(x) /* self typedefs */ typedef MNSylpheedMailboxBackend Self; typedef MNSylpheedMailboxBackendClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-sylpheed-mailbox-backend.gob" static void mn_sylpheed_mailbox_backend_init (MNSylpheedMailboxBackend * o); #line 64 "mn-sylpheed-mailbox-backend.c" #line 66 "src/mn-sylpheed-mailbox-backend.gob" static void mn_sylpheed_mailbox_backend_class_init (MNSylpheedMailboxBackendClass * class); #line 67 "mn-sylpheed-mailbox-backend.c" #line 71 "src/mn-sylpheed-mailbox-backend.gob" static void ___2_mn_sylpheed_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend, const char * info_uri, GnomeVFSMonitorEventType event_type); #line 70 "mn-sylpheed-mailbox-backend.c" #line 98 "src/mn-sylpheed-mailbox-backend.gob" static gboolean ___3_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox); #line 73 "mn-sylpheed-mailbox-backend.c" #line 113 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_is_claws_mail_mailbox (MNSylpheedMailboxBackend * self); #line 76 "mn-sylpheed-mailbox-backend.c" #line 127 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_has_sylpheed_locking (void); #line 79 "mn-sylpheed-mailbox-backend.c" #line 150 "src/mn-sylpheed-mailbox-backend.gob" static void mn_sylpheed_mailbox_backend_update_check_latency (MNSylpheedMailboxBackend * self); #line 82 "mn-sylpheed-mailbox-backend.c" #line 186 "src/mn-sylpheed-mailbox-backend.gob" static void ___7_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend, int check_id); #line 85 "mn-sylpheed-mailbox-backend.c" #line 332 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_read_local_mark_file (const char * filename, gsize * size, char ** contents, GError ** err); #line 88 "mn-sylpheed-mailbox-backend.c" #line 378 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_read_remote_mark_file (GnomeVFSURI * uri, gsize * size, char ** contents, GError ** err); #line 91 "mn-sylpheed-mailbox-backend.c" #line 400 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_read_mark_file (GnomeVFSURI * mailbox_uri, gsize * size, char ** contents, GError ** err); #line 94 "mn-sylpheed-mailbox-backend.c" #line 426 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_byte_stream_read (ByteStream * stream, gpointer buf, int size, GError ** err); #line 97 "mn-sylpheed-mailbox-backend.c" #line 492 "src/mn-sylpheed-mailbox-backend.gob" static void mn_sylpheed_mailbox_backend_write_marks_foreach_cb (gpointer key, gpointer value, gpointer data); #line 100 "mn-sylpheed-mailbox-backend.c" /* pointer to the class of our parent */ static MNVFSMailboxBackendClass *parent_class = NULL; /* Short form macros */ #define self_is_claws_mail_mailbox mn_sylpheed_mailbox_backend_is_claws_mail_mailbox #define self_has_sylpheed_locking mn_sylpheed_mailbox_backend_has_sylpheed_locking #define self_update_check_latency mn_sylpheed_mailbox_backend_update_check_latency #define self_read_local_mark_file mn_sylpheed_mailbox_backend_read_local_mark_file #define self_read_remote_mark_file mn_sylpheed_mailbox_backend_read_remote_mark_file #define self_read_mark_file mn_sylpheed_mailbox_backend_read_mark_file #define self_byte_stream_read mn_sylpheed_mailbox_backend_byte_stream_read #define self_read_marks mn_sylpheed_mailbox_backend_read_marks #define self_write_marks_foreach_cb mn_sylpheed_mailbox_backend_write_marks_foreach_cb #define self_write_marks mn_sylpheed_mailbox_backend_write_marks GType mn_sylpheed_mailbox_backend_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNSylpheedMailboxBackendClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_sylpheed_mailbox_backend_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNSylpheedMailboxBackend), 0 /* n_preallocs */, (GInstanceInitFunc) mn_sylpheed_mailbox_backend_init, NULL }; type = g_type_register_static (MN_TYPE_VFS_MAILBOX_BACKEND, "MNSylpheedMailboxBackend", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNSylpheedMailboxBackend *)g_object_new(mn_sylpheed_mailbox_backend_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNSylpheedMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNSylpheedMailboxBackend * GET_NEW_VARG (const char *first, ...) { MNSylpheedMailboxBackend *ret; va_list ap; va_start (ap, first); ret = (MNSylpheedMailboxBackend *)g_object_new_valist (mn_sylpheed_mailbox_backend_get_type (), first, ap); va_end (ap); return ret; } static void mn_sylpheed_mailbox_backend_init (MNSylpheedMailboxBackend * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::init" } #undef __GOB_FUNCTION__ #line 66 "src/mn-sylpheed-mailbox-backend.gob" static void mn_sylpheed_mailbox_backend_class_init (MNSylpheedMailboxBackendClass * class G_GNUC_UNUSED) { #line 168 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::class_init" MNVFSMailboxBackendClass *mn_vfs_mailbox_backend_class = (MNVFSMailboxBackendClass *)class; parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND); #line 71 "src/mn-sylpheed-mailbox-backend.gob" mn_vfs_mailbox_backend_class->monitor_cb = ___2_mn_sylpheed_mailbox_backend_monitor_cb; #line 98 "src/mn-sylpheed-mailbox-backend.gob" mn_vfs_mailbox_backend_class->is = ___3_mn_sylpheed_mailbox_backend_is; #line 186 "src/mn-sylpheed-mailbox-backend.gob" mn_vfs_mailbox_backend_class->check = ___7_mn_sylpheed_mailbox_backend_check; #line 180 "mn-sylpheed-mailbox-backend.c" { #line 67 "src/mn-sylpheed-mailbox-backend.gob" MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Sylpheed"; #line 186 "mn-sylpheed-mailbox-backend.c" } } #undef __GOB_FUNCTION__ #line 71 "src/mn-sylpheed-mailbox-backend.gob" static void ___2_mn_sylpheed_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC_UNUSED, const char * info_uri, GnomeVFSMonitorEventType event_type) #line 196 "mn-sylpheed-mailbox-backend.c" #define PARENT_HANDLER(___backend,___info_uri,___event_type) \ { if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->monitor_cb) \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->monitor_cb)(___backend,___info_uri,___event_type); } { #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::monitor_cb" { #line 75 "src/mn-sylpheed-mailbox-backend.gob" if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED || event_type == GNOME_VFS_MONITOR_EVENT_DELETED || event_type == GNOME_VFS_MONITOR_EVENT_CREATED) { char *filename; filename = mn_vfs_uri_extract_short_name(info_uri); if (filename) { /* * The status of the mailbox can only have changed if the * subject of the event is the mark file or a message file * (having a numbered filename). */ if (! strcmp(filename, SYLPHEED_MARK_FILE) || mn_str_isnumeric(filename)) mn_vfs_mailbox_backend_queue_check(backend); g_free(filename); } } }} #line 226 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 98 "src/mn-sylpheed-mailbox-backend.gob" static gboolean ___3_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox) #line 233 "mn-sylpheed-mailbox-backend.c" #define PARENT_HANDLER(___dummy,___class,___mailbox) \ ((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)? \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___class,___mailbox): \ ((gboolean )0)) { #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::is" { #line 102 "src/mn-sylpheed-mailbox-backend.gob" gboolean is; GnomeVFSURI *uri; uri = gnome_vfs_uri_append_file_name(mailbox->vfs_uri, SYLPHEED_MARK_FILE); is = mn_vfs_test(uri, G_FILE_TEST_IS_REGULAR); gnome_vfs_uri_unref(uri); return is; }} #line 252 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 113 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_is_claws_mail_mailbox (MNSylpheedMailboxBackend * self) { #line 260 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::is_claws_mail_mailbox" #line 113 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 113 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (MN_IS_SYLPHEED_MAILBOX_BACKEND (self), (gboolean )0); #line 266 "mn-sylpheed-mailbox-backend.c" { #line 115 "src/mn-sylpheed-mailbox-backend.gob" gboolean is; GnomeVFSURI *uri; uri = gnome_vfs_uri_append_file_name(MN_VFS_MAILBOX_BACKEND(self)->mailbox->vfs_uri, CLAWS_MAIL_CACHE_FILE); is = mn_vfs_test(uri, G_FILE_TEST_IS_REGULAR); gnome_vfs_uri_unref(uri); return is; }} #line 279 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 127 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_has_sylpheed_locking (void) { #line 286 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::has_sylpheed_locking" { #line 129 "src/mn-sylpheed-mailbox-backend.gob" static gboolean checked = FALSE; static gboolean has = FALSE; if (! checked) { char *output; if (g_spawn_command_line_sync("sylpheed --version", &output, NULL, NULL, NULL)) { if (strstr(output, "+locking")) has = TRUE; g_free(output); } checked = TRUE; } return has; }} #line 310 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 150 "src/mn-sylpheed-mailbox-backend.gob" static void mn_sylpheed_mailbox_backend_update_check_latency (MNSylpheedMailboxBackend * self) { #line 317 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::update_check_latency" #line 150 "src/mn-sylpheed-mailbox-backend.gob" g_return_if_fail (self != NULL); #line 150 "src/mn-sylpheed-mailbox-backend.gob" g_return_if_fail (MN_IS_SYLPHEED_MAILBOX_BACKEND (self)); #line 323 "mn-sylpheed-mailbox-backend.c" { #line 152 "src/mn-sylpheed-mailbox-backend.gob" MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self); mn_vfs_mailbox_lock(backend->mailbox); /* * If it is a Claws Mail mailbox, the check_latency can be set to * 0, since Claws Mail does not write the mark file in place but * uses an atomic rename() to move the new mark file over the * previous one. */ if (self_is_claws_mail_mailbox(self)) backend->check_latency = 0; else { /* * If Sylpheed was compiled with the locking patch and the * mailbox is local, check_latency can be set to 0, since we * lock the mark file while reading it. */ if (self_has_sylpheed_locking() && gnome_vfs_uri_is_local(backend->mailbox->vfs_uri)) backend->check_latency = 0; else /* * Otherwise, set check_latency to 3 seconds to avoid race * conditions that can occur when Sylpheed writes the mark * file while we read it. */ backend->check_latency = 3000; } mn_vfs_mailbox_unlock(backend->mailbox); }} #line 359 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 186 "src/mn-sylpheed-mailbox-backend.gob" static void ___7_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, int check_id) #line 365 "mn-sylpheed-mailbox-backend.c" #define PARENT_HANDLER(___backend,___check_id) \ { if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check) \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check)(___backend,___check_id); } { #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::check" { #line 188 "src/mn-sylpheed-mailbox-backend.gob" GError *err = NULL; GnomeVFSResult result; GnomeVFSResult close_result; GnomeVFSDirectoryHandle *handle; GnomeVFSFileInfo *file_info; GHashTable *marks; GSList *messages = NULL; int num_errors = 0; self_update_check_latency(SELF(backend)); mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_DIRECTORY); marks = self_read_marks(backend->mailbox->vfs_uri, &err); if (! marks) { if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to read %s: %s"), SYLPHEED_MARK_FILE, err->message); gdk_flush(); GDK_THREADS_LEAVE(); } g_error_free(err); return; } if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) goto finish; result = gnome_vfs_directory_open_from_uri(&handle, backend->mailbox->vfs_uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS); if (result != GNOME_VFS_OK) { if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to open folder: %s"), gnome_vfs_result_to_string(result)); gdk_flush(); GDK_THREADS_LEAVE(); } goto end; } file_info = gnome_vfs_file_info_new(); while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK) if (mn_str_isnumeric(file_info->name)) { guint32 num = atoi(file_info->name); guint32 sflags; gboolean has_mark; gpointer value; has_mark = g_hash_table_lookup_extended(marks, GUINT_TO_POINTER(num), NULL, &value); if (has_mark) sflags = GPOINTER_TO_UINT(value); if (! has_mark || (sflags & (SYLPHEED_MSG_NEW | SYLPHEED_MSG_UNREAD)) != 0) { MNMessageFlags flags = 0; MNVFSMessage *message; if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) break; if (! has_mark || (sflags & SYLPHEED_MSG_NEW) != 0) flags |= MN_MESSAGE_NEW; /* * We set handle_status to FALSE, since Sylpheed has its * own way (mark file) of differencing seen/unseen * messages. */ message = mn_vfs_message_new(MN_TYPE_SYLPHEED_MESSAGE, backend, NULL, backend->mailbox->vfs_uri, file_info->name, flags, FALSE, &err); if (message) messages = g_slist_prepend(messages, message); else if (err) { GnomeVFSURI *message_uri; char *message_text_uri; message_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, file_info->name); message_text_uri = gnome_vfs_uri_to_string(message_uri, GNOME_VFS_URI_HIDE_PASSWORD); gnome_vfs_uri_unref(message_uri); mn_mailbox_warning(MN_MAILBOX(backend->mailbox), "cannot read message \"%s\": %s", message_text_uri, err->message); g_free(message_text_uri); g_clear_error(&err); num_errors++; } } } gnome_vfs_file_info_unref(file_info); close_result = gnome_vfs_directory_close(handle); finish: GDK_THREADS_ENTER(); if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK) { if (close_result == GNOME_VFS_OK) { mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages); if (num_errors != 0) mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), ngettext("cannot read %i message", "cannot read %i messages", num_errors), num_errors); } else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to close folder: %s"), gnome_vfs_result_to_string(close_result)); } else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("error while reading folder: %s"), gnome_vfs_result_to_string(result)); } mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); end: g_hash_table_destroy(marks); }} #line 516 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 332 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_read_local_mark_file (const char * filename, gsize * size, char ** contents, GError ** err) { #line 524 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::read_local_mark_file" #line 332 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (filename != NULL, (gboolean )0); #line 332 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (size != NULL, (gboolean )0); #line 332 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (contents != NULL, (gboolean )0); #line 532 "mn-sylpheed-mailbox-backend.c" { #line 337 "src/mn-sylpheed-mailbox-backend.gob" int fd; struct flock lock; GIOChannel *channel; GError *tmp_err = NULL; gboolean status = FALSE; fd = open(filename, O_RDONLY); if (fd < 0) { g_set_error(err, 0, 0, "%s", g_strerror(errno)); return FALSE; } memset(&lock, 0, sizeof(lock)); lock.l_start = 0; /* from l_whence */ lock.l_len = 0; /* to end of file */ lock.l_type = F_RDLCK; /* read lock */ lock.l_whence = SEEK_SET; /* from start of file */ /* ignore lock failures */ fcntl(fd, F_SETLKW, &lock); channel = g_io_channel_unix_new(fd); if (g_io_channel_set_encoding(channel, NULL, &tmp_err) == G_IO_STATUS_NORMAL) { if (g_io_channel_read_to_end(channel, contents, size, err) == G_IO_STATUS_NORMAL) status = TRUE; } else { g_set_error(err, 0, 0, _("unable to set encoding: %s"), tmp_err->message); g_error_free(tmp_err); } g_io_channel_shutdown(channel, FALSE, NULL); g_io_channel_unref(channel); return status; }} #line 575 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 378 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_read_remote_mark_file (GnomeVFSURI * uri, gsize * size, char ** contents, GError ** err) { #line 582 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::read_remote_mark_file" #line 378 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (uri != NULL, (gboolean )0); #line 378 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (size != NULL, (gboolean )0); #line 378 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (contents != NULL, (gboolean )0); #line 590 "mn-sylpheed-mailbox-backend.c" { #line 383 "src/mn-sylpheed-mailbox-backend.gob" GnomeVFSResult result; int _size; result = mn_vfs_read_entire_file_uri(uri, &_size, contents); if (result == GNOME_VFS_OK) { *size = _size; return TRUE; } else { g_set_error(err, 0, 0, "%s", gnome_vfs_result_to_string(result)); return FALSE; } }} #line 609 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 400 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_read_mark_file (GnomeVFSURI * mailbox_uri, gsize * size, char ** contents, GError ** err) { #line 616 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::read_mark_file" #line 400 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (mailbox_uri != NULL, (gboolean )0); #line 400 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (size != NULL, (gboolean )0); #line 400 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (contents != NULL, (gboolean )0); #line 624 "mn-sylpheed-mailbox-backend.c" { #line 405 "src/mn-sylpheed-mailbox-backend.gob" GnomeVFSURI *markfile_uri; char *filename; gboolean status; markfile_uri = gnome_vfs_uri_append_file_name(mailbox_uri, SYLPHEED_MARK_FILE); filename = mn_vfs_get_local_path(markfile_uri); if (filename) { status = self_read_local_mark_file(filename, size, contents, err); g_free(filename); } else status = self_read_remote_mark_file(markfile_uri, size, contents, err); gnome_vfs_uri_unref(markfile_uri); return status; }} #line 647 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 426 "src/mn-sylpheed-mailbox-backend.gob" static gboolean mn_sylpheed_mailbox_backend_byte_stream_read (ByteStream * stream, gpointer buf, int size, GError ** err) { #line 654 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::byte_stream_read" #line 426 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (stream != NULL, (gboolean )0); #line 426 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (buf != NULL, (gboolean )0); #line 660 "mn-sylpheed-mailbox-backend.c" { #line 431 "src/mn-sylpheed-mailbox-backend.gob" if (stream->bytes_left >= size) { memcpy(buf, stream->position, size); stream->position += size; stream->bytes_left -= size; return TRUE; } else { g_set_error(err, 0, 0, _("unexpected end of file")); return FALSE; } }} #line 679 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 448 "src/mn-sylpheed-mailbox-backend.gob" GHashTable * mn_sylpheed_mailbox_backend_read_marks (GnomeVFSURI * mailbox_uri, GError ** err) { #line 686 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::read_marks" #line 448 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (mailbox_uri != NULL, (GHashTable * )0); #line 690 "mn-sylpheed-mailbox-backend.c" { #line 450 "src/mn-sylpheed-mailbox-backend.gob" GHashTable *marks = NULL; gsize bytes_left; char *buf; if (self_read_mark_file(mailbox_uri, &bytes_left, &buf, err)) { ByteStream stream = { buf, bytes_left }; guint32 version; if (self_byte_stream_read(&stream, &version, sizeof(version), err)) { if (version == SYLPHEED_MARK_VERSION) { guint32 num; marks = g_hash_table_new(g_direct_hash, g_direct_equal); while (self_byte_stream_read(&stream, &num, sizeof(num), NULL)) { guint32 flags; if (! self_byte_stream_read(&stream, &flags, sizeof(flags), err)) { g_hash_table_destroy(marks); marks = NULL; break; } g_hash_table_insert(marks, GUINT_TO_POINTER(num), GUINT_TO_POINTER(flags)); } } else g_set_error(err, 0, 0, _("incompatible file version \"%i\""), version); } g_free(buf); } return marks; }} #line 734 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 492 "src/mn-sylpheed-mailbox-backend.gob" static void mn_sylpheed_mailbox_backend_write_marks_foreach_cb (gpointer key, gpointer value, gpointer data) { #line 741 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::write_marks_foreach_cb" { #line 494 "src/mn-sylpheed-mailbox-backend.gob" GByteArray *array = data; guint32 num; guint32 flags; num = GPOINTER_TO_UINT(key); flags = GPOINTER_TO_UINT(value); g_byte_array_append(array, (const guint8 *) &num, sizeof(num)); g_byte_array_append(array, (const guint8 *) &flags, sizeof(flags)); }} #line 756 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 507 "src/mn-sylpheed-mailbox-backend.gob" gboolean mn_sylpheed_mailbox_backend_write_marks (GnomeVFSURI * mailbox_uri, GHashTable * marks, GError ** err) { #line 763 "mn-sylpheed-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::write_marks" #line 507 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (mailbox_uri != NULL, (gboolean )0); #line 507 "src/mn-sylpheed-mailbox-backend.gob" g_return_val_if_fail (marks != NULL, (gboolean )0); #line 769 "mn-sylpheed-mailbox-backend.c" { #line 511 "src/mn-sylpheed-mailbox-backend.gob" GByteArray *data; guint32 version; GnomeVFSURI *markfile_uri; gboolean status; /* * We do not need to lock the mark file: races with Sylpheed are * avoided since mn_vfs_write_entire_file_uri_safe() writes the * file atomically (with a move). * * However, only one thread at once can write a given mark file, * since mn_vfs_write_entire_file_uri_safe() is not thread-safe * (it uses fixed temporary file names, foo.tmp and foo.old). */ data = g_byte_array_new(); version = SYLPHEED_MARK_VERSION; g_byte_array_append(data, (const guint8 *) &version, sizeof(version)); g_hash_table_foreach(marks, self_write_marks_foreach_cb, data); markfile_uri = gnome_vfs_uri_append_file_name(mailbox_uri, SYLPHEED_MARK_FILE); /* Sylpheed uses S_IRUSR | S_IWUSR for data files */ status = mn_vfs_write_entire_file_uri_safe(markfile_uri, data->len, data->data, S_IRUSR | S_IWUSR, err); gnome_vfs_uri_unref(markfile_uri); g_byte_array_free(data, TRUE); return status; }} #line 804 "mn-sylpheed-mailbox-backend.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-mail-icon.c0000644000175000001440000007722711015312644022201 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-mail-icon.h" #include "mn-mail-icon-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 35 "src/mn-mail-icon.gob" #include #include #include "mn-stock.h" #include "mn-util.h" #include "mn-mail-icon-widget.h" #line 34 "mn-mail-icon.c" /* self casting macros */ #define SELF(x) MN_MAIL_ICON(x) #define SELF_CONST(x) MN_MAIL_ICON_CONST(x) #define IS_SELF(x) MN_IS_MAIL_ICON(x) #define TYPE_SELF MN_TYPE_MAIL_ICON #define SELF_CLASS(x) MN_MAIL_ICON_CLASS(x) #define SELF_GET_CLASS(x) MN_MAIL_ICON_GET_CLASS(x) /* self typedefs */ typedef MNMailIcon Self; typedef MNMailIconClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-mail-icon.gob" static void mn_mail_icon_class_init (MNMailIconClass * c); #line 51 "mn-mail-icon.c" #line 57 "src/mn-mail-icon.gob" static void mn_mail_icon_activate (MNMailIcon * self); #line 54 "mn-mail-icon.c" #line 59 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_mail_reader (MNMailIcon * self); #line 57 "mn-mail-icon.c" #line 61 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_open_latest_message (MNMailIcon * self); #line 60 "mn-mail-icon.c" #line 63 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_consider_new_mail_as_read (MNMailIcon * self); #line 63 "mn-mail-icon.c" #line 65 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_update (MNMailIcon * self); #line 66 "mn-mail-icon.c" #line 67 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_properties (MNMailIcon * self); #line 69 "mn-mail-icon.c" #line 69 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_help (MNMailIcon * self); #line 72 "mn-mail-icon.c" #line 71 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_about (MNMailIcon * self); #line 75 "mn-mail-icon.c" #line 73 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_remove (MNMailIcon * self); #line 78 "mn-mail-icon.c" #line 76 "src/mn-mail-icon.gob" static void mn_mail_icon_init (MNMailIcon * self); #line 81 "mn-mail-icon.c" #line 131 "src/mn-mail-icon.gob" static void mn_mail_icon_size_allocate_h (GtkWidget * widget, GtkAllocation * allocation, gpointer user_data); #line 84 "mn-mail-icon.c" #line 154 "src/mn-mail-icon.gob" static GtkIconSize mn_mail_icon_find_icon_size (GtkWidget * widget, int pixel_size); #line 87 "mn-mail-icon.c" #line 190 "src/mn-mail-icon.gob" static void mn_mail_icon_update_image (MNMailIcon * self); #line 90 "mn-mail-icon.c" #line 199 "src/mn-mail-icon.gob" static gboolean mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data); #line 93 "mn-mail-icon.c" #line 217 "src/mn-mail-icon.gob" static gboolean mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data); #line 96 "mn-mail-icon.c" #line 233 "src/mn-mail-icon.gob" static void mn_mail_icon_popup_menu_position_cb (GtkMenu * menu, int * x, int * y, gboolean * push_in, gpointer user_data); #line 99 "mn-mail-icon.c" /* * Signal connection wrapper macro shortcuts */ #define self_connect__activate(object,func,data) mn_mail_icon_connect__activate((object),(func),(data)) #define self_connect_after__activate(object,func,data) mn_mail_icon_connect_after__activate((object),(func),(data)) #define self_connect_data__activate(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_mail_reader(object,func,data) mn_mail_icon_connect__activate_mail_reader((object),(func),(data)) #define self_connect_after__activate_mail_reader(object,func,data) mn_mail_icon_connect_after__activate_mail_reader((object),(func),(data)) #define self_connect_data__activate_mail_reader(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_mail_reader((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_open_latest_message(object,func,data) mn_mail_icon_connect__activate_open_latest_message((object),(func),(data)) #define self_connect_after__activate_open_latest_message(object,func,data) mn_mail_icon_connect_after__activate_open_latest_message((object),(func),(data)) #define self_connect_data__activate_open_latest_message(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_open_latest_message((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_consider_new_mail_as_read(object,func,data) mn_mail_icon_connect__activate_consider_new_mail_as_read((object),(func),(data)) #define self_connect_after__activate_consider_new_mail_as_read(object,func,data) mn_mail_icon_connect_after__activate_consider_new_mail_as_read((object),(func),(data)) #define self_connect_data__activate_consider_new_mail_as_read(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_consider_new_mail_as_read((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_update(object,func,data) mn_mail_icon_connect__activate_update((object),(func),(data)) #define self_connect_after__activate_update(object,func,data) mn_mail_icon_connect_after__activate_update((object),(func),(data)) #define self_connect_data__activate_update(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_update((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_properties(object,func,data) mn_mail_icon_connect__activate_properties((object),(func),(data)) #define self_connect_after__activate_properties(object,func,data) mn_mail_icon_connect_after__activate_properties((object),(func),(data)) #define self_connect_data__activate_properties(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_properties((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_help(object,func,data) mn_mail_icon_connect__activate_help((object),(func),(data)) #define self_connect_after__activate_help(object,func,data) mn_mail_icon_connect_after__activate_help((object),(func),(data)) #define self_connect_data__activate_help(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_help((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_about(object,func,data) mn_mail_icon_connect__activate_about((object),(func),(data)) #define self_connect_after__activate_about(object,func,data) mn_mail_icon_connect_after__activate_about((object),(func),(data)) #define self_connect_data__activate_about(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_about((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_remove(object,func,data) mn_mail_icon_connect__activate_remove((object),(func),(data)) #define self_connect_after__activate_remove(object,func,data) mn_mail_icon_connect_after__activate_remove((object),(func),(data)) #define self_connect_data__activate_remove(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_remove((object),(func),(data),(destroy_data),(flags)) enum { ACTIVATE_SIGNAL, ACTIVATE_MAIL_READER_SIGNAL, ACTIVATE_OPEN_LATEST_MESSAGE_SIGNAL, ACTIVATE_CONSIDER_NEW_MAIL_AS_READ_SIGNAL, ACTIVATE_UPDATE_SIGNAL, ACTIVATE_PROPERTIES_SIGNAL, ACTIVATE_HELP_SIGNAL, ACTIVATE_ABOUT_SIGNAL, ACTIVATE_REMOVE_SIGNAL, LAST_SIGNAL }; static guint object_signals[LAST_SIGNAL] = {0}; /* pointer to the class of our parent */ static EggTrayIconClass *parent_class = NULL; /* Short form macros */ #define self_activate mn_mail_icon_activate #define self_activate_mail_reader mn_mail_icon_activate_mail_reader #define self_activate_open_latest_message mn_mail_icon_activate_open_latest_message #define self_activate_consider_new_mail_as_read mn_mail_icon_activate_consider_new_mail_as_read #define self_activate_update mn_mail_icon_activate_update #define self_activate_properties mn_mail_icon_activate_properties #define self_activate_help mn_mail_icon_activate_help #define self_activate_about mn_mail_icon_activate_about #define self_activate_remove mn_mail_icon_activate_remove #define self_size_allocate_h mn_mail_icon_size_allocate_h #define self_find_icon_size mn_mail_icon_find_icon_size #define self_update_image mn_mail_icon_update_image #define self_button_press_event_h mn_mail_icon_button_press_event_h #define self_button_release_event_h mn_mail_icon_button_release_event_h #define self_popup_menu_position_cb mn_mail_icon_popup_menu_position_cb #define self_set_from_stock mn_mail_icon_set_from_stock #define self_set_blinking mn_mail_icon_set_blinking #define self_set_count mn_mail_icon_set_count #define self_set_tip mn_mail_icon_set_tip #define self_set_tip_widget mn_mail_icon_set_tip_widget #define self_new mn_mail_icon_new GType mn_mail_icon_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMailIconClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_mail_icon_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMailIcon), 0 /* n_preallocs */, (GInstanceInitFunc) mn_mail_icon_init, NULL }; type = g_type_register_static (EGG_TYPE_TRAY_ICON, "MNMailIcon", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMailIcon *)g_object_new(mn_mail_icon_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMailIcon * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMailIcon * GET_NEW_VARG (const char *first, ...) { MNMailIcon *ret; va_list ap; va_start (ap, first); ret = (MNMailIcon *)g_object_new_valist (mn_mail_icon_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mail:Icon::dispose" MNMailIcon *self G_GNUC_UNUSED = MN_MAIL_ICON (obj_self); if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 45 "src/mn-mail-icon.gob" if(self->_priv->tooltips) { g_object_unref ((gpointer) self->_priv->tooltips); self->_priv->tooltips = NULL; } #line 224 "mn-mail-icon.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mail:Icon::finalize" MNMailIcon *self G_GNUC_UNUSED = MN_MAIL_ICON (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 48 "src/mn-mail-icon.gob" if(self->_priv->stock_id) { g_free ((gpointer) self->_priv->stock_id); self->_priv->stock_id = NULL; } #line 239 "mn-mail-icon.c" #line 51 "src/mn-mail-icon.gob" if(self->_priv->menu) { gtk_widget_destroy ((gpointer) self->_priv->menu); self->_priv->menu = NULL; } #line 242 "mn-mail-icon.c" } #undef __GOB_FUNCTION__ static void mn_mail_icon_class_init (MNMailIconClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Mail:Icon::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNMailIconPrivate)); parent_class = g_type_class_ref (EGG_TYPE_TRAY_ICON); object_signals[ACTIVATE_SIGNAL] = g_signal_new ("activate", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailIconClass, activate), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_MAIL_READER_SIGNAL] = g_signal_new ("activate_mail_reader", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailIconClass, activate_mail_reader), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_OPEN_LATEST_MESSAGE_SIGNAL] = g_signal_new ("activate_open_latest_message", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailIconClass, activate_open_latest_message), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_CONSIDER_NEW_MAIL_AS_READ_SIGNAL] = g_signal_new ("activate_consider_new_mail_as_read", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailIconClass, activate_consider_new_mail_as_read), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_UPDATE_SIGNAL] = g_signal_new ("activate_update", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailIconClass, activate_update), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_PROPERTIES_SIGNAL] = g_signal_new ("activate_properties", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailIconClass, activate_properties), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_HELP_SIGNAL] = g_signal_new ("activate_help", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailIconClass, activate_help), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_ABOUT_SIGNAL] = g_signal_new ("activate_about", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailIconClass, activate_about), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_REMOVE_SIGNAL] = g_signal_new ("activate_remove", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailIconClass, activate_remove), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); c->activate = NULL; c->activate_mail_reader = NULL; c->activate_open_latest_message = NULL; c->activate_consider_new_mail_as_read = NULL; c->activate_update = NULL; c->activate_properties = NULL; c->activate_help = NULL; c->activate_about = NULL; c->activate_remove = NULL; g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 76 "src/mn-mail-icon.gob" static void mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED) { #line 346 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAIL_ICON,MNMailIconPrivate); #line 45 "src/mn-mail-icon.gob" self->_priv->tooltips = mn_tooltips_new(); #line 351 "mn-mail-icon.c" #line 46 "src/mn-mail-icon.gob" self->_priv->widget = mn_mail_icon_widget_new(); #line 354 "mn-mail-icon.c" #line 51 "src/mn-mail-icon.gob" self->_priv->menu = gtk_menu_new(); #line 357 "mn-mail-icon.c" { #line 77 "src/mn-mail-icon.gob" GtkMenuShell *shell; GtkWidget *properties_item; GtkWidget *help_item; GtkWidget *about_item; GtkWidget *remove_item; shell = GTK_MENU_SHELL(selfp->menu); /* translators: header capitalization */ self->mail_reader_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_READER, _("_Mail Reader")); /* translators: header capitalization */ self->open_latest_message_item = mn_menu_shell_append(shell, MN_STOCK_OPEN_MESSAGE, _("_Open Latest Message")); mn_menu_shell_append(shell, NULL, NULL); /* translators: header capitalization */ self->consider_new_mail_as_read_item = mn_menu_shell_append(shell, MN_STOCK_CONSIDER_NEW_MAIL_AS_READ, _("_Consider New Mail as Read")); /* translators: header capitalization */ self->update_item = mn_menu_shell_append(shell, GTK_STOCK_REFRESH, _("_Update")); mn_menu_shell_append(shell, NULL, NULL); properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL); help_item = mn_menu_shell_append(shell, GTK_STOCK_HELP, NULL); about_item = mn_menu_shell_append(shell, GTK_STOCK_ABOUT, NULL); mn_menu_shell_append(shell, NULL, NULL); /* translators: header capitalization */ remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area")); g_signal_connect_swapped(self->mail_reader_item, "activate", G_CALLBACK(self_activate_mail_reader), self); g_signal_connect_swapped(self->open_latest_message_item, "activate", G_CALLBACK(self_activate_open_latest_message), self); g_signal_connect_swapped(self->consider_new_mail_as_read_item, "activate", G_CALLBACK(self_activate_consider_new_mail_as_read), self); g_signal_connect_swapped(self->update_item, "activate", G_CALLBACK(self_activate_update), self); g_signal_connect_swapped(properties_item, "activate", G_CALLBACK(self_activate_properties), self); g_signal_connect_swapped(help_item, "activate", G_CALLBACK(self_activate_help), self); g_signal_connect_swapped(about_item, "activate", G_CALLBACK(self_activate_about), self); g_signal_connect_swapped(remove_item, "activate", G_CALLBACK(self_activate_remove), self); gtk_widget_add_events(GTK_WIDGET(self), GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); gtk_container_add(GTK_CONTAINER(self), selfp->widget); g_object_connect(self, "signal::button-press-event", self_button_press_event_h, self, "signal::button-release-event", self_button_release_event_h, self, NULL); g_signal_connect(selfp->widget, "size-allocate", G_CALLBACK(self_size_allocate_h), self); gtk_widget_show(selfp->widget); #line 413 "mn-mail-icon.c" } } #undef __GOB_FUNCTION__ #line 57 "src/mn-mail-icon.gob" static void mn_mail_icon_activate (MNMailIcon * self) { #line 423 "mn-mail-icon.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 57 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 57 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 434 "mn-mail-icon.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 59 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_mail_reader (MNMailIcon * self) { #line 452 "mn-mail-icon.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 59 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 59 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 463 "mn-mail-icon.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_MAIL_READER_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 61 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_open_latest_message (MNMailIcon * self) { #line 481 "mn-mail-icon.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 61 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 61 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 492 "mn-mail-icon.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_OPEN_LATEST_MESSAGE_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 63 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_consider_new_mail_as_read (MNMailIcon * self) { #line 510 "mn-mail-icon.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 63 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 63 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 521 "mn-mail-icon.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_CONSIDER_NEW_MAIL_AS_READ_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 65 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_update (MNMailIcon * self) { #line 539 "mn-mail-icon.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 65 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 65 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 550 "mn-mail-icon.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_UPDATE_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 67 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_properties (MNMailIcon * self) { #line 568 "mn-mail-icon.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 67 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 67 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 579 "mn-mail-icon.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_PROPERTIES_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 69 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_help (MNMailIcon * self) { #line 597 "mn-mail-icon.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 69 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 69 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 608 "mn-mail-icon.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_HELP_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 71 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_about (MNMailIcon * self) { #line 626 "mn-mail-icon.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 71 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 71 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 637 "mn-mail-icon.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_ABOUT_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 73 "src/mn-mail-icon.gob" static void mn_mail_icon_activate_remove (MNMailIcon * self) { #line 655 "mn-mail-icon.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 73 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 73 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 666 "mn-mail-icon.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_REMOVE_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 131 "src/mn-mail-icon.gob" static void mn_mail_icon_size_allocate_h (GtkWidget * widget, GtkAllocation * allocation, gpointer user_data) { #line 685 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::size_allocate_h" { #line 135 "src/mn-mail-icon.gob" Self *self = user_data; GtkOrientation orientation; int size; orientation = egg_tray_icon_get_orientation(EGG_TRAY_ICON(self)); if (orientation == GTK_ORIENTATION_HORIZONTAL) size = allocation->height; else size = allocation->width; if (selfp->size != size) { selfp->size = size; self_update_image(self); } }} #line 707 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 154 "src/mn-mail-icon.gob" static GtkIconSize mn_mail_icon_find_icon_size (GtkWidget * widget, int pixel_size) { #line 714 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::find_icon_size" #line 154 "src/mn-mail-icon.gob" g_return_val_if_fail (widget != NULL, (GtkIconSize )0); #line 154 "src/mn-mail-icon.gob" g_return_val_if_fail (GTK_IS_WIDGET (widget), (GtkIconSize )0); #line 720 "mn-mail-icon.c" { #line 156 "src/mn-mail-icon.gob" GdkScreen *screen; GtkSettings *settings; GtkIconSize s, size; int w, h, d, dist; screen = gtk_widget_get_screen(widget); if (! screen) return GTK_ICON_SIZE_MENU; settings = gtk_settings_get_for_screen(screen); dist = G_MAXINT; size = GTK_ICON_SIZE_MENU; for (s = GTK_ICON_SIZE_MENU; s < GTK_ICON_SIZE_DIALOG; s++) { if (gtk_icon_size_lookup_for_settings(settings, s, &w, &h) && w <= pixel_size && h <= pixel_size) { d = MAX(pixel_size - w, pixel_size - h); if (d < dist) { dist = d; size = s; } } } return size; }} #line 756 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 190 "src/mn-mail-icon.gob" static void mn_mail_icon_update_image (MNMailIcon * self) { #line 763 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::update_image" #line 190 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 190 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 769 "mn-mail-icon.c" { #line 192 "src/mn-mail-icon.gob" GtkIconSize size; size = self_find_icon_size(selfp->widget, selfp->size); mn_mail_icon_widget_set_from_stock(MN_MAIL_ICON_WIDGET(selfp->widget), selfp->stock_id, size); }} #line 778 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 199 "src/mn-mail-icon.gob" static gboolean mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data) { #line 785 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::button_press_event_h" { #line 203 "src/mn-mail-icon.gob" Self *self = user_data; if (event->button == 1) self_activate(self); else if (event->button == 3) { gtk_menu_popup(GTK_MENU(selfp->menu), NULL, NULL, self_popup_menu_position_cb, self, event->button, event->time); return TRUE; /* do not propagate event */ } return FALSE; /* propagate event */ }} #line 802 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 217 "src/mn-mail-icon.gob" static gboolean mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data) { #line 809 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::button_release_event_h" { #line 221 "src/mn-mail-icon.gob" Self *self = user_data; if (event->button == 3) { gtk_menu_popdown(GTK_MENU(selfp->menu)); return TRUE; /* do not propagate event */ } return FALSE; /* propagate event */ }} #line 824 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 233 "src/mn-mail-icon.gob" static void mn_mail_icon_popup_menu_position_cb (GtkMenu * menu, int * x, int * y, gboolean * push_in, gpointer user_data) { #line 831 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::popup_menu_position_cb" { #line 239 "src/mn-mail-icon.gob" GtkWidget *widget = user_data; gdk_window_get_origin(widget->window, x, y); *x += widget->allocation.x; *y += widget->allocation.y; if (*y > gdk_screen_get_height(gtk_widget_get_screen(widget)) / 2) { GtkRequisition req; gtk_widget_size_request(GTK_WIDGET(menu), &req); *y -= req.height; } else *y += widget->allocation.height; *push_in = TRUE; }} #line 855 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 260 "src/mn-mail-icon.gob" void mn_mail_icon_set_from_stock (MNMailIcon * self, const char * stock_id) { #line 862 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::set_from_stock" #line 260 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 260 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 868 "mn-mail-icon.c" { #line 262 "src/mn-mail-icon.gob" g_free(selfp->stock_id); selfp->stock_id = g_strdup(stock_id); self_update_image(self); }} #line 877 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 269 "src/mn-mail-icon.gob" void mn_mail_icon_set_blinking (MNMailIcon * self, gboolean blinking) { #line 884 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::set_blinking" #line 269 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 269 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 890 "mn-mail-icon.c" { #line 271 "src/mn-mail-icon.gob" mn_mail_icon_widget_set_blinking(MN_MAIL_ICON_WIDGET(selfp->widget), blinking); }} #line 896 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 275 "src/mn-mail-icon.gob" void mn_mail_icon_set_count (MNMailIcon * self, int count) { #line 903 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::set_count" #line 275 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 275 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 909 "mn-mail-icon.c" { #line 277 "src/mn-mail-icon.gob" mn_mail_icon_widget_set_count(MN_MAIL_ICON_WIDGET(selfp->widget), count); }} #line 915 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 281 "src/mn-mail-icon.gob" void mn_mail_icon_set_tip (MNMailIcon * self, const char * tip) { #line 922 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::set_tip" #line 281 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 281 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 928 "mn-mail-icon.c" { #line 283 "src/mn-mail-icon.gob" mn_tooltips_set_tip(selfp->tooltips, GTK_WIDGET(self), tip); }} #line 934 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 287 "src/mn-mail-icon.gob" void mn_mail_icon_set_tip_widget (MNMailIcon * self, GtkWidget * tip_widget) { #line 941 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::set_tip_widget" #line 287 "src/mn-mail-icon.gob" g_return_if_fail (self != NULL); #line 287 "src/mn-mail-icon.gob" g_return_if_fail (MN_IS_MAIL_ICON (self)); #line 947 "mn-mail-icon.c" { #line 289 "src/mn-mail-icon.gob" mn_tooltips_set_tip_widget(selfp->tooltips, GTK_WIDGET(self), tip_widget); }} #line 953 "mn-mail-icon.c" #undef __GOB_FUNCTION__ #line 293 "src/mn-mail-icon.gob" GtkWidget * mn_mail_icon_new (void) { #line 960 "mn-mail-icon.c" #define __GOB_FUNCTION__ "MN:Mail:Icon::new" { #line 295 "src/mn-mail-icon.gob" return GTK_WIDGET(GET_NEW_VARG("title", _("Mail Notification"), NULL)); }} #line 967 "mn-mail-icon.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-authenticated-mailbox-properties.gob.stamp0000644000175000001440000000000011015312646030417 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-message-view.gob.stamp0000644000175000001440000000000011015312645024345 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-mailbox-view.c0000644000175000001440000016023111015312644022720 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include "mn-mailbox-view.h" #include "mn-mailbox-view-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-mailbox-view.gob" #include #include #include #include "mn-util.h" #include "mn-shell.h" #include "mn-stock.h" #include "mn-mailbox-properties-dialog.h" #include "mn-conf.h" #include "mn-mailbox.h" #include "nautilus-cell-renderer-pixbuf-emblem.h" #include "mn-test-mailbox.h" enum { COLUMN_MAILBOX, COLUMN_ICON, COLUMN_EMBLEM, COLUMN_PIXBUF, COLUMN_LABEL, COLUMN_RAW_LABEL, N_COLUMNS }; enum { TARGET_MAILBOXES, TARGET_GNOME_COPIED_FILES, N_TARGETS }; typedef struct { gboolean has_manually_checkable; gboolean has_selection; } SensitivityInfo; static struct { char *name; GdkAtom atom; } clipboard_info[N_TARGETS] = { { "x-special/mail-notification-mailboxes" }, { "x-special/gnome-copied-files" } }; static GtkClipboard *global_clipboard; #line 73 "mn-mailbox-view.c" /* self casting macros */ #define SELF(x) MN_MAILBOX_VIEW(x) #define SELF_CONST(x) MN_MAILBOX_VIEW_CONST(x) #define IS_SELF(x) MN_IS_MAILBOX_VIEW(x) #define TYPE_SELF MN_TYPE_MAILBOX_VIEW #define SELF_CLASS(x) MN_MAILBOX_VIEW_CLASS(x) #define SELF_GET_CLASS(x) MN_MAILBOX_VIEW_GET_CLASS(x) /* self typedefs */ typedef MNMailboxView Self; typedef MNMailboxViewClass SelfClass; /* here are local prototypes */ static void ___real_mn_mailbox_view_activate_update (MNMailboxView * self); #line 93 "src/mn-mailbox-view.gob" static void mn_mailbox_view_activate_update_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); #line 91 "mn-mailbox-view.c" static void ___real_mn_mailbox_view_activate_properties (MNMailboxView * self); #line 116 "src/mn-mailbox-view.gob" static void mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); #line 95 "mn-mailbox-view.c" static void ___real_mn_mailbox_view_activate_add (MNMailboxView * self); static void ___real_mn_mailbox_view_activate_remove (MNMailboxView * self); static void ___real_mn_mailbox_view_activate_cut (MNMailboxView * self); static void ___real_mn_mailbox_view_activate_copy (MNMailboxView * self); static void ___real_mn_mailbox_view_activate_paste (MNMailboxView * self); #line 262 "src/mn-mailbox-view.gob" static void mn_mailbox_view_class_init (MNMailboxViewClass * class); #line 103 "mn-mailbox-view.c" #line 294 "src/mn-mailbox-view.gob" static void mn_mailbox_view_init (MNMailboxView * self); #line 106 "mn-mailbox-view.c" #line 418 "src/mn-mailbox-view.gob" static int mn_mailbox_view_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data); #line 109 "mn-mailbox-view.c" #line 439 "src/mn-mailbox-view.gob" static gboolean mn_mailbox_view_search_equal_cb (GtkTreeModel * model, int column, const char * key, GtkTreeIter * iter, gpointer search_data); #line 112 "mn-mailbox-view.c" #line 503 "src/mn-mailbox-view.gob" static void mn_mailbox_view_append (MNMailboxView * self, MNMailbox * mailbox); #line 115 "mn-mailbox-view.c" #line 514 "src/mn-mailbox-view.gob" static void mn_mailbox_view_mailbox_added_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data); #line 118 "mn-mailbox-view.c" #line 525 "src/mn-mailbox-view.gob" static void mn_mailbox_view_mailbox_notify_h (MNMailboxes * mailboxes, MNMailbox * mailbox, GParamSpec * pspec, gpointer user_data); #line 121 "mn-mailbox-view.c" #line 538 "src/mn-mailbox-view.gob" static void mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data); #line 124 "mn-mailbox-view.c" #line 555 "src/mn-mailbox-view.gob" static void mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox * mailbox); #line 127 "mn-mailbox-view.c" #line 620 "src/mn-mailbox-view.gob" static gboolean mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTreeIter * iter); #line 130 "mn-mailbox-view.c" #line 650 "src/mn-mailbox-view.gob" static void mn_mailbox_view_update_sensitivity (MNMailboxView * self); #line 133 "mn-mailbox-view.c" #line 673 "src/mn-mailbox-view.gob" static void mn_mailbox_view_update_sensitivity_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); #line 136 "mn-mailbox-view.c" #line 693 "src/mn-mailbox-view.gob" static void mn_mailbox_view_remove_mailbox (MNMailboxView * self); #line 139 "mn-mailbox-view.c" #line 702 "src/mn-mailbox-view.gob" static void mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); #line 142 "mn-mailbox-view.c" #line 715 "src/mn-mailbox-view.gob" static void mn_mailbox_view_copy_mailbox (MNMailboxView * self); #line 145 "mn-mailbox-view.c" #line 737 "src/mn-mailbox-view.gob" static void mn_mailbox_view_copy_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data); #line 148 "mn-mailbox-view.c" #line 763 "src/mn-mailbox-view.gob" static void mn_mailbox_view_get_clipboard_cb (GtkClipboard * clipboard, GtkSelectionData * selection_data, unsigned int info, gpointer user_data_or_owner); #line 151 "mn-mailbox-view.c" #line 780 "src/mn-mailbox-view.gob" static void mn_mailbox_view_clear_clipboard_cb (GtkClipboard * clipboard, gpointer user_data_or_owner); #line 154 "mn-mailbox-view.c" #line 788 "src/mn-mailbox-view.gob" static void mn_mailbox_view_select_all (MNMailboxView * self); #line 157 "mn-mailbox-view.c" #line 797 "src/mn-mailbox-view.gob" static void mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpointer user_data); #line 160 "mn-mailbox-view.c" #line 825 "src/mn-mailbox-view.gob" static void mn_mailbox_view_properties_edit_response_h (GtkDialog * dialog, int response, gpointer user_data); #line 163 "mn-mailbox-view.c" #line 848 "src/mn-mailbox-view.gob" static void mn_mailbox_view_popup_menu (MNMailboxView * self, unsigned int button, guint32 activate_time); #line 166 "mn-mailbox-view.c" #line 865 "src/mn-mailbox-view.gob" static gboolean mn_mailbox_view_can_paste (GdkAtom * atoms, int n_atoms); #line 169 "mn-mailbox-view.c" #line 878 "src/mn-mailbox-view.gob" static void mn_mailbox_view_popup_menu_targets_received_cb (GtkClipboard * clipboard, GdkAtom * atoms, int n_atoms, gpointer data); #line 172 "mn-mailbox-view.c" #line 898 "src/mn-mailbox-view.gob" static gboolean mn_mailbox_view_popup_menu_h (GtkWidget * widget, gpointer user_data); #line 175 "mn-mailbox-view.c" #line 909 "src/mn-mailbox-view.gob" static gboolean mn_mailbox_view_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data); #line 178 "mn-mailbox-view.c" #line 920 "src/mn-mailbox-view.gob" static void mn_mailbox_view_row_activated_h (GtkTreeView * treeview, GtkTreePath * path, GtkTreeViewColumn * column, gpointer user_data); #line 181 "mn-mailbox-view.c" /* * Signal connection wrapper macro shortcuts */ #define self_connect__activate_update(object,func,data) mn_mailbox_view_connect__activate_update((object),(func),(data)) #define self_connect_after__activate_update(object,func,data) mn_mailbox_view_connect_after__activate_update((object),(func),(data)) #define self_connect_data__activate_update(object,func,data,destroy_data,flags) mn_mailbox_view_connect_data__activate_update((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_properties(object,func,data) mn_mailbox_view_connect__activate_properties((object),(func),(data)) #define self_connect_after__activate_properties(object,func,data) mn_mailbox_view_connect_after__activate_properties((object),(func),(data)) #define self_connect_data__activate_properties(object,func,data,destroy_data,flags) mn_mailbox_view_connect_data__activate_properties((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_add(object,func,data) mn_mailbox_view_connect__activate_add((object),(func),(data)) #define self_connect_after__activate_add(object,func,data) mn_mailbox_view_connect_after__activate_add((object),(func),(data)) #define self_connect_data__activate_add(object,func,data,destroy_data,flags) mn_mailbox_view_connect_data__activate_add((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_remove(object,func,data) mn_mailbox_view_connect__activate_remove((object),(func),(data)) #define self_connect_after__activate_remove(object,func,data) mn_mailbox_view_connect_after__activate_remove((object),(func),(data)) #define self_connect_data__activate_remove(object,func,data,destroy_data,flags) mn_mailbox_view_connect_data__activate_remove((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_cut(object,func,data) mn_mailbox_view_connect__activate_cut((object),(func),(data)) #define self_connect_after__activate_cut(object,func,data) mn_mailbox_view_connect_after__activate_cut((object),(func),(data)) #define self_connect_data__activate_cut(object,func,data,destroy_data,flags) mn_mailbox_view_connect_data__activate_cut((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_copy(object,func,data) mn_mailbox_view_connect__activate_copy((object),(func),(data)) #define self_connect_after__activate_copy(object,func,data) mn_mailbox_view_connect_after__activate_copy((object),(func),(data)) #define self_connect_data__activate_copy(object,func,data,destroy_data,flags) mn_mailbox_view_connect_data__activate_copy((object),(func),(data),(destroy_data),(flags)) #define self_connect__activate_paste(object,func,data) mn_mailbox_view_connect__activate_paste((object),(func),(data)) #define self_connect_after__activate_paste(object,func,data) mn_mailbox_view_connect_after__activate_paste((object),(func),(data)) #define self_connect_data__activate_paste(object,func,data,destroy_data,flags) mn_mailbox_view_connect_data__activate_paste((object),(func),(data),(destroy_data),(flags)) enum { ACTIVATE_UPDATE_SIGNAL, ACTIVATE_PROPERTIES_SIGNAL, ACTIVATE_ADD_SIGNAL, ACTIVATE_REMOVE_SIGNAL, ACTIVATE_CUT_SIGNAL, ACTIVATE_COPY_SIGNAL, ACTIVATE_PASTE_SIGNAL, LAST_SIGNAL }; static guint object_signals[LAST_SIGNAL] = {0}; /* pointer to the class of our parent */ static GtkTreeViewClass *parent_class = NULL; /* Short form macros */ #define self_activate_update mn_mailbox_view_activate_update #define self_activate_update_cb mn_mailbox_view_activate_update_cb #define self_activate_properties mn_mailbox_view_activate_properties #define self_activate_properties_cb mn_mailbox_view_activate_properties_cb #define self_activate_add mn_mailbox_view_activate_add #define self_activate_remove mn_mailbox_view_activate_remove #define self_activate_cut mn_mailbox_view_activate_cut #define self_activate_copy mn_mailbox_view_activate_copy #define self_activate_paste mn_mailbox_view_activate_paste #define self_sort_cb mn_mailbox_view_sort_cb #define self_search_equal_cb mn_mailbox_view_search_equal_cb #define self_append mn_mailbox_view_append #define self_mailbox_added_h mn_mailbox_view_mailbox_added_h #define self_mailbox_notify_h mn_mailbox_view_mailbox_notify_h #define self_mailbox_removed_h mn_mailbox_view_mailbox_removed_h #define self_update_iter mn_mailbox_view_update_iter #define self_find_mailbox mn_mailbox_view_find_mailbox #define self_update_sensitivity mn_mailbox_view_update_sensitivity #define self_update_sensitivity_cb mn_mailbox_view_update_sensitivity_cb #define self_remove_mailbox mn_mailbox_view_remove_mailbox #define self_remove_mailbox_cb mn_mailbox_view_remove_mailbox_cb #define self_copy_mailbox mn_mailbox_view_copy_mailbox #define self_copy_mailbox_cb mn_mailbox_view_copy_mailbox_cb #define self_get_clipboard_cb mn_mailbox_view_get_clipboard_cb #define self_clear_clipboard_cb mn_mailbox_view_clear_clipboard_cb #define self_select_all mn_mailbox_view_select_all #define self_properties_add_response_h mn_mailbox_view_properties_add_response_h #define self_properties_edit_response_h mn_mailbox_view_properties_edit_response_h #define self_popup_menu mn_mailbox_view_popup_menu #define self_can_paste mn_mailbox_view_can_paste #define self_popup_menu_targets_received_cb mn_mailbox_view_popup_menu_targets_received_cb #define self_popup_menu_h mn_mailbox_view_popup_menu_h #define self_button_press_event_h mn_mailbox_view_button_press_event_h #define self_row_activated_h mn_mailbox_view_row_activated_h #define self_new mn_mailbox_view_new GType mn_mailbox_view_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMailboxViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_mailbox_view_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMailboxView), 0 /* n_preallocs */, (GInstanceInitFunc) mn_mailbox_view_init, NULL }; type = g_type_register_static (GTK_TYPE_TREE_VIEW, "MNMailboxView", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMailboxView *)g_object_new(mn_mailbox_view_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMailboxView * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMailboxView * GET_NEW_VARG (const char *first, ...) { MNMailboxView *ret; va_list ap; va_start (ap, first); ret = (MNMailboxView *)g_object_new_valist (mn_mailbox_view_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mailbox:View::finalize" MNMailboxView *self G_GNUC_UNUSED = MN_MAILBOX_VIEW (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 75 "src/mn-mailbox-view.gob" if(self->_priv->menu) { gtk_widget_destroy ((gpointer) self->_priv->menu); self->_priv->menu = NULL; } #line 313 "mn-mailbox-view.c" } #undef __GOB_FUNCTION__ #line 262 "src/mn-mailbox-view.gob" static void mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED) { #line 321 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; g_type_class_add_private(class,sizeof(MNMailboxViewPrivate)); parent_class = g_type_class_ref (GTK_TYPE_TREE_VIEW); object_signals[ACTIVATE_UPDATE_SIGNAL] = g_signal_new ("activate_update", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailboxViewClass, activate_update), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_PROPERTIES_SIGNAL] = g_signal_new ("activate_properties", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailboxViewClass, activate_properties), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_ADD_SIGNAL] = g_signal_new ("activate_add", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailboxViewClass, activate_add), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_REMOVE_SIGNAL] = g_signal_new ("activate_remove", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailboxViewClass, activate_remove), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_CUT_SIGNAL] = g_signal_new ("activate_cut", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailboxViewClass, activate_cut), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_COPY_SIGNAL] = g_signal_new ("activate_copy", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailboxViewClass, activate_copy), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[ACTIVATE_PASTE_SIGNAL] = g_signal_new ("activate_paste", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNMailboxViewClass, activate_paste), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); #line 84 "src/mn-mailbox-view.gob" class->activate_update = ___real_mn_mailbox_view_activate_update; #line 107 "src/mn-mailbox-view.gob" class->activate_properties = ___real_mn_mailbox_view_activate_properties; #line 147 "src/mn-mailbox-view.gob" class->activate_add = ___real_mn_mailbox_view_activate_add; #line 162 "src/mn-mailbox-view.gob" class->activate_remove = ___real_mn_mailbox_view_activate_remove; #line 168 "src/mn-mailbox-view.gob" class->activate_cut = ___real_mn_mailbox_view_activate_cut; #line 175 "src/mn-mailbox-view.gob" class->activate_copy = ___real_mn_mailbox_view_activate_copy; #line 181 "src/mn-mailbox-view.gob" class->activate_paste = ___real_mn_mailbox_view_activate_paste; #line 400 "mn-mailbox-view.c" g_object_class->finalize = ___finalize; { #line 263 "src/mn-mailbox-view.gob" GtkBindingSet *binding_set; int i; global_clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); for (i = 0; i < N_TARGETS; i++) clipboard_info[i].atom = gdk_atom_intern(clipboard_info[i].name, FALSE); binding_set = gtk_binding_set_by_class(class); /* Delete removes a row */ gtk_binding_entry_add_signal(binding_set, GDK_Delete, 0, "activate-remove", 0); gtk_binding_entry_add_signal(binding_set, GDK_KP_Delete, 0, "activate-remove", 0); /* HIG 2.0 cut/copy/paste shortcuts */ gtk_binding_entry_add_signal(binding_set, GDK_x, GDK_CONTROL_MASK, "activate-cut", 0); gtk_binding_entry_add_signal(binding_set, GDK_c, GDK_CONTROL_MASK, "activate-copy", 0); gtk_binding_entry_add_signal(binding_set, GDK_v, GDK_CONTROL_MASK, "activate-paste", 0); /* cut/copy/paste shortcuts taken from gtkentry.c */ gtk_binding_entry_add_signal(binding_set, GDK_Delete, GDK_SHIFT_MASK, "activate-cut", 0); gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_CONTROL_MASK, "activate-copy", 0); gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_SHIFT_MASK, "activate-paste", 0); /* HIG 2.0 properties */ gtk_binding_entry_add_signal(binding_set, GDK_Return, GDK_MOD1_MASK, "activate-properties", 0); gtk_binding_entry_add_signal(binding_set, GDK_ISO_Enter, GDK_MOD1_MASK, "activate-properties", 0); gtk_binding_entry_add_signal(binding_set, GDK_KP_Enter, GDK_MOD1_MASK, "activate-properties", 0); #line 434 "mn-mailbox-view.c" } } #undef __GOB_FUNCTION__ #line 294 "src/mn-mailbox-view.gob" static void mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED) { #line 442 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAILBOX_VIEW,MNMailboxViewPrivate); #line 75 "src/mn-mailbox-view.gob" self->_priv->menu = gtk_menu_new(); #line 447 "mn-mailbox-view.c" { #line 295 "src/mn-mailbox-view.gob" GtkMenuShell *shell; GtkWidget *add_item; GtkListStore *store; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkTreeSelection *selection; GList *l; /* popup menu */ shell = GTK_MENU_SHELL(selfp->menu); /* ordered according to chapter 4 of the HIG */ selfp->properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL); /* translators: header capitalization */ selfp->update_item = mn_menu_shell_append(shell, GTK_STOCK_REFRESH, _("_Update")); mn_menu_shell_append(shell, NULL, NULL); add_item = mn_menu_shell_append(shell, GTK_STOCK_ADD, NULL); selfp->remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, NULL); mn_menu_shell_append(shell, NULL, NULL); selfp->cut_item = mn_menu_shell_append(shell, GTK_STOCK_CUT, NULL); selfp->copy_item = mn_menu_shell_append(shell, GTK_STOCK_COPY, NULL); selfp->paste_item = mn_menu_shell_append(shell, GTK_STOCK_PASTE, NULL); mn_menu_shell_append(shell, NULL, NULL); selfp->select_all_item = mn_menu_shell_append(shell, GTK_STOCK_SELECT_ALL, NULL); g_signal_connect_swapped(selfp->properties_item, "activate", G_CALLBACK(self_activate_properties), self); g_signal_connect_swapped(selfp->update_item, "activate", G_CALLBACK(self_activate_update), self); g_signal_connect_swapped(add_item, "activate", G_CALLBACK(self_activate_add), self); g_signal_connect_swapped(selfp->remove_item, "activate", G_CALLBACK(self_activate_remove), self); g_signal_connect_swapped(selfp->cut_item, "activate", G_CALLBACK(self_activate_cut), self); g_signal_connect_swapped(selfp->copy_item, "activate", G_CALLBACK(self_activate_copy), self); g_signal_connect_swapped(selfp->paste_item, "activate", G_CALLBACK(self_activate_paste), self); g_signal_connect_swapped(selfp->select_all_item, "activate", G_CALLBACK(self_select_all), self); /* store */ store = gtk_list_store_new(N_COLUMNS, MN_TYPE_MAILBOX, G_TYPE_STRING, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(store), self_sort_cb, NULL, NULL); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); gtk_tree_view_set_model(GTK_TREE_VIEW(self), GTK_TREE_MODEL(store)); column = gtk_tree_view_column_new(); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); renderer = nautilus_cell_renderer_pixbuf_emblem_new(); g_object_set(renderer, "stock-size", GTK_ICON_SIZE_LARGE_TOOLBAR, NULL); gtk_tree_view_column_pack_start(column, renderer, FALSE); gtk_tree_view_column_set_attributes(column, renderer, "stock-id", COLUMN_ICON, "pixbuf-emblem", COLUMN_EMBLEM, "pixbuf", COLUMN_PIXBUF, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_add_attribute(column, renderer, "markup", COLUMN_LABEL); gtk_tree_view_append_column(GTK_TREE_VIEW(self), column); /* misc */ gtk_tree_view_set_search_column(GTK_TREE_VIEW(self), COLUMN_RAW_LABEL); gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(self), self_search_equal_cb, NULL, NULL); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(self), FALSE); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); MN_LIST_FOREACH(l, mn_shell->mailboxes->list) { MNMailbox *mailbox = l->data; if (! MN_IS_TEST_MAILBOX(mailbox)) self_append(self, l->data); } self_update_sensitivity(self); g_object_connect(store, /* for the sensitivity of "Select All" */ "swapped-signal::row-inserted", self_update_sensitivity, self, "swapped-signal::row-deleted", self_update_sensitivity, self, NULL); mn_g_object_connect(self, mn_shell->mailboxes, "signal::mailbox-added", self_mailbox_added_h, self, "signal::mailbox-notify::stock-id", self_mailbox_notify_h, self, "swapped-signal::mailbox-notify::manually-checkable", self_update_sensitivity, self, "signal::mailbox-notify::format", self_mailbox_notify_h, self, "signal::mailbox-notify::error", self_mailbox_notify_h, self, "signal::mailbox-removed", self_mailbox_removed_h, self, NULL); g_signal_connect_swapped(selection, "changed", G_CALLBACK(self_update_sensitivity), self); g_object_connect(self, "signal::popup-menu", self_popup_menu_h, NULL, "signal::button-press-event", self_button_press_event_h, NULL, "signal::row-activated", self_row_activated_h, NULL, NULL); g_object_unref(store); #line 572 "mn-mailbox-view.c" } } #undef __GOB_FUNCTION__ #line 84 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_update (MNMailboxView * self) { #line 581 "mn-mailbox-view.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 84 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 84 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 592 "mn-mailbox-view.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_UPDATE_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 84 "src/mn-mailbox-view.gob" static void ___real_mn_mailbox_view_activate_update (MNMailboxView * self) { #line 609 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_update" { #line 86 "src/mn-mailbox-view.gob" GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_selected_foreach(selection, self_activate_update_cb, self); }} #line 619 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 93 "src/mn-mailbox-view.gob" static void mn_mailbox_view_activate_update_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { #line 626 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_update_cb" { #line 98 "src/mn-mailbox-view.gob" MNMailbox *mailbox; gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1); if (mn_mailbox_get_manually_checkable(mailbox)) mn_mailbox_check(mailbox); g_object_unref(mailbox); }} #line 638 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 107 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_properties (MNMailboxView * self) { #line 645 "mn-mailbox-view.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 107 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 107 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 656 "mn-mailbox-view.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_PROPERTIES_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 107 "src/mn-mailbox-view.gob" static void ___real_mn_mailbox_view_activate_properties (MNMailboxView * self) { #line 673 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties" { #line 109 "src/mn-mailbox-view.gob" GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_selected_foreach(selection, self_activate_properties_cb, self); }} #line 683 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 116 "src/mn-mailbox-view.gob" static void mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { #line 690 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties_cb" { #line 121 "src/mn-mailbox-view.gob" Self *self = data; MNMailbox *mailbox; GtkWidget *dialog; gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1); dialog = (GtkWidget *) mn_shell_get_mailbox_properties_dialog(mn_shell, mailbox); if (dialog) mn_window_present_from_event(GTK_WINDOW(dialog)); else { dialog = mn_mailbox_properties_dialog_new(mn_widget_get_parent_window(GTK_WIDGET(self)), mailbox); g_signal_connect(dialog, "response", G_CALLBACK(self_properties_edit_response_h), NULL); mn_shell_add_mailbox_properties_dialog(mn_shell, MN_MAILBOX_PROPERTIES_DIALOG(dialog)); gtk_widget_show(dialog); } g_object_unref(mailbox); }} #line 719 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 147 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_add (MNMailboxView * self) { #line 726 "mn-mailbox-view.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 147 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 147 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 737 "mn-mailbox-view.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_ADD_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 147 "src/mn-mailbox-view.gob" static void ___real_mn_mailbox_view_activate_add (MNMailboxView * self) { #line 754 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_add" { #line 149 "src/mn-mailbox-view.gob" GtkWidget *dialog; dialog = mn_mailbox_properties_dialog_new(mn_widget_get_parent_window(GTK_WIDGET(self)), NULL); g_signal_connect(dialog, "response", G_CALLBACK(self_properties_add_response_h), NULL); gtk_widget_show(dialog); }} #line 770 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 162 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_remove (MNMailboxView * self) { #line 777 "mn-mailbox-view.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 162 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 162 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 788 "mn-mailbox-view.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_REMOVE_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 162 "src/mn-mailbox-view.gob" static void ___real_mn_mailbox_view_activate_remove (MNMailboxView * self) { #line 805 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_remove" { #line 164 "src/mn-mailbox-view.gob" self_remove_mailbox(self); }} #line 812 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 168 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_cut (MNMailboxView * self) { #line 819 "mn-mailbox-view.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 168 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 168 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 830 "mn-mailbox-view.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_CUT_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 168 "src/mn-mailbox-view.gob" static void ___real_mn_mailbox_view_activate_cut (MNMailboxView * self) { #line 847 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_cut" { #line 170 "src/mn-mailbox-view.gob" self_copy_mailbox(self); self_remove_mailbox(self); }} #line 855 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 175 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_copy (MNMailboxView * self) { #line 862 "mn-mailbox-view.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 175 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 175 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 873 "mn-mailbox-view.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_COPY_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 175 "src/mn-mailbox-view.gob" static void ___real_mn_mailbox_view_activate_copy (MNMailboxView * self) { #line 890 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_copy" { #line 177 "src/mn-mailbox-view.gob" self_copy_mailbox(self); }} #line 897 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 181 "src/mn-mailbox-view.gob" void mn_mailbox_view_activate_paste (MNMailboxView * self) { #line 904 "mn-mailbox-view.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 181 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 181 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 915 "mn-mailbox-view.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ACTIVATE_PASTE_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 181 "src/mn-mailbox-view.gob" static void ___real_mn_mailbox_view_activate_paste (MNMailboxView * self) { #line 932 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_paste" { #line 183 "src/mn-mailbox-view.gob" GtkSelectionData *data; data = gtk_clipboard_wait_for_contents(global_clipboard, clipboard_info[TARGET_MAILBOXES].atom); if (data) { GSList *configurations; GSList *l; memcpy(&configurations, data->data, data->length); MN_LIST_FOREACH(l, configurations) { MNMailbox *mailbox; mailbox = mn_mailbox_new_from_configuration(l->data); mn_mailbox_seal(mailbox); mn_mailboxes_queue_add(mn_shell->mailboxes, mailbox); g_object_unref(mailbox); } gtk_selection_data_free(data); return; } data = gtk_clipboard_wait_for_contents(global_clipboard, clipboard_info[TARGET_GNOME_COPIED_FILES].atom); if (data) { if (data->format == 8 && data->length > 0) { char *gnome_copied_files; gboolean status; MNGnomeCopiedFilesType type; GSList *uri_list; gnome_copied_files = g_strndup(data->data, data->length); status = mn_parse_gnome_copied_files(gnome_copied_files, &type, &uri_list); g_free(gnome_copied_files); if (status) { if (type == MN_GNOME_COPIED_FILES_COPY) { GSList *l; GSList *invalid_uri_list = NULL; MN_LIST_FOREACH(l, uri_list) { const char *uri = l->data; MNMailbox *mailbox; mailbox = mn_mailbox_new_from_uri(uri); if (mailbox) { mn_mailbox_seal(mailbox); mn_mailboxes_queue_add(mn_shell->mailboxes, mailbox); g_object_unref(mailbox); } else invalid_uri_list = g_slist_append(invalid_uri_list, (gpointer) uri); } if (invalid_uri_list) { mn_show_invalid_uri_list_dialog(mn_widget_get_parent_window(GTK_WIDGET(self)), _("A paste error has occurred"), invalid_uri_list); g_slist_free(invalid_uri_list); } } mn_g_slist_free_deep(uri_list); } } gtk_selection_data_free(data); } }} #line 1014 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 418 "src/mn-mailbox-view.gob" static int mn_mailbox_view_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data) { #line 1023 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::sort_cb" { #line 423 "src/mn-mailbox-view.gob" MNMailbox *mailbox_a; MNMailbox *mailbox_b; int cmp; gtk_tree_model_get(model, a, COLUMN_MAILBOX, &mailbox_a, -1); gtk_tree_model_get(model, b, COLUMN_MAILBOX, &mailbox_b, -1); cmp = mn_mailboxes_compare_by_name_func(mailbox_a, mailbox_b); g_object_unref(mailbox_a); g_object_unref(mailbox_b); return cmp; }} #line 1042 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 439 "src/mn-mailbox-view.gob" static gboolean mn_mailbox_view_search_equal_cb (GtkTreeModel * model, int column, const char * key, GtkTreeIter * iter, gpointer search_data) { #line 1049 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::search_equal_cb" { #line 445 "src/mn-mailbox-view.gob" gboolean status = TRUE; GValue value = { 0, }; GValue transformed = { 0, }; const char *str; char *normalized_string; char *normalized_key; /* * The stock gtk_tree_view_search_equal_func() only searches the * start of the string, using strncmp(). We use strstr(), to * search anywhere inside the string. */ gtk_tree_model_get_value(model, iter, column, &value); g_value_init(&transformed, G_TYPE_STRING); if (! g_value_transform(&value, &transformed)) { g_value_unset(&value); return TRUE; } g_value_unset(&value); str = g_value_get_string(&transformed); if (! str) { g_value_unset(&transformed); return TRUE; } normalized_string = g_utf8_normalize(str, -1, G_NORMALIZE_ALL); normalized_key = g_utf8_normalize(key, -1, G_NORMALIZE_ALL); if (normalized_string && normalized_key) { char *case_normalized_string; char *case_normalized_key; case_normalized_string = g_utf8_casefold(normalized_string, -1); case_normalized_key = g_utf8_casefold(normalized_key, -1); if (strstr(case_normalized_string, case_normalized_key)) status = FALSE; g_free(case_normalized_string); g_free(case_normalized_key); } g_value_unset (&transformed); g_free(normalized_key); g_free(normalized_string); return status; }} #line 1110 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 503 "src/mn-mailbox-view.gob" static void mn_mailbox_view_append (MNMailboxView * self, MNMailbox * mailbox) { #line 1117 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::append" #line 503 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 503 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 503 "src/mn-mailbox-view.gob" g_return_if_fail (mailbox != NULL); #line 503 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 1127 "mn-mailbox-view.c" { #line 505 "src/mn-mailbox-view.gob" GtkTreeModel *model; GtkTreeIter iter; model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); gtk_list_store_append(GTK_LIST_STORE(model), &iter); self_update_iter(self, &iter, mailbox); }} #line 1138 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 514 "src/mn-mailbox-view.gob" static void mn_mailbox_view_mailbox_added_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data) { #line 1145 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_added_h" { #line 518 "src/mn-mailbox-view.gob" Self *self = user_data; if (! MN_IS_TEST_MAILBOX(mailbox)) self_append(self, mailbox); }} #line 1155 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 525 "src/mn-mailbox-view.gob" static void mn_mailbox_view_mailbox_notify_h (MNMailboxes * mailboxes, MNMailbox * mailbox, GParamSpec * pspec, gpointer user_data) { #line 1162 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_notify_h" { #line 530 "src/mn-mailbox-view.gob" Self *self = user_data; GtkTreeIter iter; if (self_find_mailbox(self, mailbox, &iter)) self_update_iter(self, &iter, mailbox); }} #line 1173 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 538 "src/mn-mailbox-view.gob" static void mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data) { #line 1180 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_removed_h" { #line 542 "src/mn-mailbox-view.gob" Self *self = user_data; GtkTreeIter iter; if (self_find_mailbox(self, mailbox, &iter)) { GtkTreeModel *model; model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); gtk_list_store_remove(GTK_LIST_STORE(model), &iter); } }} #line 1196 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 555 "src/mn-mailbox-view.gob" static void mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox * mailbox) { #line 1203 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::update_iter" #line 555 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 555 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 555 "src/mn-mailbox-view.gob" g_return_if_fail (iter != NULL); #line 555 "src/mn-mailbox-view.gob" g_return_if_fail (mailbox != NULL); #line 555 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 1215 "mn-mailbox-view.c" { #line 559 "src/mn-mailbox-view.gob" GtkTreeModel *model; char *status; const char *emblem_stock_id = NULL; GdkPixbuf *emblem = NULL; char *markup; char *text; if (mailbox->format) { if (mailbox->error) { status = g_strdup_printf(_("unhandled %s mailbox (%s)"), mailbox->format, mailbox->error); emblem_stock_id = MN_STOCK_ERROR; } else status = g_strdup_printf(_("%s mailbox"), mailbox->format); } else { if (mailbox->error) { status = g_strdup(mailbox->error); emblem_stock_id = MN_STOCK_ERROR; } else { status = g_strdup(_("detecting mailbox type...")); emblem_stock_id = GTK_STOCK_EXECUTE; } } if (emblem_stock_id) emblem = gtk_widget_render_icon(GTK_WIDGET(self), emblem_stock_id, GTK_ICON_SIZE_MENU, NULL); markup = g_markup_printf_escaped("%s\n%s", mailbox->runtime_name, status); text = g_strdup_printf("%s\n%s", mailbox->runtime_name, status); g_free(status); model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); gtk_list_store_set(GTK_LIST_STORE(model), iter, COLUMN_MAILBOX, mailbox, COLUMN_ICON, mailbox->stock_id, COLUMN_EMBLEM, emblem, COLUMN_PIXBUF, NULL, COLUMN_LABEL, markup, COLUMN_RAW_LABEL, text, -1); if (emblem) g_object_unref(emblem); g_free(markup); g_free(text); }} #line 1278 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 620 "src/mn-mailbox-view.gob" static gboolean mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTreeIter * iter) { #line 1285 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::find_mailbox" #line 620 "src/mn-mailbox-view.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 620 "src/mn-mailbox-view.gob" g_return_val_if_fail (MN_IS_MAILBOX_VIEW (self), (gboolean )0); #line 620 "src/mn-mailbox-view.gob" g_return_val_if_fail (mailbox != NULL, (gboolean )0); #line 620 "src/mn-mailbox-view.gob" g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (gboolean )0); #line 620 "src/mn-mailbox-view.gob" g_return_val_if_fail (iter != NULL, (gboolean )0); #line 1297 "mn-mailbox-view.c" { #line 624 "src/mn-mailbox-view.gob" GtkTreeModel *model; GtkTreeIter our_iter; gboolean valid; model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); MN_TREE_MODEL_FOREACH(valid, &our_iter, model) { MNMailbox *this_mailbox; gboolean is; gtk_tree_model_get(model, &our_iter, COLUMN_MAILBOX, &this_mailbox, -1); is = mailbox == this_mailbox; g_object_unref(this_mailbox); if (is) { *iter = our_iter; return TRUE; } } return FALSE; }} #line 1325 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 650 "src/mn-mailbox-view.gob" static void mn_mailbox_view_update_sensitivity (MNMailboxView * self) { #line 1332 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::update_sensitivity" #line 650 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 650 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 1338 "mn-mailbox-view.c" { #line 652 "src/mn-mailbox-view.gob" GtkTreeSelection *selection; SensitivityInfo info = { FALSE, FALSE }; GtkTreeModel *model; GtkTreeIter iter; gboolean has_mailboxes; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_selected_foreach(selection, self_update_sensitivity_cb, &info); model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); has_mailboxes = gtk_tree_model_get_iter_first(model, &iter); gtk_widget_set_sensitive(selfp->properties_item, info.has_selection); gtk_widget_set_sensitive(selfp->update_item, info.has_manually_checkable); gtk_widget_set_sensitive(selfp->remove_item, info.has_selection); gtk_widget_set_sensitive(selfp->cut_item, info.has_selection); gtk_widget_set_sensitive(selfp->copy_item, info.has_selection); gtk_widget_set_sensitive(selfp->select_all_item, has_mailboxes); }} #line 1361 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 673 "src/mn-mailbox-view.gob" static void mn_mailbox_view_update_sensitivity_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { #line 1368 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::update_sensitivity_cb" { #line 678 "src/mn-mailbox-view.gob" SensitivityInfo *info = data; info->has_selection = TRUE; if (! info->has_manually_checkable) { MNMailbox *mailbox; gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1); if (mn_mailbox_get_manually_checkable(mailbox)) info->has_manually_checkable = TRUE; g_object_unref(mailbox); } }} #line 1386 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 693 "src/mn-mailbox-view.gob" static void mn_mailbox_view_remove_mailbox (MNMailboxView * self) { #line 1393 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::remove_mailbox" #line 693 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 693 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 1399 "mn-mailbox-view.c" { #line 695 "src/mn-mailbox-view.gob" GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_selected_foreach(selection, self_remove_mailbox_cb, NULL); }} #line 1408 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 702 "src/mn-mailbox-view.gob" static void mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { #line 1415 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::remove_mailbox_cb" { #line 707 "src/mn-mailbox-view.gob" MNMailbox *mailbox; gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1); mn_mailboxes_queue_remove(mn_shell->mailboxes, mailbox); g_object_unref(mailbox); }} #line 1426 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 715 "src/mn-mailbox-view.gob" static void mn_mailbox_view_copy_mailbox (MNMailboxView * self) { #line 1433 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::copy_mailbox" #line 715 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 715 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 1439 "mn-mailbox-view.c" { #line 717 "src/mn-mailbox-view.gob" GSList *configurations = NULL; GtkTreeSelection *selection; const GtkTargetEntry targets[] = { { clipboard_info[TARGET_MAILBOXES].name, 0, TARGET_MAILBOXES } }; gboolean status; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_selected_foreach(selection, self_copy_mailbox_cb, &configurations); status = gtk_clipboard_set_with_data(global_clipboard, targets, G_N_ELEMENTS(targets), self_get_clipboard_cb, self_clear_clipboard_cb, configurations); g_assert(status == TRUE); }} #line 1461 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 737 "src/mn-mailbox-view.gob" static void mn_mailbox_view_copy_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) { #line 1468 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::copy_mailbox_cb" { #line 742 "src/mn-mailbox-view.gob" GSList **configurations = data; MNMailbox *mailbox; /* * Note that the MNMailboxConfiguration object returned by * mn_mailbox_get_configuration() does not include the keyring * password. This is not a problem unless the user copies a * mailbox, removes the password from the keyring and then pastes * the mailbox: the pasted mailbox will have no password. * * Including the password in MNMailboxConfiguration would require * to cope with the fact that gnome-keyring requests can block the * UI. It's really not worth the effort. */ gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1); *configurations = g_slist_append(*configurations, mn_mailbox_get_configuration(mailbox)); g_object_unref(mailbox); }} #line 1492 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 763 "src/mn-mailbox-view.gob" static void mn_mailbox_view_get_clipboard_cb (GtkClipboard * clipboard, GtkSelectionData * selection_data, unsigned int info, gpointer user_data_or_owner) { #line 1499 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::get_clipboard_cb" { #line 768 "src/mn-mailbox-view.gob" GSList *configurations = user_data_or_owner; g_assert(info == TARGET_MAILBOXES); gtk_selection_data_set(selection_data, clipboard_info[info].atom, 8, (unsigned char *) &configurations, sizeof(configurations)); }} #line 1514 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 780 "src/mn-mailbox-view.gob" static void mn_mailbox_view_clear_clipboard_cb (GtkClipboard * clipboard, gpointer user_data_or_owner) { #line 1521 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::clear_clipboard_cb" { #line 782 "src/mn-mailbox-view.gob" GSList *configurations = user_data_or_owner; mn_g_slist_free_deep_custom(configurations, (GFunc) mn_mailbox_configuration_free, NULL); }} #line 1530 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 788 "src/mn-mailbox-view.gob" static void mn_mailbox_view_select_all (MNMailboxView * self) { #line 1537 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::select_all" #line 788 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 788 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 1543 "mn-mailbox-view.c" { #line 790 "src/mn-mailbox-view.gob" GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_select_all(selection); }} #line 1552 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 797 "src/mn-mailbox-view.gob" static void mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpointer user_data) { #line 1559 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::properties_add_response_h" { #line 801 "src/mn-mailbox-view.gob" switch (response) { case GTK_RESPONSE_CANCEL: gtk_widget_destroy(GTK_WIDGET(dialog)); break; case GTK_RESPONSE_ACCEPT: { MNMailbox *mailbox; mailbox = mn_mailbox_properties_dialog_get_current_mailbox(MN_MAILBOX_PROPERTIES_DIALOG(dialog)); g_assert(MN_IS_MAILBOX(mailbox)); mn_mailbox_seal(mailbox); mn_mailboxes_add(mn_shell->mailboxes, mailbox); g_object_unref(mailbox); gtk_widget_destroy(GTK_WIDGET(dialog)); } break; } }} #line 1586 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 825 "src/mn-mailbox-view.gob" static void mn_mailbox_view_properties_edit_response_h (GtkDialog * dialog, int response, gpointer user_data) { #line 1593 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::properties_edit_response_h" { #line 829 "src/mn-mailbox-view.gob" switch (response) { case GTK_RESPONSE_APPLY: mn_mailbox_properties_dialog_apply(MN_MAILBOX_PROPERTIES_DIALOG(dialog)); break; case GTK_RESPONSE_CANCEL: mn_mailbox_properties_dialog_cancel(MN_MAILBOX_PROPERTIES_DIALOG(dialog)); gtk_widget_destroy(GTK_WIDGET(dialog)); break; case GTK_RESPONSE_OK: mn_mailbox_properties_dialog_apply(MN_MAILBOX_PROPERTIES_DIALOG(dialog)); gtk_widget_destroy(GTK_WIDGET(dialog)); break; } }} #line 1615 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 848 "src/mn-mailbox-view.gob" static void mn_mailbox_view_popup_menu (MNMailboxView * self, unsigned int button, guint32 activate_time) { #line 1622 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu" #line 848 "src/mn-mailbox-view.gob" g_return_if_fail (self != NULL); #line 848 "src/mn-mailbox-view.gob" g_return_if_fail (MN_IS_MAILBOX_VIEW (self)); #line 1628 "mn-mailbox-view.c" { #line 850 "src/mn-mailbox-view.gob" Self **self_box; gtk_widget_set_sensitive(selfp->paste_item, FALSE); /* do not crash if self is finalized before the request completes */ self_box = g_new(Self *, 1); *self_box = self; mn_add_weak_pointer(self_box); gtk_clipboard_request_targets(global_clipboard, self_popup_menu_targets_received_cb, self_box); gtk_menu_popup(GTK_MENU(selfp->menu), NULL, NULL, NULL, NULL, button, activate_time); }} #line 1645 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 865 "src/mn-mailbox-view.gob" static gboolean mn_mailbox_view_can_paste (GdkAtom * atoms, int n_atoms) { #line 1652 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::can_paste" { #line 867 "src/mn-mailbox-view.gob" int i; for (i = 0; i < n_atoms; i++) if (atoms[i] == clipboard_info[TARGET_MAILBOXES].atom || atoms[i] == clipboard_info[TARGET_GNOME_COPIED_FILES].atom) return TRUE; return FALSE; }} #line 1666 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 878 "src/mn-mailbox-view.gob" static void mn_mailbox_view_popup_menu_targets_received_cb (GtkClipboard * clipboard, GdkAtom * atoms, int n_atoms, gpointer data) { #line 1673 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu_targets_received_cb" { #line 883 "src/mn-mailbox-view.gob" Self **self_box = data; Self *self = *self_box; if (self) { if (atoms) gtk_widget_set_sensitive(selfp->paste_item, self_can_paste(atoms, n_atoms)); mn_remove_weak_pointer(self_box); } g_free(self_box); }} #line 1691 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 898 "src/mn-mailbox-view.gob" static gboolean mn_mailbox_view_popup_menu_h (GtkWidget * widget, gpointer user_data) { #line 1698 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu_h" { #line 900 "src/mn-mailbox-view.gob" Self *self = SELF(widget); self_popup_menu(self, 0, gtk_get_current_event_time()); gtk_menu_shell_select_first(GTK_MENU_SHELL(selfp->menu), FALSE); return TRUE; /* a menu was activated */ }} #line 1710 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 909 "src/mn-mailbox-view.gob" static gboolean mn_mailbox_view_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data) { #line 1717 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::button_press_event_h" { #line 913 "src/mn-mailbox-view.gob" if (event->button == 3) self_popup_menu(SELF(widget), event->button, event->time); return FALSE; /* propagate event */ }} #line 1727 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 920 "src/mn-mailbox-view.gob" static void mn_mailbox_view_row_activated_h (GtkTreeView * treeview, GtkTreePath * path, GtkTreeViewColumn * column, gpointer user_data) { #line 1734 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::row_activated_h" { #line 925 "src/mn-mailbox-view.gob" self_activate_properties(SELF(treeview)); }} #line 1741 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ #line 929 "src/mn-mailbox-view.gob" GtkWidget * mn_mailbox_view_new (void) { #line 1748 "mn-mailbox-view.c" #define __GOB_FUNCTION__ "MN:Mailbox:View::new" { #line 931 "src/mn-mailbox-view.gob" g_return_val_if_fail(mn_shell != NULL, NULL); return GTK_WIDGET(GET_NEW); }} #line 1756 "mn-mailbox-view.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-evolution-mailbox-properties-private.h0000644000175000001440000000130011015312647027633 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_EVOLUTION_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_EVOLUTION_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-evolution-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 24 "src/mn-evolution-mailbox-properties.gob" #include "mn-evolution-client.h" #line 18 "mn-evolution-mailbox-properties-private.h" struct _MNEvolutionMailboxPropertiesPrivate { #line 41 "src/mn-evolution-mailbox-properties.gob" GtkWidget * tree; #line 43 "src/mn-evolution-mailbox-properties.gob" char * name; #line 24 "mn-evolution-mailbox-properties-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-sylpheed-mailbox-backend.gob.stamp0000644000175000001440000000000011015312646026605 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-mailboxes.c0000644000175000001440000014044211015312644022302 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-mailboxes.h" #include "mn-mailboxes-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-mailboxes.gob" #include #include #include #include #include #include #include #include #include #include "mn-conf.h" #include "mn-message.h" #include "mn-mailbox-private.h" #include "mn-test-mailbox.h" #include "mn-shell.h" #include "mn-util.h" #line 44 "mn-mailboxes.c" /* self casting macros */ #define SELF(x) MN_MAILBOXES(x) #define SELF_CONST(x) MN_MAILBOXES_CONST(x) #define IS_SELF(x) MN_IS_MAILBOXES(x) #define TYPE_SELF MN_TYPE_MAILBOXES #define SELF_CLASS(x) MN_MAILBOXES_CLASS(x) #define SELF_GET_CLASS(x) MN_MAILBOXES_GET_CLASS(x) /* self typedefs */ typedef MNMailboxes Self; typedef MNMailboxesClass SelfClass; /* here are local prototypes */ static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-mailboxes.gob" static void mn_mailboxes_class_init (MNMailboxesClass * c); #line 62 "mn-mailboxes.c" static void ___real_mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox); #line 70 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox); #line 66 "mn-mailboxes.c" static void ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox); #line 87 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox); #line 70 "mn-mailboxes.c" #line 101 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_notify (MNMailboxes * self, MNMailbox * mailbox, GParamSpec * pspec) G_GNUC_UNUSED; #line 73 "mn-mailboxes.c" static void ___real_mn_mailboxes_list_changed (MNMailboxes * self); #line 114 "src/mn-mailboxes.gob" static void mn_mailboxes_list_changed (MNMailboxes * self); #line 77 "mn-mailboxes.c" static void ___real_mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new); #line 135 "src/mn-mailboxes.gob" static void mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new); #line 81 "mn-mailboxes.c" #line 155 "src/mn-mailboxes.gob" static void mn_mailboxes_messages_changed_cb (const char * id, MNMessage * message, Self * self); #line 84 "mn-mailboxes.c" #line 164 "src/mn-mailboxes.gob" static int mn_mailboxes_messages_sort_cb (MNMessage ** a, MNMessage ** b); #line 87 "mn-mailboxes.c" #line 180 "src/mn-mailboxes.gob" static void mn_mailboxes_error_changed (MNMailboxes * self); #line 90 "mn-mailboxes.c" #line 203 "src/mn-mailboxes.gob" static void mn_mailboxes_init (MNMailboxes * self); #line 93 "mn-mailboxes.c" #line 258 "src/mn-mailboxes.gob" static void mn_mailboxes_finalize (MNMailboxes * self); #line 96 "mn-mailboxes.c" #line 276 "src/mn-mailboxes.gob" static void mn_mailboxes_connect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox); #line 99 "mn-mailboxes.c" #line 287 "src/mn-mailboxes.gob" static void mn_mailboxes_disconnect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox); #line 102 "mn-mailboxes.c" #line 298 "src/mn-mailboxes.gob" static void mn_mailboxes_load (MNMailboxes * self); #line 105 "mn-mailboxes.c" #line 314 "src/mn-mailboxes.gob" static void mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, ...) G_GNUC_PRINTF(3, 4); #line 108 "mn-mailboxes.c" #line 334 "src/mn-mailboxes.gob" static gboolean mn_mailboxes_load_real (MNMailboxes * self, GError ** err); #line 111 "mn-mailboxes.c" #line 419 "src/mn-mailboxes.gob" static void mn_mailboxes_save (MNMailboxes * self); #line 114 "mn-mailboxes.c" #line 431 "src/mn-mailboxes.gob" static gboolean mn_mailboxes_save_real (MNMailboxes * self, GError ** err); #line 117 "mn-mailboxes.c" #line 545 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data); #line 120 "mn-mailboxes.c" #line 561 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_notify_h (GObject * object, GParamSpec * pspec, gpointer user_data); #line 123 "mn-mailboxes.c" #line 572 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data); #line 126 "mn-mailboxes.c" #line 586 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_notify_manually_checkable_h (GObject * object, GParamSpec * pspec, gpointer user_data); #line 129 "mn-mailboxes.c" #line 611 "src/mn-mailboxes.gob" static void mn_mailboxes_add_real (MNMailboxes * self, MNMailbox * mailbox); #line 132 "mn-mailboxes.c" #line 639 "src/mn-mailboxes.gob" static void mn_mailboxes_remove_real (MNMailboxes * self, MNMailbox * mailbox); #line 135 "mn-mailboxes.c" #line 666 "src/mn-mailboxes.gob" static gboolean mn_mailboxes_queue_idle_cb (gpointer data); #line 138 "mn-mailboxes.c" /* * Signal connection wrapper macro shortcuts */ #define self_connect__mailbox_added(object,func,data) mn_mailboxes_connect__mailbox_added((object),(func),(data)) #define self_connect_after__mailbox_added(object,func,data) mn_mailboxes_connect_after__mailbox_added((object),(func),(data)) #define self_connect_data__mailbox_added(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__mailbox_added((object),(func),(data),(destroy_data),(flags)) #define self_connect__mailbox_removed(object,func,data) mn_mailboxes_connect__mailbox_removed((object),(func),(data)) #define self_connect_after__mailbox_removed(object,func,data) mn_mailboxes_connect_after__mailbox_removed((object),(func),(data)) #define self_connect_data__mailbox_removed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__mailbox_removed((object),(func),(data),(destroy_data),(flags)) #define self_connect__mailbox_notify(object,func,data) mn_mailboxes_connect__mailbox_notify((object),(func),(data)) #define self_connect_after__mailbox_notify(object,func,data) mn_mailboxes_connect_after__mailbox_notify((object),(func),(data)) #define self_connect_data__mailbox_notify(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__mailbox_notify((object),(func),(data),(destroy_data),(flags)) #define self_connect__list_changed(object,func,data) mn_mailboxes_connect__list_changed((object),(func),(data)) #define self_connect_after__list_changed(object,func,data) mn_mailboxes_connect_after__list_changed((object),(func),(data)) #define self_connect_data__list_changed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__list_changed((object),(func),(data),(destroy_data),(flags)) #define self_connect__messages_changed(object,func,data) mn_mailboxes_connect__messages_changed((object),(func),(data)) #define self_connect_after__messages_changed(object,func,data) mn_mailboxes_connect_after__messages_changed((object),(func),(data)) #define self_connect_data__messages_changed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__messages_changed((object),(func),(data),(destroy_data),(flags)) #define self_connect__error_changed(object,func,data) mn_mailboxes_connect__error_changed((object),(func),(data)) #define self_connect_after__error_changed(object,func,data) mn_mailboxes_connect_after__error_changed((object),(func),(data)) #define self_connect_data__error_changed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__error_changed((object),(func),(data),(destroy_data),(flags)) typedef void (*___Sig1) (MNMailboxes *, GObject *, gpointer); static void ___marshal_Sig1 (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { register ___Sig1 callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 2); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (___Sig1) (marshal_data != NULL ? marshal_data : cc->callback); callback ((MNMailboxes *)data1, (GObject *) g_value_get_object (param_values + 1), data2); } typedef void (*___Sig2) (MNMailboxes *, GObject *, gpointer , gpointer); static void ___marshal_Sig2 (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { register ___Sig2 callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (___Sig2) (marshal_data != NULL ? marshal_data : cc->callback); callback ((MNMailboxes *)data1, (GObject *) g_value_get_object (param_values + 1), (gpointer ) g_value_get_pointer (param_values + 2), data2); } typedef void (*___Sig3) (MNMailboxes *, gboolean , gpointer); static void ___marshal_Sig3 (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { register ___Sig3 callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 2); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (___Sig3) (marshal_data != NULL ? marshal_data : cc->callback); callback ((MNMailboxes *)data1, (gboolean ) g_value_get_boolean (param_values + 1), data2); } enum { MAILBOX_ADDED_SIGNAL, MAILBOX_REMOVED_SIGNAL, MAILBOX_NOTIFY_SIGNAL, LIST_CHANGED_SIGNAL, MESSAGES_CHANGED_SIGNAL, ERROR_CHANGED_SIGNAL, LAST_SIGNAL }; enum { PROP_0, PROP_MANUALLY_CHECKABLE }; static guint object_signals[LAST_SIGNAL] = {0}; /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_mailbox_added mn_mailboxes_mailbox_added #define self_mailbox_removed mn_mailboxes_mailbox_removed #define self_mailbox_notify mn_mailboxes_mailbox_notify #define self_list_changed mn_mailboxes_list_changed #define self_messages_changed mn_mailboxes_messages_changed #define self_messages_changed_cb mn_mailboxes_messages_changed_cb #define self_messages_sort_cb mn_mailboxes_messages_sort_cb #define self_error_changed mn_mailboxes_error_changed #define self_get_manually_checkable mn_mailboxes_get_manually_checkable #define self_connect_mailbox_signals mn_mailboxes_connect_mailbox_signals #define self_disconnect_mailbox_signals mn_mailboxes_disconnect_mailbox_signals #define self_load mn_mailboxes_load #define self_add_error mn_mailboxes_add_error #define self_load_real mn_mailboxes_load_real #define self_save mn_mailboxes_save #define self_save_real mn_mailboxes_save_real #define self_mailbox_messages_changed_h mn_mailboxes_mailbox_messages_changed_h #define self_mailbox_notify_h mn_mailboxes_mailbox_notify_h #define self_mailbox_notify_error_h mn_mailboxes_mailbox_notify_error_h #define self_mailbox_notify_manually_checkable_h mn_mailboxes_mailbox_notify_manually_checkable_h #define self_check mn_mailboxes_check #define self_add_real mn_mailboxes_add_real #define self_add mn_mailboxes_add #define self_queue_add mn_mailboxes_queue_add #define self_remove_real mn_mailboxes_remove_real #define self_remove mn_mailboxes_remove #define self_queue_remove mn_mailboxes_queue_remove #define self_queue_idle_cb mn_mailboxes_queue_idle_cb #define self_compare_by_name_func mn_mailboxes_compare_by_name_func #define self_new mn_mailboxes_new GType mn_mailboxes_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMailboxesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_mailboxes_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMailboxes), 0 /* n_preallocs */, (GInstanceInitFunc) mn_mailboxes_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNMailboxes", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMailboxes *)g_object_new(mn_mailboxes_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMailboxes * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMailboxes * GET_NEW_VARG (const char *first, ...) { MNMailboxes *ret; va_list ap; va_start (ap, first); ret = (MNMailboxes *)g_object_new_valist (mn_mailboxes_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Mailboxes::finalize" MNMailboxes *self G_GNUC_UNUSED = MN_MAILBOXES (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 258 "src/mn-mailboxes.gob" mn_mailboxes_finalize (self); #line 361 "mn-mailboxes.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 47 "src/mn-mailboxes.gob" if(self->messages) { mn_g_object_ptr_array_free ((gpointer) self->messages); self->messages = NULL; } #line 366 "mn-mailboxes.c" #line 50 "src/mn-mailboxes.gob" if(self->messages_hash_table) { g_hash_table_destroy ((gpointer) self->messages_hash_table); self->messages_hash_table = NULL; } #line 369 "mn-mailboxes.c" #line 52 "src/mn-mailboxes.gob" if(self->_priv->add_queue) { mn_g_object_slist_free ((gpointer) self->_priv->add_queue); self->_priv->add_queue = NULL; } #line 372 "mn-mailboxes.c" #line 53 "src/mn-mailboxes.gob" if(self->_priv->remove_queue) { mn_g_object_slist_free ((gpointer) self->_priv->remove_queue); self->_priv->remove_queue = NULL; } #line 375 "mn-mailboxes.c" } #undef __GOB_FUNCTION__ static void mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Mailboxes::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNMailboxesPrivate)); parent_class = g_type_class_ref (G_TYPE_OBJECT); object_signals[MAILBOX_ADDED_SIGNAL] = g_signal_new ("mailbox_added", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_FIRST), G_STRUCT_OFFSET (MNMailboxesClass, mailbox_added), NULL, NULL, ___marshal_Sig1, G_TYPE_NONE, 1, G_TYPE_OBJECT); if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || parent_class == NULL /* avoid warning */) { g_error("src/mn-mailboxes.gob line 70: Type mismatch of \"mailbox_added\" signal signature"); } object_signals[MAILBOX_REMOVED_SIGNAL] = g_signal_new ("mailbox_removed", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_FIRST), G_STRUCT_OFFSET (MNMailboxesClass, mailbox_removed), NULL, NULL, ___marshal_Sig1, G_TYPE_NONE, 1, G_TYPE_OBJECT); if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || parent_class == NULL /* avoid warning */) { g_error("src/mn-mailboxes.gob line 87: Type mismatch of \"mailbox_removed\" signal signature"); } object_signals[MAILBOX_NOTIFY_SIGNAL] = g_signal_new ("mailbox_notify", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED), G_STRUCT_OFFSET (MNMailboxesClass, mailbox_notify), NULL, NULL, ___marshal_Sig2, G_TYPE_NONE, 2, G_TYPE_OBJECT, G_TYPE_POINTER); if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || sizeof(GParamSpec * ) != sizeof(gpointer ) || parent_class == NULL /* avoid warning */) { g_error("src/mn-mailboxes.gob line 101: Type mismatch of \"mailbox_notify\" signal signature"); } object_signals[LIST_CHANGED_SIGNAL] = g_signal_new ("list_changed", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_FIRST), G_STRUCT_OFFSET (MNMailboxesClass, list_changed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_signals[MESSAGES_CHANGED_SIGNAL] = g_signal_new ("messages_changed", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_FIRST), G_STRUCT_OFFSET (MNMailboxesClass, messages_changed), NULL, NULL, ___marshal_Sig3, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); if ___GOB_UNLIKELY(sizeof(gboolean ) != sizeof(gboolean ) || parent_class == NULL /* avoid warning */) { g_error("src/mn-mailboxes.gob line 135: Type mismatch of \"messages_changed\" signal signature"); } object_signals[ERROR_CHANGED_SIGNAL] = g_signal_new ("error_changed", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST), G_STRUCT_OFFSET (MNMailboxesClass, error_changed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); #line 70 "src/mn-mailboxes.gob" c->mailbox_added = ___real_mn_mailboxes_mailbox_added; #line 87 "src/mn-mailboxes.gob" c->mailbox_removed = ___real_mn_mailboxes_mailbox_removed; #line 459 "mn-mailboxes.c" c->mailbox_notify = NULL; #line 114 "src/mn-mailboxes.gob" c->list_changed = ___real_mn_mailboxes_list_changed; #line 135 "src/mn-mailboxes.gob" c->messages_changed = ___real_mn_mailboxes_messages_changed; #line 465 "mn-mailboxes.c" c->error_changed = NULL; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; { GParamSpec *param_spec; param_spec = g_param_spec_boolean ("manually_checkable" /* name */, NULL /* nick */, NULL /* blurb */, FALSE /* default_value */, (GParamFlags)(G_PARAM_READABLE)); g_object_class_install_property (g_object_class, PROP_MANUALLY_CHECKABLE, param_spec); } } #undef __GOB_FUNCTION__ #line 203 "src/mn-mailboxes.gob" static void mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED) { #line 488 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAILBOXES,MNMailboxesPrivate); #line 47 "src/mn-mailboxes.gob" self->messages = g_ptr_array_new(); #line 493 "mn-mailboxes.c" #line 50 "src/mn-mailboxes.gob" self->messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal); #line 496 "mn-mailboxes.c" { #line 204 "src/mn-mailboxes.gob" char *filename; gboolean exists; mn_shell->mailboxes = self; filename = g_build_filename(mn_conf_dot_dir, "mailboxes.xml", NULL); exists = g_file_test(filename, G_FILE_TEST_EXISTS); g_free(filename); if (exists) self_load(self); else if (mn_conf_is_set(MN_CONF_OBSOLETE_MAILBOXES)) { GSList *gconf_mailboxes; GSList *l; GSList *invalid_uri_list = NULL; gboolean list_changed = FALSE; gconf_mailboxes = mn_conf_get_string_list(MN_CONF_OBSOLETE_MAILBOXES); MN_LIST_FOREACH(l, gconf_mailboxes) { const char *uri = l->data; MNMailbox *mailbox; mailbox = mn_mailbox_new_from_obsolete_uri(uri); if (mailbox) { mn_mailbox_seal(mailbox); self_add_real(self, mailbox); g_object_unref(mailbox); list_changed = TRUE; } else invalid_uri_list = g_slist_append(invalid_uri_list, (gpointer) uri); } if (list_changed) { self_list_changed(self); self_save(self); /* save the imported mailboxes */ } if (invalid_uri_list) { mn_show_invalid_uri_list_dialog(NULL, _("An error has occurred while importing old mailboxes"), invalid_uri_list); g_slist_free(invalid_uri_list); } mn_g_slist_free_deep(gconf_mailboxes); } #line 552 "mn-mailboxes.c" } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Mailboxes::get_property" { MNMailboxes *self G_GNUC_UNUSED; self = MN_MAILBOXES (object); switch (property_id) { case PROP_MANUALLY_CHECKABLE: { #line 185 "src/mn-mailboxes.gob" GList *l; gboolean value = FALSE; MN_LIST_FOREACH(l, self->list) { MNMailbox *mailbox = l->data; if (mn_mailbox_get_manually_checkable(mailbox)) { value = TRUE; break; } } g_value_set_boolean(VAL, value); #line 589 "mn-mailboxes.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 70 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox) { #line 609 "mn-mailboxes.c" GValue ___param_values[2]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 70 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 70 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 70 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 70 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 624 "mn-mailboxes.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); ___param_values[1].g_type = 0; g_value_init (&___param_values[1], G_TYPE_OBJECT); g_value_set_object (&___param_values[1], (GObject *) mailbox); g_signal_emitv (___param_values, object_signals[MAILBOX_ADDED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); g_value_unset (&___param_values[1]); } #line 70 "src/mn-mailboxes.gob" static void ___real_mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox) { #line 646 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_added" { #line 72 "src/mn-mailboxes.gob" self_connect_mailbox_signals(self, mailbox); /* emit the "added" signal on the mailbox */ mn_mailbox_added(mailbox); }} #line 656 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 87 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox) { #line 663 "mn-mailboxes.c" GValue ___param_values[2]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 87 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 87 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 87 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 87 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 678 "mn-mailboxes.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); ___param_values[1].g_type = 0; g_value_init (&___param_values[1], G_TYPE_OBJECT); g_value_set_object (&___param_values[1], (GObject *) mailbox); g_signal_emitv (___param_values, object_signals[MAILBOX_REMOVED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); g_value_unset (&___param_values[1]); } #line 87 "src/mn-mailboxes.gob" static void ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox) { #line 700 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_removed" { #line 89 "src/mn-mailboxes.gob" self_disconnect_mailbox_signals(self, mailbox); /* emit the "removed" signal on the mailbox */ mn_mailbox_removed(mailbox); /* messages and error have possibly changed */ self_messages_changed(self, FALSE); self_error_changed(self); }} #line 714 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 101 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_notify (MNMailboxes * self, MNMailbox * mailbox, GParamSpec * pspec) { #line 721 "mn-mailboxes.c" GValue ___param_values[3]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 101 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 101 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 101 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 101 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 101 "src/mn-mailboxes.gob" g_return_if_fail (pspec != NULL); #line 738 "mn-mailboxes.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); ___param_values[1].g_type = 0; g_value_init (&___param_values[1], G_TYPE_OBJECT); g_value_set_object (&___param_values[1], (GObject *) mailbox); ___param_values[2].g_type = 0; g_value_init (&___param_values[2], G_TYPE_POINTER); g_value_set_pointer (&___param_values[2], (gpointer ) pspec); g_signal_emitv (___param_values, object_signals[MAILBOX_NOTIFY_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); g_value_unset (&___param_values[1]); g_value_unset (&___param_values[2]); } #line 114 "src/mn-mailboxes.gob" static void mn_mailboxes_list_changed (MNMailboxes * self) { #line 766 "mn-mailboxes.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 114 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 114 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 777 "mn-mailboxes.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[LIST_CHANGED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 114 "src/mn-mailboxes.gob" static void ___real_mn_mailboxes_list_changed (MNMailboxes * self) { #line 794 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::list_changed" { #line 116 "src/mn-mailboxes.gob" /* manually-checkable has possibly changed */ g_object_notify(G_OBJECT(self), "manually-checkable"); }} #line 802 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 135 "src/mn-mailboxes.gob" static void mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new) { #line 809 "mn-mailboxes.c" GValue ___param_values[2]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 135 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 135 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 820 "mn-mailboxes.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); ___param_values[1].g_type = 0; g_value_init (&___param_values[1], G_TYPE_BOOLEAN); g_value_set_boolean (&___param_values[1], (gboolean ) has_new); g_signal_emitv (___param_values, object_signals[MESSAGES_CHANGED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); g_value_unset (&___param_values[1]); } #line 135 "src/mn-mailboxes.gob" static void ___real_mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new) { #line 842 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::messages_changed" { #line 137 "src/mn-mailboxes.gob" GList *l; mn_g_object_ptr_array_free(self->messages); self->messages = g_ptr_array_new(); g_hash_table_remove_all(self->messages_hash_table); MN_LIST_FOREACH(l, self->list) { MNMailbox *mailbox = l->data; g_hash_table_foreach(mailbox->messages, (GHFunc) self_messages_changed_cb, self); } g_ptr_array_sort(self->messages, (GCompareFunc) self_messages_sort_cb); }} #line 863 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 155 "src/mn-mailboxes.gob" static void mn_mailboxes_messages_changed_cb (const char * id, MNMessage * message, Self * self) { #line 870 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::messages_changed_cb" { #line 159 "src/mn-mailboxes.gob" g_ptr_array_add(self->messages, g_object_ref(message)); g_hash_table_insert(self->messages_hash_table, message->id, message); }} #line 878 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 164 "src/mn-mailboxes.gob" static int mn_mailboxes_messages_sort_cb (MNMessage ** a, MNMessage ** b) { #line 885 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::messages_sort_cb" { #line 166 "src/mn-mailboxes.gob" /* sort by sent time in descending order */ return (*b)->sent_time - (*a)->sent_time; }} #line 893 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 180 "src/mn-mailboxes.gob" static void mn_mailboxes_error_changed (MNMailboxes * self) { #line 900 "mn-mailboxes.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 180 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 180 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 911 "mn-mailboxes.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[ERROR_CHANGED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 185 "src/mn-mailboxes.gob" gboolean mn_mailboxes_get_manually_checkable (MNMailboxes * self) { #line 929 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::get_manually_checkable" { #line 183 "src/mn-mailboxes.gob" gboolean val; g_object_get (G_OBJECT (self), "manually_checkable", &val, NULL); return val; }} #line 935 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 258 "src/mn-mailboxes.gob" static void mn_mailboxes_finalize (MNMailboxes * self) { #line 943 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::finalize" { #line 259 "src/mn-mailboxes.gob" GList *l; /* * We need to disconnect the mailbox signals because on exit, a * mailbox can survive the MNMailboxes object (if a check thread * is running). */ MN_LIST_FOREACH(l, self->list) self_disconnect_mailbox_signals(self, l->data); mn_g_object_list_free(self->list); if (selfp->queue_idle_id) g_source_remove(selfp->queue_idle_id); }} #line 963 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 276 "src/mn-mailboxes.gob" static void mn_mailboxes_connect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox) { #line 970 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::connect_mailbox_signals" #line 276 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 276 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 276 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 276 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 980 "mn-mailboxes.c" { #line 278 "src/mn-mailboxes.gob" g_object_connect(mailbox, "signal::messages-changed", self_mailbox_messages_changed_h, self, "signal::notify", self_mailbox_notify_h, self, "signal::notify::error", self_mailbox_notify_error_h, self, "signal::notify::manually-checkable", self_mailbox_notify_manually_checkable_h, self, NULL); }} #line 991 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 287 "src/mn-mailboxes.gob" static void mn_mailboxes_disconnect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox) { #line 998 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::disconnect_mailbox_signals" #line 287 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 287 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 287 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 287 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 1008 "mn-mailboxes.c" { #line 289 "src/mn-mailboxes.gob" g_object_disconnect(mailbox, "any-signal", self_mailbox_messages_changed_h, self, "any-signal", self_mailbox_notify_h, self, "any-signal", self_mailbox_notify_error_h, self, "any-signal", self_mailbox_notify_manually_checkable_h, self, NULL); }} #line 1019 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 298 "src/mn-mailboxes.gob" static void mn_mailboxes_load (MNMailboxes * self) { #line 1026 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::load" #line 298 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 298 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 1032 "mn-mailboxes.c" { #line 300 "src/mn-mailboxes.gob" GError *err = NULL; if (! self_load_real(self, &err)) { mn_show_error_dialog(NULL, _("Unable to load the mailboxes configuration"), "%s", err->message); g_error_free(err); } if (self->must_save_after_load) self_save(self); }} #line 1047 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 314 "src/mn-mailboxes.gob" static void mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, ...) { #line 1054 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::add_error" #line 314 "src/mn-mailboxes.gob" g_return_if_fail (errors != NULL); #line 314 "src/mn-mailboxes.gob" g_return_if_fail (n_errors != NULL); #line 1060 "mn-mailboxes.c" { #line 319 "src/mn-mailboxes.gob" char *message; if (*errors) g_string_append_c(*errors, '\n'); else *errors = g_string_new(NULL); MN_STRDUP_VPRINTF(message, format); g_string_append(*errors, message); g_free(message); (*n_errors)++; }} #line 1077 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 334 "src/mn-mailboxes.gob" static gboolean mn_mailboxes_load_real (MNMailboxes * self, GError ** err) { #line 1084 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::load_real" #line 334 "src/mn-mailboxes.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 334 "src/mn-mailboxes.gob" g_return_val_if_fail (MN_IS_MAILBOXES (self), (gboolean )0); #line 1090 "mn-mailboxes.c" { #line 336 "src/mn-mailboxes.gob" char *filename; xmlDoc *doc; xmlNode *root; xmlNode *node; gboolean list_changed = FALSE; gboolean status = TRUE; GString *errors = NULL; int n_errors = 0; filename = g_build_filename(mn_conf_dot_dir, "mailboxes.xml", NULL); doc = xmlParseFile(filename); g_free(filename); if (! doc) { g_set_error(err, 0, 0, _("Unable to parse the XML document.")); return FALSE; } root = xmlDocGetRootElement(doc); if (! root) { g_set_error(err, 0, 0, _("The root element is missing.")); goto error; } if (strcmp(root->name, "mailboxes")) { g_set_error(err, 0, 0, _("The root element \"%s\" is invalid."), root->name); goto error; } for (node = root->children; node; node = node->next) if (node->type == XML_ELEMENT_NODE) { if (! strcmp(node->name, "mailbox")) { MNMailbox *mailbox; GError *tmp_err = NULL; mailbox = mn_mailbox_new_from_xml_node(node, &tmp_err); if (mailbox) { mn_mailbox_seal(mailbox); self_add_real(self, mailbox); g_object_unref(mailbox); list_changed = TRUE; } else { self_add_error(&errors, &n_errors, _("On line %i: %s."), node->line, tmp_err->message); g_error_free(tmp_err); } } else self_add_error(&errors, &n_errors, _("On line %i: unknown element \"%s\"."), node->line, node->name); } if (list_changed) self_list_changed(self); if (errors) { mn_show_error_dialog(NULL, ngettext("An error has occurred while loading the mailboxes configuration", "Errors have occurred while loading the mailboxes configuration", n_errors), "%s", errors->str); g_string_free(errors, TRUE); } goto end; error: status = FALSE; end: xmlFreeDoc(doc); return status; }} #line 1175 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 419 "src/mn-mailboxes.gob" static void mn_mailboxes_save (MNMailboxes * self) { #line 1182 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::save" #line 419 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 419 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 1188 "mn-mailboxes.c" { #line 421 "src/mn-mailboxes.gob" GError *err = NULL; if (! self_save_real(self, &err)) { mn_show_error_dialog(NULL, _("Unable to save the mailboxes configuration"), "%s", err->message); g_error_free(err); } }} #line 1200 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 431 "src/mn-mailboxes.gob" static gboolean mn_mailboxes_save_real (MNMailboxes * self, GError ** err) { #line 1207 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::save_real" #line 431 "src/mn-mailboxes.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 431 "src/mn-mailboxes.gob" g_return_val_if_fail (MN_IS_MAILBOXES (self), (gboolean )0); #line 1213 "mn-mailboxes.c" { #line 433 "src/mn-mailboxes.gob" int indent; xmlDoc *doc; xmlNode *root; GList *l; char *filename; char *tmp_filename; char *old_filename; int fd = -1; FILE *f = NULL; gboolean old_exists; gboolean status = TRUE; indent = xmlIndentTreeOutput; xmlIndentTreeOutput = 1; doc = xmlNewDoc("1.0"); root = xmlNewNode(NULL, "mailboxes"); xmlDocSetRootElement(doc, root); MN_LIST_FOREACH(l, self->list) { MNMailbox *mailbox = l->data; xmlNode *node; if (! MN_IS_TEST_MAILBOX(mailbox)) { node = mn_mailbox_xml_node_new(mailbox); xmlAddChild(root, node); /* owns node */ } } filename = g_build_filename(mn_conf_dot_dir, "mailboxes.xml", NULL); tmp_filename = g_strconcat(filename, ".tmp", NULL); old_filename = g_strconcat(filename, ".old", NULL); if (g_file_test(tmp_filename, G_FILE_TEST_EXISTS) && unlink(tmp_filename) < 0) { g_set_error(err, 0, 0, _("Unable to remove %s: %s."), tmp_filename, g_strerror(errno)); goto error; } /* the file may contain passwords; restrict permissions (600) */ fd = open(tmp_filename, O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); if (fd < 0) { g_set_error(err, 0, 0, _("Unable to create %s: %s."), tmp_filename, g_strerror(errno)); goto error; } f = fdopen(fd, "w"); if (! f) { g_set_error(err, 0, 0, _("Unable to open %s for writing: %s."), tmp_filename, g_strerror(errno)); goto error; } fd = -1; /* now owned by f */ if (xmlDocFormatDump(f, doc, 1) < 0) { g_set_error(err, 0, 0, _("Unable to write the XML document.")); goto error; } if (fclose(f) != 0) { g_set_error(err, 0, 0, _("Unable to close %s: %s."), tmp_filename, g_strerror(errno)); goto error; } f = NULL; old_exists = g_file_test(filename, G_FILE_TEST_EXISTS); if (old_exists) { if (rename(filename, old_filename) < 0) { g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), filename, old_filename, g_strerror(errno)); goto error; } } if (rename(tmp_filename, filename) < 0) { g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), tmp_filename, filename, g_strerror(errno)); goto error; } if (old_exists) if (unlink(old_filename) < 0) /* non fatal */ g_warning(_("unable to delete %s: %s"), old_filename, g_strerror(errno)); goto end; /* success */ error: status = FALSE; end: xmlFreeDoc(doc); xmlIndentTreeOutput = indent; g_free(filename); g_free(tmp_filename); g_free(old_filename); if (fd >= 0) close(fd); if (f) fclose(f); return status; }} #line 1327 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 545 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data) { #line 1334 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_messages_changed_h" { #line 549 "src/mn-mailboxes.gob" Self *self = user_data; int num_messages; num_messages = g_hash_table_size(mailbox->messages); mn_info(ngettext("%s has %i new message", "%s has %i new messages", num_messages), mailbox->runtime_name, num_messages); self_messages_changed(self, has_new); }} #line 1349 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 561 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_notify_h (GObject * object, GParamSpec * pspec, gpointer user_data) { #line 1356 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_h" { #line 563 "src/mn-mailboxes.gob" Self *self = user_data; char *detailed_signal; detailed_signal = g_strconcat("mailbox-notify::", g_param_spec_get_name(pspec), NULL); g_signal_emit_by_name(self, detailed_signal, object, pspec); g_free(detailed_signal); }} #line 1368 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 572 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data) { #line 1375 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_error_h" { #line 576 "src/mn-mailboxes.gob" Self *self = user_data; MNMailbox *mailbox = MN_MAILBOX(object); if (mailbox->error) mn_info(_("%s reported an error: %s"), mailbox->runtime_name, mailbox->error); self_error_changed(self); }} #line 1388 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 586 "src/mn-mailboxes.gob" static void mn_mailboxes_mailbox_notify_manually_checkable_h (GObject * object, GParamSpec * pspec, gpointer user_data) { #line 1395 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_manually_checkable_h" { #line 590 "src/mn-mailboxes.gob" Self *self = user_data; /* manually-checkable has possibly changed */ g_object_notify(G_OBJECT(self), "manually-checkable"); }} #line 1405 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 597 "src/mn-mailboxes.gob" void mn_mailboxes_check (MNMailboxes * self) { #line 1412 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::check" #line 597 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 597 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 1418 "mn-mailboxes.c" { #line 599 "src/mn-mailboxes.gob" GList *l; MN_LIST_FOREACH(l, self->list) { MNMailbox *mailbox = l->data; if (mn_mailbox_get_manually_checkable(mailbox)) mn_mailbox_check(mailbox); } }} #line 1432 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 611 "src/mn-mailboxes.gob" static void mn_mailboxes_add_real (MNMailboxes * self, MNMailbox * mailbox) { #line 1439 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::add_real" #line 611 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 611 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 611 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 611 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 1449 "mn-mailboxes.c" { #line 613 "src/mn-mailboxes.gob" g_object_ref(mailbox); self->list = g_list_insert_sorted(self->list, mailbox, self_compare_by_name_func); self_mailbox_added(self, mailbox); }} #line 1457 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 619 "src/mn-mailboxes.gob" void mn_mailboxes_add (MNMailboxes * self, MNMailbox * mailbox) { #line 1464 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::add" #line 619 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 619 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 619 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 619 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 1474 "mn-mailboxes.c" { #line 621 "src/mn-mailboxes.gob" self_add_real(self, mailbox); self_list_changed(self); if (! MN_IS_TEST_MAILBOX(mailbox)) self_save(self); }} #line 1484 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 629 "src/mn-mailboxes.gob" void mn_mailboxes_queue_add (MNMailboxes * self, MNMailbox * mailbox) { #line 1491 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::queue_add" #line 629 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 629 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 629 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 629 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 1501 "mn-mailboxes.c" { #line 631 "src/mn-mailboxes.gob" g_object_ref(mailbox); selfp->add_queue = g_slist_append(selfp->add_queue, mailbox); if (! selfp->queue_idle_id) selfp->queue_idle_id = gdk_threads_add_idle(self_queue_idle_cb, self); }} #line 1511 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 639 "src/mn-mailboxes.gob" static void mn_mailboxes_remove_real (MNMailboxes * self, MNMailbox * mailbox) { #line 1518 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::remove_real" #line 639 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 639 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 639 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 639 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 1528 "mn-mailboxes.c" { #line 641 "src/mn-mailboxes.gob" self->list = g_list_remove(self->list, mailbox); self_mailbox_removed(self, mailbox); g_object_unref(mailbox); }} #line 1536 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 647 "src/mn-mailboxes.gob" void mn_mailboxes_remove (MNMailboxes * self, MNMailbox * mailbox) { #line 1543 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::remove" #line 647 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 647 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 647 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 647 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 1553 "mn-mailboxes.c" { #line 649 "src/mn-mailboxes.gob" self_remove_real(self, mailbox); self_list_changed(self); if (! MN_IS_TEST_MAILBOX(mailbox)) self_save(self); }} #line 1562 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 656 "src/mn-mailboxes.gob" void mn_mailboxes_queue_remove (MNMailboxes * self, MNMailbox * mailbox) { #line 1569 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::queue_remove" #line 656 "src/mn-mailboxes.gob" g_return_if_fail (self != NULL); #line 656 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOXES (self)); #line 656 "src/mn-mailboxes.gob" g_return_if_fail (mailbox != NULL); #line 656 "src/mn-mailboxes.gob" g_return_if_fail (MN_IS_MAILBOX (mailbox)); #line 1579 "mn-mailboxes.c" { #line 658 "src/mn-mailboxes.gob" g_object_ref(mailbox); selfp->remove_queue = g_slist_append(selfp->remove_queue, mailbox); if (! selfp->queue_idle_id) selfp->queue_idle_id = gdk_threads_add_idle(self_queue_idle_cb, self); }} #line 1589 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 666 "src/mn-mailboxes.gob" static gboolean mn_mailboxes_queue_idle_cb (gpointer data) { #line 1596 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::queue_idle_cb" { #line 668 "src/mn-mailboxes.gob" Self *self = data; GSList *l; MN_LIST_FOREACH(l, selfp->add_queue) self_add_real(self, l->data); mn_g_object_slist_clear(&selfp->add_queue); MN_LIST_FOREACH(l, selfp->remove_queue) self_remove_real(self, l->data); mn_g_object_slist_clear(&selfp->remove_queue); self_list_changed(self); self_save(self); selfp->queue_idle_id = 0; return FALSE; /* remove */ }} #line 1620 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 689 "src/mn-mailboxes.gob" int mn_mailboxes_compare_by_name_func (gconstpointer a, gconstpointer b) { #line 1627 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::compare_by_name_func" { #line 691 "src/mn-mailboxes.gob" MNMailbox *mailbox_a = (MNMailbox *) a; MNMailbox *mailbox_b = (MNMailbox *) b; return g_utf8_collate(mailbox_a->runtime_name, mailbox_b->runtime_name); }} #line 1637 "mn-mailboxes.c" #undef __GOB_FUNCTION__ #line 698 "src/mn-mailboxes.gob" MNMailboxes * mn_mailboxes_new (void) { #line 1644 "mn-mailboxes.c" #define __GOB_FUNCTION__ "MN:Mailboxes::new" { #line 700 "src/mn-mailboxes.gob" return GET_NEW; }} #line 1651 "mn-mailboxes.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-maildir-mailbox-backend.c0000644000175000001440000003672511015312645024767 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include "mn-maildir-mailbox-backend.h" #include "mn-maildir-mailbox-backend-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-maildir-mailbox-backend.gob" #include #include #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #include "mn-vfs-mailbox-backend-private.h" #include "mn-vfs.h" #include "mn-util.h" #include "mn-message-mime.h" #include "mn-maildir-message.h" #line 37 "mn-maildir-mailbox-backend.c" /* self casting macros */ #define SELF(x) MN_MAILDIR_MAILBOX_BACKEND(x) #define SELF_CONST(x) MN_MAILDIR_MAILBOX_BACKEND_CONST(x) #define IS_SELF(x) MN_IS_MAILDIR_MAILBOX_BACKEND(x) #define TYPE_SELF MN_TYPE_MAILDIR_MAILBOX_BACKEND #define SELF_CLASS(x) MN_MAILDIR_MAILBOX_BACKEND_CLASS(x) #define SELF_GET_CLASS(x) MN_MAILDIR_MAILBOX_BACKEND_GET_CLASS(x) /* self typedefs */ typedef MNMaildirMailboxBackend Self; typedef MNMaildirMailboxBackendClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-maildir-mailbox-backend.gob" static void mn_maildir_mailbox_backend_init (MNMaildirMailboxBackend * o); #line 54 "mn-maildir-mailbox-backend.c" #line 39 "src/mn-maildir-mailbox-backend.gob" static void mn_maildir_mailbox_backend_class_init (MNMaildirMailboxBackendClass * class); #line 57 "mn-maildir-mailbox-backend.c" #line 44 "src/mn-maildir-mailbox-backend.gob" static void ___2_mn_maildir_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend, const char * info_uri, GnomeVFSMonitorEventType event_type); #line 60 "mn-maildir-mailbox-backend.c" #line 66 "src/mn-maildir-mailbox-backend.gob" static gboolean mn_maildir_mailbox_backend_dir_exists (MNVFSMailbox * mailbox, const char * name); #line 63 "mn-maildir-mailbox-backend.c" #line 80 "src/mn-maildir-mailbox-backend.gob" static gboolean ___4_mn_maildir_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox); #line 66 "mn-maildir-mailbox-backend.c" #line 90 "src/mn-maildir-mailbox-backend.gob" static void mn_maildir_mailbox_backend_monitor_directory (MNMaildirMailboxBackend * self, int check_id, const char * dir); #line 69 "mn-maildir-mailbox-backend.c" #line 105 "src/mn-maildir-mailbox-backend.gob" static gboolean mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, int check_id, const char * dir, gboolean new, GSList ** messages, int * num_errors, GError ** err); #line 72 "mn-maildir-mailbox-backend.c" #line 240 "src/mn-maildir-mailbox-backend.gob" static void ___7_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend, int check_id); #line 75 "mn-maildir-mailbox-backend.c" /* pointer to the class of our parent */ static MNVFSMailboxBackendClass *parent_class = NULL; /* Short form macros */ #define self_dir_exists mn_maildir_mailbox_backend_dir_exists #define self_monitor_directory mn_maildir_mailbox_backend_monitor_directory #define self_scan_directory mn_maildir_mailbox_backend_scan_directory GType mn_maildir_mailbox_backend_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNMaildirMailboxBackendClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_maildir_mailbox_backend_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNMaildirMailboxBackend), 0 /* n_preallocs */, (GInstanceInitFunc) mn_maildir_mailbox_backend_init, NULL }; type = g_type_register_static (MN_TYPE_VFS_MAILBOX_BACKEND, "MNMaildirMailboxBackend", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNMaildirMailboxBackend *)g_object_new(mn_maildir_mailbox_backend_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNMaildirMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNMaildirMailboxBackend * GET_NEW_VARG (const char *first, ...) { MNMaildirMailboxBackend *ret; va_list ap; va_start (ap, first); ret = (MNMaildirMailboxBackend *)g_object_new_valist (mn_maildir_mailbox_backend_get_type (), first, ap); va_end (ap); return ret; } static void mn_maildir_mailbox_backend_init (MNMaildirMailboxBackend * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::init" } #undef __GOB_FUNCTION__ #line 39 "src/mn-maildir-mailbox-backend.gob" static void mn_maildir_mailbox_backend_class_init (MNMaildirMailboxBackendClass * class G_GNUC_UNUSED) { #line 136 "mn-maildir-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::class_init" MNVFSMailboxBackendClass *mn_vfs_mailbox_backend_class = (MNVFSMailboxBackendClass *)class; parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND); #line 44 "src/mn-maildir-mailbox-backend.gob" mn_vfs_mailbox_backend_class->monitor_cb = ___2_mn_maildir_mailbox_backend_monitor_cb; #line 80 "src/mn-maildir-mailbox-backend.gob" mn_vfs_mailbox_backend_class->is = ___4_mn_maildir_mailbox_backend_is; #line 240 "src/mn-maildir-mailbox-backend.gob" mn_vfs_mailbox_backend_class->check = ___7_mn_maildir_mailbox_backend_check; #line 148 "mn-maildir-mailbox-backend.c" { #line 40 "src/mn-maildir-mailbox-backend.gob" MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Maildir"; #line 154 "mn-maildir-mailbox-backend.c" } } #undef __GOB_FUNCTION__ #line 44 "src/mn-maildir-mailbox-backend.gob" static void ___2_mn_maildir_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC_UNUSED, const char * info_uri, GnomeVFSMonitorEventType event_type) #line 164 "mn-maildir-mailbox-backend.c" #define PARENT_HANDLER(___backend,___info_uri,___event_type) \ { if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->monitor_cb) \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->monitor_cb)(___backend,___info_uri,___event_type); } { #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::monitor_cb" { #line 48 "src/mn-maildir-mailbox-backend.gob" if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED || event_type == GNOME_VFS_MONITOR_EVENT_DELETED || event_type == GNOME_VFS_MONITOR_EVENT_CREATED) { char *filename; filename = mn_vfs_uri_extract_short_name(info_uri); if (filename) { if (filename[0] != '.') mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(backend->mailbox)); g_free(filename); } } }} #line 189 "mn-maildir-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 66 "src/mn-maildir-mailbox-backend.gob" static gboolean mn_maildir_mailbox_backend_dir_exists (MNVFSMailbox * mailbox, const char * name) { #line 197 "mn-maildir-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::dir_exists" #line 66 "src/mn-maildir-mailbox-backend.gob" g_return_val_if_fail (mailbox != NULL, (gboolean )0); #line 66 "src/mn-maildir-mailbox-backend.gob" g_return_val_if_fail (MN_IS_VFS_MAILBOX (mailbox), (gboolean )0); #line 66 "src/mn-maildir-mailbox-backend.gob" g_return_val_if_fail (name != NULL, (gboolean )0); #line 205 "mn-maildir-mailbox-backend.c" { #line 69 "src/mn-maildir-mailbox-backend.gob" GnomeVFSURI *dir_uri; gboolean exists; dir_uri = gnome_vfs_uri_append_path(mailbox->vfs_uri, name); exists = mn_vfs_test(dir_uri, G_FILE_TEST_IS_DIR); gnome_vfs_uri_unref(dir_uri); return exists; }} #line 218 "mn-maildir-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 80 "src/mn-maildir-mailbox-backend.gob" static gboolean ___4_mn_maildir_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox) #line 224 "mn-maildir-mailbox-backend.c" #define PARENT_HANDLER(___dummy,___class,___mailbox) \ ((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)? \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___class,___mailbox): \ ((gboolean )0)) { #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::is" { #line 84 "src/mn-maildir-mailbox-backend.gob" return self_dir_exists(mailbox, "cur") && self_dir_exists(mailbox, "new") && self_dir_exists(mailbox, "tmp"); }} #line 238 "mn-maildir-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 90 "src/mn-maildir-mailbox-backend.gob" static void mn_maildir_mailbox_backend_monitor_directory (MNMaildirMailboxBackend * self, int check_id, const char * dir) { #line 246 "mn-maildir-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::monitor_directory" #line 90 "src/mn-maildir-mailbox-backend.gob" g_return_if_fail (self != NULL); #line 90 "src/mn-maildir-mailbox-backend.gob" g_return_if_fail (MN_IS_MAILDIR_MAILBOX_BACKEND (self)); #line 90 "src/mn-maildir-mailbox-backend.gob" g_return_if_fail (dir != NULL); #line 254 "mn-maildir-mailbox-backend.c" { #line 92 "src/mn-maildir-mailbox-backend.gob" MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self); GnomeVFSURI *uri; char *text_uri; uri = gnome_vfs_uri_append_path(backend->mailbox->vfs_uri, dir); text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE); gnome_vfs_uri_unref(uri); mn_vfs_mailbox_backend_monitor(backend, check_id, text_uri, GNOME_VFS_MONITOR_DIRECTORY); g_free(text_uri); }} #line 269 "mn-maildir-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 105 "src/mn-maildir-mailbox-backend.gob" static gboolean mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, int check_id, const char * dir, gboolean new, GSList ** messages, int * num_errors, GError ** err) { #line 276 "mn-maildir-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::scan_directory" #line 105 "src/mn-maildir-mailbox-backend.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 105 "src/mn-maildir-mailbox-backend.gob" g_return_val_if_fail (MN_IS_MAILDIR_MAILBOX_BACKEND (self), (gboolean )0); #line 105 "src/mn-maildir-mailbox-backend.gob" g_return_val_if_fail (dir != NULL, (gboolean )0); #line 105 "src/mn-maildir-mailbox-backend.gob" g_return_val_if_fail (messages != NULL, (gboolean )0); #line 105 "src/mn-maildir-mailbox-backend.gob" g_return_val_if_fail (num_errors != NULL, (gboolean )0); #line 288 "mn-maildir-mailbox-backend.c" { #line 113 "src/mn-maildir-mailbox-backend.gob" MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self); GnomeVFSURI *uri; GnomeVFSResult result; GnomeVFSResult close_result; GnomeVFSDirectoryHandle *handle; GnomeVFSFileInfo *file_info; gboolean aborted = FALSE; uri = gnome_vfs_uri_append_path(backend->mailbox->vfs_uri, dir); result = gnome_vfs_directory_open_from_uri(&handle, uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS); if (result != GNOME_VFS_OK) { g_set_error(err, 0, 0, _("unable to open folder \"%s\": %s"), dir, gnome_vfs_result_to_string(result)); gnome_vfs_uri_unref(uri); return FALSE; } file_info = gnome_vfs_file_info_new(); while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK) if (file_info->name[0] != '.') { char *mid; MNMessageFlags flags = 0; MNVFSMessage *message = NULL; if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { aborted = TRUE; break; } if (new) { mid = g_strdup(file_info->name); flags |= MN_MESSAGE_NEW; } else { char *info; /* http://cr.yp.to/proto/maildir.html */ info = strrchr(file_info->name, ':'); if (! info || ! g_str_has_prefix(info + 1, "2,") || strpbrk(info + 3, "ST")) continue; /* no info, or message seen/trashed: ignore it */ mid = g_strndup(file_info->name, info - file_info->name); } /* * Hold the GDK lock while using * mn_mailbox_get_message_from_mid(), since for * MNReentrantMailbox, mail checks can run concurrently, so * another check could be modifying the MID hash table. */ GDK_THREADS_ENTER(); message = MN_VFS_MESSAGE(mn_mailbox_get_message_from_mid(MN_MAILBOX(backend->mailbox), mid)); if (message) message = mn_vfs_message_new_from_message(message, uri, file_info->name, flags); gdk_flush(); GDK_THREADS_LEAVE(); if (! message) { GError *tmp_err = NULL; message = mn_vfs_message_new(MN_TYPE_MAILDIR_MESSAGE, backend, mid, uri, file_info->name, flags, FALSE, &tmp_err); if (tmp_err) { GnomeVFSURI *message_uri; char *message_text_uri; message_uri = gnome_vfs_uri_append_file_name(uri, file_info->name); message_text_uri = gnome_vfs_uri_to_string(message_uri, GNOME_VFS_URI_HIDE_PASSWORD); gnome_vfs_uri_unref(message_uri); mn_mailbox_warning(MN_MAILBOX(backend->mailbox), "cannot read message \"%s\": %s", message_text_uri, tmp_err->message); g_free(message_text_uri); g_error_free(tmp_err); (*num_errors)++; } } g_free(mid); if (message) *messages = g_slist_prepend(*messages, message); } gnome_vfs_uri_unref(uri); gnome_vfs_file_info_unref(file_info); close_result = gnome_vfs_directory_close(handle); if (! aborted) { if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK) { if (close_result == GNOME_VFS_OK) return TRUE; else g_set_error(err, 0, 0, _("unable to close folder \"%s\": %s"), dir, gnome_vfs_result_to_string(close_result)); } else g_set_error(err, 0, 0, _("error while reading folder \"%s\": %s"), dir, gnome_vfs_result_to_string(result)); } return FALSE; }} #line 417 "mn-maildir-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 240 "src/mn-maildir-mailbox-backend.gob" static void ___7_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, int check_id) #line 423 "mn-maildir-mailbox-backend.c" #define PARENT_HANDLER(___backend,___check_id) \ { if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check) \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check)(___backend,___check_id); } { #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::check" { #line 242 "src/mn-maildir-mailbox-backend.gob" Self *self = SELF(backend); GSList *messages = NULL; GError *err = NULL; int num_errors = 0; gboolean status; self_monitor_directory(self, check_id, "cur"); self_monitor_directory(self, check_id, "new"); status = self_scan_directory(self, check_id, "cur", FALSE, &messages, &num_errors, &err) && self_scan_directory(self, check_id, "new", TRUE, &messages, &num_errors, &err); GDK_THREADS_ENTER(); if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { if (status) { mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages); if (num_errors != 0) mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), ngettext("cannot read %i message", "cannot read %i messages", num_errors), num_errors); } else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), "%s", err->message); } mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); if (err) g_error_free(err); }} #line 471 "mn-maildir-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-mh-mailbox-backend.h0000644000175000001440000000305011015312645023740 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-vfs-mailbox-backend.h" #ifndef __MN_MH_MAILBOX_BACKEND_H__ #define __MN_MH_MAILBOX_BACKEND_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MH_MAILBOX_BACKEND (mn_mh_mailbox_backend_get_type()) #define MN_MH_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mh_mailbox_backend_get_type(), MNMHMailboxBackend) #define MN_MH_MAILBOX_BACKEND_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mh_mailbox_backend_get_type(), MNMHMailboxBackend const) #define MN_MH_MAILBOX_BACKEND_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_mh_mailbox_backend_get_type(), MNMHMailboxBackendClass) #define MN_IS_MH_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mh_mailbox_backend_get_type ()) #define MN_MH_MAILBOX_BACKEND_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_mh_mailbox_backend_get_type(), MNMHMailboxBackendClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_MH_MAILBOX_BACKEND__ #define __TYPEDEF_MN_MH_MAILBOX_BACKEND__ typedef struct _MNMHMailboxBackend MNMHMailboxBackend; #endif struct _MNMHMailboxBackend { MNVFSMailboxBackend __parent__; }; /* * Class definition */ typedef struct _MNMHMailboxBackendClass MNMHMailboxBackendClass; struct _MNMHMailboxBackendClass { MNVFSMailboxBackendClass __parent__; }; /* * Public methods */ GType mn_mh_mailbox_backend_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mailbox-private.h0000644000175000001440000000432511015312644023426 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MAILBOX_PRIVATE_H__ #define __MN_MAILBOX_PRIVATE_H__ #include "mn-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 34 "src/mn-mailbox.gob" #include "mn-xml.h" typedef enum { /* load from mailboxes.xml */ MN_MAILBOX_PARAM_LOAD = MN_XML_PARAM_IMPORT, /* save to mailboxes.xml */ MN_MAILBOX_PARAM_SAVE = MN_XML_PARAM_EXPORT, /* load from and save to mailboxes.xml */ MN_MAILBOX_PARAM_LOAD_SAVE = MN_MAILBOX_PARAM_LOAD | MN_MAILBOX_PARAM_SAVE, /* ignore the case of a string property when checking if it has the default value */ MN_MAILBOX_PARAM_IGNORE_CASE = MN_XML_PARAM_IGNORE_CASE, /* require a string property to be non-empty */ MN_MAILBOX_PARAM_REQUIRED = 1 << (MN_XML_PARAM_USER_SHIFT + 0), } MNMailboxParamFlags; #line 36 "mn-mailbox-private.h" struct _MNMailboxPrivate { #line 133 "src/mn-mailbox.gob" gboolean _active; #line 215 "src/mn-mailbox.gob" unsigned int check_timeout_id; #line 224 "src/mn-mailbox.gob" gboolean poll; #line 271 "src/mn-mailbox.gob" gboolean all_messages_set; #line 274 "src/mn-mailbox.gob" GHashTable * all_messages; #line 277 "src/mn-mailbox.gob" GHashTable * all_messages_by_mid; #line 1126 "src/mn-mailbox.gob" gboolean checking_enabled; #line 52 "mn-mailbox-private.h" }; #line 291 "src/mn-mailbox.gob" void mn_mailbox_set_messages (MNMailbox * self, GSList * messages); #line 56 "mn-mailbox-private.h" #line 510 "src/mn-mailbox.gob" void mn_mailbox_set_error (MNMailbox * self, const char * format, ...) G_GNUC_PRINTF(2, 3); #line 59 "mn-mailbox-private.h" #line 1128 "src/mn-mailbox.gob" void mn_mailbox_enable_checking (MNMailbox * self); #line 62 "mn-mailbox-private.h" #line 1139 "src/mn-mailbox.gob" void mn_mailbox_notice (MNMailbox * self, const char * format, ...) G_GNUC_PRINTF(2, 3); #line 65 "mn-mailbox-private.h" #line 1157 "src/mn-mailbox.gob" void mn_mailbox_warning (MNMailbox * self, const char * format, ...) G_GNUC_PRINTF(2, 3); #line 68 "mn-mailbox-private.h" #line 1174 "src/mn-mailbox.gob" MNMessage * mn_mailbox_get_message_from_mid (MNMailbox * self, const char * mid); #line 71 "mn-mailbox-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-test-mailbox.gob.stamp0000644000175000001440000000000011015312645024361 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-pop3-mailbox.c0000644000175000001440000015410611015312646022635 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include "mn-pop3-mailbox.h" #include "mn-pop3-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 38 "src/mn-pop3-mailbox.gob" #include #include #include #include #include #include #include #if WITH_SASL #include #endif /* WITH_SASL */ #include "mn-mailbox-private.h" #include "mn-authenticated-mailbox-private.h" #include "mn-pi-mailbox-private.h" #include "mn-client-session.h" #include "mn-util.h" #include "mn-md5.h" #include "mn-message-mime.h" enum { STATE_GREETING = MN_CLIENT_SESSION_INITIAL_STATE, STATE_CAPA, #if WITH_SSL STATE_STLS, #endif #if WITH_SASL STATE_AUTH, #endif STATE_APOP, STATE_USER, STATE_PASS, STATE_LIST, STATE_UIDL, STATE_RETR_TOP, STATE_QUIT }; struct _MNClientSessionPrivate { MN_PI_MAILBOX_SESSION_PRIVATE; MNPOP3Mailbox *self; gboolean in_list; gboolean in_retr_top; char *apop_timestamp; GSList *auth_mechanisms; gboolean top_supported; gboolean uidl_supported; #if WITH_SSL gboolean stls_supported; gboolean stls_completed; #endif #if WITH_SASL GSList *sasl_remaining_mechanisms; const char *sasl_mechanism; gboolean sasl_had_clientout; #endif gboolean authenticated; gboolean login_delay_user; int num_errors; GSList *messages; GSList *message_iter; GString *message_buffer; }; typedef enum { RESPONSE_OK, RESPONSE_ERR, RESPONSE_LIST_ITEM, RESPONSE_LIST_END, RESPONSE_CONTINUATION } ResponseType; struct _MNClientSessionResponse { ResponseType type; char *arguments; }; typedef struct { MNMessage *message; char *mid; int number; } MessageInfo; int mn_pop3_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES] = { 110, 110, 995 }; #line 122 "mn-pop3-mailbox.c" /* self casting macros */ #define SELF(x) MN_POP3_MAILBOX(x) #define SELF_CONST(x) MN_POP3_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_POP3_MAILBOX(x) #define TYPE_SELF MN_TYPE_POP3_MAILBOX #define SELF_CLASS(x) MN_POP3_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_POP3_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNPOP3Mailbox Self; typedef MNPOP3MailboxClass SelfClass; /* here are local prototypes */ #line 141 "src/mn-pop3-mailbox.gob" static void mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class); #line 139 "mn-pop3-mailbox.c" #line 147 "src/mn-pop3-mailbox.gob" static void mn_pop3_mailbox_init (MNPOP3Mailbox * self); #line 142 "mn-pop3-mailbox.c" #line 152 "src/mn-pop3-mailbox.gob" static void ___3_mn_pop3_mailbox_seal (MNMailbox * mailbox); #line 145 "mn-pop3-mailbox.c" #line 174 "src/mn-pop3-mailbox.gob" static MNMailbox * ___4_mn_pop3_mailbox_parse_uri (MNMailbox * dummy, const char * uri); #line 148 "mn-pop3-mailbox.c" #line 231 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 151 "mn-pop3-mailbox.c" #line 265 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_capa_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 154 "mn-pop3-mailbox.c" #line 272 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 157 "mn-pop3-mailbox.c" #line 368 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_stls_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 160 "mn-pop3-mailbox.c" #line 380 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 163 "mn-pop3-mailbox.c" #line 415 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 166 "mn-pop3-mailbox.c" #line 473 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 169 "mn-pop3-mailbox.c" #line 519 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 172 "mn-pop3-mailbox.c" #line 541 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 175 "mn-pop3-mailbox.c" #line 559 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_user_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 178 "mn-pop3-mailbox.c" #line 566 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 181 "mn-pop3-mailbox.c" #line 585 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_pass_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 184 "mn-pop3-mailbox.c" #line 595 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 187 "mn-pop3-mailbox.c" #line 613 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_list_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 190 "mn-pop3-mailbox.c" #line 620 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 193 "mn-pop3-mailbox.c" #line 655 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_uidl_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 196 "mn-pop3-mailbox.c" #line 662 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_uidl_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 199 "mn-pop3-mailbox.c" #line 715 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_retr_top_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 202 "mn-pop3-mailbox.c" #line 766 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_retr_top_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 205 "mn-pop3-mailbox.c" #line 835 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_quit_cb (MNClientSession * session, MNClientSessionPrivate * priv); #line 208 "mn-pop3-mailbox.c" #line 842 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 211 "mn-pop3-mailbox.c" #line 860 "src/mn-pop3-mailbox.gob" static void ___1a_mn_pop3_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox); #line 214 "mn-pop3-mailbox.c" #line 972 "src/mn-pop3-mailbox.gob" static MNClientSessionResponse * mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv); #line 217 "mn-pop3-mailbox.c" #line 1056 "src/mn-pop3-mailbox.gob" static void mn_pop3_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv); #line 220 "mn-pop3-mailbox.c" #line 1065 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv); #line 223 "mn-pop3-mailbox.c" #line 1118 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_apop, gboolean tried_pass); #line 226 "mn-pop3-mailbox.c" #line 1170 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv); #line 229 "mn-pop3-mailbox.c" #line 1199 "src/mn-pop3-mailbox.gob" static void mn_pop3_mailbox_session_handle_list_response (MNClientSessionPrivate * priv, MNClientSessionResponse * response, gboolean in_retr_top); #line 232 "mn-pop3-mailbox.c" #line 1221 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_session_enter_list_or_uidl (MNClientSessionPrivate * priv); #line 235 "mn-pop3-mailbox.c" #line 1230 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_session_enter_retr_top (MNClientSessionPrivate * priv); #line 238 "mn-pop3-mailbox.c" #line 1238 "src/mn-pop3-mailbox.gob" static MessageInfo * mn_pop3_mailbox_session_message_iter_get_message_info (MNClientSessionPrivate * priv); #line 241 "mn-pop3-mailbox.c" #line 1252 "src/mn-pop3-mailbox.gob" static gboolean mn_pop3_mailbox_parse_uidl_list_item (const char * item, int * number, char ** uid); #line 244 "mn-pop3-mailbox.c" #line 1272 "src/mn-pop3-mailbox.gob" static MessageInfo * mn_pop3_mailbox_message_info_new (int number); #line 247 "mn-pop3-mailbox.c" #line 1283 "src/mn-pop3-mailbox.gob" static void mn_pop3_mailbox_message_info_free (MessageInfo * info); #line 250 "mn-pop3-mailbox.c" /* pointer to the class of our parent */ static MNPIMailboxClass *parent_class = NULL; /* Short form macros */ #define self_handle_greeting_cb mn_pop3_mailbox_handle_greeting_cb #define self_enter_capa_cb mn_pop3_mailbox_enter_capa_cb #define self_handle_capa_cb mn_pop3_mailbox_handle_capa_cb #define self_enter_stls_cb mn_pop3_mailbox_enter_stls_cb #define self_handle_stls_cb mn_pop3_mailbox_handle_stls_cb #define self_enter_auth_cb mn_pop3_mailbox_enter_auth_cb #define self_handle_auth_cb mn_pop3_mailbox_handle_auth_cb #define self_enter_apop_cb mn_pop3_mailbox_enter_apop_cb #define self_handle_apop_cb mn_pop3_mailbox_handle_apop_cb #define self_enter_user_cb mn_pop3_mailbox_enter_user_cb #define self_handle_user_cb mn_pop3_mailbox_handle_user_cb #define self_enter_pass_cb mn_pop3_mailbox_enter_pass_cb #define self_handle_pass_cb mn_pop3_mailbox_handle_pass_cb #define self_enter_list_cb mn_pop3_mailbox_enter_list_cb #define self_handle_list_cb mn_pop3_mailbox_handle_list_cb #define self_enter_uidl_cb mn_pop3_mailbox_enter_uidl_cb #define self_handle_uidl_cb mn_pop3_mailbox_handle_uidl_cb #define self_enter_retr_top_cb mn_pop3_mailbox_enter_retr_top_cb #define self_handle_retr_top_cb mn_pop3_mailbox_handle_retr_top_cb #define self_enter_quit_cb mn_pop3_mailbox_enter_quit_cb #define self_handle_quit_cb mn_pop3_mailbox_handle_quit_cb #define self_response_new_cb mn_pop3_mailbox_response_new_cb #define self_response_free_cb mn_pop3_mailbox_response_free_cb #define self_session_authenticate mn_pop3_mailbox_session_authenticate #define self_session_authenticate_fallback mn_pop3_mailbox_session_authenticate_fallback #define self_session_authenticated mn_pop3_mailbox_session_authenticated #define self_session_handle_list_response mn_pop3_mailbox_session_handle_list_response #define self_session_enter_list_or_uidl mn_pop3_mailbox_session_enter_list_or_uidl #define self_session_enter_retr_top mn_pop3_mailbox_session_enter_retr_top #define self_session_message_iter_get_message_info mn_pop3_mailbox_session_message_iter_get_message_info #define self_parse_uidl_list_item mn_pop3_mailbox_parse_uidl_list_item #define self_message_info_new mn_pop3_mailbox_message_info_new #define self_message_info_free mn_pop3_mailbox_message_info_free #define self_build_name mn_pop3_mailbox_build_name GType mn_pop3_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNPOP3MailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_pop3_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNPOP3Mailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_pop3_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_PI_MAILBOX, "MNPOP3Mailbox", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNPOP3Mailbox *)g_object_new(mn_pop3_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNPOP3Mailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNPOP3Mailbox * GET_NEW_VARG (const char *first, ...) { MNPOP3Mailbox *ret; va_list ap; va_start (ap, first); ret = (MNPOP3Mailbox *)g_object_new_valist (mn_pop3_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:POP3:Mailbox::finalize" MNPOP3Mailbox *self G_GNUC_UNUSED = MN_POP3_MAILBOX (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 139 "src/mn-pop3-mailbox.gob" if(self->_priv->authentication_timer) { g_timer_destroy ((gpointer) self->_priv->authentication_timer); self->_priv->authentication_timer = NULL; } #line 343 "mn-pop3-mailbox.c" } #undef __GOB_FUNCTION__ #line 141 "src/mn-pop3-mailbox.gob" static void mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class G_GNUC_UNUSED) { #line 351 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class; MNAuthenticatedMailboxClass *mn_authenticated_mailbox_class = (MNAuthenticatedMailboxClass *)class; g_type_class_add_private(class,sizeof(MNPOP3MailboxPrivate)); parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX); #line 152 "src/mn-pop3-mailbox.gob" mn_mailbox_class->seal = ___3_mn_pop3_mailbox_seal; #line 174 "src/mn-pop3-mailbox.gob" mn_mailbox_class->parse_uri = ___4_mn_pop3_mailbox_parse_uri; #line 860 "src/mn-pop3-mailbox.gob" mn_authenticated_mailbox_class->authenticated_check = ___1a_mn_pop3_mailbox_authenticated_check; #line 367 "mn-pop3-mailbox.c" g_object_class->finalize = ___finalize; { #line 142 "src/mn-pop3-mailbox.gob" MN_MAILBOX_CLASS(class)->type = "pop3"; MN_PI_MAILBOX_CLASS(class)->default_ports = mn_pop3_mailbox_default_ports; #line 375 "mn-pop3-mailbox.c" } } #undef __GOB_FUNCTION__ #line 147 "src/mn-pop3-mailbox.gob" static void mn_pop3_mailbox_init (MNPOP3Mailbox * self G_GNUC_UNUSED) { #line 383 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_POP3_MAILBOX,MNPOP3MailboxPrivate); { #line 148 "src/mn-pop3-mailbox.gob" mn_mailbox_set_format(MN_MAILBOX(self), "POP3"); #line 391 "mn-pop3-mailbox.c" } } #undef __GOB_FUNCTION__ #line 152 "src/mn-pop3-mailbox.gob" static void ___3_mn_pop3_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED) #line 401 "mn-pop3-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->seal) \ (* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); } { #define __GOB_FUNCTION__ "MN:POP3:Mailbox::seal" { #line 154 "src/mn-pop3-mailbox.gob" MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); PARENT_HANDLER(mailbox); if (! mailbox->runtime_name) mailbox->runtime_name = self_build_name(MN_AUTHENTICATED_MAILBOX(mailbox)->username, MN_PI_MAILBOX(mailbox)->hostname); #if WITH_SSL if (MN_PI_MAILBOX(mailbox)->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL) auth_mailbox->keyring_protocol = g_strdup("pop3s"); else #endif auth_mailbox->keyring_protocol = g_strdup("pop3"); }} #line 425 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 174 "src/mn-pop3-mailbox.gob" static MNMailbox * ___4_mn_pop3_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri) #line 432 "mn-pop3-mailbox.c" #define PARENT_HANDLER(___dummy,___uri) \ ((MN_MAILBOX_CLASS(parent_class)->parse_uri)? \ (* MN_MAILBOX_CLASS(parent_class)->parse_uri)(___dummy,___uri): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:POP3:Mailbox::parse_uri" { #line 176 "src/mn-pop3-mailbox.gob" int len; int buflen; char *username = NULL; char *authmech = NULL; char *hostname; int port; MNMailbox *mailbox; len = strlen(uri); buflen = len + 1; { char scheme_buf[buflen]; char auth_buf[buflen]; char location_buf[buflen]; char username_buf[buflen]; char authmech_buf[buflen]; char hostname_buf[buflen]; gboolean has_authmech = FALSE; if (! mn_pi_mailbox_split_uri(uri, len, scheme_buf, auth_buf, location_buf)) return NULL; if (strcmp(scheme_buf, "pop")) return NULL; if (! mn_pi_mailbox_split_uri_auth(auth_buf, len, username_buf, authmech_buf, &has_authmech)) return NULL; if (has_authmech && ! strcmp(authmech_buf, "*")) has_authmech = FALSE; mn_pi_mailbox_split_uri_hostport(location_buf, len, hostname_buf, &port); username = gnome_vfs_unescape_string(username_buf, NULL); if (has_authmech) authmech = gnome_vfs_unescape_string(authmech_buf, NULL); hostname = gnome_vfs_unescape_string(hostname_buf, NULL); } mailbox = mn_mailbox_new("pop3", "username", username, "authmech", authmech, "hostname", hostname, "port", port, NULL); g_free(username); g_free(authmech); g_free(hostname); return mailbox; }} #line 495 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 231 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 503 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_greeting_cb" { #line 235 "src/mn-pop3-mailbox.gob" priv->session = session; switch (response->type) { case RESPONSE_OK: if (response->arguments) { char *timestamp; timestamp = strchr(response->arguments, '<'); if (timestamp) { char *timestamp_end; timestamp_end = strchr(timestamp, '>'); if (timestamp_end) priv->apop_timestamp = g_strndup(timestamp, timestamp_end - timestamp + 1); } } return STATE_CAPA; case RESPONSE_ERR: return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } }} #line 536 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 265 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_capa_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 543 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_capa_cb" { #line 268 "src/mn-pop3-mailbox.gob" return mn_client_session_write(session, "CAPA"); }} #line 550 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 272 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 557 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_capa_cb" { #line 276 "src/mn-pop3-mailbox.gob" self_session_handle_list_response(priv, response, FALSE); switch (response->type) { case RESPONSE_OK: mn_g_slist_clear_deep(&priv->auth_mechanisms); #if WITH_SASL mn_g_slist_clear(&priv->sasl_remaining_mechanisms); #endif priv->top_supported = FALSE; priv->uidl_supported = FALSE; priv->self->_priv->login_delay = 0; priv->login_delay_user = FALSE; #if WITH_SSL priv->stls_supported = FALSE; #endif return MN_CLIENT_SESSION_RESULT_CONTINUE; case RESPONSE_ERR: case RESPONSE_LIST_END: if (priv->authenticated) return self_session_enter_list_or_uidl(priv); #if WITH_SSL if (priv->pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL && ! priv->stls_completed) { if (priv->stls_supported) return STATE_STLS; else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS")); return STATE_QUIT; } } else #endif /* WITH_SSL */ return self_session_authenticate(priv); case RESPONSE_LIST_ITEM: { char **tokens; gboolean login_delay_error = FALSE; tokens = g_strsplit(response->arguments, " ", 0); if (tokens[0]) { if (! strcmp(tokens[0], "SASL")) { int i; for (i = 1; tokens[i]; i++) priv->auth_mechanisms = g_slist_append(priv->auth_mechanisms, g_strdup(tokens[i])); } else if (! strcmp(tokens[0], "TOP")) priv->top_supported = TRUE; else if (! strcmp(tokens[0], "UIDL")) priv->uidl_supported = TRUE; #if WITH_SSL else if (! strcmp(tokens[0], "STLS")) priv->stls_supported = TRUE; #endif /* WITH_SSL */ else if (! strcmp(tokens[0], "LOGIN-DELAY")) { if (tokens[1] && mn_str_isnumeric(tokens[1]) && (! tokens[2] || (! tokens[3] && ! priv->authenticated && ! strcmp(tokens[2], "USER")))) { priv->self->_priv->login_delay = atoi(tokens[1]); if (tokens[2]) priv->login_delay_user = TRUE; } else login_delay_error = TRUE; } } g_strfreev(tokens); if (login_delay_error) return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("invalid arguments for the LOGIN-DELAY capability")); } return MN_CLIENT_SESSION_RESULT_CONTINUE; default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } }} #line 652 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 368 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_stls_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 659 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_stls_cb" { #line 371 "src/mn-pop3-mailbox.gob" #if WITH_SSL return mn_client_session_write(session, "STLS"); #else g_assert_not_reached(); return 0; #endif /* WITH_SSL */ }} #line 671 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 380 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 678 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_stls_cb" { #line 384 "src/mn-pop3-mailbox.gob" #if WITH_SSL switch (response->type) { case RESPONSE_OK: priv->stls_completed = TRUE; return mn_client_session_enable_ssl(session) ? STATE_CAPA /* [1] */ : MN_CLIENT_SESSION_RESULT_DISCONNECT; /* * [1] RFC 2595 4: * * "Once TLS has been started, the client MUST discard cached * information about server capabilities and SHOULD re-issue * the CAPA command." */ case RESPONSE_ERR: mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_QUIT; default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } #else g_assert_not_reached(); return 0; #endif /* WITH_SSL */ }} #line 712 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 415 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 719 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_auth_cb" { #line 418 "src/mn-pop3-mailbox.gob" #if WITH_SASL /* * RFC 2449 6.3 specifies that POP3 supports the initial client * response feature of SASL. */ const char *initial_clientout = NULL; unsigned int initial_clientoutlen = 0; priv->sasl_mechanism = NULL; if (mn_client_session_sasl_authentication_start(priv->session, "pop", priv->sasl_remaining_mechanisms, priv->pi_mailbox->authmech, &priv->sasl_mechanism, priv->sasl_had_clientout ? NULL : &initial_clientout, priv->sasl_had_clientout ? NULL : &initial_clientoutlen)) { g_assert(priv->sasl_mechanism != NULL); if (initial_clientoutlen > 0) { char buf64[initial_clientoutlen * 2]; /* Base64 is 33% larger than the data it encodes */ unsigned int outlen; int result; char *str; result = sasl_encode64(initial_clientout, initial_clientoutlen, buf64, sizeof(buf64), &outlen); if (result != SASL_OK) return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode Base64: %s"), sasl_errstring(result, NULL, NULL)); str = g_strndup(buf64, outlen); result = mn_client_session_write(session, "AUTH %s %s", priv->sasl_mechanism, str); g_free(str); priv->sasl_had_clientout = TRUE; return result; } else { priv->sasl_had_clientout = FALSE; return mn_client_session_write(session, "AUTH %s", priv->sasl_mechanism); } } else return priv->auth_mailbox->auth_cancelled ? STATE_QUIT : self_session_authenticate_fallback(priv, FALSE, FALSE); #else g_assert_not_reached(); return 0; #endif /* WITH_SASL */ }} #line 777 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 473 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 784 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_auth_cb" { #line 477 "src/mn-pop3-mailbox.gob" #if WITH_SASL switch (response->type) { case RESPONSE_OK: return mn_client_session_sasl_authentication_done(session) ? self_session_authenticated(priv) : MN_CLIENT_SESSION_RESULT_DISCONNECT; case RESPONSE_ERR: if (priv->auth_mailbox->auth_cancelled) return STATE_QUIT; else { if (priv->sasl_had_clientout) { /* * Some servers violate RFC 2449 by not supporting a * second argument to the AUTH command. Support these * servers nevertheless, by retrying without the SASL * initial client response. */ mn_client_session_notice(session, _("SASL authentication with initial client response failed, retrying without initial client response")); return STATE_AUTH; } else return self_session_authenticate_fallback(priv, FALSE, FALSE); } case RESPONSE_CONTINUATION: return mn_client_session_sasl_authentication_step(session, response->arguments); default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } #else g_assert_not_reached(); return 0; #endif /* WITH_SASL */ }} #line 829 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 519 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 836 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_apop_cb" { #line 522 "src/mn-pop3-mailbox.gob" MNMD5Context context; char buf[16]; char hexbuf[33]; g_assert(priv->apop_timestamp != NULL); if (! mn_authenticated_mailbox_fill_password(priv->auth_mailbox, TRUE)) return STATE_QUIT; mn_md5_init_ctx(&context); mn_md5_process_bytes(&context, priv->apop_timestamp, strlen(priv->apop_timestamp)); mn_md5_process_bytes(&context, priv->auth_mailbox->runtime_password, strlen(priv->auth_mailbox->runtime_password)); mn_md5_finish_ctx(&context, buf); mn_md5_to_hex(buf, hexbuf); return mn_client_session_write(session, "APOP %s %s", priv->auth_mailbox->username, hexbuf); }} #line 858 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 541 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 865 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_apop_cb" #line 541 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (session != NULL, (int )0); #line 541 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (response != NULL, (int )0); #line 541 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 873 "mn-pop3-mailbox.c" { #line 545 "src/mn-pop3-mailbox.gob" switch (response->type) { case RESPONSE_OK: return self_session_authenticated(priv); case RESPONSE_ERR: return self_session_authenticate_fallback(priv, TRUE, FALSE); default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } }} #line 889 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 559 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_user_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 896 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_user_cb" #line 559 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (session != NULL, (int )0); #line 559 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 902 "mn-pop3-mailbox.c" { #line 562 "src/mn-pop3-mailbox.gob" return mn_client_session_write(session, "USER %s", priv->auth_mailbox->username); }} #line 908 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 566 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 915 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_user_cb" { #line 570 "src/mn-pop3-mailbox.gob" switch (response->type) { case RESPONSE_OK: return STATE_PASS; case RESPONSE_ERR: mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_QUIT; default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } }} #line 933 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 585 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_pass_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 940 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_pass_cb" { #line 588 "src/mn-pop3-mailbox.gob" if (! mn_authenticated_mailbox_fill_password(priv->auth_mailbox, TRUE)) return STATE_QUIT; return mn_client_session_write(session, "PASS %s", priv->auth_mailbox->runtime_password); }} #line 950 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 595 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 957 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_pass_cb" { #line 599 "src/mn-pop3-mailbox.gob" switch (response->type) { case RESPONSE_OK: return self_session_authenticated(priv); case RESPONSE_ERR: return self_session_authenticate_fallback(priv, TRUE, TRUE); default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } }} #line 974 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 613 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_list_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 981 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_list_cb" { #line 616 "src/mn-pop3-mailbox.gob" return mn_client_session_write(session, "LIST"); }} #line 988 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 620 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 995 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_cb" { #line 624 "src/mn-pop3-mailbox.gob" self_session_handle_list_response(priv, response, FALSE); switch (response->type) { case RESPONSE_OK: return MN_CLIENT_SESSION_RESULT_CONTINUE; case RESPONSE_LIST_END: return self_session_enter_retr_top(priv); case RESPONSE_ERR: return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); case RESPONSE_LIST_ITEM: { int num; int size; if (sscanf(response->arguments, "%d %d", &num, &size) == 2) priv->messages = g_slist_prepend(priv->messages, self_message_info_new(num)); else /* compliance error */ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } return MN_CLIENT_SESSION_RESULT_CONTINUE; default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } }} #line 1029 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 655 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_uidl_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1036 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_uidl_cb" { #line 658 "src/mn-pop3-mailbox.gob" return mn_client_session_write(session, "UIDL"); }} #line 1043 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 662 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_uidl_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1050 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_uidl_cb" { #line 666 "src/mn-pop3-mailbox.gob" self_session_handle_list_response(priv, response, FALSE); switch (response->type) { case RESPONSE_OK: return MN_CLIENT_SESSION_RESULT_CONTINUE; case RESPONSE_LIST_END: return self_session_enter_retr_top(priv); case RESPONSE_ERR: /* * The server advertised UIDL but does not support it, * fallback to LIST. */ return STATE_LIST; case RESPONSE_LIST_ITEM: { int num; char *uid; if (self_parse_uidl_list_item(response->arguments, &num, &uid)) { MessageInfo *info; MNMessage *message; info = self_message_info_new(num); info->mid = uid; message = mn_mailbox_get_message_from_mid(priv->mailbox, info->mid); if (message) info->message = g_object_ref(message); priv->messages = g_slist_prepend(priv->messages, info); return MN_CLIENT_SESSION_RESULT_CONTINUE; } else /* compliance error */ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } }} #line 1102 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 715 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_retr_top_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1109 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_retr_top_cb" { #line 718 "src/mn-pop3-mailbox.gob" MessageInfo *info; info = self_session_message_iter_get_message_info(priv); if (info) return mn_client_session_write(session, priv->top_supported ? "TOP %i 0" : "RETR %i", info->number); else { GSList *messages = NULL; GSList *l; MN_LIST_FOREACH(l, priv->messages) { info = l->data; if (info->message) messages = g_slist_prepend(messages, info->message); } GDK_THREADS_ENTER(); mn_mailbox_set_messages(priv->mailbox, messages); if (priv->num_errors != 0) mn_mailbox_set_error(priv->mailbox, ngettext("cannot retrieve %i message", "cannot retrieve %i messages", priv->num_errors), priv->num_errors); /* * In authenticated_check(), we do not hold the GDK lock while * unreffing the messages. We have just exposed the messages * to other threads through our mn_mailbox_set_messages() * call, so unref them here, while we hold the GDK lock. */ mn_g_slist_clear_deep_custom(&priv->messages, (GFunc) self_message_info_free, NULL); gdk_flush(); GDK_THREADS_LEAVE(); g_slist_free(messages); return STATE_QUIT; } }} #line 1160 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 766 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_retr_top_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1167 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_retr_top_cb" { #line 770 "src/mn-pop3-mailbox.gob" self_session_handle_list_response(priv, response, TRUE); switch (response->type) { case RESPONSE_OK: if (priv->message_buffer) g_string_free(priv->message_buffer, TRUE); priv->message_buffer = g_string_new(NULL); return MN_CLIENT_SESSION_RESULT_CONTINUE; case RESPONSE_LIST_END: { MessageInfo *info = priv->message_iter->data; GError *err = NULL; g_assert(info->message == NULL); info->message = mn_message_new_from_buffer(priv->mailbox, priv->message_buffer->str, priv->message_buffer->len, info->mid, 0, TRUE, &err); if (err) { mn_client_session_warning(session, "cannot read message %i: %s", info->number, err->message); g_error_free(err); priv->num_errors++; } priv->message_iter = priv->message_iter->next; return STATE_RETR_TOP; } case RESPONSE_ERR: { MessageInfo *info = priv->message_iter->data; g_assert(info->message == NULL); mn_client_session_warning(session, "cannot retrieve message %i: %s", info->number, response->arguments ? response->arguments : "unknown error"); priv->num_errors++; priv->message_iter = priv->message_iter->next; return STATE_RETR_TOP; } case RESPONSE_LIST_ITEM: g_string_append_printf(priv->message_buffer, "%s\n", response->arguments); return MN_CLIENT_SESSION_RESULT_CONTINUE; default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } }} #line 1235 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 835 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_enter_quit_cb (MNClientSession * session, MNClientSessionPrivate * priv) { #line 1242 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_quit_cb" { #line 838 "src/mn-pop3-mailbox.gob" return mn_client_session_write(session, "QUIT"); }} #line 1249 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 842 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1256 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_quit_cb" { #line 846 "src/mn-pop3-mailbox.gob" switch (response->type) { case RESPONSE_OK: return MN_CLIENT_SESSION_RESULT_DISCONNECT; case RESPONSE_ERR: return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } }} #line 1273 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 860 "src/mn-pop3-mailbox.gob" static void ___1a_mn_pop3_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED) #line 1279 "mn-pop3-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check) \ (* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:POP3:Mailbox::authenticated_check" { #line 862 "src/mn-pop3-mailbox.gob" Self *self = SELF(mailbox); static const MNClientSessionState states[] = { { STATE_GREETING, NULL, self_handle_greeting_cb }, { STATE_CAPA, self_enter_capa_cb, self_handle_capa_cb }, #if WITH_SSL { STATE_STLS, self_enter_stls_cb, self_handle_stls_cb }, #endif #if WITH_SASL { STATE_AUTH, self_enter_auth_cb, self_handle_auth_cb }, #endif { STATE_APOP, self_enter_apop_cb, self_handle_apop_cb }, { STATE_USER, self_enter_user_cb, self_handle_user_cb }, { STATE_PASS, self_enter_pass_cb, self_handle_pass_cb }, { STATE_LIST, self_enter_list_cb, self_handle_list_cb }, { STATE_UIDL, self_enter_uidl_cb, self_handle_uidl_cb }, { STATE_RETR_TOP, self_enter_retr_top_cb, self_handle_retr_top_cb }, { STATE_QUIT, self_enter_quit_cb, self_handle_quit_cb }, MN_CLIENT_SESSION_STATES_END }; static const MNClientSessionCallbacks callbacks = { mn_pi_mailbox_notice_cb, mn_pi_mailbox_warning_cb, self_response_new_cb, self_response_free_cb, NULL, /* pre_read */ NULL, /* post_read */ #if WITH_SASL mn_pi_mailbox_sasl_get_credentials_cb, #endif #if WITH_SSL mn_pi_mailbox_ssl_trust_server_cb, #endif }; MNClientSessionPrivate priv; gboolean status; GError *err = NULL; PARENT_HANDLER(mailbox); /* check if the parent handler has disabled the mailbox */ if (! mn_mailbox_get_poll(MN_MAILBOX(self))) return; if (selfp->login_delay && selfp->authentication_timer) { double elapsed; g_timer_stop(selfp->authentication_timer); elapsed = g_timer_elapsed(selfp->authentication_timer, NULL); if (elapsed < selfp->login_delay) { int sleeptime; sleeptime = selfp->login_delay - elapsed; mn_mailbox_notice(MN_MAILBOX(self), ngettext("honouring LOGIN-DELAY, sleeping for %i second", "honouring LOGIN-DELAY, sleeping for %i seconds", sleeptime), sleeptime); sleep(sleeptime); } } memset(&priv, 0, sizeof(priv)); mn_pi_mailbox_session_private_init(MN_PI_MAILBOX(self), &priv); priv.self = self; status = mn_client_session_run(states, &callbacks, #if WITH_SSL priv.pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL, #endif priv.pi_mailbox->hostname, priv.pi_mailbox->runtime_port, &priv, &err); if (! status) { char *escaped; escaped = mn_utf8_escape(err->message); g_error_free(err); GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), "%s", escaped); gdk_flush(); GDK_THREADS_LEAVE(); g_free(escaped); } g_free(priv.apop_timestamp); mn_g_slist_free_deep(priv.auth_mechanisms); #if WITH_SASL g_slist_free(priv.sasl_remaining_mechanisms); #endif mn_g_slist_free_deep_custom(priv.messages, (GFunc) self_message_info_free, NULL); if (priv.message_buffer) g_string_free(priv.message_buffer, TRUE); }} #line 1396 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 972 "src/mn-pop3-mailbox.gob" static MNClientSessionResponse * mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv) { #line 1404 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_new_cb" { #line 976 "src/mn-pop3-mailbox.gob" MNClientSessionResponse *response = NULL; /* * About character set handling: * * RFC 1939 3 specifies that "keywords and arguments consist of * printable ASCII characters", however that refers to * commands. Nothing is said about responses. We therefore do not * check the encoding of responses. * * Safety: * - we ensure that GTK+ will only receive UTF-8 data by * escaping error messages in authenticated_check() * - responses ending up in mn_mailbox_notice() need not be * valid UTF-8, since g_log() escapes unsafe and non UTF-8 * characters * - RETR/TOP multiline responses are passed to our * mn-message-mime implementation, which handles character set * conversions */ if (priv->in_list) { response = g_new0(MNClientSessionResponse, 1); if (! strcmp(input, ".")) response->type = RESPONSE_LIST_END; else if (g_str_has_prefix(input, "..")) { response->type = RESPONSE_LIST_ITEM; response->arguments = g_strdup(input + 1); /* skip the initial dot */ } else { response->type = RESPONSE_LIST_ITEM; response->arguments = g_strdup(input); } } else { if (g_str_has_prefix(input, "+ ")) { response = g_new0(MNClientSessionResponse, 1); response->type = RESPONSE_CONTINUATION; response->arguments = g_strdup(input + 2); } else { ResponseType type; int after_status = 0; if (g_str_has_prefix(input, "+OK")) { type = RESPONSE_OK; after_status = 3; } else if (g_str_has_prefix(input, "-ERR")) { type = RESPONSE_ERR; after_status = 4; } if (after_status) { char c = input[after_status]; if (c == ' ' || c == ',') /* skip commonly used separators */ after_status++; response = g_new0(MNClientSessionResponse, 1); response->type = type; if (input[after_status] != 0) response->arguments = g_strdup(input + after_status); } } } return response; }} #line 1487 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1056 "src/mn-pop3-mailbox.gob" static void mn_pop3_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) { #line 1494 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_free_cb" { #line 1060 "src/mn-pop3-mailbox.gob" g_free(response->arguments); g_free(response); }} #line 1502 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1065 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv) { #line 1509 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate" #line 1065 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 1513 "mn-pop3-mailbox.c" { #line 1067 "src/mn-pop3-mailbox.gob" #if WITH_SASL g_slist_free(priv->sasl_remaining_mechanisms); priv->sasl_remaining_mechanisms = g_slist_copy(priv->auth_mechanisms); #endif /* WITH_SASL */ if (priv->pi_mailbox->authmech) { if (*priv->pi_mailbox->authmech != '+') { #if WITH_SASL return STATE_AUTH; #else mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in")); return STATE_QUIT; #endif /* WITH_SASL */ } else { if (! strcmp(priv->pi_mailbox->authmech, "+APOP")) { if (priv->apop_timestamp) return STATE_APOP; else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support APOP authentication")); return STATE_QUIT; } } else if (! strcmp(priv->pi_mailbox->authmech, "+USERPASS")) return STATE_USER; else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech); return STATE_QUIT; } } } else { #if WITH_SASL if (priv->sasl_remaining_mechanisms) return STATE_AUTH; #endif /* WITH_SASL */ if (priv->apop_timestamp) return STATE_APOP; else return STATE_USER; } }} #line 1566 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1118 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_apop, gboolean tried_pass) { #line 1573 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate_fallback" #line 1118 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 1577 "mn-pop3-mailbox.c" { #line 1122 "src/mn-pop3-mailbox.gob" if (! priv->pi_mailbox->authmech) { #if WITH_SASL if (priv->sasl_mechanism) { GSList *elem; elem = mn_g_str_slist_find(priv->sasl_remaining_mechanisms, priv->sasl_mechanism); if (elem) { priv->sasl_remaining_mechanisms = g_slist_delete_link(priv->sasl_remaining_mechanisms, elem); if (priv->sasl_remaining_mechanisms) { mn_client_session_notice(priv->session, _("disabling mechanism \"%s\" and retrying SASL authentication"), priv->sasl_mechanism); return STATE_AUTH; } } } /* SASL is not needed anymore, save some memory */ mn_client_session_sasl_dispose(priv->session); #endif /* WITH_SASL */ if (! tried_apop && priv->apop_timestamp) { mn_client_session_notice(priv->session, _("falling back to APOP authentication")); return STATE_APOP; } else if (! tried_pass) { mn_client_session_notice(priv->session, _("falling back to USER/PASS authentication")); return STATE_USER; } } if (priv->auth_mailbox->auth_prompted) { mn_authenticated_mailbox_auth_failed(priv->auth_mailbox); return self_session_authenticate(priv); } else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed")); return STATE_QUIT; } }} #line 1627 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1170 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv) { #line 1634 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticated" #line 1170 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 1638 "mn-pop3-mailbox.c" { #line 1172 "src/mn-pop3-mailbox.gob" priv->authenticated = TRUE; if (priv->self->_priv->login_delay) { if (priv->self->_priv->authentication_timer) g_timer_start(priv->self->_priv->authentication_timer); else priv->self->_priv->authentication_timer = g_timer_new(); } /* * We are now in transaction state. We must re-issue CAPA if: * * - the LOGIN-DELAY capability announced in the authorization * state contained the USER argument (priv->login_delay_user is * true) * - the TOP capability was not announced in the authorization * state: although RFC 2449 states that "capabilities available * in the AUTHORIZATION state MUST be announced in both states", * some servers (for instance, pop.gmail.com) violate the RFC * and only announce TOP in the transaction state. */ return priv->login_delay_user || ! priv->top_supported ? STATE_CAPA : self_session_enter_list_or_uidl(priv); }} #line 1667 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1199 "src/mn-pop3-mailbox.gob" static void mn_pop3_mailbox_session_handle_list_response (MNClientSessionPrivate * priv, MNClientSessionResponse * response, gboolean in_retr_top) { #line 1674 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_handle_list_response" #line 1199 "src/mn-pop3-mailbox.gob" g_return_if_fail (priv != NULL); #line 1199 "src/mn-pop3-mailbox.gob" g_return_if_fail (response != NULL); #line 1680 "mn-pop3-mailbox.c" { #line 1203 "src/mn-pop3-mailbox.gob" switch (response->type) { case RESPONSE_OK: priv->in_list = TRUE; priv->in_retr_top = in_retr_top; break; case RESPONSE_LIST_ITEM: /* nop */ break; default: priv->in_list = FALSE; priv->in_retr_top = FALSE; break; } }} #line 1700 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1221 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_session_enter_list_or_uidl (MNClientSessionPrivate * priv) { #line 1707 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_enter_list_or_uidl" #line 1221 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 1711 "mn-pop3-mailbox.c" { #line 1223 "src/mn-pop3-mailbox.gob" if (priv->uidl_supported) return STATE_UIDL; else return STATE_LIST; }} #line 1720 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1230 "src/mn-pop3-mailbox.gob" static int mn_pop3_mailbox_session_enter_retr_top (MNClientSessionPrivate * priv) { #line 1727 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_enter_retr_top" #line 1230 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (priv != NULL, (int )0); #line 1731 "mn-pop3-mailbox.c" { #line 1232 "src/mn-pop3-mailbox.gob" priv->message_iter = priv->messages; return STATE_RETR_TOP; }} #line 1739 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1238 "src/mn-pop3-mailbox.gob" static MessageInfo * mn_pop3_mailbox_session_message_iter_get_message_info (MNClientSessionPrivate * priv) { #line 1746 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_message_iter_get_message_info" #line 1238 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (priv != NULL, (MessageInfo * )0); #line 1750 "mn-pop3-mailbox.c" { #line 1240 "src/mn-pop3-mailbox.gob" for (; priv->message_iter; priv->message_iter = priv->message_iter->next) { MessageInfo *info = priv->message_iter->data; if (! info->message) return info; } return NULL; }} #line 1764 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1252 "src/mn-pop3-mailbox.gob" static gboolean mn_pop3_mailbox_parse_uidl_list_item (const char * item, int * number, char ** uid) { #line 1771 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::parse_uidl_list_item" #line 1252 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (item != NULL, (gboolean )0); #line 1252 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (number != NULL, (gboolean )0); #line 1252 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (uid != NULL, (gboolean )0); #line 1779 "mn-pop3-mailbox.c" { #line 1256 "src/mn-pop3-mailbox.gob" char **fields; gboolean status = FALSE; fields = g_strsplit(item, " ", 2); if (g_strv_length(fields) == 2 && mn_str_isnumeric(fields[0])) { *number = atoi(fields[0]); *uid = g_strdup(fields[1]); status = TRUE; } g_strfreev(fields); return status; }} #line 1797 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1272 "src/mn-pop3-mailbox.gob" static MessageInfo * mn_pop3_mailbox_message_info_new (int number) { #line 1804 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::message_info_new" { #line 1274 "src/mn-pop3-mailbox.gob" MessageInfo *info; info = g_new0(MessageInfo, 1); info->number = number; return info; }} #line 1816 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1283 "src/mn-pop3-mailbox.gob" static void mn_pop3_mailbox_message_info_free (MessageInfo * info) { #line 1823 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::message_info_free" #line 1283 "src/mn-pop3-mailbox.gob" g_return_if_fail (info != NULL); #line 1827 "mn-pop3-mailbox.c" { #line 1285 "src/mn-pop3-mailbox.gob" if (info->message) g_object_unref(info->message); g_free(info->mid); g_free(info); }} #line 1836 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ #line 1292 "src/mn-pop3-mailbox.gob" char * mn_pop3_mailbox_build_name (const char * username, const char * server) { #line 1843 "mn-pop3-mailbox.c" #define __GOB_FUNCTION__ "MN:POP3:Mailbox::build_name" #line 1292 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (username != NULL, (char * )0); #line 1292 "src/mn-pop3-mailbox.gob" g_return_val_if_fail (server != NULL, (char * )0); #line 1849 "mn-pop3-mailbox.c" { #line 1295 "src/mn-pop3-mailbox.gob" return g_strdup_printf("%s@%s", username, server); }} #line 1855 "mn-pop3-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-pi-mailbox-properties.c0000644000175000001440000005310611015312646024554 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-pi-mailbox-properties.h" #include "mn-pi-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 26 "src/mn-pi-mailbox-properties.gob" #include #include "mn-mailbox-properties-dialog.h" #include "mn-mailbox-properties-dialog-private.h" #include "mn-mailbox-properties-private.h" #include "mn-authenticated-mailbox-properties-private.h" #include "mn-auth-combo-box.h" #include "mn-util.h" #include "mn-stock.h" #line 37 "mn-pi-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_PI_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_PI_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_PI_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_PI_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_PI_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_PI_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNPIMailboxProperties Self; typedef MNPIMailboxPropertiesClass SelfClass; /* here are local prototypes */ static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 52 "src/mn-pi-mailbox-properties.gob" static void mn_pi_mailbox_properties_class_init (MNPIMailboxPropertiesClass * class); #line 55 "mn-pi-mailbox-properties.c" #line 59 "src/mn-pi-mailbox-properties.gob" static void mn_pi_mailbox_properties_init (MNPIMailboxProperties * self); #line 58 "mn-pi-mailbox-properties.c" #line 133 "src/mn-pi-mailbox-properties.gob" static void mn_pi_mailbox_properties_add_connection_type (MNPIMailboxProperties * self, GtkBox * type_vbox, MNPIMailboxConnectionType type, const char * mnemonic); #line 61 "mn-pi-mailbox-properties.c" #line 164 "src/mn-pi-mailbox-properties.gob" static void mn_pi_mailbox_properties_add_authentication (MNPIMailboxProperties * self); #line 64 "mn-pi-mailbox-properties.c" #line 190 "src/mn-pi-mailbox-properties.gob" static void mn_pi_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data); #line 67 "mn-pi-mailbox-properties.c" #line 203 "src/mn-pi-mailbox-properties.gob" static void ___6_mn_pi_mailbox_properties_activate (MNMailboxProperties * properties); #line 70 "mn-pi-mailbox-properties.c" #line 214 "src/mn-pi-mailbox-properties.gob" static void ___7_mn_pi_mailbox_properties_deactivate (MNMailboxProperties * properties); #line 73 "mn-pi-mailbox-properties.c" #line 222 "src/mn-pi-mailbox-properties.gob" static void ___8_mn_pi_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox); #line 76 "mn-pi-mailbox-properties.c" #line 236 "src/mn-pi-mailbox-properties.gob" static MNMailbox * ___9_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties); #line 79 "mn-pi-mailbox-properties.c" enum { PROP_0, PROP_COMPLETE }; /* pointer to the class of our parent */ static MNAuthenticatedMailboxPropertiesClass *parent_class = NULL; /* Short form macros */ #define self_add_connection_type mn_pi_mailbox_properties_add_connection_type #define self_add_authentication mn_pi_mailbox_properties_add_authentication #define self_radio_toggled_h mn_pi_mailbox_properties_radio_toggled_h #define self_get_contents mn_pi_mailbox_properties_get_contents #define self_is_complete mn_pi_mailbox_properties_is_complete GType mn_pi_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNPIMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_pi_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNPIMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_pi_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES, "MNPIMailboxProperties", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNPIMailboxProperties *)g_object_new(mn_pi_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNPIMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNPIMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNPIMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNPIMailboxProperties *)g_object_new_valist (mn_pi_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::dispose" MNPIMailboxProperties *self G_GNUC_UNUSED = MN_PI_MAILBOX_PROPERTIES (obj_self); if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 40 "src/mn-pi-mailbox-properties.gob" if(self->connection_page) { g_object_unref ((gpointer) self->connection_page); self->connection_page = NULL; } #line 147 "mn-pi-mailbox-properties.c" #line 41 "src/mn-pi-mailbox-properties.gob" if(self->connection_size_group) { g_object_unref ((gpointer) self->connection_size_group); self->connection_size_group = NULL; } #line 150 "mn-pi-mailbox-properties.c" } #undef __GOB_FUNCTION__ #line 52 "src/mn-pi-mailbox-properties.gob" static void mn_pi_mailbox_properties_class_init (MNPIMailboxPropertiesClass * class G_GNUC_UNUSED) { #line 158 "mn-pi-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)class; parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES); #line 203 "src/mn-pi-mailbox-properties.gob" mn_mailbox_properties_class->activate = ___6_mn_pi_mailbox_properties_activate; #line 214 "src/mn-pi-mailbox-properties.gob" mn_mailbox_properties_class->deactivate = ___7_mn_pi_mailbox_properties_deactivate; #line 222 "src/mn-pi-mailbox-properties.gob" mn_mailbox_properties_class->set_mailbox = ___8_mn_pi_mailbox_properties_set_mailbox; #line 236 "src/mn-pi-mailbox-properties.gob" mn_mailbox_properties_class->get_mailbox = ___9_mn_pi_mailbox_properties_get_mailbox; #line 173 "mn-pi-mailbox-properties.c" g_object_class->dispose = ___dispose; g_object_class->get_property = ___object_get_property; { g_object_class_override_property (g_object_class, PROP_COMPLETE, "complete"); } { #line 53 "src/mn-pi-mailbox-properties.gob" MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->stock_id = MN_STOCK_REMOTE; #line 188 "mn-pi-mailbox-properties.c" } } #undef __GOB_FUNCTION__ #line 59 "src/mn-pi-mailbox-properties.gob" static void mn_pi_mailbox_properties_init (MNPIMailboxProperties * self G_GNUC_UNUSED) { #line 196 "mn-pi-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::init" #line 41 "src/mn-pi-mailbox-properties.gob" self->connection_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); #line 200 "mn-pi-mailbox-properties.c" { #line 60 "src/mn-pi-mailbox-properties.gob" MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); MNAuthenticatedMailboxProperties *auth = MN_AUTHENTICATED_MAILBOX_PROPERTIES(self); GtkWidget *hbox; GtkWidget *label; GtkWidget *type_section; GtkWidget *type_vbox; int i; static const struct { MNPIMailboxConnectionType type; const char *mnemonic; } connection_types[] = { { MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL, N_("_Standard") }, { MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL, N_("In-_band SSL/TLS") }, { MN_PI_MAILBOX_CONNECTION_TYPE_SSL, N_("SSL/TLS on s_eparate port") } }; hbox = mn_authenticated_mailbox_properties_field_new(auth, _("_Server:"), &label, &self->server_entry); gtk_box_pack_start(GTK_BOX(auth->account_vbox), hbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->username_vbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->password_vbox, FALSE, FALSE, 0); properties->entries = mn_g_slist_append_elements(properties->entries, self->server_entry, auth->username_entry, auth->password_entry, NULL); self->connection_page = gtk_vbox_new(FALSE, 18); gtk_container_set_border_width(GTK_CONTAINER(self->connection_page), 12); mn_mailbox_properties_dialog_set_help_section(self->connection_page, "mailbox-properties-connection"); g_object_ref_sink(self->connection_page); /* translators: header capitalization */ type_section = mn_hig_section_new_with_box(_("Connection Type"), NULL, &type_vbox); gtk_box_pack_start(GTK_BOX(self->connection_page), type_section, FALSE, FALSE, 0); gtk_widget_show(type_section); for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++) self_add_connection_type(self, GTK_BOX(type_vbox), connection_types[i].type, _(connection_types[i].mnemonic)); #if ! WITH_SSL gtk_widget_set_sensitive(self->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL], FALSE); gtk_widget_set_sensitive(self->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_SSL], FALSE); #endif /* by default, standard is enabled */ gtk_widget_set_sensitive(self->port_spin[MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL], FALSE); gtk_widget_set_sensitive(self->port_spin[MN_PI_MAILBOX_CONNECTION_TYPE_SSL], FALSE); self_add_authentication(self); gtk_widget_show_all(self->connection_page); g_object_connect(self->server_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); g_object_connect(auth->username_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); #line 275 "mn-pi-mailbox-properties.c" } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::get_property" { MNPIMailboxProperties *self G_GNUC_UNUSED; self = MN_PI_MAILBOX_PROPERTIES (object); switch (property_id) { case PROP_COMPLETE: { #line 48 "src/mn-pi-mailbox-properties.gob" g_value_set_boolean(VAL, self_is_complete(self)); #line 298 "mn-pi-mailbox-properties.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 133 "src/mn-pi-mailbox-properties.gob" static void mn_pi_mailbox_properties_add_connection_type (MNPIMailboxProperties * self, GtkBox * type_vbox, MNPIMailboxConnectionType type, const char * mnemonic) { #line 319 "mn-pi-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::add_connection_type" #line 133 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 133 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self)); #line 133 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (type_vbox != NULL); #line 133 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (mnemonic != NULL); #line 329 "mn-pi-mailbox-properties.c" { #line 138 "src/mn-pi-mailbox-properties.gob" GtkWidget *hbox; GtkWidget *port_label; self->conn_radio[type] = type == 0 ? gtk_radio_button_new_with_mnemonic(NULL, mnemonic) : gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(self->conn_radio[0]), mnemonic); port_label = gtk_label_new(_("Port:")); self->port_spin[type] = gtk_spin_button_new_with_range(0, 0xFFFF, 1); gtk_entry_set_activates_default(GTK_ENTRY(self->port_spin[type]), TRUE); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(self->port_spin[type]), TRUE); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), self->conn_radio[type], FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), port_label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), self->port_spin[type], FALSE, FALSE, 0); gtk_box_pack_start(type_vbox, hbox, FALSE, FALSE, 0); gtk_widget_show_all(hbox); gtk_size_group_add_widget(self->connection_size_group, self->conn_radio[type]); g_signal_connect(self->conn_radio[type], "toggled", G_CALLBACK(self_radio_toggled_h), self); }} #line 357 "mn-pi-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 164 "src/mn-pi-mailbox-properties.gob" static void mn_pi_mailbox_properties_add_authentication (MNPIMailboxProperties * self) { #line 364 "mn-pi-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::add_authentication" #line 164 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 164 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self)); #line 370 "mn-pi-mailbox-properties.c" { #line 166 "src/mn-pi-mailbox-properties.gob" GtkWidget *section; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *label; /* translators: header capitalization */ section = mn_hig_section_new_with_box(_("Authentication"), NULL, &vbox); gtk_box_pack_start(GTK_BOX(self->connection_page), section, FALSE, FALSE, 0); hbox = gtk_hbox_new(FALSE, 12); label = gtk_label_new_with_mnemonic(_("_Mechanism:")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); self->auth_combo = mn_auth_combo_box_new(); gtk_label_set_mnemonic_widget(GTK_LABEL(label), self->auth_combo); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), self->auth_combo, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); gtk_size_group_add_widget(self->connection_size_group, label); }} #line 396 "mn-pi-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 190 "src/mn-pi-mailbox-properties.gob" static void mn_pi_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data) { #line 403 "mn-pi-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::radio_toggled_h" #line 190 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (togglebutton != NULL); #line 190 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (GTK_IS_TOGGLE_BUTTON (togglebutton)); #line 190 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (user_data != NULL); #line 411 "mn-pi-mailbox-properties.c" { #line 193 "src/mn-pi-mailbox-properties.gob" Self *self = user_data; int i; for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++) gtk_widget_set_sensitive(self->port_spin[i], GTK_WIDGET_SENSITIVE(self->conn_radio[i]) && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self->conn_radio[i]))); g_object_notify(G_OBJECT(self), "complete"); }} #line 423 "mn-pi-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 203 "src/mn-pi-mailbox-properties.gob" static void ___6_mn_pi_mailbox_properties_activate (MNMailboxProperties * properties G_GNUC_UNUSED) #line 429 "mn-pi-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->activate) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->activate)(___properties); } { #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::activate" { #line 205 "src/mn-pi-mailbox-properties.gob" Self *self = SELF(properties); PARENT_HANDLER(properties); gtk_notebook_insert_page(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), self->connection_page, NULL, 1); gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), self->connection_page, _("Connection")); }} #line 445 "mn-pi-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 214 "src/mn-pi-mailbox-properties.gob" static void ___7_mn_pi_mailbox_properties_deactivate (MNMailboxProperties * properties G_GNUC_UNUSED) #line 452 "mn-pi-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->deactivate) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->deactivate)(___properties); } { #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::deactivate" { #line 216 "src/mn-pi-mailbox-properties.gob" PARENT_HANDLER(properties); gtk_notebook_remove_page(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), 1); }} #line 465 "mn-pi-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 222 "src/mn-pi-mailbox-properties.gob" static void ___8_mn_pi_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox) #line 472 "mn-pi-mailbox-properties.c" #define PARENT_HANDLER(___properties,___mailbox) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); } { #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::set_mailbox" { #line 224 "src/mn-pi-mailbox-properties.gob" Self *self = SELF(properties); MNPIMailbox *pi_mailbox = MN_PI_MAILBOX(mailbox); PARENT_HANDLER(properties, mailbox); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->conn_radio[pi_mailbox->connection_type]), TRUE); mn_auth_combo_box_set_active_mechanism(MN_AUTH_COMBO_BOX(self->auth_combo), pi_mailbox->authmech); gtk_entry_set_text(GTK_ENTRY(self->server_entry), pi_mailbox->hostname); gtk_spin_button_set_value(GTK_SPIN_BUTTON(self->port_spin[pi_mailbox->connection_type]), pi_mailbox->runtime_port); }} #line 491 "mn-pi-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 236 "src/mn-pi-mailbox-properties.gob" static MNMailbox * ___9_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED) #line 498 "mn-pi-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ ((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::get_mailbox" { #line 238 "src/mn-pi-mailbox-properties.gob" MNMailbox *mailbox; MNPIMailboxConnectionType connection_type; char *authmech; const char *server; int port; mailbox = PARENT_HANDLER(properties); self_get_contents(SELF(properties), &connection_type, &authmech, &server, &port); g_object_set(mailbox, MN_PI_MAILBOX_PROP_CONNECTION_TYPE(connection_type), MN_PI_MAILBOX_PROP_AUTHMECH(authmech), MN_PI_MAILBOX_PROP_HOSTNAME((char *) server), MN_PI_MAILBOX_PROP_PORT(port), NULL); g_free(authmech); return mailbox; }} #line 533 "mn-pi-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 265 "src/mn-pi-mailbox-properties.gob" void mn_pi_mailbox_properties_get_contents (MNPIMailboxProperties * self, MNPIMailboxConnectionType * connection_type, char ** authmech, const char ** server, int * port) { #line 541 "mn-pi-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::get_contents" #line 265 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 265 "src/mn-pi-mailbox-properties.gob" g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self)); #line 547 "mn-pi-mailbox-properties.c" { #line 271 "src/mn-pi-mailbox-properties.gob" MNPIMailboxConnectionType _connection_type; if (connection_type || port) { int i; _connection_type = -1; for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++) if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self->conn_radio[i]))) { _connection_type = i; break; } g_assert(_connection_type != -1); } if (connection_type) *connection_type = _connection_type; if (authmech) *authmech = mn_auth_combo_box_get_active_mechanism(MN_AUTH_COMBO_BOX(self->auth_combo)); if (server) *server = gtk_entry_get_text(GTK_ENTRY(self->server_entry)); if (port) *port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(self->port_spin[_connection_type])); }} #line 578 "mn-pi-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 300 "src/mn-pi-mailbox-properties.gob" gboolean mn_pi_mailbox_properties_is_complete (MNPIMailboxProperties * self) { #line 585 "mn-pi-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::is_complete" #line 300 "src/mn-pi-mailbox-properties.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 300 "src/mn-pi-mailbox-properties.gob" g_return_val_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self), (gboolean )0); #line 591 "mn-pi-mailbox-properties.c" { #line 302 "src/mn-pi-mailbox-properties.gob" const char *server; if (! mn_authenticated_mailbox_properties_is_complete(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self))) return FALSE; server = gtk_entry_get_text(GTK_ENTRY(self->server_entry)); if (! *server) return FALSE; #if ! WITH_SSL if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(MN_PI_MAILBOX_PROPERTIES(self)->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL]))) return FALSE; #endif /* WITH_SSL */ return TRUE; }} #line 611 "mn-pi-mailbox-properties.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-evolution-server-private.h0000644000175000001440000000044311015312644025320 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_EVOLUTION_SERVER_PRIVATE_H__ #define __MN_EVOLUTION_SERVER_PRIVATE_H__ #include "mn-evolution-server.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-client.c0000644000175000001440000003042511015312647023621 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-evolution-client.h" #include "mn-evolution-client-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-evolution-client.gob" #include "mn-shell.h" #include "mn-evolution.h" #include "mn-util.h" #line 32 "mn-evolution-client.c" /* self casting macros */ #define SELF(x) MN_EVOLUTION_CLIENT(x) #define SELF_CONST(x) MN_EVOLUTION_CLIENT_CONST(x) #define IS_SELF(x) MN_IS_EVOLUTION_CLIENT(x) #define TYPE_SELF MN_TYPE_EVOLUTION_CLIENT #define SELF_CLASS(x) MN_EVOLUTION_CLIENT_CLASS(x) #define SELF_GET_CLASS(x) MN_EVOLUTION_CLIENT_GET_CLASS(x) /* self typedefs */ typedef MNEvolutionClient Self; typedef MNEvolutionClientClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-evolution-client.gob" static void mn_evolution_client_class_init (MNEvolutionClientClass * c); #line 51 "mn-evolution-client.c" #line 43 "src/mn-evolution-client.gob" static void mn_evolution_client_init (MNEvolutionClient * self); #line 54 "mn-evolution-client.c" #line 48 "src/mn-evolution-client.gob" static void mn_evolution_client_connect_name_owner_signal (MNEvolutionClient * self); #line 57 "mn-evolution-client.c" #line 63 "src/mn-evolution-client.gob" static void mn_evolution_client_disconnect_name_owner_signal (MNEvolutionClient * self); #line 60 "mn-evolution-client.c" #line 77 "src/mn-evolution-client.gob" static void mn_evolution_client_connect (MNEvolutionClient * self); #line 63 "mn-evolution-client.c" #line 110 "src/mn-evolution-client.gob" static void mn_evolution_client_name_owner_changed_h (DBusGProxy * proxy, const char * service_name, const char * old_owner, const char * new_owner, gpointer user_data); #line 66 "mn-evolution-client.c" #line 128 "src/mn-evolution-client.gob" static void mn_evolution_client_proxy_destroy_h (DBusGProxy * proxy, gpointer user_data); #line 69 "mn-evolution-client.c" enum { PROP_0, PROP_PROXY }; /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_get_proxy mn_evolution_client_get_proxy #define self_set_proxy mn_evolution_client_set_proxy #define self_connect_name_owner_signal mn_evolution_client_connect_name_owner_signal #define self_disconnect_name_owner_signal mn_evolution_client_disconnect_name_owner_signal #define self_connect mn_evolution_client_connect #define self_name_owner_changed_h mn_evolution_client_name_owner_changed_h #define self_proxy_destroy_h mn_evolution_client_proxy_destroy_h #define self_get mn_evolution_client_get GType mn_evolution_client_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNEvolutionClientClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_evolution_client_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNEvolutionClient), 0 /* n_preallocs */, (GInstanceInitFunc) mn_evolution_client_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNEvolutionClient", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNEvolutionClient *)g_object_new(mn_evolution_client_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNEvolutionClient * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNEvolutionClient * GET_NEW_VARG (const char *first, ...) { MNEvolutionClient *ret; va_list ap; va_start (ap, first); ret = (MNEvolutionClient *)g_object_new_valist (mn_evolution_client_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Evolution:Client::finalize" MNEvolutionClient *self G_GNUC_UNUSED = MN_EVOLUTION_CLIENT (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_evolution_client_class_init (MNEvolutionClientClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Evolution:Client::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNEvolutionClientPrivate)); parent_class = g_type_class_ref (G_TYPE_OBJECT); g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_pointer ("proxy" /* name */, NULL /* nick */, NULL /* blurb */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_PROXY, param_spec); } } #undef __GOB_FUNCTION__ #line 43 "src/mn-evolution-client.gob" static void mn_evolution_client_init (MNEvolutionClient * self G_GNUC_UNUSED) { #line 173 "mn-evolution-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Client::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_EVOLUTION_CLIENT,MNEvolutionClientPrivate); { #line 44 "src/mn-evolution-client.gob" self_connect(self); #line 181 "mn-evolution-client.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Client::set_property" { MNEvolutionClient *self G_GNUC_UNUSED; self = MN_EVOLUTION_CLIENT (object); switch (property_id) { case PROP_PROXY: { #line 39 "src/mn-evolution-client.gob" self->proxy = g_value_get_pointer (VAL); #line 202 "mn-evolution-client.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Client::get_property" { MNEvolutionClient *self G_GNUC_UNUSED; self = MN_EVOLUTION_CLIENT (object); switch (property_id) { case PROP_PROXY: { #line 39 "src/mn-evolution-client.gob" g_value_set_pointer (VAL, self->proxy); #line 233 "mn-evolution-client.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 39 "src/mn-evolution-client.gob" DBusGProxy * mn_evolution_client_get_proxy (MNEvolutionClient * self) { #line 253 "mn-evolution-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Client::get_proxy" { #line 39 "src/mn-evolution-client.gob" DBusGProxy* val; g_object_get (G_OBJECT (self), "proxy", &val, NULL); return val; }} #line 259 "mn-evolution-client.c" #undef __GOB_FUNCTION__ #line 39 "src/mn-evolution-client.gob" void mn_evolution_client_set_proxy (MNEvolutionClient * self, DBusGProxy * val) { #line 266 "mn-evolution-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Client::set_proxy" { #line 39 "src/mn-evolution-client.gob" g_object_set (G_OBJECT (self), "proxy", val, NULL); }} #line 272 "mn-evolution-client.c" #undef __GOB_FUNCTION__ #line 48 "src/mn-evolution-client.gob" static void mn_evolution_client_connect_name_owner_signal (MNEvolutionClient * self) { #line 280 "mn-evolution-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Client::connect_name_owner_signal" #line 48 "src/mn-evolution-client.gob" g_return_if_fail (self != NULL); #line 48 "src/mn-evolution-client.gob" g_return_if_fail (MN_IS_EVOLUTION_CLIENT (self)); #line 286 "mn-evolution-client.c" { #line 50 "src/mn-evolution-client.gob" if (selfp->name_owner_signal_connected) return; dbus_g_proxy_connect_signal(mn_shell->session_bus_proxy, "NameOwnerChanged", G_CALLBACK(self_name_owner_changed_h), self, NULL); selfp->name_owner_signal_connected = TRUE; }} #line 301 "mn-evolution-client.c" #undef __GOB_FUNCTION__ #line 63 "src/mn-evolution-client.gob" static void mn_evolution_client_disconnect_name_owner_signal (MNEvolutionClient * self) { #line 308 "mn-evolution-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Client::disconnect_name_owner_signal" #line 63 "src/mn-evolution-client.gob" g_return_if_fail (self != NULL); #line 63 "src/mn-evolution-client.gob" g_return_if_fail (MN_IS_EVOLUTION_CLIENT (self)); #line 314 "mn-evolution-client.c" { #line 65 "src/mn-evolution-client.gob" if (! selfp->name_owner_signal_connected) return; dbus_g_proxy_disconnect_signal(mn_shell->session_bus_proxy, "NameOwnerChanged", G_CALLBACK(self_name_owner_changed_h), self); selfp->name_owner_signal_connected = FALSE; }} #line 328 "mn-evolution-client.c" #undef __GOB_FUNCTION__ #line 77 "src/mn-evolution-client.gob" static void mn_evolution_client_connect (MNEvolutionClient * self) { #line 335 "mn-evolution-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Client::connect" #line 77 "src/mn-evolution-client.gob" g_return_if_fail (self != NULL); #line 77 "src/mn-evolution-client.gob" g_return_if_fail (MN_IS_EVOLUTION_CLIENT (self)); #line 341 "mn-evolution-client.c" { #line 79 "src/mn-evolution-client.gob" DBusGProxy *proxy; g_return_if_fail(self->proxy == NULL); proxy = dbus_g_proxy_new_for_name_owner(mn_shell->session_bus, MN_EVOLUTION_SERVER_SERVICE, MN_EVOLUTION_SERVER_PATH, MN_EVOLUTION_SERVER_INTERFACE, NULL); if (proxy) { self_disconnect_name_owner_signal(self); dbus_g_proxy_add_signal(proxy, MN_EVOLUTION_SERVER_SIGNAL_FOLDER_CHANGED, G_TYPE_STRING, /* uri */ G_TYPE_INVALID); dbus_g_proxy_add_signal(proxy, MN_EVOLUTION_SERVER_SIGNAL_MESSAGE_READING, G_TYPE_STRING, /* uri */ G_TYPE_INVALID); g_signal_connect(proxy, "destroy", G_CALLBACK(self_proxy_destroy_h), self); self_set_proxy(self, proxy); } else self_connect_name_owner_signal(self); }} #line 374 "mn-evolution-client.c" #undef __GOB_FUNCTION__ #line 110 "src/mn-evolution-client.gob" static void mn_evolution_client_name_owner_changed_h (DBusGProxy * proxy, const char * service_name, const char * old_owner, const char * new_owner, gpointer user_data) { #line 381 "mn-evolution-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Client::name_owner_changed_h" { #line 116 "src/mn-evolution-client.gob" Self *self = user_data; /* this is a main loop callback */ GDK_THREADS_ENTER(); if (! strcmp(service_name, MN_EVOLUTION_SERVER_SERVICE) && *new_owner) self_connect(self); GDK_THREADS_LEAVE(); }} #line 396 "mn-evolution-client.c" #undef __GOB_FUNCTION__ #line 128 "src/mn-evolution-client.gob" static void mn_evolution_client_proxy_destroy_h (DBusGProxy * proxy, gpointer user_data) { #line 403 "mn-evolution-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Client::proxy_destroy_h" { #line 130 "src/mn-evolution-client.gob" Self *self = user_data; /* this is a main loop callback */ GDK_THREADS_ENTER(); self_set_proxy(self, NULL); self_connect_name_owner_signal(self); GDK_THREADS_LEAVE(); }} #line 418 "mn-evolution-client.c" #undef __GOB_FUNCTION__ #line 142 "src/mn-evolution-client.gob" MNEvolutionClient * mn_evolution_client_get (void) { #line 425 "mn-evolution-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Client::get" { #line 144 "src/mn-evolution-client.gob" static Self *self = NULL; /* does not need to be thread-safe */ if (! self) self = GET_NEW; return self; }} #line 438 "mn-evolution-client.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-maildir-message-private.h0000644000175000001440000000060611015312645025035 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MAILDIR_MESSAGE_PRIVATE_H__ #define __MN_MAILDIR_MESSAGE_PRIVATE_H__ #include "mn-maildir-message.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 24 "src/mn-maildir-message.gob" #include #line 18 "mn-maildir-message-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-vfs-message.gob.stamp0000644000175000001440000000000011015312646024172 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-compact-message-view.h0000644000175000001440000000331411015312644024340 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-message-view.h" #ifndef __MN_COMPACT_MESSAGE_VIEW_H__ #define __MN_COMPACT_MESSAGE_VIEW_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_COMPACT_MESSAGE_VIEW (mn_compact_message_view_get_type()) #define MN_COMPACT_MESSAGE_VIEW(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_compact_message_view_get_type(), MNCompactMessageView) #define MN_COMPACT_MESSAGE_VIEW_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_compact_message_view_get_type(), MNCompactMessageView const) #define MN_COMPACT_MESSAGE_VIEW_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_compact_message_view_get_type(), MNCompactMessageViewClass) #define MN_IS_COMPACT_MESSAGE_VIEW(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_compact_message_view_get_type ()) #define MN_COMPACT_MESSAGE_VIEW_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_compact_message_view_get_type(), MNCompactMessageViewClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_COMPACT_MESSAGE_VIEW__ #define __TYPEDEF_MN_COMPACT_MESSAGE_VIEW__ typedef struct _MNCompactMessageView MNCompactMessageView; #endif struct _MNCompactMessageView { MNMessageView __parent__; }; /* * Class definition */ typedef struct _MNCompactMessageViewClass MNCompactMessageViewClass; struct _MNCompactMessageViewClass { MNMessageViewClass __parent__; }; /* * Public methods */ GType mn_compact_message_view_get_type (void) G_GNUC_CONST; #line 77 "src/mn-compact-message-view.gob" GtkWidget * mn_compact_message_view_new (void); #line 55 "mn-compact-message-view.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-popups.h0000644000175000001440000000261111015312645021646 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #ifndef __MN_POPUPS_H__ #define __MN_POPUPS_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_POPUPS (mn_popups_get_type()) #define MN_POPUPS(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_popups_get_type(), MNPopups) #define MN_POPUPS_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_popups_get_type(), MNPopups const) #define MN_POPUPS_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_popups_get_type(), MNPopupsClass) #define MN_IS_POPUPS(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_popups_get_type ()) #define MN_POPUPS_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_popups_get_type(), MNPopupsClass) /* Private structure type */ typedef struct _MNPopupsPrivate MNPopupsPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_POPUPS__ #define __TYPEDEF_MN_POPUPS__ typedef struct _MNPopups MNPopups; #endif struct _MNPopups { GObject __parent__; /*< private >*/ MNPopupsPrivate *_priv; }; /* * Class definition */ typedef struct _MNPopupsClass MNPopupsClass; struct _MNPopupsClass { GObjectClass __parent__; }; /* * Public methods */ GType mn_popups_get_type (void) G_GNUC_CONST; #line 265 "src/mn-popups.gob" MNPopups * mn_popups_new (void); #line 56 "mn-popups.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-test-mailbox.c0000644000175000001440000001147611015312645022734 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-test-mailbox.h" #include "mn-test-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-test-mailbox.gob" #include #include "mn-mailbox-private.h" #include "mn-message.h" #include "mn-util.h" #line 33 "mn-test-mailbox.c" /* self casting macros */ #define SELF(x) MN_TEST_MAILBOX(x) #define SELF_CONST(x) MN_TEST_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_TEST_MAILBOX(x) #define TYPE_SELF MN_TYPE_TEST_MAILBOX #define SELF_CLASS(x) MN_TEST_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_TEST_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNTestMailbox Self; typedef MNTestMailboxClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-test-mailbox.gob" static void mn_test_mailbox_class_init (MNTestMailboxClass * c); #line 50 "mn-test-mailbox.c" #line 33 "src/mn-test-mailbox.gob" static void mn_test_mailbox_init (MNTestMailbox * self); #line 53 "mn-test-mailbox.c" #line 41 "src/mn-test-mailbox.gob" static void ___2_mn_test_mailbox_check (MNMailbox * mailbox); #line 56 "mn-test-mailbox.c" /* pointer to the class of our parent */ static MNMailboxClass *parent_class = NULL; /* Short form macros */ #define self_new mn_test_mailbox_new GType mn_test_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNTestMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_test_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNTestMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_test_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_MAILBOX, "MNTestMailbox", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNTestMailbox *)g_object_new(mn_test_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNTestMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNTestMailbox * GET_NEW_VARG (const char *first, ...) { MNTestMailbox *ret; va_list ap; va_start (ap, first); ret = (MNTestMailbox *)g_object_new_valist (mn_test_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void mn_test_mailbox_class_init (MNTestMailboxClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Test:Mailbox::class_init" MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)c; parent_class = g_type_class_ref (MN_TYPE_MAILBOX); #line 41 "src/mn-test-mailbox.gob" mn_mailbox_class->check = ___2_mn_test_mailbox_check; #line 115 "mn-test-mailbox.c" } #undef __GOB_FUNCTION__ #line 33 "src/mn-test-mailbox.gob" static void mn_test_mailbox_init (MNTestMailbox * self G_GNUC_UNUSED) { #line 122 "mn-test-mailbox.c" #define __GOB_FUNCTION__ "MN:Test:Mailbox::init" { #line 34 "src/mn-test-mailbox.gob" MNMailbox *mailbox = MN_MAILBOX(self); mn_mailbox_set_poll(mailbox, FALSE); mailbox->runtime_name = g_strdup(_("Test mailbox")); #line 132 "mn-test-mailbox.c" } } #undef __GOB_FUNCTION__ #line 41 "src/mn-test-mailbox.gob" static void ___2_mn_test_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED) #line 142 "mn-test-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->check) \ (* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Test:Mailbox::check" { #line 43 "src/mn-test-mailbox.gob" GSList *messages = NULL; time_t now; int i; PARENT_HANDLER(mailbox); now = mn_time(); for (i = 1; i < 4; i++) { MNMessage *message; char *subject; subject = g_strdup_printf(_("Test message #%i"), i); message = mn_message_new(mailbox, now, NULL, NULL, /* translators: header capitalization */ _("Mail Notification Properties Dialog"), subject, NULL, MN_MESSAGE_NEW); g_free(subject); messages = g_slist_append(messages, message); } mn_mailbox_set_messages(mailbox, messages); mn_g_object_slist_free(messages); }} #line 182 "mn-test-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 76 "src/mn-test-mailbox.gob" MNMailbox * mn_test_mailbox_new (void) { #line 190 "mn-test-mailbox.c" #define __GOB_FUNCTION__ "MN:Test:Mailbox::new" { #line 78 "src/mn-test-mailbox.gob" return MN_MAILBOX(GET_NEW); }} #line 197 "mn-test-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-imap-mailbox-properties.h0000644000175000001440000000464011015312646025076 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-pi-mailbox-properties.h" #ifndef __MN_IMAP_MAILBOX_PROPERTIES_H__ #define __MN_IMAP_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_IMAP_MAILBOX_PROPERTIES (mn_imap_mailbox_properties_get_type()) #define MN_IMAP_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_imap_mailbox_properties_get_type(), MNIMAPMailboxProperties) #define MN_IMAP_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_imap_mailbox_properties_get_type(), MNIMAPMailboxProperties const) #define MN_IMAP_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_imap_mailbox_properties_get_type(), MNIMAPMailboxPropertiesClass) #define MN_IS_IMAP_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_imap_mailbox_properties_get_type ()) #define MN_IMAP_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_imap_mailbox_properties_get_type(), MNIMAPMailboxPropertiesClass) /* Private structure type */ typedef struct _MNIMAPMailboxPropertiesPrivate MNIMAPMailboxPropertiesPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_IMAP_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_IMAP_MAILBOX_PROPERTIES__ typedef struct _MNIMAPMailboxProperties MNIMAPMailboxProperties; #endif struct _MNIMAPMailboxProperties { MNPIMailboxProperties __parent__; /*< private >*/ MNIMAPMailboxPropertiesPrivate *_priv; }; /* * Class definition */ typedef struct _MNIMAPMailboxPropertiesClass MNIMAPMailboxPropertiesClass; struct _MNIMAPMailboxPropertiesClass { MNPIMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_imap_mailbox_properties_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_IMAP_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete", __extension__ ({gboolean *z = (arg); z;}) #define MN_IMAP_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_IMAP_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete",(gboolean *)(arg) #define MN_IMAP_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-file-chooser-button.gob.stamp0000644000175000001440000000000011015312644025640 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-evolution-folder-tree-client-private.h0000644000175000001440000000157311015312647027506 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_EVOLUTION_FOLDER_TREE_CLIENT_PRIVATE_H__ #define __MN_EVOLUTION_FOLDER_TREE_CLIENT_PRIVATE_H__ #include "mn-evolution-folder-tree-client.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 24 "src/mn-evolution-folder-tree-client.gob" #include "mn-evolution-client.h" #line 18 "mn-evolution-folder-tree-client-private.h" struct _MNEvolutionFolderTreeClientPrivate { #line 39 "src/mn-evolution-folder-tree-client.gob" DBusGProxy * proxy; #line 40 "src/mn-evolution-folder-tree-client.gob" DBusGProxy * properties_proxy; #line 63 "src/mn-evolution-folder-tree-client.gob" MNEvolutionClient * client; #line 65 "src/mn-evolution-folder-tree-client.gob" unsigned int contact_error_idle_id; #line 28 "mn-evolution-folder-tree-client-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-tooltips.c0000644000175000001440000007711511015312645022203 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-tooltips.h" #include "mn-tooltips-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 41 "src/mn-tooltips.gob" #include "mn-util.h" #define TOOLTIPS_DATA "mn-tooltips-data" #define TOOLTIPS_INFO "mn-tooltips-info" #define TOOLTIPS_KEYBOARD_MODE "gtk-tooltips-keyboard-mode" /* compatible with GtkTooltips */ #define DELAY 500 /* Default delay in ms */ #define STICKY_DELAY 0 /* Delay before popping up next tip * if we're sticky */ #define STICKY_REVERT_DELAY 1000 /* Delay before sticky tooltips revert * to normal */ /* The private flags that are used in the private_flags member of GtkWidget. */ typedef enum { PRIVATE_GTK_LEAVE_PENDING = 1 << 4 } GtkPrivateFlags; /* Macros for extracting a widgets private_flags from GtkWidget. */ #define GTK_PRIVATE_FLAGS(wid) (GTK_WIDGET (wid)->private_flags) /* Macros for setting and clearing private widget flags. * we use a preprocessor string concatenation here for a clear * flags/private_flags distinction at the cost of single flag operations. */ #define GTK_PRIVATE_SET_FLAG(wid,flag) G_STMT_START{ (GTK_PRIVATE_FLAGS (wid) |= (PRIVATE_ ## flag)); }G_STMT_END #line 59 "mn-tooltips.c" /* self casting macros */ #define SELF(x) MN_TOOLTIPS(x) #define SELF_CONST(x) MN_TOOLTIPS_CONST(x) #define IS_SELF(x) MN_IS_TOOLTIPS(x) #define TYPE_SELF MN_TYPE_TOOLTIPS #define SELF_CLASS(x) MN_TOOLTIPS_CLASS(x) #define SELF_GET_CLASS(x) MN_TOOLTIPS_GET_CLASS(x) /* self typedefs */ typedef MNTooltips Self; typedef MNTooltipsClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-tooltips.gob" static void mn_tooltips_init (MNTooltips * o); #line 76 "mn-tooltips.c" #line 0 "src/mn-tooltips.gob" static void mn_tooltips_class_init (MNTooltipsClass * c); #line 79 "mn-tooltips.c" #line 86 "src/mn-tooltips.gob" static void mn_tooltips_finalize (MNTooltips * self); #line 82 "mn-tooltips.c" #line 102 "src/mn-tooltips.gob" static void mn_tooltips_destroy_data (TooltipsData * data); #line 85 "mn-tooltips.c" #line 117 "src/mn-tooltips.gob" static void mn_tooltips_display_closed_h (GdkDisplay * display, gboolean is_error, gpointer user_data); #line 88 "mn-tooltips.c" #line 126 "src/mn-tooltips.gob" static void mn_tooltips_disconnect_display_closed (MNTooltips * self); #line 91 "mn-tooltips.c" #line 134 "src/mn-tooltips.gob" static void mn_tooltips_unset_window (MNTooltips * self); #line 94 "mn-tooltips.c" #line 144 "src/mn-tooltips.gob" static void mn_tooltips_update_screen (MNTooltips * self, gboolean new_window); #line 97 "mn-tooltips.c" #line 171 "src/mn-tooltips.gob" static void mn_tooltips_force_window (MNTooltips * self); #line 100 "mn-tooltips.c" #line 192 "src/mn-tooltips.gob" static TooltipsData * mn_tooltips_get_data (GtkWidget * widget); #line 103 "mn-tooltips.c" #line 198 "src/mn-tooltips.gob" static void mn_tooltips_set_tip_widget_real (MNTooltips * self, GtkWidget * widget, GtkWidget * tip_widget, int border_width); #line 106 "mn-tooltips.c" #line 287 "src/mn-tooltips.gob" static gboolean mn_tooltips_paint_window (MNTooltips * self); #line 109 "mn-tooltips.c" #line 308 "src/mn-tooltips.gob" static void mn_tooltips_draw_tips (MNTooltips * self); #line 112 "mn-tooltips.c" #line 418 "src/mn-tooltips.gob" static gboolean mn_tooltips_timeout_cb (gpointer data); #line 115 "mn-tooltips.c" #line 430 "src/mn-tooltips.gob" static void mn_tooltips_set_active_widget (MNTooltips * self, GtkWidget * widget); #line 118 "mn-tooltips.c" #line 463 "src/mn-tooltips.gob" static void mn_tooltips_show_tip (GtkWidget * widget); #line 121 "mn-tooltips.c" #line 479 "src/mn-tooltips.gob" static void mn_tooltips_hide_tip (GtkWidget * widget); #line 124 "mn-tooltips.c" #line 492 "src/mn-tooltips.gob" static gboolean mn_tooltips_recently_shown (MNTooltips * self); #line 127 "mn-tooltips.c" #line 504 "src/mn-tooltips.gob" static gboolean mn_tooltips_get_keyboard_mode (GtkWidget * widget); #line 130 "mn-tooltips.c" #line 515 "src/mn-tooltips.gob" static void mn_tooltips_start_keyboard_mode (GtkWidget * widget); #line 133 "mn-tooltips.c" #line 531 "src/mn-tooltips.gob" static void mn_tooltips_stop_keyboard_mode (GtkWidget * widget); #line 136 "mn-tooltips.c" #line 547 "src/mn-tooltips.gob" static void mn_tooltips_start_delay (MNTooltips * self, GtkWidget * widget); #line 139 "mn-tooltips.c" #line 562 "src/mn-tooltips.gob" static void mn_tooltips_event_after_h (GtkWidget * widget, GdkEvent * event, gpointer user_data); #line 142 "mn-tooltips.c" #line 647 "src/mn-tooltips.gob" static void mn_tooltips_widget_unmap (GtkWidget * widget, gpointer user_data); #line 145 "mn-tooltips.c" #line 658 "src/mn-tooltips.gob" static void mn_tooltips_widget_remove (GtkWidget * widget, gpointer user_data); #line 148 "mn-tooltips.c" /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_destroy_data mn_tooltips_destroy_data #define self_display_closed_h mn_tooltips_display_closed_h #define self_disconnect_display_closed mn_tooltips_disconnect_display_closed #define self_unset_window mn_tooltips_unset_window #define self_update_screen mn_tooltips_update_screen #define self_force_window mn_tooltips_force_window #define self_get_data mn_tooltips_get_data #define self_set_tip_widget_real mn_tooltips_set_tip_widget_real #define self_set_tip mn_tooltips_set_tip #define self_set_tip_widget mn_tooltips_set_tip_widget #define self_paint_window mn_tooltips_paint_window #define self_draw_tips mn_tooltips_draw_tips #define self_timeout_cb mn_tooltips_timeout_cb #define self_set_active_widget mn_tooltips_set_active_widget #define self_show_tip mn_tooltips_show_tip #define self_hide_tip mn_tooltips_hide_tip #define self_recently_shown mn_tooltips_recently_shown #define self_get_keyboard_mode mn_tooltips_get_keyboard_mode #define self_start_keyboard_mode mn_tooltips_start_keyboard_mode #define self_stop_keyboard_mode mn_tooltips_stop_keyboard_mode #define self_start_delay mn_tooltips_start_delay #define self_event_after_h mn_tooltips_event_after_h #define self_widget_unmap mn_tooltips_widget_unmap #define self_widget_remove mn_tooltips_widget_remove #define self_toggle_keyboard_mode mn_tooltips_toggle_keyboard_mode #define self_new mn_tooltips_new GType mn_tooltips_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNTooltipsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_tooltips_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNTooltips), 0 /* n_preallocs */, (GInstanceInitFunc) mn_tooltips_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNTooltips", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNTooltips *)g_object_new(mn_tooltips_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNTooltips * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNTooltips * GET_NEW_VARG (const char *first, ...) { MNTooltips *ret; va_list ap; va_start (ap, first); ret = (MNTooltips *)g_object_new_valist (mn_tooltips_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Tooltips::finalize" MNTooltips *self G_GNUC_UNUSED = MN_TOOLTIPS (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 86 "src/mn-tooltips.gob" mn_tooltips_finalize (self); #line 231 "mn-tooltips.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_tooltips_init (MNTooltips * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Tooltips::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_TOOLTIPS,MNTooltipsPrivate); #line 41 "src/mn-tooltips.gob" o->_priv->border_width = 4; #line 244 "mn-tooltips.c" } #undef __GOB_FUNCTION__ static void mn_tooltips_class_init (MNTooltipsClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Tooltips::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNTooltipsPrivate)); parent_class = g_type_class_ref (G_TYPE_OBJECT); g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 86 "src/mn-tooltips.gob" static void mn_tooltips_finalize (MNTooltips * self) { #line 267 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::finalize" { #line 87 "src/mn-tooltips.gob" GSList *l; if (selfp->timeout_id) g_source_remove(selfp->timeout_id); MN_LIST_FOREACH(l, selfp->data_list) { TooltipsData *data = l->data; self_widget_remove(data->widget, data); } self_unset_window(self); }} #line 285 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 102 "src/mn-tooltips.gob" static void mn_tooltips_destroy_data (TooltipsData * data) { #line 292 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::destroy_data" { #line 104 "src/mn-tooltips.gob" g_object_disconnect(data->widget, "any-signal", self_event_after_h, data, "any-signal", self_widget_unmap, data, "any-signal", self_widget_remove, data, NULL); g_object_set_data(G_OBJECT(data->widget), TOOLTIPS_DATA, NULL); g_object_unref(data->widget); g_object_unref(data->tip_widget); g_free(data); }} #line 308 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 117 "src/mn-tooltips.gob" static void mn_tooltips_display_closed_h (GdkDisplay * display, gboolean is_error, gpointer user_data) { #line 315 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::display_closed_h" { #line 121 "src/mn-tooltips.gob" Self *self = SELF(user_data); self_unset_window(self); }} #line 323 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 126 "src/mn-tooltips.gob" static void mn_tooltips_disconnect_display_closed (MNTooltips * self) { #line 330 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::disconnect_display_closed" #line 126 "src/mn-tooltips.gob" g_return_if_fail (self != NULL); #line 126 "src/mn-tooltips.gob" g_return_if_fail (MN_IS_TOOLTIPS (self)); #line 336 "mn-tooltips.c" { #line 128 "src/mn-tooltips.gob" g_signal_handlers_disconnect_by_func(gtk_widget_get_display(selfp->window), self_display_closed_h, self); }} #line 344 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 134 "src/mn-tooltips.gob" static void mn_tooltips_unset_window (MNTooltips * self) { #line 351 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::unset_window" #line 134 "src/mn-tooltips.gob" g_return_if_fail (self != NULL); #line 134 "src/mn-tooltips.gob" g_return_if_fail (MN_IS_TOOLTIPS (self)); #line 357 "mn-tooltips.c" { #line 136 "src/mn-tooltips.gob" if (selfp->window) { self_disconnect_display_closed(self); gtk_widget_destroy(selfp->window); } }} #line 367 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 144 "src/mn-tooltips.gob" static void mn_tooltips_update_screen (MNTooltips * self, gboolean new_window) { #line 374 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::update_screen" #line 144 "src/mn-tooltips.gob" g_return_if_fail (self != NULL); #line 144 "src/mn-tooltips.gob" g_return_if_fail (MN_IS_TOOLTIPS (self)); #line 380 "mn-tooltips.c" { #line 146 "src/mn-tooltips.gob" gboolean screen_changed = FALSE; if (selfp->active_data && selfp->active_data->widget) { GdkScreen *screen = gtk_widget_get_screen(selfp->active_data->widget); screen_changed = (screen != gtk_widget_get_screen(selfp->window)); if (screen_changed) { if (! new_window) self_disconnect_display_closed(self); gtk_window_set_screen(GTK_WINDOW(selfp->window), screen); } } if (screen_changed || new_window) g_signal_connect(gtk_widget_get_display(selfp->window), "closed", G_CALLBACK(self_display_closed_h), self); }} #line 407 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 171 "src/mn-tooltips.gob" static void mn_tooltips_force_window (MNTooltips * self) { #line 414 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::force_window" #line 171 "src/mn-tooltips.gob" g_return_if_fail (self != NULL); #line 171 "src/mn-tooltips.gob" g_return_if_fail (MN_IS_TOOLTIPS (self)); #line 420 "mn-tooltips.c" { #line 173 "src/mn-tooltips.gob" if (! selfp->window) { selfp->window = gtk_window_new(GTK_WINDOW_POPUP); self_update_screen(self, TRUE); gtk_widget_set_app_paintable(selfp->window, TRUE); gtk_window_set_resizable(GTK_WINDOW(selfp->window), FALSE); gtk_widget_set_name(selfp->window, "gtk-tooltips"); gtk_container_set_border_width(GTK_CONTAINER(selfp->window), selfp->border_width); g_signal_connect_swapped(selfp->window, "expose-event", G_CALLBACK(self_paint_window), self); mn_add_weak_pointer(&selfp->window); } }} #line 441 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 192 "src/mn-tooltips.gob" static TooltipsData * mn_tooltips_get_data (GtkWidget * widget) { #line 448 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::get_data" #line 192 "src/mn-tooltips.gob" g_return_val_if_fail (widget != NULL, (TooltipsData * )0); #line 192 "src/mn-tooltips.gob" g_return_val_if_fail (GTK_IS_WIDGET (widget), (TooltipsData * )0); #line 454 "mn-tooltips.c" { #line 194 "src/mn-tooltips.gob" return g_object_get_data(G_OBJECT(widget), TOOLTIPS_DATA); }} #line 460 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 198 "src/mn-tooltips.gob" static void mn_tooltips_set_tip_widget_real (MNTooltips * self, GtkWidget * widget, GtkWidget * tip_widget, int border_width) { #line 467 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::set_tip_widget_real" #line 198 "src/mn-tooltips.gob" g_return_if_fail (self != NULL); #line 198 "src/mn-tooltips.gob" g_return_if_fail (MN_IS_TOOLTIPS (self)); #line 198 "src/mn-tooltips.gob" g_return_if_fail (widget != NULL); #line 198 "src/mn-tooltips.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 477 "mn-tooltips.c" { #line 203 "src/mn-tooltips.gob" TooltipsData *data; data = self_get_data(widget); if (! tip_widget) { if (data) self_widget_remove(data->widget, data); return; } if (selfp->active_data && selfp->active_data->widget == widget && GTK_WIDGET_DRAWABLE(selfp->active_data->widget)) { if (data->tip_widget) g_object_unref(data->tip_widget); data->tip_widget = tip_widget; if (data->tip_widget) g_object_ref_sink(data->tip_widget); self_draw_tips(self); } else { g_object_ref(widget); if (data) self_widget_remove(data->widget, data); data = g_new0(TooltipsData, 1); data->self = self; data->widget = widget; data->tip_widget = tip_widget; if (data->tip_widget) g_object_ref_sink(data->tip_widget); selfp->data_list = g_slist_append(selfp->data_list, data); g_signal_connect_after(widget, "event-after", G_CALLBACK(self_event_after_h), data); g_object_set_data(G_OBJECT(widget), TOOLTIPS_DATA, data); g_object_connect(widget, "signal::unmap", self_widget_unmap, data, "signal::unrealize", self_widget_unmap, data, "signal::destroy", self_widget_remove, data, NULL); } selfp->border_width = border_width; if (selfp->window) gtk_container_set_border_width(GTK_CONTAINER(selfp->window), border_width); }} #line 537 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 261 "src/mn-tooltips.gob" void mn_tooltips_set_tip (MNTooltips * self, GtkWidget * widget, const char * tip_text) { #line 544 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::set_tip" #line 261 "src/mn-tooltips.gob" g_return_if_fail (self != NULL); #line 261 "src/mn-tooltips.gob" g_return_if_fail (MN_IS_TOOLTIPS (self)); #line 261 "src/mn-tooltips.gob" g_return_if_fail (widget != NULL); #line 261 "src/mn-tooltips.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 554 "mn-tooltips.c" { #line 265 "src/mn-tooltips.gob" GtkWidget *label = NULL; if (tip_text) { label = gtk_label_new(tip_text); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5); gtk_widget_show(label); } self_set_tip_widget_real(self, widget, label, 4); }} #line 570 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 279 "src/mn-tooltips.gob" void mn_tooltips_set_tip_widget (MNTooltips * self, GtkWidget * widget, GtkWidget * tip_widget) { #line 577 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::set_tip_widget" #line 279 "src/mn-tooltips.gob" g_return_if_fail (self != NULL); #line 279 "src/mn-tooltips.gob" g_return_if_fail (MN_IS_TOOLTIPS (self)); #line 279 "src/mn-tooltips.gob" g_return_if_fail (widget != NULL); #line 279 "src/mn-tooltips.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 587 "mn-tooltips.c" { #line 283 "src/mn-tooltips.gob" self_set_tip_widget_real(self, widget, tip_widget, 12); }} #line 593 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 287 "src/mn-tooltips.gob" static gboolean mn_tooltips_paint_window (MNTooltips * self) { #line 600 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::paint_window" #line 287 "src/mn-tooltips.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 287 "src/mn-tooltips.gob" g_return_val_if_fail (MN_IS_TOOLTIPS (self), (gboolean )0); #line 606 "mn-tooltips.c" { #line 289 "src/mn-tooltips.gob" GtkRequisition req; gtk_widget_size_request(selfp->window, &req); gtk_paint_flat_box(selfp->window->style, selfp->window->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, NULL, selfp->window, "tooltip", 0, 0, req.width, req.height); return FALSE; }} #line 627 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 308 "src/mn-tooltips.gob" static void mn_tooltips_draw_tips (MNTooltips * self) { #line 634 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::draw_tips" #line 308 "src/mn-tooltips.gob" g_return_if_fail (self != NULL); #line 308 "src/mn-tooltips.gob" g_return_if_fail (MN_IS_TOOLTIPS (self)); #line 640 "mn-tooltips.c" { #line 310 "src/mn-tooltips.gob" GtkRequisition requisition; GtkWidget *widget; gint x, y, w, h; TooltipsData *data; GtkWidget *child; gboolean keyboard_mode; GdkScreen *screen; GdkScreen *pointer_screen; gint monitor_num, px, py; GdkRectangle monitor; int screen_width; if (! selfp->window) self_force_window(self); else if (GTK_WIDGET_VISIBLE(selfp->window)) g_get_current_time(&selfp->last_popdown); gtk_widget_ensure_style(selfp->window); widget = selfp->active_data->widget; g_object_set_data(G_OBJECT(selfp->window), TOOLTIPS_INFO, self); keyboard_mode = self_get_keyboard_mode(widget); self_update_screen(self, FALSE); screen = gtk_widget_get_screen(widget); data = selfp->active_data; child = GTK_BIN(selfp->window)->child; if (child) gtk_container_remove(GTK_CONTAINER(selfp->window), child); if (data->tip_widget) { gtk_container_add(GTK_CONTAINER(selfp->window), data->tip_widget); gtk_widget_show(data->tip_widget); } gtk_widget_size_request(selfp->window, &requisition); w = requisition.width; h = requisition.height; gdk_window_get_origin(widget->window, &x, &y); if (GTK_WIDGET_NO_WINDOW(widget)) { x += widget->allocation.x; y += widget->allocation.y; } x += widget->allocation.width / 2; if (! keyboard_mode) gdk_window_get_pointer(gdk_screen_get_root_window(screen), &x, NULL, NULL); x -= (w / 2 + 4); gdk_display_get_pointer(gdk_screen_get_display(screen), &pointer_screen, &px, &py, NULL); if (pointer_screen != screen) { px = x; py = y; } monitor_num = gdk_screen_get_monitor_at_point(screen, px, py); gdk_screen_get_monitor_geometry(screen, monitor_num, &monitor); if ((x + w) > monitor.x + monitor.width) x -= (x + w) - (monitor.x + monitor.width); else if (x < monitor.x) x = monitor.x; if ((y + h + widget->allocation.height + 4) > monitor.y + monitor.height && (y - 4) > monitor.y) y = y - h - 4; else y = y + widget->allocation.height + 4; /* * The following block is not part of GTK+ and has been added to * make sure that the tooltip will not go beyond the screen edges * (horizontally). */ screen_width = gdk_screen_get_width(screen); if (x < 0 || x + w > screen_width) { x = 0; gtk_widget_set_size_request(selfp->window, MIN(w, screen_width), -1); } /* * The following block ensures that the top of the tooltip is * visible, but it corrupts the tip widget (the mail summary is * not properly positioned). A fix is welcome. */ /* if (y < 0) { gtk_widget_set_size_request(selfp->window, -1, y + h); y = 0; } */ gtk_window_move(GTK_WINDOW(selfp->window), x, y); gtk_widget_show(selfp->window); }} #line 750 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 418 "src/mn-tooltips.gob" static gboolean mn_tooltips_timeout_cb (gpointer data) { #line 757 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::timeout_cb" { #line 420 "src/mn-tooltips.gob" Self *self = SELF(data); if (selfp->active_data && GTK_WIDGET_DRAWABLE(selfp->active_data->widget)) self_draw_tips(self); selfp->timeout_id = 0; return FALSE; /* remove timeout */ }} #line 770 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 430 "src/mn-tooltips.gob" static void mn_tooltips_set_active_widget (MNTooltips * self, GtkWidget * widget) { #line 777 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::set_active_widget" #line 430 "src/mn-tooltips.gob" g_return_if_fail (self != NULL); #line 430 "src/mn-tooltips.gob" g_return_if_fail (MN_IS_TOOLTIPS (self)); #line 783 "mn-tooltips.c" { #line 432 "src/mn-tooltips.gob" if (selfp->window) { if (GTK_WIDGET_VISIBLE(selfp->window)) g_get_current_time(&selfp->last_popdown); gtk_widget_hide(selfp->window); } mn_source_clear(&selfp->timeout_id); selfp->active_data = NULL; if (widget) { GSList *l; MN_LIST_FOREACH(l, selfp->data_list) { TooltipsData *data = l->data; if (data->widget == widget && GTK_WIDGET_DRAWABLE(widget)) { selfp->active_data = data; break; } } } else selfp->use_sticky_delay = FALSE; }} #line 816 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 463 "src/mn-tooltips.gob" static void mn_tooltips_show_tip (GtkWidget * widget) { #line 823 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::show_tip" #line 463 "src/mn-tooltips.gob" g_return_if_fail (widget != NULL); #line 463 "src/mn-tooltips.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 829 "mn-tooltips.c" { #line 465 "src/mn-tooltips.gob" TooltipsData *data; data = self_get_data(widget); if (data && (! data->self->_priv->active_data || data->self->_priv->active_data->widget != widget)) { self_set_active_widget(data->self, widget); self_draw_tips(data->self); } }} #line 845 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 479 "src/mn-tooltips.gob" static void mn_tooltips_hide_tip (GtkWidget * widget) { #line 852 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::hide_tip" #line 479 "src/mn-tooltips.gob" g_return_if_fail (widget != NULL); #line 479 "src/mn-tooltips.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 858 "mn-tooltips.c" { #line 481 "src/mn-tooltips.gob" TooltipsData *data; data = self_get_data(widget); if (data && (data->self->_priv->active_data && data->self->_priv->active_data->widget == widget)) self_set_active_widget(data->self, NULL); }} #line 871 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 492 "src/mn-tooltips.gob" static gboolean mn_tooltips_recently_shown (MNTooltips * self) { #line 878 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::recently_shown" #line 492 "src/mn-tooltips.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 492 "src/mn-tooltips.gob" g_return_val_if_fail (MN_IS_TOOLTIPS (self), (gboolean )0); #line 884 "mn-tooltips.c" { #line 494 "src/mn-tooltips.gob" GTimeVal now; glong msec; g_get_current_time (&now); msec = (now.tv_sec - selfp->last_popdown.tv_sec) * 1000 + (now.tv_usec - selfp->last_popdown.tv_usec) / 1000; return (msec < STICKY_REVERT_DELAY); }} #line 896 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 504 "src/mn-tooltips.gob" static gboolean mn_tooltips_get_keyboard_mode (GtkWidget * widget) { #line 903 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::get_keyboard_mode" #line 504 "src/mn-tooltips.gob" g_return_val_if_fail (widget != NULL, (gboolean )0); #line 504 "src/mn-tooltips.gob" g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0); #line 909 "mn-tooltips.c" { #line 506 "src/mn-tooltips.gob" GtkWidget *toplevel = gtk_widget_get_toplevel(widget); if (GTK_IS_WINDOW(toplevel)) return GPOINTER_TO_INT(g_object_get_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE)); else return FALSE; }} #line 920 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 515 "src/mn-tooltips.gob" static void mn_tooltips_start_keyboard_mode (GtkWidget * widget) { #line 927 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::start_keyboard_mode" #line 515 "src/mn-tooltips.gob" g_return_if_fail (widget != NULL); #line 515 "src/mn-tooltips.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 933 "mn-tooltips.c" { #line 517 "src/mn-tooltips.gob" GtkWidget *toplevel = gtk_widget_get_toplevel(widget); if (GTK_IS_WINDOW(toplevel)) { GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget; g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(TRUE)); if (focus) self_show_tip(focus); } }} #line 949 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 531 "src/mn-tooltips.gob" static void mn_tooltips_stop_keyboard_mode (GtkWidget * widget) { #line 956 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::stop_keyboard_mode" #line 531 "src/mn-tooltips.gob" g_return_if_fail (widget != NULL); #line 531 "src/mn-tooltips.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 962 "mn-tooltips.c" { #line 533 "src/mn-tooltips.gob" GtkWidget *toplevel = gtk_widget_get_toplevel(widget); if (GTK_IS_WINDOW(toplevel)) { GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget; if (focus) self_hide_tip(focus); g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(FALSE)); } }} #line 978 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 547 "src/mn-tooltips.gob" static void mn_tooltips_start_delay (MNTooltips * self, GtkWidget * widget) { #line 985 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::start_delay" #line 547 "src/mn-tooltips.gob" g_return_if_fail (self != NULL); #line 547 "src/mn-tooltips.gob" g_return_if_fail (MN_IS_TOOLTIPS (self)); #line 991 "mn-tooltips.c" { #line 549 "src/mn-tooltips.gob" TooltipsData *old_data; old_data = selfp->active_data; if (! old_data || old_data->widget != widget) { self_set_active_widget(self, widget); selfp->timeout_id = gdk_threads_add_timeout((selfp->use_sticky_delay && self_recently_shown(self)) ? STICKY_DELAY : DELAY, self_timeout_cb, self); } }} #line 1006 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 562 "src/mn-tooltips.gob" static void mn_tooltips_event_after_h (GtkWidget * widget, GdkEvent * event, gpointer user_data) { #line 1013 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::event_after_h" { #line 564 "src/mn-tooltips.gob" Self *self; TooltipsData *old_data; GtkWidget *event_widget; gboolean keyboard_mode = self_get_keyboard_mode(widget); if ((event->type == GDK_LEAVE_NOTIFY || event->type == GDK_ENTER_NOTIFY) && event->crossing.detail == GDK_NOTIFY_INFERIOR) return; old_data = self_get_data(widget); self = old_data->self; if (keyboard_mode) { switch (event->type) { case GDK_FOCUS_CHANGE: if (event->focus_change.in) self_show_tip(widget); else self_hide_tip(widget); break; default: break; } } else { if (event->type != GDK_KEY_PRESS && event->type != GDK_KEY_RELEASE) { event_widget = gtk_get_event_widget(event); if (event_widget != widget) return; } switch (event->type) { case GDK_EXPOSE: /* do nothing */ break; case GDK_ENTER_NOTIFY: if (! (GTK_IS_MENU_ITEM(widget) && GTK_MENU_ITEM(widget)->submenu)) self_start_delay(self, widget); break; case GDK_LEAVE_NOTIFY: self_set_active_widget(self, NULL); selfp->use_sticky_delay = selfp->window && GTK_WIDGET_VISIBLE(selfp->window); break; case GDK_MOTION_NOTIFY: /* Handle menu items specially ... pend popup for each motion * on other widgets, we ignore motion. */ if (GTK_IS_MENU_ITEM(widget) && ! GTK_MENU_ITEM(widget)->submenu) { /* Completely evil hack to make sure we get the LEAVE_NOTIFY */ GTK_PRIVATE_SET_FLAG(widget, GTK_LEAVE_PENDING); self_set_active_widget(self, NULL); self_start_delay(self, widget); break; } break; /* ignore */ case GDK_BUTTON_PRESS: case GDK_BUTTON_RELEASE: case GDK_KEY_PRESS: case GDK_KEY_RELEASE: case GDK_PROXIMITY_IN: case GDK_SCROLL: self_set_active_widget(self, NULL); break; default: break; } } }} #line 1099 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 647 "src/mn-tooltips.gob" static void mn_tooltips_widget_unmap (GtkWidget * widget, gpointer user_data) { #line 1106 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::widget_unmap" #line 647 "src/mn-tooltips.gob" g_return_if_fail (widget != NULL); #line 647 "src/mn-tooltips.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 1112 "mn-tooltips.c" { #line 649 "src/mn-tooltips.gob" TooltipsData *data = user_data; Self *self = data->self; if (selfp->active_data && (selfp->active_data->widget == widget)) self_set_active_widget(self, NULL); }} #line 1123 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 658 "src/mn-tooltips.gob" static void mn_tooltips_widget_remove (GtkWidget * widget, gpointer user_data) { #line 1130 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::widget_remove" #line 658 "src/mn-tooltips.gob" g_return_if_fail (widget != NULL); #line 658 "src/mn-tooltips.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 1136 "mn-tooltips.c" { #line 660 "src/mn-tooltips.gob" TooltipsData *data = user_data; Self *self = data->self; self_widget_unmap(widget, user_data); selfp->data_list = g_slist_remove(selfp->data_list, data); self_destroy_data(data); }} #line 1147 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 669 "src/mn-tooltips.gob" void mn_tooltips_toggle_keyboard_mode (GtkWidget * widget) { #line 1154 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::toggle_keyboard_mode" #line 669 "src/mn-tooltips.gob" g_return_if_fail (widget != NULL); #line 669 "src/mn-tooltips.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 1160 "mn-tooltips.c" { #line 671 "src/mn-tooltips.gob" if (self_get_keyboard_mode(widget)) self_stop_keyboard_mode(widget); else self_start_keyboard_mode(widget); }} #line 1169 "mn-tooltips.c" #undef __GOB_FUNCTION__ #line 678 "src/mn-tooltips.gob" MNTooltips * mn_tooltips_new (void) { #line 1176 "mn-tooltips.c" #define __GOB_FUNCTION__ "MN:Tooltips::new" { #line 680 "src/mn-tooltips.gob" return GET_NEW; }} #line 1183 "mn-tooltips.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-evolution-client.gob.stamp0000644000175000001440000000000011015312647025253 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-dialog.c0000644000175000001440000000546711015312644021565 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-dialog.h" #include "mn-dialog-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ /* self casting macros */ #define SELF(x) MN_DIALOG(x) #define SELF_CONST(x) MN_DIALOG_CONST(x) #define IS_SELF(x) MN_IS_DIALOG(x) #define TYPE_SELF MN_TYPE_DIALOG #define SELF_CLASS(x) MN_DIALOG_CLASS(x) #define SELF_GET_CLASS(x) MN_DIALOG_GET_CLASS(x) /* self typedefs */ typedef MNDialog Self; typedef MNDialogClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-dialog.gob" static void mn_dialog_class_init (MNDialogClass * c); #line 41 "mn-dialog.c" #line 26 "src/mn-dialog.gob" static void mn_dialog_init (MNDialog * self); #line 44 "mn-dialog.c" /* pointer to the class of our parent */ static GtkDialogClass *parent_class = NULL; GType mn_dialog_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_dialog_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNDialog), 0 /* n_preallocs */, (GInstanceInitFunc) mn_dialog_init, NULL }; type = g_type_register_static (GTK_TYPE_DIALOG, "MNDialog", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNDialog *)g_object_new(mn_dialog_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNDialog * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNDialog * GET_NEW_VARG (const char *first, ...) { MNDialog *ret; va_list ap; va_start (ap, first); ret = (MNDialog *)g_object_new_valist (mn_dialog_get_type (), first, ap); va_end (ap); return ret; } static void mn_dialog_class_init (MNDialogClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Dialog::class_init" parent_class = g_type_class_ref (GTK_TYPE_DIALOG); } #undef __GOB_FUNCTION__ #line 26 "src/mn-dialog.gob" static void mn_dialog_init (MNDialog * self G_GNUC_UNUSED) { #line 104 "mn-dialog.c" #define __GOB_FUNCTION__ "MN:Dialog::init" { #line 27 "src/mn-dialog.gob" gtk_container_set_border_width(GTK_CONTAINER(self), 5); gtk_dialog_set_has_separator(GTK_DIALOG(self), FALSE); gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(self)->vbox), 2); #line 113 "mn-dialog.c" } } #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-vfs-mailbox-private.h0000644000175000001440000000212411015312647024220 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_VFS_MAILBOX_PRIVATE_H__ #define __MN_VFS_MAILBOX_PRIVATE_H__ #include "mn-vfs-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 30 "src/mn-vfs-mailbox.gob" #include "mn-vfs-mailbox-backend.h" #line 18 "mn-vfs-mailbox-private.h" struct _MNVFSMailboxPrivate { #line 80 "src/mn-vfs-mailbox.gob" GSList * monitors; #line 81 "src/mn-vfs-mailbox.gob" MNVFSMailboxBackend * backend; #line 82 "src/mn-vfs-mailbox.gob" unsigned int update_poll_id; #line 84 "src/mn-vfs-mailbox.gob" GMutex * mutex; #line 28 "mn-vfs-mailbox-private.h" }; #line 201 "src/mn-vfs-mailbox.gob" void mn_vfs_mailbox_monitor (MNVFSMailbox * self, const char * uri, MNVFSMailboxBackend * owner, GnomeVFSMonitorType type, GnomeVFSMonitorCallback callback, gpointer user_data); #line 32 "mn-vfs-mailbox-private.h" #line 294 "src/mn-vfs-mailbox.gob" void mn_vfs_mailbox_remove_monitors_by_owner (MNVFSMailbox * self, MNVFSMailboxBackend * owner); #line 35 "mn-vfs-mailbox-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-text-table.gob.stamp0000644000175000001440000000000011015312645024022 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-popup.c0000644000175000001440000003425411015312645021466 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-popup.h" #include "mn-popup-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 25 "src/mn-popup.gob" #include #include "mn-conf.h" #include "mn-shell.h" #include "mn-util.h" #line 33 "mn-popup.c" /* self casting macros */ #define SELF(x) MN_POPUP(x) #define SELF_CONST(x) MN_POPUP_CONST(x) #define IS_SELF(x) MN_IS_POPUP(x) #define TYPE_SELF MN_TYPE_POPUP #define SELF_CLASS(x) MN_POPUP_CLASS(x) #define SELF_GET_CLASS(x) MN_POPUP_GET_CLASS(x) /* self typedefs */ typedef MNPopup Self; typedef MNPopupClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-popup.gob" static void mn_popup_init (MNPopup * o); #line 52 "mn-popup.c" #line 0 "src/mn-popup.gob" static void mn_popup_class_init (MNPopupClass * c); #line 55 "mn-popup.c" #line 40 "src/mn-popup.gob" static void mn_popup_constructor (MNPopup * self); #line 58 "mn-popup.c" #line 66 "src/mn-popup.gob" static void mn_popup_add_actions (MNPopup * self); #line 61 "mn-popup.c" #line 102 "src/mn-popup.gob" static void mn_popup_action_cb (NotifyNotification * notification, char * id, gpointer user_data); #line 64 "mn-popup.c" #line 115 "src/mn-popup.gob" static void mn_popup_action_done_cb (MNMessageAction * action, GError * err, gpointer data); #line 67 "mn-popup.c" #line 122 "src/mn-popup.gob" static void mn_popup_closed_h (NotifyNotification * notification, gpointer user_data); #line 70 "mn-popup.c" #line 129 "src/mn-popup.gob" static void mn_popup_append_row (GString * body, const char * name, const char * value); #line 73 "mn-popup.c" #line 146 "src/mn-popup.gob" static int mn_popup_get_conf_timeout (void); #line 76 "mn-popup.c" enum { PROP_0, PROP_MESSAGE }; /* pointer to the class of our parent */ static NotifyNotificationClass *parent_class = NULL; /* Short form macros */ #define self_add_actions mn_popup_add_actions #define self_action_cb mn_popup_action_cb #define self_action_done_cb mn_popup_action_done_cb #define self_closed_h mn_popup_closed_h #define self_append_row mn_popup_append_row #define self_get_conf_timeout mn_popup_get_conf_timeout #define self_show mn_popup_show #define self_close mn_popup_close #define self_new mn_popup_new GType mn_popup_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNPopupClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_popup_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNPopup), 0 /* n_preallocs */, (GInstanceInitFunc) mn_popup_init, NULL }; type = g_type_register_static (NOTIFY_TYPE_NOTIFICATION, "MNPopup", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNPopup *)g_object_new(mn_popup_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNPopup * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNPopup * GET_NEW_VARG (const char *first, ...) { MNPopup *ret; va_list ap; va_start (ap, first); ret = (MNPopup *)g_object_new_valist (mn_popup_get_type (), first, ap); va_end (ap); return ret; } static GObject * ___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { #define __GOB_FUNCTION__ "MN:Popup::constructor" GObject *obj_self; MNPopup *self; obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties); self = MN_POPUP (obj_self); #line 40 "src/mn-popup.gob" mn_popup_constructor (self); #line 149 "mn-popup.c" return obj_self; } #undef __GOB_FUNCTION__ static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Popup::dispose" MNPopup *self G_GNUC_UNUSED = MN_POPUP (obj_self); if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 34 "src/mn-popup.gob" if(self->_priv->message) { g_object_unref ((gpointer) self->_priv->message); self->_priv->message = NULL; } #line 164 "mn-popup.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Popup::finalize" MNPopup *self G_GNUC_UNUSED = MN_POPUP (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_popup_init (MNPopup * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Popup::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_POPUP,MNPopupPrivate); } #undef __GOB_FUNCTION__ static void mn_popup_class_init (MNPopupClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Popup::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNPopupPrivate)); parent_class = g_type_class_ref (NOTIFY_TYPE_NOTIFICATION); g_object_class->constructor = ___constructor; g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_object ("message" /* name */, NULL /* nick */, NULL /* blurb */, MN_TYPE_MESSAGE /* object_type */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_MESSAGE, param_spec); } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Popup::set_property" { MNPopup *self G_GNUC_UNUSED; self = MN_POPUP (object); switch (property_id) { case PROP_MESSAGE: { #line 35 "src/mn-popup.gob" { GObject *___old = (GObject *)self->_priv->message; self->_priv->message = (MNMessage *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } } #line 234 "mn-popup.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Popup::get_property" { MNPopup *self G_GNUC_UNUSED; self = MN_POPUP (object); switch (property_id) { case PROP_MESSAGE: { #line 35 "src/mn-popup.gob" g_value_set_object (VAL, (gpointer)self->_priv->message); #line 265 "mn-popup.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 40 "src/mn-popup.gob" static void mn_popup_constructor (MNPopup * self) { #line 286 "mn-popup.c" #define __GOB_FUNCTION__ "MN:Popup::constructor" { #line 41 "src/mn-popup.gob" GString *body; body = g_string_new(NULL); self_append_row(body, _("Mailbox:"), selfp->message->mailbox->runtime_name); self_append_row(body, _("From:"), selfp->message->from); self_append_row(body, _("Subject:"), selfp->message->subject); g_object_set(self, "body", body->str, "icon-name", "stock_mail", NULL); if (mn_conf_get_enum_value(MN_TYPE_POPUP_POSITION, MN_CONF_POPUPS_POSITION) == MN_POPUP_POSITION_ATTACHED) g_object_set(self, "attach-widget", mn_shell->icon, NULL); g_string_free(body, TRUE); self_add_actions(self); notify_notification_set_timeout(NOTIFY_NOTIFICATION(self), self_get_conf_timeout()); g_signal_connect(self, "closed", G_CALLBACK(self_closed_h), NULL); }} #line 314 "mn-popup.c" #undef __GOB_FUNCTION__ #line 66 "src/mn-popup.gob" static void mn_popup_add_actions (MNPopup * self) { #line 321 "mn-popup.c" #define __GOB_FUNCTION__ "MN:Popup::add_actions" #line 66 "src/mn-popup.gob" g_return_if_fail (self != NULL); #line 66 "src/mn-popup.gob" g_return_if_fail (MN_IS_POPUP (self)); #line 327 "mn-popup.c" { #line 68 "src/mn-popup.gob" GSList *actions; GSList *l; /* * Note that notification-daemon currently assigns icons to * actions by prepending "stock_" to the action ID. */ actions = mn_conf_get_string_list(MN_CONF_POPUPS_ACTIONS); MN_LIST_FOREACH(l, actions) { char *name = l->data; MNMessageAction *action; action = mn_message_get_action(name); if (action) { if (mn_message_can_perform_action(selfp->message, action)) notify_notification_add_action(NOTIFY_NOTIFICATION(self), action->icon, _(action->label), self_action_cb, action, NULL); } else g_warning(_("configuration key %s: there is no action named \"%s\""), MN_CONF_POPUPS_ACTIONS, name); } mn_g_slist_free_deep(actions); }} #line 363 "mn-popup.c" #undef __GOB_FUNCTION__ #line 102 "src/mn-popup.gob" static void mn_popup_action_cb (NotifyNotification * notification, char * id, gpointer user_data) { #line 370 "mn-popup.c" #define __GOB_FUNCTION__ "MN:Popup::action_cb" { #line 104 "src/mn-popup.gob" Self *self = SELF(notification); MNMessageAction *action = user_data; GDK_THREADS_ENTER(); mn_message_perform_action(selfp->message, action, self_action_done_cb, self); GDK_THREADS_LEAVE(); }} #line 384 "mn-popup.c" #undef __GOB_FUNCTION__ #line 115 "src/mn-popup.gob" static void mn_popup_action_done_cb (MNMessageAction * action, GError * err, gpointer data) { #line 391 "mn-popup.c" #define __GOB_FUNCTION__ "MN:Popup::action_done_cb" { #line 117 "src/mn-popup.gob" if (err && ! g_error_matches(err, MN_MESSAGE_ACTION_ERROR, MN_MESSAGE_ACTION_ERROR_CANCELLED)) mn_show_error_dialog(NULL, _(action->error_message), "%s", err->message); }} #line 399 "mn-popup.c" #undef __GOB_FUNCTION__ #line 122 "src/mn-popup.gob" static void mn_popup_closed_h (NotifyNotification * notification, gpointer user_data) { #line 406 "mn-popup.c" #define __GOB_FUNCTION__ "MN:Popup::closed_h" { #line 124 "src/mn-popup.gob" Self *self = SELF(notification); self->visible = FALSE; }} #line 414 "mn-popup.c" #undef __GOB_FUNCTION__ #line 129 "src/mn-popup.gob" static void mn_popup_append_row (GString * body, const char * name, const char * value) { #line 421 "mn-popup.c" #define __GOB_FUNCTION__ "MN:Popup::append_row" #line 129 "src/mn-popup.gob" g_return_if_fail (body != NULL); #line 129 "src/mn-popup.gob" g_return_if_fail (name != NULL); #line 129 "src/mn-popup.gob" g_return_if_fail (value != NULL); #line 429 "mn-popup.c" { #line 133 "src/mn-popup.gob" char *escaped; if (*body->str) g_string_append_c(body, '\n'); g_string_append_printf(body, "%s", name); escaped = g_markup_escape_text(value, -1); g_string_append_printf(body, " %s", escaped); g_free(escaped); }} #line 444 "mn-popup.c" #undef __GOB_FUNCTION__ #line 146 "src/mn-popup.gob" static int mn_popup_get_conf_timeout (void) { #line 451 "mn-popup.c" #define __GOB_FUNCTION__ "MN:Popup::get_conf_timeout" { #line 148 "src/mn-popup.gob" switch (mn_conf_get_enum_value(MN_TYPE_EXPIRATION_ENABLED, MN_CONF_POPUPS_EXPIRATION_ENABLED)) { case MN_EXPIRATION_ENABLED_DEFAULT: return NOTIFY_EXPIRES_DEFAULT; case MN_EXPIRATION_ENABLED_FALSE: return NOTIFY_EXPIRES_NEVER; case MN_EXPIRATION_ENABLED_TRUE: return mn_conf_get_int(MN_CONF_POPUPS_EXPIRATION_DELAY) * 1000; default: g_assert_not_reached(); return 0; } }} #line 472 "mn-popup.c" #undef __GOB_FUNCTION__ #line 166 "src/mn-popup.gob" void mn_popup_show (MNPopup * self) { #line 479 "mn-popup.c" #define __GOB_FUNCTION__ "MN:Popup::show" #line 166 "src/mn-popup.gob" g_return_if_fail (self != NULL); #line 166 "src/mn-popup.gob" g_return_if_fail (MN_IS_POPUP (self)); #line 485 "mn-popup.c" { #line 168 "src/mn-popup.gob" GError *err = NULL; if (self->visible) return; if (! notify_notification_show(NOTIFY_NOTIFICATION(self), &err)) { g_warning(_("unable to show popup: %s"), err->message); g_error_free(err); } self->visible = TRUE; g_get_current_time(&self->show_timestamp); }} #line 503 "mn-popup.c" #undef __GOB_FUNCTION__ #line 184 "src/mn-popup.gob" void mn_popup_close (MNPopup * self) { #line 510 "mn-popup.c" #define __GOB_FUNCTION__ "MN:Popup::close" #line 184 "src/mn-popup.gob" g_return_if_fail (self != NULL); #line 184 "src/mn-popup.gob" g_return_if_fail (MN_IS_POPUP (self)); #line 516 "mn-popup.c" { #line 186 "src/mn-popup.gob" GError *err = NULL; if (! self->visible) return; if (! notify_notification_close(NOTIFY_NOTIFICATION(self), &err)) { g_warning(_("unable to close popup: %s"), err->message); g_error_free(err); } }} #line 531 "mn-popup.c" #undef __GOB_FUNCTION__ #line 199 "src/mn-popup.gob" MNPopup * mn_popup_new (MNMessage * message) { #line 538 "mn-popup.c" #define __GOB_FUNCTION__ "MN:Popup::new" #line 199 "src/mn-popup.gob" g_return_val_if_fail (message != NULL, (MNPopup * )0); #line 199 "src/mn-popup.gob" g_return_val_if_fail (MN_IS_MESSAGE (message), (MNPopup * )0); #line 544 "mn-popup.c" { #line 201 "src/mn-popup.gob" /* we set the summary here because libnotify requires it */ /* translators: header capitalization */ return GET_NEW_VARG("summary", _("New Message"), MN_POPUP_PROP_MESSAGE(message), NULL); }} #line 555 "mn-popup.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-mailbox-properties-private.h0000644000175000001440000000215211015312644025614 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNMailboxPropertiesPrivate { #line 44 "src/mn-mailbox-properties.gob" GSList * general_sections; #line 16 "mn-mailbox-properties-private.h" }; #line 77 "src/mn-mailbox-properties.gob" GtkWidget * mn_mailbox_properties_add_general_section (MNMailboxProperties * self, const char * title); #line 20 "mn-mailbox-properties-private.h" #line 111 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_notify_complete (MNMailboxProperties * self); #line 23 "mn-mailbox-properties-private.h" #line 117 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_notify_default_name (MNMailboxProperties * self); #line 26 "mn-mailbox-properties-private.h" #line 123 "src/mn-mailbox-properties.gob" void mn_mailbox_properties_notify_default_check_delay (MNMailboxProperties * self); #line 29 "mn-mailbox-properties-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mbox-mailbox-backend.gob.stamp0000644000175000001440000000000011015312645025734 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-yahoo-mailbox-properties.c0000644000175000001440000000723411015312646025264 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-yahoo-mailbox-properties.h" #include "mn-yahoo-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-yahoo-mailbox-properties.gob" #include "mn-stock.h" #line 30 "mn-yahoo-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_YAHOO_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_YAHOO_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_YAHOO_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_YAHOO_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_YAHOO_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_YAHOO_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNYahooMailboxProperties Self; typedef MNYahooMailboxPropertiesClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-yahoo-mailbox-properties.gob" static void mn_yahoo_mailbox_properties_init (MNYahooMailboxProperties * o); #line 47 "mn-yahoo-mailbox-properties.c" #line 30 "src/mn-yahoo-mailbox-properties.gob" static void mn_yahoo_mailbox_properties_class_init (MNYahooMailboxPropertiesClass * class); #line 50 "mn-yahoo-mailbox-properties.c" /* pointer to the class of our parent */ static MNWebmailMailboxPropertiesClass *parent_class = NULL; GType mn_yahoo_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNYahooMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_yahoo_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNYahooMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_yahoo_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_WEBMAIL_MAILBOX_PROPERTIES, "MNYahooMailboxProperties", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNYahooMailboxProperties *)g_object_new(mn_yahoo_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNYahooMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNYahooMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNYahooMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNYahooMailboxProperties *)g_object_new_valist (mn_yahoo_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } static void mn_yahoo_mailbox_properties_init (MNYahooMailboxProperties * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox:Properties::init" } #undef __GOB_FUNCTION__ #line 30 "src/mn-yahoo-mailbox-properties.gob" static void mn_yahoo_mailbox_properties_class_init (MNYahooMailboxPropertiesClass * class G_GNUC_UNUSED) { #line 107 "mn-yahoo-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Yahoo:Mailbox:Properties::class_init" parent_class = g_type_class_ref (MN_TYPE_WEBMAIL_MAILBOX_PROPERTIES); { #line 31 "src/mn-yahoo-mailbox-properties.gob" MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "yahoo"; p_class->stock_id = MN_STOCK_YAHOO; p_class->combo_label = "Yahoo! Mail"; #line 121 "mn-yahoo-mailbox-properties.c" } } #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-vfs-message.h0000644000175000001440000000474311015312646022551 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-message.h" #include "mn-decls.h" #ifndef __MN_VFS_MESSAGE_H__ #define __MN_VFS_MESSAGE_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_VFS_MESSAGE (mn_vfs_message_get_type()) #define MN_VFS_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_vfs_message_get_type(), MNVFSMessage) #define MN_VFS_MESSAGE_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_vfs_message_get_type(), MNVFSMessage const) #define MN_VFS_MESSAGE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_vfs_message_get_type(), MNVFSMessageClass) #define MN_IS_VFS_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_vfs_message_get_type ()) #define MN_VFS_MESSAGE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_vfs_message_get_type(), MNVFSMessageClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_VFS_MESSAGE__ #define __TYPEDEF_MN_VFS_MESSAGE__ typedef struct _MNVFSMessage MNVFSMessage; #endif struct _MNVFSMessage { MNMessage __parent__; /*< private >*/ GnomeVFSURI * vfs_uri; /* protected */ }; /* * Class definition */ typedef struct _MNVFSMessageClass MNVFSMessageClass; struct _MNVFSMessageClass { MNMessageClass __parent__; }; /* * Public methods */ GType mn_vfs_message_get_type (void) G_GNUC_CONST; #line 52 "src/mn-vfs-message.gob" MNVFSMessage * mn_vfs_message_new (GType type, MNVFSMailboxBackend * backend, const char * mid, GnomeVFSURI * dir_uri, const char * filename, MNMessageFlags flags, gboolean handle_status, GError ** err); #line 66 "mn-vfs-message.h" #line 83 "src/mn-vfs-message.gob" MNVFSMessage * mn_vfs_message_new_from_message (MNVFSMessage * message, GnomeVFSURI * dir_uri, const char * filename, MNMessageFlags flags); #line 72 "mn-vfs-message.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_VFS_MESSAGE_PROP_VFS_URI(arg) "vfs_uri", __extension__ ({GnomeVFSURI * z = (arg); z;}) #define MN_VFS_MESSAGE_GET_PROP_VFS_URI(arg) "vfs_uri", __extension__ ({GnomeVFSURI * *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_VFS_MESSAGE_PROP_VFS_URI(arg) "vfs_uri",(GnomeVFSURI * )(arg) #define MN_VFS_MESSAGE_GET_PROP_VFS_URI(arg) "vfs_uri",(GnomeVFSURI * *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-system-vfs-mailbox-properties-private.h0000644000175000001440000000051211015312647027733 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_SYSTEM_VFS_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_SYSTEM_VFS_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-system-vfs-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-autodetect-mailbox-properties.h0000644000175000001440000000556111015312644026312 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-mailbox-properties.h" #ifndef __MN_AUTODETECT_MAILBOX_PROPERTIES_H__ #define __MN_AUTODETECT_MAILBOX_PROPERTIES_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES (mn_autodetect_mailbox_properties_get_type()) #define MN_AUTODETECT_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_autodetect_mailbox_properties_get_type(), MNAutodetectMailboxProperties) #define MN_AUTODETECT_MAILBOX_PROPERTIES_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_autodetect_mailbox_properties_get_type(), MNAutodetectMailboxProperties const) #define MN_AUTODETECT_MAILBOX_PROPERTIES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_autodetect_mailbox_properties_get_type(), MNAutodetectMailboxPropertiesClass) #define MN_IS_AUTODETECT_MAILBOX_PROPERTIES(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_autodetect_mailbox_properties_get_type ()) #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_autodetect_mailbox_properties_get_type(), MNAutodetectMailboxPropertiesClass) /* Private structure type */ typedef struct _MNAutodetectMailboxPropertiesPrivate MNAutodetectMailboxPropertiesPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_AUTODETECT_MAILBOX_PROPERTIES__ #define __TYPEDEF_MN_AUTODETECT_MAILBOX_PROPERTIES__ typedef struct _MNAutodetectMailboxProperties MNAutodetectMailboxProperties; #endif struct _MNAutodetectMailboxProperties { MNMailboxProperties __parent__; /*< private >*/ MNAutodetectMailboxPropertiesPrivate *_priv; }; /* * Class definition */ typedef struct _MNAutodetectMailboxPropertiesClass MNAutodetectMailboxPropertiesClass; struct _MNAutodetectMailboxPropertiesClass { MNMailboxPropertiesClass __parent__; }; /* * Public methods */ GType mn_autodetect_mailbox_properties_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete", __extension__ ({gboolean *z = (arg); z;}) #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name", __extension__ ({gchar **z = (arg); z;}) #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(arg) "default_check_delay", __extension__ ({gint *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg) "complete",(gboolean *)(arg) #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg) "default_name",(gchar **)(arg) #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(arg) "default_check_delay",(gint *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-pi-mailbox-properties-private.h0000644000175000001440000000134411015312646026226 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_PI_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_PI_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-pi-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 265 "src/mn-pi-mailbox-properties.gob" void mn_pi_mailbox_properties_get_contents (MNPIMailboxProperties * self, MNPIMailboxConnectionType * connection_type, char ** authmech, const char ** server, int * port); #line 15 "mn-pi-mailbox-properties-private.h" #line 300 "src/mn-pi-mailbox-properties.gob" gboolean mn_pi_mailbox_properties_is_complete (MNPIMailboxProperties * self); #line 18 "mn-pi-mailbox-properties-private.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-message.h0000644000175000001440000000462611015312647024000 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-message.h" #ifndef __MN_EVOLUTION_MESSAGE_H__ #define __MN_EVOLUTION_MESSAGE_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_EVOLUTION_MESSAGE (mn_evolution_message_get_type()) #define MN_EVOLUTION_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_message_get_type(), MNEvolutionMessage) #define MN_EVOLUTION_MESSAGE_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_message_get_type(), MNEvolutionMessage const) #define MN_EVOLUTION_MESSAGE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_evolution_message_get_type(), MNEvolutionMessageClass) #define MN_IS_EVOLUTION_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_evolution_message_get_type ()) #define MN_EVOLUTION_MESSAGE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_evolution_message_get_type(), MNEvolutionMessageClass) /* Private structure type */ typedef struct _MNEvolutionMessagePrivate MNEvolutionMessagePrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_EVOLUTION_MESSAGE__ #define __TYPEDEF_MN_EVOLUTION_MESSAGE__ typedef struct _MNEvolutionMessage MNEvolutionMessage; #endif struct _MNEvolutionMessage { MNMessage __parent__; /*< private >*/ MNEvolutionMessagePrivate *_priv; }; /* * Class definition */ typedef struct _MNEvolutionMessageClass MNEvolutionMessageClass; struct _MNEvolutionMessageClass { MNMessageClass __parent__; }; /* * Public methods */ GType mn_evolution_message_get_type (void) G_GNUC_CONST; #line 64 "src/mn-evolution-message.gob" MNMessage * mn_evolution_message_new (MNMailbox * mailbox, time_t sent_time, const char * id, const char * from, const char * subject, MNMessageFlags flags, const char * uid); #line 66 "mn-evolution-message.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_EVOLUTION_MESSAGE_PROP_UID(arg) "uid", __extension__ ({gchar *z = (arg); z;}) #define MN_EVOLUTION_MESSAGE_GET_PROP_UID(arg) "uid", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_EVOLUTION_MESSAGE_PROP_UID(arg) "uid",(gchar *)(arg) #define MN_EVOLUTION_MESSAGE_GET_PROP_UID(arg) "uid",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-authenticated-mailbox.c0000644000175000001440000010625311015312646024576 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-authenticated-mailbox.h" #include "mn-authenticated-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 29 "src/mn-authenticated-mailbox.gob" #include #include #include "mn-mailbox-private.h" #include "mn-shell.h" #include "mn-util.h" #include "mn-keyring.h" #line 35 "mn-authenticated-mailbox.c" /* self casting macros */ #define SELF(x) MN_AUTHENTICATED_MAILBOX(x) #define SELF_CONST(x) MN_AUTHENTICATED_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_AUTHENTICATED_MAILBOX(x) #define TYPE_SELF MN_TYPE_AUTHENTICATED_MAILBOX #define SELF_CLASS(x) MN_AUTHENTICATED_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_AUTHENTICATED_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNAuthenticatedMailbox Self; typedef MNAuthenticatedMailboxClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_init (MNAuthenticatedMailbox * o); #line 54 "mn-authenticated-mailbox.c" #line 87 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_class_init (MNAuthenticatedMailboxClass * class); #line 57 "mn-authenticated-mailbox.c" #line 97 "src/mn-authenticated-mailbox.gob" static void ___3_mn_authenticated_mailbox_seal (MNMailbox * mailbox); #line 60 "mn-authenticated-mailbox.c" #line 110 "src/mn-authenticated-mailbox.gob" static void ___4_mn_authenticated_mailbox_added (MNMailbox * mailbox); #line 63 "mn-authenticated-mailbox.c" #line 130 "src/mn-authenticated-mailbox.gob" static void ___5_mn_authenticated_mailbox_removed (MNMailbox * mailbox); #line 66 "mn-authenticated-mailbox.c" #line 152 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_set_password (MNAuthenticatedMailbox * self); #line 69 "mn-authenticated-mailbox.c" #line 174 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_set_password_cb (GnomeKeyringResult result, guint32 item_id, gpointer data); #line 72 "mn-authenticated-mailbox.c" #line 200 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_set_set_password_request (MNAuthenticatedMailbox * self, gpointer request); #line 75 "mn-authenticated-mailbox.c" #line 207 "src/mn-authenticated-mailbox.gob" static void ___9_mn_authenticated_mailbox_check (MNMailbox * mailbox); #line 78 "mn-authenticated-mailbox.c" #line 224 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_check_thread_cb (MNAuthenticatedMailbox * self); #line 81 "mn-authenticated-mailbox.c" static void ___real_mn_authenticated_mailbox_authenticated_check (MNAuthenticatedMailbox * self); #line 238 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_authenticated_check (MNAuthenticatedMailbox * self); #line 85 "mn-authenticated-mailbox.c" #line 320 "src/mn-authenticated-mailbox.gob" static char * mn_authenticated_mailbox_get_password_sync (MNAuthenticatedMailbox * self); #line 88 "mn-authenticated-mailbox.c" #line 333 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_get_password_sync_request_cb (gpointer request, gpointer data); #line 91 "mn-authenticated-mailbox.c" #line 365 "src/mn-authenticated-mailbox.gob" static gboolean mn_authenticated_mailbox_prompt_for_password (MNAuthenticatedMailbox * self, char ** password, const char * format, ...) G_GNUC_PRINTF(3, 4); #line 94 "mn-authenticated-mailbox.c" #line 414 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_set_prompted_password (MNAuthenticatedMailbox * self, const char * keyring, const char * password); #line 97 "mn-authenticated-mailbox.c" #line 445 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_set_prompted_password_request_cb (gpointer request, gpointer data); #line 100 "mn-authenticated-mailbox.c" #line 458 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_handle_set_password_result (MNAuthenticatedMailbox * self, GnomeKeyringResult result); #line 103 "mn-authenticated-mailbox.c" #line 487 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_delete_password (MNAuthenticatedMailbox * self, const char * keyring, guint32 item_id); #line 106 "mn-authenticated-mailbox.c" enum { PROP_0, PROP_USERNAME, PROP_PASSWORD, PROP_SETTING_PASSWORD }; /* pointer to the class of our parent */ static MNMailboxClass *parent_class = NULL; /* Short form macros */ #define self_get_setting_password mn_authenticated_mailbox_get_setting_password #define self_set_password mn_authenticated_mailbox_set_password #define self_set_password_cb mn_authenticated_mailbox_set_password_cb #define self_set_set_password_request mn_authenticated_mailbox_set_set_password_request #define self_check_thread_cb mn_authenticated_mailbox_check_thread_cb #define self_authenticated_check mn_authenticated_mailbox_authenticated_check #define self_parse_username mn_authenticated_mailbox_parse_username #define self_fill_password mn_authenticated_mailbox_fill_password #define self_get_password_sync mn_authenticated_mailbox_get_password_sync #define self_get_password_sync_request_cb mn_authenticated_mailbox_get_password_sync_request_cb #define self_auth_failed mn_authenticated_mailbox_auth_failed #define self_prompt_for_password mn_authenticated_mailbox_prompt_for_password #define self_set_prompted_password mn_authenticated_mailbox_set_prompted_password #define self_set_prompted_password_request_cb mn_authenticated_mailbox_set_prompted_password_request_cb #define self_handle_set_password_result mn_authenticated_mailbox_handle_set_password_result #define self_get_password mn_authenticated_mailbox_get_password #define self_delete_password mn_authenticated_mailbox_delete_password GType mn_authenticated_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNAuthenticatedMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_authenticated_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNAuthenticatedMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_authenticated_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_MAILBOX, "MNAuthenticatedMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNAuthenticatedMailbox *)g_object_new(mn_authenticated_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNAuthenticatedMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNAuthenticatedMailbox * GET_NEW_VARG (const char *first, ...) { MNAuthenticatedMailbox *ret; va_list ap; va_start (ap, first); ret = (MNAuthenticatedMailbox *)g_object_new_valist (mn_authenticated_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::finalize" MNAuthenticatedMailbox *self G_GNUC_UNUSED = MN_AUTHENTICATED_MAILBOX (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 40 "src/mn-authenticated-mailbox.gob" if(self->username) { g_free ((gpointer) self->username); self->username = NULL; } #line 189 "mn-authenticated-mailbox.c" #line 56 "src/mn-authenticated-mailbox.gob" if(self->password) { g_free ((gpointer) self->password); self->password = NULL; } #line 192 "mn-authenticated-mailbox.c" #line 60 "src/mn-authenticated-mailbox.gob" if(self->keyring_username) { g_free ((gpointer) self->keyring_username); self->keyring_username = NULL; } #line 195 "mn-authenticated-mailbox.c" #line 61 "src/mn-authenticated-mailbox.gob" if(self->keyring_domain) { g_free ((gpointer) self->keyring_domain); self->keyring_domain = NULL; } #line 198 "mn-authenticated-mailbox.c" #line 62 "src/mn-authenticated-mailbox.gob" if(self->keyring_server) { g_free ((gpointer) self->keyring_server); self->keyring_server = NULL; } #line 201 "mn-authenticated-mailbox.c" #line 63 "src/mn-authenticated-mailbox.gob" if(self->keyring_protocol) { g_free ((gpointer) self->keyring_protocol); self->keyring_protocol = NULL; } #line 204 "mn-authenticated-mailbox.c" #line 64 "src/mn-authenticated-mailbox.gob" if(self->keyring_authtype) { g_free ((gpointer) self->keyring_authtype); self->keyring_authtype = NULL; } #line 207 "mn-authenticated-mailbox.c" #line 77 "src/mn-authenticated-mailbox.gob" if(self->runtime_password) { g_free ((gpointer) self->runtime_password); self->runtime_password = NULL; } #line 210 "mn-authenticated-mailbox.c" #line 84 "src/mn-authenticated-mailbox.gob" if(self->_priv->prompted_password_keyring) { g_free ((gpointer) self->_priv->prompted_password_keyring); self->_priv->prompted_password_keyring = NULL; } #line 213 "mn-authenticated-mailbox.c" } #undef __GOB_FUNCTION__ static void mn_authenticated_mailbox_init (MNAuthenticatedMailbox * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_AUTHENTICATED_MAILBOX,MNAuthenticatedMailboxPrivate); } #undef __GOB_FUNCTION__ #line 87 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_class_init (MNAuthenticatedMailboxClass * class G_GNUC_UNUSED) { #line 228 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class; g_type_class_add_private(class,sizeof(MNAuthenticatedMailboxPrivate)); parent_class = g_type_class_ref (MN_TYPE_MAILBOX); #line 97 "src/mn-authenticated-mailbox.gob" mn_mailbox_class->seal = ___3_mn_authenticated_mailbox_seal; #line 110 "src/mn-authenticated-mailbox.gob" mn_mailbox_class->added = ___4_mn_authenticated_mailbox_added; #line 130 "src/mn-authenticated-mailbox.gob" mn_mailbox_class->removed = ___5_mn_authenticated_mailbox_removed; #line 207 "src/mn-authenticated-mailbox.gob" mn_mailbox_class->check = ___9_mn_authenticated_mailbox_check; #line 238 "src/mn-authenticated-mailbox.gob" class->authenticated_check = ___real_mn_authenticated_mailbox_authenticated_check; #line 247 "mn-authenticated-mailbox.c" g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_string ("username" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_USERNAME, param_spec); param_spec = g_param_spec_string ("password" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD)); g_object_class_install_property (g_object_class, PROP_PASSWORD, param_spec); param_spec = g_param_spec_boolean ("setting_password" /* name */, NULL /* nick */, NULL /* blurb */, FALSE /* default_value */, (GParamFlags)(G_PARAM_READABLE)); g_object_class_install_property (g_object_class, PROP_SETTING_PASSWORD, param_spec); } { #line 88 "src/mn-authenticated-mailbox.gob" /* * We might need to save the password to the keyring before the * first check, so we will call mn_mailbox_enable_checking() * ourselves. */ MN_MAILBOX_CLASS(class)->enable_checking_when_added = FALSE; #line 292 "mn-authenticated-mailbox.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::set_property" { MNAuthenticatedMailbox *self G_GNUC_UNUSED; self = MN_AUTHENTICATED_MAILBOX (object); switch (property_id) { case PROP_USERNAME: { #line 41 "src/mn-authenticated-mailbox.gob" { char *old = self->username; self->username = g_value_dup_string (VAL); g_free (old); } #line 313 "mn-authenticated-mailbox.c" } break; case PROP_PASSWORD: { #line 57 "src/mn-authenticated-mailbox.gob" { char *old = self->password; self->password = g_value_dup_string (VAL); g_free (old); } #line 320 "mn-authenticated-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::get_property" { MNAuthenticatedMailbox *self G_GNUC_UNUSED; self = MN_AUTHENTICATED_MAILBOX (object); switch (property_id) { case PROP_USERNAME: { #line 41 "src/mn-authenticated-mailbox.gob" g_value_set_string (VAL, self->username); #line 351 "mn-authenticated-mailbox.c" } break; case PROP_PASSWORD: { #line 57 "src/mn-authenticated-mailbox.gob" g_value_set_string (VAL, self->password); #line 358 "mn-authenticated-mailbox.c" } break; case PROP_SETTING_PASSWORD: { #line 71 "src/mn-authenticated-mailbox.gob" g_value_set_boolean(VAL, selfp->set_password_request != NULL); #line 367 "mn-authenticated-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 71 "src/mn-authenticated-mailbox.gob" gboolean mn_authenticated_mailbox_get_setting_password (MNAuthenticatedMailbox * self) { #line 387 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::get_setting_password" { #line 70 "src/mn-authenticated-mailbox.gob" gboolean val; g_object_get (G_OBJECT (self), "setting_password", &val, NULL); return val; }} #line 393 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 97 "src/mn-authenticated-mailbox.gob" static void ___3_mn_authenticated_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED) #line 400 "mn-authenticated-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->seal) \ (* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::seal" { #line 99 "src/mn-authenticated-mailbox.gob" Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (self->password) mn_shell->mailboxes->must_save_after_load = TRUE; self_parse_username(self, &self->keyring_username, &self->keyring_domain); }} #line 418 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 110 "src/mn-authenticated-mailbox.gob" static void ___4_mn_authenticated_mailbox_added (MNMailbox * mailbox G_GNUC_UNUSED) #line 425 "mn-authenticated-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->added) \ (* MN_MAILBOX_CLASS(parent_class)->added)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::added" { #line 112 "src/mn-authenticated-mailbox.gob" Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); /* * If self->password is set, the password must be saved to the * keyring (either because the user has just added the mailbox or * because a mailboxes.xml produced by an older version of MN was * loaded). Checking will be enabled after the password has been * saved. Otherwise we must enable checking immediately. */ if (self->password) self_set_password(self); else mn_mailbox_enable_checking(mailbox); }} #line 450 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 130 "src/mn-authenticated-mailbox.gob" static void ___5_mn_authenticated_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED) #line 457 "mn-authenticated-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->removed) \ (* MN_MAILBOX_CLASS(parent_class)->removed)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::removed" { #line 132 "src/mn-authenticated-mailbox.gob" Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (selfp->auth_dialog) gtk_dialog_response(GTK_DIALOG(selfp->auth_dialog), GTK_RESPONSE_CANCEL); if (selfp->get_password_request) gnome_keyring_cancel_request(selfp->get_password_request); if (selfp->set_password_request) gnome_keyring_cancel_request(selfp->set_password_request); /* * We do not remove the password from the keyring, since it is * meant to be shared with other applications */ }} #line 484 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 152 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_set_password (MNAuthenticatedMailbox * self) { #line 492 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::set_password" #line 152 "src/mn-authenticated-mailbox.gob" g_return_if_fail (self != NULL); #line 152 "src/mn-authenticated-mailbox.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self)); #line 498 "mn-authenticated-mailbox.c" { #line 154 "src/mn-authenticated-mailbox.gob" g_assert(self->password != NULL); g_assert(selfp->set_password_request == NULL); g_object_ref(self); self_set_set_password_request(self, gnome_keyring_set_network_password(NULL, self->keyring_username, self->keyring_domain, self->keyring_server, NULL, self->keyring_protocol, self->keyring_authtype, self->keyring_port, self->password, self_set_password_cb, self, g_object_unref)); }} #line 520 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 174 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_set_password_cb (GnomeKeyringResult result, guint32 item_id, gpointer data) { #line 527 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::set_password_cb" { #line 178 "src/mn-authenticated-mailbox.gob" Self *self = data; GDK_THREADS_ENTER(); self_set_set_password_request(self, NULL); /* * If the mailbox has not been removed, display an error dialog if * the password could not be saved and enable checking. */ if (mn_mailbox_get_active(MN_MAILBOX(self))) { self_handle_set_password_result(self, result); mn_mailbox_enable_checking(MN_MAILBOX(self)); } /* do not call gdk_flush(), we're normally in the main thread */ GDK_THREADS_LEAVE(); }} #line 552 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 200 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_set_set_password_request (MNAuthenticatedMailbox * self, gpointer request) { #line 559 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::set_set_password_request" #line 200 "src/mn-authenticated-mailbox.gob" g_return_if_fail (self != NULL); #line 200 "src/mn-authenticated-mailbox.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self)); #line 565 "mn-authenticated-mailbox.c" { #line 202 "src/mn-authenticated-mailbox.gob" selfp->set_password_request = request; g_object_notify(G_OBJECT(self), "setting-password"); }} #line 572 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 207 "src/mn-authenticated-mailbox.gob" static void ___9_mn_authenticated_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED) #line 578 "mn-authenticated-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->check) \ (* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::check" { #line 209 "src/mn-authenticated-mailbox.gob" Self *self = SELF(mailbox); if (selfp->checking) return; PARENT_HANDLER(mailbox); selfp->checking = TRUE; mn_mailbox_set_error(mailbox, NULL); g_object_ref(self); mn_thread_create((GThreadFunc) self_check_thread_cb, self); }} #line 600 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 224 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_check_thread_cb (MNAuthenticatedMailbox * self) { #line 608 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::check_thread_cb" #line 224 "src/mn-authenticated-mailbox.gob" g_return_if_fail (self != NULL); #line 224 "src/mn-authenticated-mailbox.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self)); #line 614 "mn-authenticated-mailbox.c" { #line 226 "src/mn-authenticated-mailbox.gob" self_authenticated_check(self); GDK_THREADS_ENTER(); selfp->checking = FALSE; g_object_unref(self); gdk_flush(); GDK_THREADS_LEAVE(); }} #line 628 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 238 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_authenticated_check (MNAuthenticatedMailbox * self) { #line 635 "mn-authenticated-mailbox.c" MNAuthenticatedMailboxClass *klass; #line 238 "src/mn-authenticated-mailbox.gob" g_return_if_fail (self != NULL); #line 238 "src/mn-authenticated-mailbox.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self)); #line 641 "mn-authenticated-mailbox.c" klass = MN_AUTHENTICATED_MAILBOX_GET_CLASS(self); if(klass->authenticated_check) (*klass->authenticated_check)(self); } #line 238 "src/mn-authenticated-mailbox.gob" static void ___real_mn_authenticated_mailbox_authenticated_check (MNAuthenticatedMailbox * self G_GNUC_UNUSED) { #line 651 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::authenticated_check" { #line 240 "src/mn-authenticated-mailbox.gob" self->auth_prompted = FALSE; self->auth_cancelled = FALSE; self->auth_failed = FALSE; g_free(selfp->prompted_password_keyring); selfp->prompted_password_keyring = NULL; selfp->prompted_password_item_id = 0; }} #line 665 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 251 "src/mn-authenticated-mailbox.gob" void mn_authenticated_mailbox_parse_username (MNAuthenticatedMailbox * self, char ** username, char ** domain) { #line 672 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::parse_username" #line 251 "src/mn-authenticated-mailbox.gob" g_return_if_fail (self != NULL); #line 251 "src/mn-authenticated-mailbox.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self)); #line 678 "mn-authenticated-mailbox.c" { #line 253 "src/mn-authenticated-mailbox.gob" char *at; at = strrchr(self->username, '@'); if (at) { if (username) *username = g_strndup(self->username, at - self->username); if (domain) *domain = g_strdup(at + 1); } else { if (username) *username = g_strdup(self->username); if (domain) *domain = NULL; } }} #line 700 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 278 "src/mn-authenticated-mailbox.gob" gboolean mn_authenticated_mailbox_fill_password (MNAuthenticatedMailbox * self, gboolean may_prompt) { #line 707 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::fill_password" #line 278 "src/mn-authenticated-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 278 "src/mn-authenticated-mailbox.gob" g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self), (gboolean )0); #line 713 "mn-authenticated-mailbox.c" { #line 280 "src/mn-authenticated-mailbox.gob" self->auth_cancelled = FALSE; g_free(self->runtime_password); self->runtime_password = self_get_password_sync(self); /* * Check if the user removed the mailbox while we were waiting for * the keyring password. */ if (! mn_mailbox_get_active(MN_MAILBOX(self))) { self->auth_cancelled = TRUE; return FALSE; } if (! self->runtime_password && may_prompt) { GDK_THREADS_ENTER(); self->auth_prompted = TRUE; if (! self_prompt_for_password(self, &self->runtime_password, self->auth_failed /* translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) */ ? _("Mail Notification was unable to log into %s mailbox %s, possibly because the password you have entered is invalid.\n\nPlease re-enter your password.") /* translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) */ : _("Enter your password for %s mailbox %s."), MN_MAILBOX(self)->format, MN_MAILBOX(self)->runtime_name)) self->auth_cancelled = TRUE; gdk_flush(); GDK_THREADS_LEAVE(); } return ! self->auth_cancelled; }} #line 755 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 320 "src/mn-authenticated-mailbox.gob" static char * mn_authenticated_mailbox_get_password_sync (MNAuthenticatedMailbox * self) { #line 762 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::get_password_sync" #line 320 "src/mn-authenticated-mailbox.gob" g_return_val_if_fail (self != NULL, (char * )0); #line 320 "src/mn-authenticated-mailbox.gob" g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self), (char * )0); #line 768 "mn-authenticated-mailbox.c" { #line 322 "src/mn-authenticated-mailbox.gob" return mn_keyring_get_password_sync(self->keyring_username, self->keyring_domain, self->keyring_server, self->keyring_protocol, self->keyring_authtype, self->keyring_port, self_get_password_sync_request_cb, self); }} #line 781 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 333 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_get_password_sync_request_cb (gpointer request, gpointer data) { #line 788 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::get_password_sync_request_cb" { #line 335 "src/mn-authenticated-mailbox.gob" Self *self = data; selfp->get_password_request = request; }} #line 797 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 341 "src/mn-authenticated-mailbox.gob" void mn_authenticated_mailbox_auth_failed (MNAuthenticatedMailbox * self) { #line 804 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::auth_failed" #line 341 "src/mn-authenticated-mailbox.gob" g_return_if_fail (self != NULL); #line 341 "src/mn-authenticated-mailbox.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self)); #line 810 "mn-authenticated-mailbox.c" { #line 343 "src/mn-authenticated-mailbox.gob" /* * If the password had been entered at the password prompt, we * must remove it from the keyring since the authentication has * failed. */ if (self->auth_prompted && selfp->prompted_password_item_id) { self_delete_password(self, selfp->prompted_password_keyring, selfp->prompted_password_item_id); g_free(selfp->prompted_password_keyring); selfp->prompted_password_keyring = NULL; selfp->prompted_password_item_id = 0; } self->auth_failed = TRUE; }} #line 833 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 365 "src/mn-authenticated-mailbox.gob" static gboolean mn_authenticated_mailbox_prompt_for_password (MNAuthenticatedMailbox * self, char ** password, const char * format, ...) { #line 840 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::prompt_for_password" #line 365 "src/mn-authenticated-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 365 "src/mn-authenticated-mailbox.gob" g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self), (gboolean )0); #line 365 "src/mn-authenticated-mailbox.gob" g_return_val_if_fail (password != NULL, (gboolean )0); #line 365 "src/mn-authenticated-mailbox.gob" g_return_val_if_fail (format != NULL, (gboolean )0); #line 850 "mn-authenticated-mailbox.c" { #line 370 "src/mn-authenticated-mailbox.gob" char *message; gboolean ok; g_return_val_if_fail(selfp->auth_dialog == NULL, FALSE); MN_STRDUP_VPRINTF(message, format); /* keep the title in sync with gnome-authentication-manager */ /* translators: header capitalization */ selfp->auth_dialog = gnome_password_dialog_new(_("Authentication Required"), message, self->username, NULL, FALSE); g_free(message); mn_add_weak_pointer(&selfp->auth_dialog); gnome_password_dialog_set_show_userpass_buttons(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), FALSE); gnome_password_dialog_set_readonly_username(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), TRUE); gnome_password_dialog_set_show_remember(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), TRUE); gnome_password_dialog_set_remember(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), GNOME_PASSWORD_DIALOG_REMEMBER_SESSION); ok = gnome_password_dialog_run_and_block(GNOME_PASSWORD_DIALOG(selfp->auth_dialog)); if (ok) { GnomePasswordDialogRemember remember; *password = gnome_password_dialog_get_password(GNOME_PASSWORD_DIALOG(selfp->auth_dialog)); remember = gnome_password_dialog_get_remember(GNOME_PASSWORD_DIALOG(selfp->auth_dialog)); if (remember == GNOME_PASSWORD_DIALOG_REMEMBER_SESSION) self_set_prompted_password(self, "session", *password); else if (remember == GNOME_PASSWORD_DIALOG_REMEMBER_FOREVER) self_set_prompted_password(self, NULL, *password); } gtk_widget_destroy(selfp->auth_dialog); return ok; }} #line 896 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 414 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_set_prompted_password (MNAuthenticatedMailbox * self, const char * keyring, const char * password) { #line 903 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::set_prompted_password" #line 414 "src/mn-authenticated-mailbox.gob" g_return_if_fail (self != NULL); #line 414 "src/mn-authenticated-mailbox.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self)); #line 414 "src/mn-authenticated-mailbox.gob" g_return_if_fail (password != NULL); #line 911 "mn-authenticated-mailbox.c" { #line 418 "src/mn-authenticated-mailbox.gob" GnomeKeyringResult result; /* do not block the main loop */ gdk_flush(); GDK_THREADS_LEAVE(); g_free(selfp->prompted_password_keyring); selfp->prompted_password_keyring = g_strdup(keyring); result = mn_keyring_set_password_sync(keyring, self->keyring_username, self->keyring_domain, self->keyring_server, self->keyring_protocol, self->keyring_authtype, self->keyring_port, password, &selfp->prompted_password_item_id, self_set_prompted_password_request_cb, self); GDK_THREADS_ENTER(); self_handle_set_password_result(self, result); }} #line 940 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 445 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_set_prompted_password_request_cb (gpointer request, gpointer data) { #line 947 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::set_prompted_password_request_cb" { #line 447 "src/mn-authenticated-mailbox.gob" Self *self = data; GDK_THREADS_ENTER(); self_set_set_password_request(self, request); /* do not call gdk_flush(), we're normally in the main thread */ GDK_THREADS_LEAVE(); }} #line 961 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 458 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_handle_set_password_result (MNAuthenticatedMailbox * self, GnomeKeyringResult result) { #line 968 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::handle_set_password_result" #line 458 "src/mn-authenticated-mailbox.gob" g_return_if_fail (self != NULL); #line 458 "src/mn-authenticated-mailbox.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self)); #line 974 "mn-authenticated-mailbox.c" { #line 460 "src/mn-authenticated-mailbox.gob" if (result != GNOME_KEYRING_RESULT_OK && result != GNOME_KEYRING_RESULT_CANCELLED) mn_show_error_dialog(NULL, _("Unable to save the mailbox password"), /* translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) */ _("The password of %s mailbox %s could not be saved to the keyring."), MN_MAILBOX(self)->format, MN_MAILBOX(self)->runtime_name); }} #line 986 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 470 "src/mn-authenticated-mailbox.gob" gpointer mn_authenticated_mailbox_get_password (MNAuthenticatedMailbox * self, GnomeKeyringOperationGetListCallback cb, gpointer data) { #line 993 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::get_password" #line 470 "src/mn-authenticated-mailbox.gob" g_return_val_if_fail (self != NULL, (gpointer )0); #line 470 "src/mn-authenticated-mailbox.gob" g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self), (gpointer )0); #line 999 "mn-authenticated-mailbox.c" { #line 474 "src/mn-authenticated-mailbox.gob" return gnome_keyring_find_network_password(self->keyring_username, self->keyring_domain, self->keyring_server, NULL, self->keyring_protocol, self->keyring_authtype, self->keyring_port, cb, data, NULL); }} #line 1014 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ #line 487 "src/mn-authenticated-mailbox.gob" static void mn_authenticated_mailbox_delete_password (MNAuthenticatedMailbox * self, const char * keyring, guint32 item_id) { #line 1021 "mn-authenticated-mailbox.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::delete_password" #line 487 "src/mn-authenticated-mailbox.gob" g_return_if_fail (self != NULL); #line 487 "src/mn-authenticated-mailbox.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self)); #line 487 "src/mn-authenticated-mailbox.gob" g_return_if_fail (item_id != 0); #line 1029 "mn-authenticated-mailbox.c" { #line 491 "src/mn-authenticated-mailbox.gob" char *default_keyring = NULL; if (! keyring) { /* * gnome_keyring_item_delete_sync() does not work if the * passed keyring is NULL, so we must get the default keyring. */ if (gnome_keyring_get_default_keyring_sync(&default_keyring) != GNOME_KEYRING_RESULT_OK) return; keyring = default_keyring; } gnome_keyring_item_delete_sync(keyring, item_id); g_free(default_keyring); }} #line 1051 "mn-authenticated-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-evolution-client.h0000644000175000001440000000512511015312647023625 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_EVOLUTION_CLIENT_H__ #define __MN_EVOLUTION_CLIENT_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_EVOLUTION_CLIENT (mn_evolution_client_get_type()) #define MN_EVOLUTION_CLIENT(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_client_get_type(), MNEvolutionClient) #define MN_EVOLUTION_CLIENT_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_client_get_type(), MNEvolutionClient const) #define MN_EVOLUTION_CLIENT_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_evolution_client_get_type(), MNEvolutionClientClass) #define MN_IS_EVOLUTION_CLIENT(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_evolution_client_get_type ()) #define MN_EVOLUTION_CLIENT_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_evolution_client_get_type(), MNEvolutionClientClass) /* Private structure type */ typedef struct _MNEvolutionClientPrivate MNEvolutionClientPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_EVOLUTION_CLIENT__ #define __TYPEDEF_MN_EVOLUTION_CLIENT__ typedef struct _MNEvolutionClient MNEvolutionClient; #endif struct _MNEvolutionClient { GObject __parent__; /*< public >*/ DBusGProxy * proxy; /*< private >*/ MNEvolutionClientPrivate *_priv; }; /* * Class definition */ typedef struct _MNEvolutionClientClass MNEvolutionClientClass; struct _MNEvolutionClientClass { GObjectClass __parent__; }; /* * Public methods */ GType mn_evolution_client_get_type (void) G_GNUC_CONST; #line 39 "src/mn-evolution-client.gob" DBusGProxy * mn_evolution_client_get_proxy (MNEvolutionClient * self); #line 62 "mn-evolution-client.h" #line 39 "src/mn-evolution-client.gob" void mn_evolution_client_set_proxy (MNEvolutionClient * self, DBusGProxy * val); #line 66 "mn-evolution-client.h" #line 142 "src/mn-evolution-client.gob" MNEvolutionClient * mn_evolution_client_get (void); #line 69 "mn-evolution-client.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_EVOLUTION_CLIENT_PROP_PROXY(arg) "proxy", __extension__ ({DBusGProxy * z = (arg); z;}) #define MN_EVOLUTION_CLIENT_GET_PROP_PROXY(arg) "proxy", __extension__ ({DBusGProxy * *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_EVOLUTION_CLIENT_PROP_PROXY(arg) "proxy",(DBusGProxy * )(arg) #define MN_EVOLUTION_CLIENT_GET_PROP_PROXY(arg) "proxy",(DBusGProxy * *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-sound-file-chooser-dialog.c0000644000175000001440000002553111015312645025263 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-sound-file-chooser-dialog.h" #include "mn-sound-file-chooser-dialog-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 28 "src/mn-sound-file-chooser-dialog.gob" #include enum { RESPONSE_PLAY = 1, RESPONSE_STOP }; #line 36 "mn-sound-file-chooser-dialog.c" /* self casting macros */ #define SELF(x) MN_SOUND_FILE_CHOOSER_DIALOG(x) #define SELF_CONST(x) MN_SOUND_FILE_CHOOSER_DIALOG_CONST(x) #define IS_SELF(x) MN_IS_SOUND_FILE_CHOOSER_DIALOG(x) #define TYPE_SELF MN_TYPE_SOUND_FILE_CHOOSER_DIALOG #define SELF_CLASS(x) MN_SOUND_FILE_CHOOSER_DIALOG_CLASS(x) #define SELF_GET_CLASS(x) MN_SOUND_FILE_CHOOSER_DIALOG_GET_CLASS(x) /* self typedefs */ typedef MNSoundFileChooserDialog Self; typedef MNSoundFileChooserDialogClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-sound-file-chooser-dialog.gob" static void mn_sound_file_chooser_dialog_init (MNSoundFileChooserDialog * o); #line 53 "mn-sound-file-chooser-dialog.c" #line 0 "src/mn-sound-file-chooser-dialog.gob" static void mn_sound_file_chooser_dialog_class_init (MNSoundFileChooserDialogClass * c); #line 56 "mn-sound-file-chooser-dialog.c" #line 42 "src/mn-sound-file-chooser-dialog.gob" static void mn_sound_file_chooser_dialog_constructor (MNSoundFileChooserDialog * self); #line 59 "mn-sound-file-chooser-dialog.c" #line 81 "src/mn-sound-file-chooser-dialog.gob" static void mn_sound_file_chooser_dialog_response_h (GtkDialog * dialog, int response, gpointer user_data); #line 62 "mn-sound-file-chooser-dialog.c" #line 109 "src/mn-sound-file-chooser-dialog.gob" static void mn_sound_file_chooser_dialog_update_sensitivity (MNSoundFileChooserDialog * self); #line 65 "mn-sound-file-chooser-dialog.c" #line 116 "src/mn-sound-file-chooser-dialog.gob" static gboolean mn_sound_file_chooser_dialog_has_selected_file (MNSoundFileChooserDialog * self); #line 68 "mn-sound-file-chooser-dialog.c" /* pointer to the class of our parent */ static GtkFileChooserDialogClass *parent_class = NULL; /* Short form macros */ #define self_response_h mn_sound_file_chooser_dialog_response_h #define self_update_sensitivity mn_sound_file_chooser_dialog_update_sensitivity #define self_has_selected_file mn_sound_file_chooser_dialog_has_selected_file #define self_new mn_sound_file_chooser_dialog_new GType mn_sound_file_chooser_dialog_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNSoundFileChooserDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_sound_file_chooser_dialog_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNSoundFileChooserDialog), 0 /* n_preallocs */, (GInstanceInitFunc) mn_sound_file_chooser_dialog_init, NULL }; type = g_type_register_static (GTK_TYPE_FILE_CHOOSER_DIALOG, "MNSoundFileChooserDialog", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNSoundFileChooserDialog *)g_object_new(mn_sound_file_chooser_dialog_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNSoundFileChooserDialog * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNSoundFileChooserDialog * GET_NEW_VARG (const char *first, ...) { MNSoundFileChooserDialog *ret; va_list ap; va_start (ap, first); ret = (MNSoundFileChooserDialog *)g_object_new_valist (mn_sound_file_chooser_dialog_get_type (), first, ap); va_end (ap); return ret; } static GObject * ___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { #define __GOB_FUNCTION__ "MN:Sound:File:Chooser:Dialog::constructor" GObject *obj_self; MNSoundFileChooserDialog *self; obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties); self = MN_SOUND_FILE_CHOOSER_DIALOG (obj_self); #line 42 "src/mn-sound-file-chooser-dialog.gob" mn_sound_file_chooser_dialog_constructor (self); #line 131 "mn-sound-file-chooser-dialog.c" return obj_self; } #undef __GOB_FUNCTION__ static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Sound:File:Chooser:Dialog::dispose" MNSoundFileChooserDialog *self G_GNUC_UNUSED = MN_SOUND_FILE_CHOOSER_DIALOG (obj_self); if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 40 "src/mn-sound-file-chooser-dialog.gob" if(self->_priv->sound_player) { g_object_unref ((gpointer) self->_priv->sound_player); self->_priv->sound_player = NULL; } #line 146 "mn-sound-file-chooser-dialog.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Sound:File:Chooser:Dialog::finalize" MNSoundFileChooserDialog *self G_GNUC_UNUSED = MN_SOUND_FILE_CHOOSER_DIALOG (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_sound_file_chooser_dialog_init (MNSoundFileChooserDialog * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Sound:File:Chooser:Dialog::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_SOUND_FILE_CHOOSER_DIALOG,MNSoundFileChooserDialogPrivate); } #undef __GOB_FUNCTION__ static void mn_sound_file_chooser_dialog_class_init (MNSoundFileChooserDialogClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Sound:File:Chooser:Dialog::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNSoundFileChooserDialogPrivate)); parent_class = g_type_class_ref (GTK_TYPE_FILE_CHOOSER_DIALOG); g_object_class->constructor = ___constructor; g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 42 "src/mn-sound-file-chooser-dialog.gob" static void mn_sound_file_chooser_dialog_constructor (MNSoundFileChooserDialog * self) { #line 191 "mn-sound-file-chooser-dialog.c" #define __GOB_FUNCTION__ "MN:Sound:File:Chooser:Dialog::constructor" { #line 43 "src/mn-sound-file-chooser-dialog.gob" GtkFileFilter *filter; selfp->sound_player = mn_sound_player_new(); gtk_window_set_title(GTK_WINDOW(self), _("Select a File")); gtk_dialog_add_buttons(GTK_DIALOG(self), GTK_STOCK_MEDIA_PLAY, RESPONSE_PLAY, GTK_STOCK_MEDIA_STOP, RESPONSE_STOP, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("All files")); gtk_file_filter_add_pattern(filter, "*"); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(self), filter); filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("Audio files")); gtk_file_filter_add_mime_type(filter, "audio/*"); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(self), filter); gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(self), filter); g_object_connect(self, "signal::response", self_response_h, NULL, "signal::selection-changed", self_update_sensitivity, NULL, NULL); g_object_connect(selfp->sound_player, "swapped-signal::notify::can-play", self_update_sensitivity, self, "swapped-signal::notify::can-stop", self_update_sensitivity, self, NULL); self_update_sensitivity(self); }} #line 232 "mn-sound-file-chooser-dialog.c" #undef __GOB_FUNCTION__ #line 81 "src/mn-sound-file-chooser-dialog.gob" static void mn_sound_file_chooser_dialog_response_h (GtkDialog * dialog, int response, gpointer user_data) { #line 239 "mn-sound-file-chooser-dialog.c" #define __GOB_FUNCTION__ "MN:Sound:File:Chooser:Dialog::response_h" { #line 83 "src/mn-sound-file-chooser-dialog.gob" Self *self = SELF(dialog); if (response == RESPONSE_PLAY) { char *filename; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); if (filename) { mn_sound_player_play(selfp->sound_player, filename, GTK_WINDOW(dialog)); g_free(filename); } } else if (response == RESPONSE_STOP) mn_sound_player_stop(selfp->sound_player); else return; /* * Do not pass our internal responses to client code and do not * let the dialog be destroyed. */ g_signal_stop_emission_by_name(dialog, "response"); }} #line 268 "mn-sound-file-chooser-dialog.c" #undef __GOB_FUNCTION__ #line 109 "src/mn-sound-file-chooser-dialog.gob" static void mn_sound_file_chooser_dialog_update_sensitivity (MNSoundFileChooserDialog * self) { #line 275 "mn-sound-file-chooser-dialog.c" #define __GOB_FUNCTION__ "MN:Sound:File:Chooser:Dialog::update_sensitivity" #line 109 "src/mn-sound-file-chooser-dialog.gob" g_return_if_fail (self != NULL); #line 109 "src/mn-sound-file-chooser-dialog.gob" g_return_if_fail (MN_IS_SOUND_FILE_CHOOSER_DIALOG (self)); #line 281 "mn-sound-file-chooser-dialog.c" { #line 111 "src/mn-sound-file-chooser-dialog.gob" gtk_dialog_set_response_sensitive(GTK_DIALOG(self), RESPONSE_PLAY, self_has_selected_file(self) && mn_sound_player_get_can_play(selfp->sound_player)); gtk_dialog_set_response_sensitive(GTK_DIALOG(self), RESPONSE_STOP, mn_sound_player_get_can_stop(selfp->sound_player)); }} #line 288 "mn-sound-file-chooser-dialog.c" #undef __GOB_FUNCTION__ #line 116 "src/mn-sound-file-chooser-dialog.gob" static gboolean mn_sound_file_chooser_dialog_has_selected_file (MNSoundFileChooserDialog * self) { #line 295 "mn-sound-file-chooser-dialog.c" #define __GOB_FUNCTION__ "MN:Sound:File:Chooser:Dialog::has_selected_file" #line 116 "src/mn-sound-file-chooser-dialog.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 116 "src/mn-sound-file-chooser-dialog.gob" g_return_val_if_fail (MN_IS_SOUND_FILE_CHOOSER_DIALOG (self), (gboolean )0); #line 301 "mn-sound-file-chooser-dialog.c" { #line 118 "src/mn-sound-file-chooser-dialog.gob" char *filename; gboolean has; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(self)); has = filename && ! g_file_test(filename, G_FILE_TEST_IS_DIR); g_free(filename); return has; }} #line 314 "mn-sound-file-chooser-dialog.c" #undef __GOB_FUNCTION__ #line 129 "src/mn-sound-file-chooser-dialog.gob" GtkWidget * mn_sound_file_chooser_dialog_new (void) { #line 321 "mn-sound-file-chooser-dialog.c" #define __GOB_FUNCTION__ "MN:Sound:File:Chooser:Dialog::new" { #line 131 "src/mn-sound-file-chooser-dialog.gob" return GTK_WIDGET(GET_NEW); }} #line 328 "mn-sound-file-chooser-dialog.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-server.c0000644000175000001440000002254011015312645021624 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-server.h" #include "mn-server-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 30 "src/mn-server.gob" #include #include #include "mn-shell.h" #include "mn-util.h" #line 33 "mn-server.c" /* self casting macros */ #define SELF(x) MN_SERVER(x) #define SELF_CONST(x) MN_SERVER_CONST(x) #define IS_SELF(x) MN_IS_SERVER(x) #define TYPE_SELF MN_TYPE_SERVER #define SELF_CLASS(x) MN_SERVER_CLASS(x) #define SELF_GET_CLASS(x) MN_SERVER_GET_CLASS(x) /* self typedefs */ typedef MNServer Self; typedef MNServerClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-server.gob" static void mn_server_init (MNServer * o); #line 50 "mn-server.c" #line 48 "src/mn-server.gob" static void mn_server_class_init (MNServerClass * class); #line 53 "mn-server.c" #line 53 "src/mn-server.gob" static gboolean mn_server_has_mailboxes (MNServer * self, gboolean * ret, GError ** err); #line 56 "mn-server.c" #line 60 "src/mn-server.gob" static gboolean mn_server_get_summary (MNServer * self, char ** ret, GError ** err); #line 59 "mn-server.c" #line 67 "src/mn-server.gob" static gboolean mn_server_consider_new_mail_as_read (MNServer * self, GError ** err); #line 62 "mn-server.c" #line 77 "src/mn-server.gob" static gboolean mn_server_update (MNServer * self, GError ** err); #line 65 "mn-server.c" #line 87 "src/mn-server.gob" static gboolean mn_server_display_properties (MNServer * self, GError ** err); #line 68 "mn-server.c" #line 97 "src/mn-server.gob" static gboolean mn_server_display_about (MNServer * self, GError ** err); #line 71 "mn-server.c" #line 107 "src/mn-server.gob" static gboolean mn_server_quit (MNServer * self, GError ** err); #line 74 "mn-server.c" /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_has_mailboxes mn_server_has_mailboxes #define self_get_summary mn_server_get_summary #define self_consider_new_mail_as_read mn_server_consider_new_mail_as_read #define self_update mn_server_update #define self_display_properties mn_server_display_properties #define self_display_about mn_server_display_about #define self_quit mn_server_quit #define self_start mn_server_start GType mn_server_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNServerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_server_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNServer), 0 /* n_preallocs */, (GInstanceInitFunc) mn_server_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNServer", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNServer *)g_object_new(mn_server_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNServer * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNServer * GET_NEW_VARG (const char *first, ...) { MNServer *ret; va_list ap; va_start (ap, first); ret = (MNServer *)g_object_new_valist (mn_server_get_type (), first, ap); va_end (ap); return ret; } #line 37 "src/mn-server.gob" #include "mn-server-dbus.h" #line 135 "mn-server.c" static void mn_server_init (MNServer * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Server::init" } #undef __GOB_FUNCTION__ #line 48 "src/mn-server.gob" static void mn_server_class_init (MNServerClass * class G_GNUC_UNUSED) { #line 146 "mn-server.c" #define __GOB_FUNCTION__ "MN:Server::class_init" parent_class = g_type_class_ref (G_TYPE_OBJECT); { #line 49 "src/mn-server.gob" dbus_g_object_type_install_info(TYPE_SELF, &dbus_glib_mn_server_object_info); #line 156 "mn-server.c" } } #undef __GOB_FUNCTION__ #line 53 "src/mn-server.gob" static gboolean mn_server_has_mailboxes (MNServer * self, gboolean * ret, GError ** err) { #line 167 "mn-server.c" #define __GOB_FUNCTION__ "MN:Server::has_mailboxes" #line 53 "src/mn-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 53 "src/mn-server.gob" g_return_val_if_fail (MN_IS_SERVER (self), (gboolean )0); #line 53 "src/mn-server.gob" g_return_val_if_fail (ret != NULL, (gboolean )0); #line 175 "mn-server.c" { #line 55 "src/mn-server.gob" *ret = mn_shell->mailboxes->list != NULL; return TRUE; }} #line 182 "mn-server.c" #undef __GOB_FUNCTION__ #line 60 "src/mn-server.gob" static gboolean mn_server_get_summary (MNServer * self, char ** ret, GError ** err) { #line 189 "mn-server.c" #define __GOB_FUNCTION__ "MN:Server::get_summary" #line 60 "src/mn-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 60 "src/mn-server.gob" g_return_val_if_fail (MN_IS_SERVER (self), (gboolean )0); #line 60 "src/mn-server.gob" g_return_val_if_fail (ret != NULL, (gboolean )0); #line 197 "mn-server.c" { #line 62 "src/mn-server.gob" *ret = mn_shell_get_summary(mn_shell); return TRUE; }} #line 204 "mn-server.c" #undef __GOB_FUNCTION__ #line 67 "src/mn-server.gob" static gboolean mn_server_consider_new_mail_as_read (MNServer * self, GError ** err) { #line 211 "mn-server.c" #define __GOB_FUNCTION__ "MN:Server::consider_new_mail_as_read" #line 67 "src/mn-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 67 "src/mn-server.gob" g_return_val_if_fail (MN_IS_SERVER (self), (gboolean )0); #line 217 "mn-server.c" { #line 69 "src/mn-server.gob" GDK_THREADS_ENTER(); mn_shell_consider_new_mail_as_read(mn_shell); GDK_THREADS_LEAVE(); return TRUE; }} #line 227 "mn-server.c" #undef __GOB_FUNCTION__ #line 77 "src/mn-server.gob" static gboolean mn_server_update (MNServer * self, GError ** err) { #line 234 "mn-server.c" #define __GOB_FUNCTION__ "MN:Server::update" #line 77 "src/mn-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 77 "src/mn-server.gob" g_return_val_if_fail (MN_IS_SERVER (self), (gboolean )0); #line 240 "mn-server.c" { #line 79 "src/mn-server.gob" GDK_THREADS_ENTER(); mn_shell_update(mn_shell); GDK_THREADS_LEAVE(); return TRUE; }} #line 250 "mn-server.c" #undef __GOB_FUNCTION__ #line 87 "src/mn-server.gob" static gboolean mn_server_display_properties (MNServer * self, GError ** err) { #line 257 "mn-server.c" #define __GOB_FUNCTION__ "MN:Server::display_properties" #line 87 "src/mn-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 87 "src/mn-server.gob" g_return_val_if_fail (MN_IS_SERVER (self), (gboolean )0); #line 263 "mn-server.c" { #line 89 "src/mn-server.gob" GDK_THREADS_ENTER(); mn_shell_show_properties_dialog(mn_shell, 0); GDK_THREADS_LEAVE(); return TRUE; }} #line 273 "mn-server.c" #undef __GOB_FUNCTION__ #line 97 "src/mn-server.gob" static gboolean mn_server_display_about (MNServer * self, GError ** err) { #line 280 "mn-server.c" #define __GOB_FUNCTION__ "MN:Server::display_about" #line 97 "src/mn-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 97 "src/mn-server.gob" g_return_val_if_fail (MN_IS_SERVER (self), (gboolean )0); #line 286 "mn-server.c" { #line 99 "src/mn-server.gob" GDK_THREADS_ENTER(); mn_shell_show_about_dialog(mn_shell, 0); GDK_THREADS_LEAVE(); return TRUE; }} #line 296 "mn-server.c" #undef __GOB_FUNCTION__ #line 107 "src/mn-server.gob" static gboolean mn_server_quit (MNServer * self, GError ** err) { #line 303 "mn-server.c" #define __GOB_FUNCTION__ "MN:Server::quit" #line 107 "src/mn-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 107 "src/mn-server.gob" g_return_val_if_fail (MN_IS_SERVER (self), (gboolean )0); #line 309 "mn-server.c" { #line 109 "src/mn-server.gob" GDK_THREADS_ENTER(); mn_shell_quit(mn_shell); GDK_THREADS_LEAVE(); return TRUE; }} #line 319 "mn-server.c" #undef __GOB_FUNCTION__ #line 118 "src/mn-server.gob" gboolean mn_server_start (DBusGConnection * bus, DBusGProxy * bus_proxy) { #line 326 "mn-server.c" #define __GOB_FUNCTION__ "MN:Server::start" #line 118 "src/mn-server.gob" g_return_val_if_fail (bus != NULL, (gboolean )0); #line 118 "src/mn-server.gob" g_return_val_if_fail (bus_proxy != NULL, (gboolean )0); #line 118 "src/mn-server.gob" g_return_val_if_fail (DBUS_IS_G_PROXY (bus_proxy), (gboolean )0); #line 334 "mn-server.c" { #line 121 "src/mn-server.gob" Self *self; GError *err = NULL; unsigned int name_reply; self = GET_NEW; dbus_g_connection_register_g_object(bus, MN_SERVER_PATH, G_OBJECT(self)); if (! org_freedesktop_DBus_request_name(bus_proxy, MN_SERVER_SERVICE, DBUS_NAME_FLAG_DO_NOT_QUEUE, &name_reply, &err)) { mn_show_fatal_error_dialog(NULL, _("Unable to register the Mail Notification D-Bus server: %s."), err->message); g_error_free(err); } if (name_reply != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { g_object_unref(self); return FALSE; } return TRUE; }} #line 364 "mn-server.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-sound-file-chooser-dialog.h0000644000175000001440000000401011015312645025255 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_SOUND_FILE_CHOOSER_DIALOG_H__ #define __MN_SOUND_FILE_CHOOSER_DIALOG_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_SOUND_FILE_CHOOSER_DIALOG (mn_sound_file_chooser_dialog_get_type()) #define MN_SOUND_FILE_CHOOSER_DIALOG(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_sound_file_chooser_dialog_get_type(), MNSoundFileChooserDialog) #define MN_SOUND_FILE_CHOOSER_DIALOG_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_sound_file_chooser_dialog_get_type(), MNSoundFileChooserDialog const) #define MN_SOUND_FILE_CHOOSER_DIALOG_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_sound_file_chooser_dialog_get_type(), MNSoundFileChooserDialogClass) #define MN_IS_SOUND_FILE_CHOOSER_DIALOG(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_sound_file_chooser_dialog_get_type ()) #define MN_SOUND_FILE_CHOOSER_DIALOG_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_sound_file_chooser_dialog_get_type(), MNSoundFileChooserDialogClass) /* Private structure type */ typedef struct _MNSoundFileChooserDialogPrivate MNSoundFileChooserDialogPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_SOUND_FILE_CHOOSER_DIALOG__ #define __TYPEDEF_MN_SOUND_FILE_CHOOSER_DIALOG__ typedef struct _MNSoundFileChooserDialog MNSoundFileChooserDialog; #endif struct _MNSoundFileChooserDialog { GtkFileChooserDialog __parent__; /*< private >*/ MNSoundFileChooserDialogPrivate *_priv; }; /* * Class definition */ typedef struct _MNSoundFileChooserDialogClass MNSoundFileChooserDialogClass; struct _MNSoundFileChooserDialogClass { GtkFileChooserDialogClass __parent__; }; /* * Public methods */ GType mn_sound_file_chooser_dialog_get_type (void) G_GNUC_CONST; #line 129 "src/mn-sound-file-chooser-dialog.gob" GtkWidget * mn_sound_file_chooser_dialog_new (void); #line 60 "mn-sound-file-chooser-dialog.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-folder-tree-server.c0000644000175000001440000004455211015312644026062 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-evolution-folder-tree-server.h" #include "mn-evolution-folder-tree-server-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-evolution-folder-tree-server.gob" #include #include #include #include "mn-evolution-plugin.h" #include "mn-evolution.h" #include "mn-evolution-folder-tree-server-dbus.h" #line 36 "mn-evolution-folder-tree-server.c" /* self casting macros */ #define SELF(x) MN_EVOLUTION_FOLDER_TREE_SERVER(x) #define SELF_CONST(x) MN_EVOLUTION_FOLDER_TREE_SERVER_CONST(x) #define IS_SELF(x) MN_IS_EVOLUTION_FOLDER_TREE_SERVER(x) #define TYPE_SELF MN_TYPE_EVOLUTION_FOLDER_TREE_SERVER #define SELF_CLASS(x) MN_EVOLUTION_FOLDER_TREE_SERVER_CLASS(x) #define SELF_GET_CLASS(x) MN_EVOLUTION_FOLDER_TREE_SERVER_GET_CLASS(x) /* self typedefs */ typedef MNEvolutionFolderTreeServer Self; typedef MNEvolutionFolderTreeServerClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_init (MNEvolutionFolderTreeServer * o); #line 55 "mn-evolution-folder-tree-server.c" #line 49 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_folder_selected (MNEvolutionFolderTreeServer * self, const char * uri); #line 58 "mn-evolution-folder-tree-server.c" #line 52 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_folder_activated (MNEvolutionFolderTreeServer * self); #line 61 "mn-evolution-folder-tree-server.c" #line 55 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_class_init (MNEvolutionFolderTreeServerClass * class); #line 64 "mn-evolution-folder-tree-server.c" #line 60 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_constructor (MNEvolutionFolderTreeServer * self); #line 67 "mn-evolution-folder-tree-server.c" #line 79 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_finalize (MNEvolutionFolderTreeServer * self); #line 70 "mn-evolution-folder-tree-server.c" #line 84 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_plug_destroy_h (GtkObject * object, gpointer user_data); #line 73 "mn-evolution-folder-tree-server.c" #line 104 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_selected_h (EMFolderTree * tree, const char * full_name, const char * uri, guint32 flags, gpointer user_data); #line 76 "mn-evolution-folder-tree-server.c" #line 115 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_activated_h (EMFolderTree * tree, const char * full_name, const char * uri, gpointer user_data); #line 79 "mn-evolution-folder-tree-server.c" /* * Signal connection wrapper macro shortcuts */ #define self_connect__folder_selected(object,func,data) mn_evolution_folder_tree_server_connect__folder_selected((object),(func),(data)) #define self_connect_after__folder_selected(object,func,data) mn_evolution_folder_tree_server_connect_after__folder_selected((object),(func),(data)) #define self_connect_data__folder_selected(object,func,data,destroy_data,flags) mn_evolution_folder_tree_server_connect_data__folder_selected((object),(func),(data),(destroy_data),(flags)) #define self_connect__folder_activated(object,func,data) mn_evolution_folder_tree_server_connect__folder_activated((object),(func),(data)) #define self_connect_after__folder_activated(object,func,data) mn_evolution_folder_tree_server_connect_after__folder_activated((object),(func),(data)) #define self_connect_data__folder_activated(object,func,data,destroy_data,flags) mn_evolution_folder_tree_server_connect_data__folder_activated((object),(func),(data),(destroy_data),(flags)) typedef void (*___Sig1) (MNEvolutionFolderTreeServer *, gchar *, gpointer); static void ___marshal_Sig1 (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { register ___Sig1 callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 2); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (___Sig1) (marshal_data != NULL ? marshal_data : cc->callback); callback ((MNEvolutionFolderTreeServer *)data1, (gchar *) g_value_get_string (param_values + 1), data2); } enum { FOLDER_SELECTED_SIGNAL, FOLDER_ACTIVATED_SIGNAL, LAST_SIGNAL }; enum { PROP_0, PROP_ID, PROP_URI }; static guint object_signals[LAST_SIGNAL] = {0}; /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_folder_selected mn_evolution_folder_tree_server_folder_selected #define self_folder_activated mn_evolution_folder_tree_server_folder_activated #define self_plug_destroy_h mn_evolution_folder_tree_server_plug_destroy_h #define self_selected_h mn_evolution_folder_tree_server_selected_h #define self_activated_h mn_evolution_folder_tree_server_activated_h #define self_new mn_evolution_folder_tree_server_new GType mn_evolution_folder_tree_server_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNEvolutionFolderTreeServerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_evolution_folder_tree_server_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNEvolutionFolderTreeServer), 0 /* n_preallocs */, (GInstanceInitFunc) mn_evolution_folder_tree_server_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNEvolutionFolderTreeServer", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNEvolutionFolderTreeServer *)g_object_new(mn_evolution_folder_tree_server_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNEvolutionFolderTreeServer * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNEvolutionFolderTreeServer * GET_NEW_VARG (const char *first, ...) { MNEvolutionFolderTreeServer *ret; va_list ap; va_start (ap, first); ret = (MNEvolutionFolderTreeServer *)g_object_new_valist (mn_evolution_folder_tree_server_get_type (), first, ap); va_end (ap); return ret; } static GObject * ___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::constructor" GObject *obj_self; MNEvolutionFolderTreeServer *self; obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties); self = MN_EVOLUTION_FOLDER_TREE_SERVER (obj_self); #line 60 "src/mn-evolution-folder-tree-server.gob" mn_evolution_folder_tree_server_constructor (self); #line 200 "mn-evolution-folder-tree-server.c" return obj_self; } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::finalize" MNEvolutionFolderTreeServer *self G_GNUC_UNUSED = MN_EVOLUTION_FOLDER_TREE_SERVER (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 79 "src/mn-evolution-folder-tree-server.gob" mn_evolution_folder_tree_server_finalize (self); #line 214 "mn-evolution-folder-tree-server.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_evolution_folder_tree_server_init (MNEvolutionFolderTreeServer * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_EVOLUTION_FOLDER_TREE_SERVER,MNEvolutionFolderTreeServerPrivate); } #undef __GOB_FUNCTION__ #line 55 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_class_init (MNEvolutionFolderTreeServerClass * class G_GNUC_UNUSED) { #line 231 "mn-evolution-folder-tree-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; g_type_class_add_private(class,sizeof(MNEvolutionFolderTreeServerPrivate)); parent_class = g_type_class_ref (G_TYPE_OBJECT); object_signals[FOLDER_SELECTED_SIGNAL] = g_signal_new ("folder_selected", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST), G_STRUCT_OFFSET (MNEvolutionFolderTreeServerClass, folder_selected), NULL, NULL, ___marshal_Sig1, G_TYPE_NONE, 1, G_TYPE_STRING); if ___GOB_UNLIKELY(sizeof(const char * ) != sizeof(gchar *) || parent_class == NULL /* avoid warning */) { g_error("src/mn-evolution-folder-tree-server.gob line 49: Type mismatch of \"folder_selected\" signal signature"); } object_signals[FOLDER_ACTIVATED_SIGNAL] = g_signal_new ("folder_activated", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST), G_STRUCT_OFFSET (MNEvolutionFolderTreeServerClass, folder_activated), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); class->folder_selected = NULL; class->folder_activated = NULL; g_object_class->constructor = ___constructor; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_uint ("id" /* name */, NULL /* nick */, NULL /* blurb */, 0 /* minimum */, G_MAXUINT /* maximum */, 0 /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_ID, param_spec); param_spec = g_param_spec_string ("uri" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_URI, param_spec); } { #line 56 "src/mn-evolution-folder-tree-server.gob" dbus_g_object_type_install_info(TYPE_SELF, &dbus_glib_mn_evolution_folder_tree_server_object_info); #line 295 "mn-evolution-folder-tree-server.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::set_property" { MNEvolutionFolderTreeServer *self G_GNUC_UNUSED; self = MN_EVOLUTION_FOLDER_TREE_SERVER (object); switch (property_id) { case PROP_ID: { #line 38 "src/mn-evolution-folder-tree-server.gob" self->_priv->id = g_value_get_uint (VAL); #line 316 "mn-evolution-folder-tree-server.c" } break; case PROP_URI: { #line 45 "src/mn-evolution-folder-tree-server.gob" em_folder_tree_set_selected(EM_FOLDER_TREE(selfp->tree), g_value_get_string(VAL), FALSE); #line 325 "mn-evolution-folder-tree-server.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::get_property" { MNEvolutionFolderTreeServer *self G_GNUC_UNUSED; self = MN_EVOLUTION_FOLDER_TREE_SERVER (object); switch (property_id) { case PROP_ID: { #line 38 "src/mn-evolution-folder-tree-server.gob" g_value_set_uint (VAL, self->_priv->id); #line 356 "mn-evolution-folder-tree-server.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 49 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_folder_selected (MNEvolutionFolderTreeServer * self, const char * uri) { #line 376 "mn-evolution-folder-tree-server.c" GValue ___param_values[2]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 49 "src/mn-evolution-folder-tree-server.gob" g_return_if_fail (self != NULL); #line 49 "src/mn-evolution-folder-tree-server.gob" g_return_if_fail (MN_IS_EVOLUTION_FOLDER_TREE_SERVER (self)); #line 387 "mn-evolution-folder-tree-server.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); ___param_values[1].g_type = 0; g_value_init (&___param_values[1], G_TYPE_STRING); g_value_set_static_string (&___param_values[1], (gchar *) uri); g_signal_emitv (___param_values, object_signals[FOLDER_SELECTED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); g_value_unset (&___param_values[1]); } #line 52 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_folder_activated (MNEvolutionFolderTreeServer * self) { #line 410 "mn-evolution-folder-tree-server.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 52 "src/mn-evolution-folder-tree-server.gob" g_return_if_fail (self != NULL); #line 52 "src/mn-evolution-folder-tree-server.gob" g_return_if_fail (MN_IS_EVOLUTION_FOLDER_TREE_SERVER (self)); #line 421 "mn-evolution-folder-tree-server.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[FOLDER_ACTIVATED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 60 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_constructor (MNEvolutionFolderTreeServer * self) { #line 440 "mn-evolution-folder-tree-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::constructor" { #line 61 "src/mn-evolution-folder-tree-server.gob" EMFolderTreeModel *model; model = mail_component_peek_tree_model(mail_component_peek()); selfp->tree = em_folder_tree_new_with_model(model); selfp->plug = gtk_plug_new((GdkNativeWindow) selfp->id); gtk_container_add(GTK_CONTAINER(selfp->plug), selfp->tree); gtk_widget_show_all(selfp->plug); g_signal_connect(selfp->plug, "destroy", G_CALLBACK(self_plug_destroy_h), self); g_object_connect(selfp->tree, "signal::folder-selected", self_selected_h, self, "signal::folder-activated", self_activated_h, self, NULL); }} #line 461 "mn-evolution-folder-tree-server.c" #undef __GOB_FUNCTION__ #line 79 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_finalize (MNEvolutionFolderTreeServer * self) { #line 468 "mn-evolution-folder-tree-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::finalize" { #line 80 "src/mn-evolution-folder-tree-server.gob" g_signal_handlers_disconnect_by_func(selfp->plug, self_plug_destroy_h, self); }} #line 475 "mn-evolution-folder-tree-server.c" #undef __GOB_FUNCTION__ #line 84 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_plug_destroy_h (GtkObject * object, gpointer user_data) { #line 482 "mn-evolution-folder-tree-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::plug_destroy_h" { #line 86 "src/mn-evolution-folder-tree-server.gob" Self *self = user_data; char *service; GError *err = NULL; /* the MN side is gone: unregister and unreference the server */ service = g_strdup_printf(MN_EVOLUTION_FOLDER_TREE_SERVER_SERVICE, selfp->id); if (! mn_evolution_plugin_unregister_server(service, &err)) { g_warning("unable to unregister D-Bus service \"%s\": %s", service, err->message); g_error_free(err); } g_free(service); g_object_unref(self); }} #line 503 "mn-evolution-folder-tree-server.c" #undef __GOB_FUNCTION__ #line 104 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_selected_h (EMFolderTree * tree, const char * full_name, const char * uri, guint32 flags, gpointer user_data) { #line 510 "mn-evolution-folder-tree-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::selected_h" { #line 110 "src/mn-evolution-folder-tree-server.gob" Self *self = user_data; self_folder_selected(self, uri); }} #line 518 "mn-evolution-folder-tree-server.c" #undef __GOB_FUNCTION__ #line 115 "src/mn-evolution-folder-tree-server.gob" static void mn_evolution_folder_tree_server_activated_h (EMFolderTree * tree, const char * full_name, const char * uri, gpointer user_data) { #line 525 "mn-evolution-folder-tree-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::activated_h" { #line 120 "src/mn-evolution-folder-tree-server.gob" Self *self = user_data; self_folder_activated(self); }} #line 533 "mn-evolution-folder-tree-server.c" #undef __GOB_FUNCTION__ #line 125 "src/mn-evolution-folder-tree-server.gob" MNEvolutionFolderTreeServer * mn_evolution_folder_tree_server_new (guint32 id) { #line 540 "mn-evolution-folder-tree-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::new" { #line 127 "src/mn-evolution-folder-tree-server.gob" return GET_NEW_VARG(MN_EVOLUTION_FOLDER_TREE_SERVER_PROP_ID(id), NULL); }} #line 547 "mn-evolution-folder-tree-server.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-authenticated-mailbox.h0000644000175000001440000000746011015312646024603 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #include "mn-mailbox.h" #ifndef __MN_AUTHENTICATED_MAILBOX_H__ #define __MN_AUTHENTICATED_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_AUTHENTICATED_MAILBOX (mn_authenticated_mailbox_get_type()) #define MN_AUTHENTICATED_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_authenticated_mailbox_get_type(), MNAuthenticatedMailbox) #define MN_AUTHENTICATED_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_authenticated_mailbox_get_type(), MNAuthenticatedMailbox const) #define MN_AUTHENTICATED_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_authenticated_mailbox_get_type(), MNAuthenticatedMailboxClass) #define MN_IS_AUTHENTICATED_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_authenticated_mailbox_get_type ()) #define MN_AUTHENTICATED_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_authenticated_mailbox_get_type(), MNAuthenticatedMailboxClass) /* Private structure type */ typedef struct _MNAuthenticatedMailboxPrivate MNAuthenticatedMailboxPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_AUTHENTICATED_MAILBOX__ #define __TYPEDEF_MN_AUTHENTICATED_MAILBOX__ typedef struct _MNAuthenticatedMailbox MNAuthenticatedMailbox; #endif struct _MNAuthenticatedMailbox { MNMailbox __parent__; /*< public >*/ char * username; char * password; char * runtime_password; /*< private >*/ char * keyring_username; /* protected */ char * keyring_domain; /* protected */ char * keyring_server; /* protected */ char * keyring_protocol; /* protected */ char * keyring_authtype; /* protected */ int keyring_port; /* protected */ gboolean auth_prompted; /* protected */ gboolean auth_cancelled; /* protected */ gboolean auth_failed; /* protected */ MNAuthenticatedMailboxPrivate *_priv; }; /* * Class definition */ typedef struct _MNAuthenticatedMailboxClass MNAuthenticatedMailboxClass; struct _MNAuthenticatedMailboxClass { MNMailboxClass __parent__; void (* authenticated_check) (MNAuthenticatedMailbox * self); }; /* * Public methods */ GType mn_authenticated_mailbox_get_type (void) G_GNUC_CONST; #line 71 "src/mn-authenticated-mailbox.gob" gboolean mn_authenticated_mailbox_get_setting_password (MNAuthenticatedMailbox * self); #line 75 "mn-authenticated-mailbox.h" #line 470 "src/mn-authenticated-mailbox.gob" gpointer mn_authenticated_mailbox_get_password (MNAuthenticatedMailbox * self, GnomeKeyringOperationGetListCallback cb, gpointer data); #line 80 "mn-authenticated-mailbox.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_AUTHENTICATED_MAILBOX_PROP_USERNAME(arg) "username", __extension__ ({gchar *z = (arg); z;}) #define MN_AUTHENTICATED_MAILBOX_GET_PROP_USERNAME(arg) "username", __extension__ ({gchar **z = (arg); z;}) #define MN_AUTHENTICATED_MAILBOX_PROP_PASSWORD(arg) "password", __extension__ ({gchar *z = (arg); z;}) #define MN_AUTHENTICATED_MAILBOX_GET_PROP_PASSWORD(arg) "password", __extension__ ({gchar **z = (arg); z;}) #define MN_AUTHENTICATED_MAILBOX_GET_PROP_SETTING_PASSWORD(arg) "setting_password", __extension__ ({gboolean *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_AUTHENTICATED_MAILBOX_PROP_USERNAME(arg) "username",(gchar *)(arg) #define MN_AUTHENTICATED_MAILBOX_GET_PROP_USERNAME(arg) "username",(gchar **)(arg) #define MN_AUTHENTICATED_MAILBOX_PROP_PASSWORD(arg) "password",(gchar *)(arg) #define MN_AUTHENTICATED_MAILBOX_GET_PROP_PASSWORD(arg) "password",(gchar **)(arg) #define MN_AUTHENTICATED_MAILBOX_GET_PROP_SETTING_PASSWORD(arg) "setting_password",(gboolean *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-gmail-mailbox.c0000644000175000001440000004711611015312646023047 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include "mn-gmail-mailbox.h" #include "mn-gmail-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 28 "src/mn-gmail-mailbox.gob" #include #include #include #include #include #include #include "mn-mailbox-private.h" #include "mn-authenticated-mailbox-private.h" #include "mn-vfs.h" #include "mn-stock.h" #include "mn-message.h" #include "mn-util.h" #line 39 "mn-gmail-mailbox.c" /* self casting macros */ #define SELF(x) MN_GMAIL_MAILBOX(x) #define SELF_CONST(x) MN_GMAIL_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_GMAIL_MAILBOX(x) #define TYPE_SELF MN_TYPE_GMAIL_MAILBOX #define SELF_CLASS(x) MN_GMAIL_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_GMAIL_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNGmailMailbox Self; typedef MNGmailMailboxClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 56 "src/mn-gmail-mailbox.gob" static void mn_gmail_mailbox_class_init (MNGmailMailboxClass * class); #line 58 "mn-gmail-mailbox.c" #line 64 "src/mn-gmail-mailbox.gob" static void mn_gmail_mailbox_init (MNGmailMailbox * self); #line 61 "mn-gmail-mailbox.c" #line 70 "src/mn-gmail-mailbox.gob" static void ___3_mn_gmail_mailbox_seal (MNMailbox * mailbox); #line 64 "mn-gmail-mailbox.c" #line 114 "src/mn-gmail-mailbox.gob" static GnomeVFSURI * mn_gmail_mailbox_build_uri (MNGmailMailbox * self); #line 67 "mn-gmail-mailbox.c" #line 135 "src/mn-gmail-mailbox.gob" static void ___5_mn_gmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox); #line 70 "mn-gmail-mailbox.c" #line 263 "src/mn-gmail-mailbox.gob" static void mn_gmail_mailbox_parse_entry (xmlNode * node, time_t * sent_time, char ** id, char ** from, char ** subject, char ** url); #line 73 "mn-gmail-mailbox.c" #line 314 "src/mn-gmail-mailbox.gob" static char * mn_gmail_mailbox_parse_author (xmlNode * node); #line 76 "mn-gmail-mailbox.c" #line 346 "src/mn-gmail-mailbox.gob" static time_t mn_gmail_mailbox_parse_date (const char * w3c_datetime); #line 79 "mn-gmail-mailbox.c" enum { PROP_0, PROP_LOCATION, PROP_LABEL }; /* pointer to the class of our parent */ static MNAuthenticatedMailboxClass *parent_class = NULL; /* Short form macros */ #define self_build_uri mn_gmail_mailbox_build_uri #define self_parse_entry mn_gmail_mailbox_parse_entry #define self_parse_author mn_gmail_mailbox_parse_author #define self_parse_date mn_gmail_mailbox_parse_date #define self_build_name mn_gmail_mailbox_build_name GType mn_gmail_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNGmailMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_gmail_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNGmailMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_gmail_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_AUTHENTICATED_MAILBOX, "MNGmailMailbox", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNGmailMailbox *)g_object_new(mn_gmail_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNGmailMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNGmailMailbox * GET_NEW_VARG (const char *first, ...) { MNGmailMailbox *ret; va_list ap; va_start (ap, first); ret = (MNGmailMailbox *)g_object_new_valist (mn_gmail_mailbox_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dispose" MNGmailMailbox *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX (obj_self); if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 54 "src/mn-gmail-mailbox.gob" if(self->_priv->uri) { gnome_vfs_uri_unref ((gpointer) self->_priv->uri); self->_priv->uri = NULL; } #line 148 "mn-gmail-mailbox.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::finalize" MNGmailMailbox *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 45 "src/mn-gmail-mailbox.gob" if(self->location) { g_free ((gpointer) self->location); self->location = NULL; } #line 163 "mn-gmail-mailbox.c" #line 51 "src/mn-gmail-mailbox.gob" if(self->label) { g_free ((gpointer) self->label); self->label = NULL; } #line 166 "mn-gmail-mailbox.c" } #undef __GOB_FUNCTION__ #line 56 "src/mn-gmail-mailbox.gob" static void mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED) { #line 174 "mn-gmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class; MNAuthenticatedMailboxClass *mn_authenticated_mailbox_class = (MNAuthenticatedMailboxClass *)class; g_type_class_add_private(class,sizeof(MNGmailMailboxPrivate)); parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX); #line 70 "src/mn-gmail-mailbox.gob" mn_mailbox_class->seal = ___3_mn_gmail_mailbox_seal; #line 135 "src/mn-gmail-mailbox.gob" mn_authenticated_mailbox_class->authenticated_check = ___5_mn_gmail_mailbox_authenticated_check; #line 188 "mn-gmail-mailbox.c" g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_string ("location" /* name */, NULL /* nick */, NULL /* blurb */, "https://mail.google.com/mail/feed/atom" /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_LOAD_SAVE | G_PARAM_CONSTRUCT)); g_object_class_install_property (g_object_class, PROP_LOCATION, param_spec); param_spec = g_param_spec_string ("label" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_LOAD_SAVE)); g_object_class_install_property (g_object_class, PROP_LABEL, param_spec); } { #line 57 "src/mn-gmail-mailbox.gob" MN_MAILBOX_CLASS(class)->type = "gmail"; /* 5 minutes is a good default */ MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5; #line 223 "mn-gmail-mailbox.c" } } #undef __GOB_FUNCTION__ #line 64 "src/mn-gmail-mailbox.gob" static void mn_gmail_mailbox_init (MNGmailMailbox * self G_GNUC_UNUSED) { #line 231 "mn-gmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_GMAIL_MAILBOX,MNGmailMailboxPrivate); { #line 65 "src/mn-gmail-mailbox.gob" mn_mailbox_set_format(MN_MAILBOX(self), "Gmail"); mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_GMAIL); #line 240 "mn-gmail-mailbox.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::set_property" { MNGmailMailbox *self G_GNUC_UNUSED; self = MN_GMAIL_MAILBOX (object); switch (property_id) { case PROP_LOCATION: { #line 46 "src/mn-gmail-mailbox.gob" { char *old = self->location; self->location = g_value_dup_string (VAL); g_free (old); } #line 261 "mn-gmail-mailbox.c" } break; case PROP_LABEL: { #line 52 "src/mn-gmail-mailbox.gob" { char *old = self->label; self->label = g_value_dup_string (VAL); g_free (old); } #line 268 "mn-gmail-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_property" { MNGmailMailbox *self G_GNUC_UNUSED; self = MN_GMAIL_MAILBOX (object); switch (property_id) { case PROP_LOCATION: { #line 46 "src/mn-gmail-mailbox.gob" g_value_set_string (VAL, self->location); #line 299 "mn-gmail-mailbox.c" } break; case PROP_LABEL: { #line 52 "src/mn-gmail-mailbox.gob" g_value_set_string (VAL, self->label); #line 306 "mn-gmail-mailbox.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 70 "src/mn-gmail-mailbox.gob" static void ___3_mn_gmail_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED) #line 326 "mn-gmail-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_MAILBOX_CLASS(parent_class)->seal) \ (* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::seal" { #line 72 "src/mn-gmail-mailbox.gob" MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); Self *self = SELF(mailbox); GnomeVFSURI *uri; PARENT_HANDLER(mailbox); if (! mailbox->runtime_name) mailbox->runtime_name = self_build_name(auth_mailbox->username, self->label); uri = self_build_uri(self); if (uri) { /* * Use keyring attributes that are compatible with what * GnomeVFS uses. This allows the password entered by the user * at the GnomeVFS password prompt to be recognized by Mail * Notification and displayed in the mailbox properties * dialog. */ auth_mailbox->keyring_server = g_strdup(gnome_vfs_uri_get_host_name(uri)); auth_mailbox->keyring_protocol = g_strdup("http"); auth_mailbox->keyring_authtype = g_strdup("basic"); auth_mailbox->keyring_port = gnome_vfs_uri_get_host_port(uri); if (auth_mailbox->keyring_port == 0) { const char *scheme; scheme = gnome_vfs_uri_get_scheme(uri); if (! strcmp(scheme, "http")) auth_mailbox->keyring_port = 80; else if (! strcmp(scheme, "https")) auth_mailbox->keyring_port = 443; } gnome_vfs_uri_unref(uri); } else /* fallback */ auth_mailbox->keyring_domain = g_strdup("gmail.com"); }} #line 375 "mn-gmail-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 114 "src/mn-gmail-mailbox.gob" static GnomeVFSURI * mn_gmail_mailbox_build_uri (MNGmailMailbox * self) { #line 383 "mn-gmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::build_uri" #line 114 "src/mn-gmail-mailbox.gob" g_return_val_if_fail (self != NULL, (GnomeVFSURI * )0); #line 114 "src/mn-gmail-mailbox.gob" g_return_val_if_fail (MN_IS_GMAIL_MAILBOX (self), (GnomeVFSURI * )0); #line 389 "mn-gmail-mailbox.c" { #line 116 "src/mn-gmail-mailbox.gob" GnomeVFSURI *uri; uri = gnome_vfs_uri_new(self->location); if (uri) { GnomeVFSURI *new_uri; if (self->label) { new_uri = gnome_vfs_uri_append_file_name(uri, self->label); gnome_vfs_uri_unref(uri); uri = new_uri; } } return uri; }} #line 410 "mn-gmail-mailbox.c" #undef __GOB_FUNCTION__ #line 135 "src/mn-gmail-mailbox.gob" static void ___5_mn_gmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED) #line 416 "mn-gmail-mailbox.c" #define PARENT_HANDLER(___mailbox) \ { if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check) \ (* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check)(___mailbox); } { #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::authenticated_check" { #line 137 "src/mn-gmail-mailbox.gob" Self *self = SELF(mailbox); GnomeVFSResult result; char *atom; int atom_size; xmlDoc *doc; xmlNode *node; PARENT_HANDLER(mailbox); if (! selfp->uri) { selfp->uri = self_build_uri(self); if (! selfp->uri) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), _("invalid feed location")); /* error is not recoverable, disable the mailbox */ mn_mailbox_set_poll(MN_MAILBOX(self), FALSE); gdk_flush(); GDK_THREADS_LEAVE(); return; } /* * Obtain the password from the keyring but do not prompt * (GnomeVFS will prompt on our behalf if the password is * missing). */ mn_authenticated_mailbox_fill_password(mailbox, FALSE); gnome_vfs_uri_set_user_name(selfp->uri, mailbox->username); gnome_vfs_uri_set_password(selfp->uri, mailbox->runtime_password); } mn_mailbox_notice(MN_MAILBOX(self), _("retrieving feed from %s"), self->location); result = mn_vfs_read_entire_file_uri(selfp->uri, &atom_size, &atom); if (result != GNOME_VFS_OK) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), _("unable to retrieve feed: %s"), gnome_vfs_result_to_string(result)); gdk_flush(); GDK_THREADS_LEAVE(); return; } mn_mailbox_notice(MN_MAILBOX(self), ngettext("feed retrieved successfully (%i byte)", "feed retrieved successfully (%i bytes)", atom_size), atom_size); doc = xmlParseMemory(atom, atom_size); g_free(atom); if (! doc) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), _("unable to parse feed")); gdk_flush(); GDK_THREADS_LEAVE(); return; } node = xmlDocGetRootElement(doc); if (node && ! strcmp(node->name, "feed")) { GSList *messages = NULL; for (node = node->children; node; node = node->next) if (node->type == XML_ELEMENT_NODE && ! strcmp(node->name, "entry")) { time_t sent_time; char *id; char *from; char *subject; char *url; self_parse_entry(node, &sent_time, &id, &from, &subject, &url); messages = g_slist_prepend(messages, mn_message_new(MN_MAILBOX(self), sent_time, id, NULL, from, subject, url, MN_MESSAGE_NEW)); g_free(id); g_free(from); g_free(subject); g_free(url); } GDK_THREADS_ENTER(); mn_mailbox_set_messages(MN_MAILBOX(self), messages); mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); } else { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), _("unable to parse feed")); gdk_flush(); GDK_THREADS_LEAVE(); } xmlFreeDoc(doc); }} #line 549 "mn-gmail-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 263 "src/mn-gmail-mailbox.gob" static void mn_gmail_mailbox_parse_entry (xmlNode * node, time_t * sent_time, char ** id, char ** from, char ** subject, char ** url) { #line 557 "mn-gmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_entry" #line 263 "src/mn-gmail-mailbox.gob" g_return_if_fail (node != NULL); #line 263 "src/mn-gmail-mailbox.gob" g_return_if_fail (sent_time != NULL); #line 263 "src/mn-gmail-mailbox.gob" g_return_if_fail (id != NULL); #line 263 "src/mn-gmail-mailbox.gob" g_return_if_fail (from != NULL); #line 263 "src/mn-gmail-mailbox.gob" g_return_if_fail (subject != NULL); #line 263 "src/mn-gmail-mailbox.gob" g_return_if_fail (url != NULL); #line 571 "mn-gmail-mailbox.c" { #line 270 "src/mn-gmail-mailbox.gob" *sent_time = 0; *id = NULL; *from = NULL; *subject = NULL; *url = NULL; for (node = node->children; node; node = node->next) if (node->type == XML_ELEMENT_NODE) { if (! strcmp(node->name, "title")) { g_free(*subject); *subject = xmlNodeGetContent(node); } else if (! strcmp(node->name, "id")) { g_free(*id); *id = xmlNodeGetContent(node); } else if (! strcmp(node->name, "author")) { g_free(*from); *from = self_parse_author(node); } else if (! strcmp(node->name, "link")) { g_free(*url); *url = xmlGetProp(node, "href"); } else if (! strcmp(node->name, "issued")) { char *w3c_datetime; w3c_datetime = xmlNodeGetContent(node); if (w3c_datetime) { *sent_time = self_parse_date(w3c_datetime); g_free(w3c_datetime); } } } }} #line 617 "mn-gmail-mailbox.c" #undef __GOB_FUNCTION__ #line 314 "src/mn-gmail-mailbox.gob" static char * mn_gmail_mailbox_parse_author (xmlNode * node) { #line 624 "mn-gmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_author" #line 314 "src/mn-gmail-mailbox.gob" g_return_val_if_fail (node != NULL, (char * )0); #line 628 "mn-gmail-mailbox.c" { #line 316 "src/mn-gmail-mailbox.gob" char *from; char *name = NULL; char *email = NULL; for (node = node->children; node; node = node->next) if (node->type == XML_ELEMENT_NODE) { if (! strcmp(node->name, "name")) { g_free(name); name = xmlNodeGetContent(node); } else if (! strcmp(node->name, "email")) { g_free(email); email = xmlNodeGetContent(node); } } from = name && email ? g_strdup_printf("%s <%s>", name, email) : g_strdup(name ? name : email); g_free(name); g_free(email); return from; }} #line 660 "mn-gmail-mailbox.c" #undef __GOB_FUNCTION__ #line 346 "src/mn-gmail-mailbox.gob" static time_t mn_gmail_mailbox_parse_date (const char * w3c_datetime) { #line 667 "mn-gmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_date" #line 346 "src/mn-gmail-mailbox.gob" g_return_val_if_fail (w3c_datetime != NULL, (time_t )0); #line 671 "mn-gmail-mailbox.c" { #line 348 "src/mn-gmail-mailbox.gob" #ifdef HAVE_TIMEGM time_t t = 0; char year[5]; char month[3]; char day[3]; char hour[3]; char minute[3]; char second[3]; if (sscanf(w3c_datetime, "%4s-%2s-%2sT%2s:%2s:%2sZ", year, month, day, hour, minute, second) == 6 && mn_str_isnumeric(year) && mn_str_isnumeric(month) && mn_str_isnumeric(day) && mn_str_isnumeric(hour) && mn_str_isnumeric(minute) && mn_str_isnumeric(second)) { struct tm tm = { 0 }; tm.tm_sec = atoi(second); tm.tm_min = atoi(minute); tm.tm_hour = atoi(hour); tm.tm_mday = atoi(day); tm.tm_mon = atoi(month) - 1; tm.tm_year = atoi(year) - 1900; t = timegm(&tm); if (t == -1) t = 0; } return t; #else return 0; #endif }} #line 711 "mn-gmail-mailbox.c" #undef __GOB_FUNCTION__ #line 386 "src/mn-gmail-mailbox.gob" char * mn_gmail_mailbox_build_name (const char * username, const char * label) { #line 718 "mn-gmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::build_name" #line 386 "src/mn-gmail-mailbox.gob" g_return_val_if_fail (username != NULL, (char * )0); #line 722 "mn-gmail-mailbox.c" { #line 388 "src/mn-gmail-mailbox.gob" GString *name; name = g_string_new(NULL); if (g_str_has_suffix(username, "@gmail.com")) g_string_append(name, username); else g_string_append_printf(name, "%s@gmail.com", username); if (label) g_string_append_printf(name, "/%s", label); return g_string_free(name, FALSE); }} #line 740 "mn-gmail-mailbox.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-system-vfs-mailbox.gob.stamp0000644000175000001440000000000011015312647025524 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-about-dialog.gob.stamp0000644000175000001440000000000011015312644024317 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-popups.c0000644000175000001440000003425111015312645021646 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-popups.h" #include "mn-popups-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 20 "src/mn-popups.gob" #include #include "mn-message.h" #include "mn-shell.h" #include "mn-util.h" #include "mn-conf.h" #include "mn-locked-callback.h" #include "mn-popup.h" #include "mn-properties-dialog.h" #line 37 "mn-popups.c" /* self casting macros */ #define SELF(x) MN_POPUPS(x) #define SELF_CONST(x) MN_POPUPS_CONST(x) #define IS_SELF(x) MN_IS_POPUPS(x) #define TYPE_SELF MN_TYPE_POPUPS #define SELF_CLASS(x) MN_POPUPS_CLASS(x) #define SELF_GET_CLASS(x) MN_POPUPS_GET_CLASS(x) /* self typedefs */ typedef MNPopups Self; typedef MNPopupsClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-popups.gob" static void mn_popups_class_init (MNPopupsClass * c); #line 54 "mn-popups.c" #line 40 "src/mn-popups.gob" static void mn_popups_init (MNPopups * self); #line 57 "mn-popups.c" #line 52 "src/mn-popups.gob" static void mn_popups_close_cb (const char * id, MNPopup * popup, gpointer user_data); #line 60 "mn-popups.c" #line 59 "src/mn-popups.gob" static void mn_popups_close_popups (MNPopups * self); #line 63 "mn-popups.c" #line 65 "src/mn-popups.gob" static void mn_popups_finalize (MNPopups * self); #line 66 "mn-popups.c" #line 71 "src/mn-popups.gob" static void mn_popups_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data); #line 69 "mn-popups.c" #line 81 "src/mn-popups.gob" static void mn_popups_notify_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data); #line 72 "mn-popups.c" #line 92 "src/mn-popups.gob" static int mn_popups_popups_show_timestamp_compare_cb (MNPopup * a, MNPopup * b); #line 75 "mn-popups.c" #line 104 "src/mn-popups.gob" static void mn_popups_get_visible_popups_cb (const char * id, MNPopup * popup, GSList ** list); #line 78 "mn-popups.c" #line 112 "src/mn-popups.gob" static GSList * mn_popups_get_visible_popups (MNPopups * self); #line 81 "mn-popups.c" #line 122 "src/mn-popups.gob" static gboolean mn_popups_close_and_remove_stale_cb (const char * id, MNPopup * popup, GHashTable * messages); #line 84 "mn-popups.c" #line 136 "src/mn-popups.gob" static gboolean mn_popups_close_and_remove_visible_cb (const char * id, MNPopup * popup, gpointer user_data); #line 87 "mn-popups.c" #line 149 "src/mn-popups.gob" static void mn_popups_update (MNPopups * self, gboolean reshow_current_popups); #line 90 "mn-popups.c" /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_close_cb mn_popups_close_cb #define self_close_popups mn_popups_close_popups #define self_messages_changed_h mn_popups_messages_changed_h #define self_notify_cb mn_popups_notify_cb #define self_popups_show_timestamp_compare_cb mn_popups_popups_show_timestamp_compare_cb #define self_get_visible_popups_cb mn_popups_get_visible_popups_cb #define self_get_visible_popups mn_popups_get_visible_popups #define self_close_and_remove_stale_cb mn_popups_close_and_remove_stale_cb #define self_close_and_remove_visible_cb mn_popups_close_and_remove_visible_cb #define self_update mn_popups_update #define self_new mn_popups_new GType mn_popups_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNPopupsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_popups_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNPopups), 0 /* n_preallocs */, (GInstanceInitFunc) mn_popups_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNPopups", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNPopups *)g_object_new(mn_popups_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNPopups * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNPopups * GET_NEW_VARG (const char *first, ...) { MNPopups *ret; va_list ap; va_start (ap, first); ret = (MNPopups *)g_object_new_valist (mn_popups_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Popups::finalize" MNPopups *self G_GNUC_UNUSED = MN_POPUPS (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 65 "src/mn-popups.gob" mn_popups_finalize (self); #line 158 "mn-popups.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 38 "src/mn-popups.gob" if(self->_priv->popups) { g_hash_table_destroy ((gpointer) self->_priv->popups); self->_priv->popups = NULL; } #line 163 "mn-popups.c" } #undef __GOB_FUNCTION__ static void mn_popups_class_init (MNPopupsClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Popups::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNPopupsPrivate)); parent_class = g_type_class_ref (G_TYPE_OBJECT); g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 40 "src/mn-popups.gob" static void mn_popups_init (MNPopups * self G_GNUC_UNUSED) { #line 184 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_POPUPS,MNPopupsPrivate); #line 38 "src/mn-popups.gob" self->_priv->popups = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) mn_g_object_null_unref); #line 189 "mn-popups.c" { #line 41 "src/mn-popups.gob" if (! notify_is_initted()) return; /* libnotify init failed */ mn_g_object_gconf_notifications_add_gdk_locked(self, MN_CONF_POPUPS_NAMESPACE, self_notify_cb, self, NULL); g_signal_connect(mn_shell->mailboxes, "messages-changed", G_CALLBACK(self_messages_changed_h), self); #line 202 "mn-popups.c" } } #undef __GOB_FUNCTION__ #line 52 "src/mn-popups.gob" static void mn_popups_close_cb (const char * id, MNPopup * popup, gpointer user_data) { #line 213 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::close_cb" { #line 54 "src/mn-popups.gob" if (popup) mn_popup_close(popup); }} #line 221 "mn-popups.c" #undef __GOB_FUNCTION__ #line 59 "src/mn-popups.gob" static void mn_popups_close_popups (MNPopups * self) { #line 228 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::close_popups" #line 59 "src/mn-popups.gob" g_return_if_fail (self != NULL); #line 59 "src/mn-popups.gob" g_return_if_fail (MN_IS_POPUPS (self)); #line 234 "mn-popups.c" { #line 61 "src/mn-popups.gob" g_hash_table_foreach(selfp->popups, (GHFunc) self_close_cb, NULL); }} #line 240 "mn-popups.c" #undef __GOB_FUNCTION__ #line 65 "src/mn-popups.gob" static void mn_popups_finalize (MNPopups * self) { #line 247 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::finalize" { #line 66 "src/mn-popups.gob" /* close popups on exit */ self_close_popups(self); }} #line 255 "mn-popups.c" #undef __GOB_FUNCTION__ #line 71 "src/mn-popups.gob" static void mn_popups_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data) { #line 262 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::messages_changed_h" { #line 75 "src/mn-popups.gob" Self *self = user_data; self_update(self, FALSE); }} #line 271 "mn-popups.c" #undef __GOB_FUNCTION__ #line 81 "src/mn-popups.gob" static void mn_popups_notify_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) { #line 278 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::notify_cb" { #line 86 "src/mn-popups.gob" Self *self = user_data; self_update(self, TRUE); }} #line 287 "mn-popups.c" #undef __GOB_FUNCTION__ #line 92 "src/mn-popups.gob" static int mn_popups_popups_show_timestamp_compare_cb (MNPopup * a, MNPopup * b) { #line 294 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::popups_show_timestamp_compare_cb" { #line 94 "src/mn-popups.gob" int cmp; cmp = a->show_timestamp.tv_sec - b->show_timestamp.tv_sec; if (cmp != 0) return cmp; return a->show_timestamp.tv_usec - b->show_timestamp.tv_usec; }} #line 307 "mn-popups.c" #undef __GOB_FUNCTION__ #line 104 "src/mn-popups.gob" static void mn_popups_get_visible_popups_cb (const char * id, MNPopup * popup, GSList ** list) { #line 314 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::get_visible_popups_cb" { #line 106 "src/mn-popups.gob" if (popup && popup->visible) *list = g_slist_insert_sorted(*list, popup, (GCompareFunc) self_popups_show_timestamp_compare_cb); }} #line 322 "mn-popups.c" #undef __GOB_FUNCTION__ #line 112 "src/mn-popups.gob" static GSList * mn_popups_get_visible_popups (MNPopups * self) { #line 329 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::get_visible_popups" #line 112 "src/mn-popups.gob" g_return_val_if_fail (self != NULL, (GSList * )0); #line 112 "src/mn-popups.gob" g_return_val_if_fail (MN_IS_POPUPS (self), (GSList * )0); #line 335 "mn-popups.c" { #line 114 "src/mn-popups.gob" GSList *popups = NULL; g_hash_table_foreach(selfp->popups, (GHFunc) self_get_visible_popups_cb, &popups); return popups; }} #line 345 "mn-popups.c" #undef __GOB_FUNCTION__ #line 122 "src/mn-popups.gob" static gboolean mn_popups_close_and_remove_stale_cb (const char * id, MNPopup * popup, GHashTable * messages) { #line 352 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::close_and_remove_stale_cb" { #line 124 "src/mn-popups.gob" if (! g_hash_table_lookup(mn_shell->mailboxes->messages_hash_table, id)) { if (popup) mn_popup_close(popup); return TRUE; /* remove */ } else return FALSE; /* keep */ }} #line 367 "mn-popups.c" #undef __GOB_FUNCTION__ #line 136 "src/mn-popups.gob" static gboolean mn_popups_close_and_remove_visible_cb (const char * id, MNPopup * popup, gpointer user_data) { #line 374 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::close_and_remove_visible_cb" { #line 138 "src/mn-popups.gob" if (popup && popup->visible) { mn_popup_close(popup); return TRUE; /* remove */ } else return FALSE; /* keep */ }} #line 388 "mn-popups.c" #undef __GOB_FUNCTION__ #line 149 "src/mn-popups.gob" static void mn_popups_update (MNPopups * self, gboolean reshow_current_popups) { #line 395 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::update" #line 149 "src/mn-popups.gob" g_return_if_fail (self != NULL); #line 149 "src/mn-popups.gob" g_return_if_fail (MN_IS_POPUPS (self)); #line 401 "mn-popups.c" { #line 151 "src/mn-popups.gob" int i; /* close and remove stale popups */ g_hash_table_foreach_remove(selfp->popups, (GHRFunc) self_close_and_remove_stale_cb, NULL); if (reshow_current_popups) /* * We have to reshow the currently visible popups, so close and * remove them. */ g_hash_table_foreach_remove(selfp->popups, (GHRFunc) self_close_and_remove_visible_cb, NULL); if (mn_conf_get_bool(MN_CONF_POPUPS_ENABLED)) { GPtrArray *messages; /* for O(1) length retrieval and indexing */ GSList *visible_popups; int num_visible_popups; int popup_limit; int new_popup_count; int messages_to_popup; /* the number of messages to popup */ if (mn_conf_get_enum_value(MN_TYPE_POPUP_POSITION, MN_CONF_POPUPS_POSITION) == MN_POPUP_POSITION_ATTACHED) /* the popup is attached to the icon: allow at most one popup */ popup_limit = 1; else popup_limit = mn_conf_get_int(MN_CONF_POPUPS_LIMIT); /* build a list of messages which are not already known */ messages = g_ptr_array_new(); MN_ARRAY_FOREACH(i, mn_shell->mailboxes->messages) { MNMessage *message = g_ptr_array_index(mn_shell->mailboxes->messages, i); gpointer ptr; if (! g_hash_table_lookup_extended(selfp->popups, message->id, NULL, &ptr)) g_ptr_array_add(messages, message); } visible_popups = self_get_visible_popups(self); num_visible_popups = g_slist_length(visible_popups); new_popup_count = num_visible_popups + messages->len; if (new_popup_count > popup_limit) { int to_remove; /* make room for n new popups by closing the n oldest popups */ to_remove = new_popup_count - popup_limit; to_remove = MIN(num_visible_popups, to_remove); while (to_remove > 0) { MNPopup *oldest; g_assert(visible_popups != NULL); oldest = visible_popups->data; mn_popup_close(oldest); visible_popups = g_slist_delete_link(visible_popups, visible_popups); to_remove--; } } g_slist_free(visible_popups); messages_to_popup = MIN(messages->len, popup_limit); /* * Below we iterate over the messages array backwards because * it is sorted by sent time most recent first, while we want * to popup the oldest messages first. */ /* register the messages which we will not popup */ for (i = messages->len - 1; i >= messages_to_popup; i--) { MNMessage *message = g_ptr_array_index(messages, i); g_hash_table_replace(selfp->popups, g_strdup(message->id), NULL); } /* popup the first messages_to_popup messages */ for (i = messages_to_popup - 1; i >= 0; i--) { MNMessage *message = g_ptr_array_index(messages, i); MNPopup *popup; popup = mn_popup_new(message); mn_popup_show(popup); g_hash_table_replace(selfp->popups, g_strdup(message->id), popup); } g_ptr_array_free(messages, TRUE); } else { /* register the new messages */ MN_ARRAY_FOREACH(i, mn_shell->mailboxes->messages) { MNMessage *message = g_ptr_array_index(mn_shell->mailboxes->messages, i); g_hash_table_replace(selfp->popups, g_strdup(message->id), NULL); } } }} #line 517 "mn-popups.c" #undef __GOB_FUNCTION__ #line 265 "src/mn-popups.gob" MNPopups * mn_popups_new (void) { #line 524 "mn-popups.c" #define __GOB_FUNCTION__ "MN:Popups::new" { #line 267 "src/mn-popups.gob" return GET_NEW; }} #line 531 "mn-popups.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-maildir-message.gob.stamp0000644000175000001440000000000011015312645025014 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-popup-private.h0000644000175000001440000000055611015312645023141 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_POPUP_PRIVATE_H__ #define __MN_POPUP_PRIVATE_H__ #include "mn-popup.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNPopupPrivate { #line 34 "src/mn-popup.gob" MNMessage * message; #line 16 "mn-popup-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-pop3-mailbox-properties-private.h0000644000175000001440000000047011015312646026476 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_POP3_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_POP3_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-pop3-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mozilla-mailbox-backend.h0000644000175000001440000000327711015312645025016 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-base-mbox-mailbox-backend.h" #ifndef __MN_MOZILLA_MAILBOX_BACKEND_H__ #define __MN_MOZILLA_MAILBOX_BACKEND_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MOZILLA_MAILBOX_BACKEND (mn_mozilla_mailbox_backend_get_type()) #define MN_MOZILLA_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mozilla_mailbox_backend_get_type(), MNMozillaMailboxBackend) #define MN_MOZILLA_MAILBOX_BACKEND_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mozilla_mailbox_backend_get_type(), MNMozillaMailboxBackend const) #define MN_MOZILLA_MAILBOX_BACKEND_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_mozilla_mailbox_backend_get_type(), MNMozillaMailboxBackendClass) #define MN_IS_MOZILLA_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mozilla_mailbox_backend_get_type ()) #define MN_MOZILLA_MAILBOX_BACKEND_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_mozilla_mailbox_backend_get_type(), MNMozillaMailboxBackendClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_MOZILLA_MAILBOX_BACKEND__ #define __TYPEDEF_MN_MOZILLA_MAILBOX_BACKEND__ typedef struct _MNMozillaMailboxBackend MNMozillaMailboxBackend; #endif struct _MNMozillaMailboxBackend { MNBaseMboxMailboxBackend __parent__; }; /* * Class definition */ typedef struct _MNMozillaMailboxBackendClass MNMozillaMailboxBackendClass; struct _MNMozillaMailboxBackendClass { MNBaseMboxMailboxBackendClass __parent__; }; /* * Public methods */ GType mn_mozilla_mailbox_backend_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-about-dialog-private.h0000644000175000001440000000042711015312644024341 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_ABOUT_DIALOG_PRIVATE_H__ #define __MN_ABOUT_DIALOG_PRIVATE_H__ #include "mn-about-dialog.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-yahoo-mailbox.h0000644000175000001440000000264111015312646023074 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-webmail-mailbox.h" #ifndef __MN_YAHOO_MAILBOX_H__ #define __MN_YAHOO_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_YAHOO_MAILBOX (mn_yahoo_mailbox_get_type()) #define MN_YAHOO_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_yahoo_mailbox_get_type(), MNYahooMailbox) #define MN_YAHOO_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_yahoo_mailbox_get_type(), MNYahooMailbox const) #define MN_YAHOO_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_yahoo_mailbox_get_type(), MNYahooMailboxClass) #define MN_IS_YAHOO_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_yahoo_mailbox_get_type ()) #define MN_YAHOO_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_yahoo_mailbox_get_type(), MNYahooMailboxClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_YAHOO_MAILBOX__ #define __TYPEDEF_MN_YAHOO_MAILBOX__ typedef struct _MNYahooMailbox MNYahooMailbox; #endif struct _MNYahooMailbox { MNWebmailMailbox __parent__; }; /* * Class definition */ typedef struct _MNYahooMailboxClass MNYahooMailboxClass; struct _MNYahooMailboxClass { MNWebmailMailboxClass __parent__; }; /* * Public methods */ GType mn_yahoo_mailbox_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-standard-message-view.gob.stamp0000644000175000001440000000000011015312645026143 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-pi-mailbox.h0000644000175000001440000000670511015312646022372 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-authenticated-mailbox.h" #ifndef __MN_PI_MAILBOX_H__ #define __MN_PI_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define MN_PI_MAILBOX_N_CONNECTION_TYPES 3 typedef enum { MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL, MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL, MN_PI_MAILBOX_CONNECTION_TYPE_SSL } MNPIMailboxConnectionType; #define MN_TYPE_PI_MAILBOX_CONNECTION_TYPE mn_pi_mailbox_connection_type_get_type() GType mn_pi_mailbox_connection_type_get_type (void); /* * Type checking and casting macros */ #define MN_TYPE_PI_MAILBOX (mn_pi_mailbox_get_type()) #define MN_PI_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_pi_mailbox_get_type(), MNPIMailbox) #define MN_PI_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_pi_mailbox_get_type(), MNPIMailbox const) #define MN_PI_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_pi_mailbox_get_type(), MNPIMailboxClass) #define MN_IS_PI_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_pi_mailbox_get_type ()) #define MN_PI_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_pi_mailbox_get_type(), MNPIMailboxClass) /* Private structure type */ typedef struct _MNPIMailboxPrivate MNPIMailboxPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_PI_MAILBOX__ #define __TYPEDEF_MN_PI_MAILBOX__ typedef struct _MNPIMailbox MNPIMailbox; #endif struct _MNPIMailbox { MNAuthenticatedMailbox __parent__; /*< public >*/ MNPIMailboxConnectionType connection_type; char * authmech; char * hostname; int port; int runtime_port; /*< private >*/ MNPIMailboxPrivate *_priv; }; /* * Class definition */ typedef struct _MNPIMailboxClass MNPIMailboxClass; struct _MNPIMailboxClass { MNAuthenticatedMailboxClass __parent__; int * default_ports; }; /* * Public methods */ GType mn_pi_mailbox_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_PI_MAILBOX_PROP_CONNECTION_TYPE(arg) "connection_type", __extension__ ({gint z = (arg); z;}) #define MN_PI_MAILBOX_GET_PROP_CONNECTION_TYPE(arg) "connection_type", __extension__ ({gint *z = (arg); z;}) #define MN_PI_MAILBOX_PROP_AUTHMECH(arg) "authmech", __extension__ ({gchar *z = (arg); z;}) #define MN_PI_MAILBOX_GET_PROP_AUTHMECH(arg) "authmech", __extension__ ({gchar **z = (arg); z;}) #define MN_PI_MAILBOX_PROP_HOSTNAME(arg) "hostname", __extension__ ({gchar *z = (arg); z;}) #define MN_PI_MAILBOX_GET_PROP_HOSTNAME(arg) "hostname", __extension__ ({gchar **z = (arg); z;}) #define MN_PI_MAILBOX_PROP_PORT(arg) "port", __extension__ ({gint z = (arg); z;}) #define MN_PI_MAILBOX_GET_PROP_PORT(arg) "port", __extension__ ({gint *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_PI_MAILBOX_PROP_CONNECTION_TYPE(arg) "connection_type",(gint )(arg) #define MN_PI_MAILBOX_GET_PROP_CONNECTION_TYPE(arg) "connection_type",(gint *)(arg) #define MN_PI_MAILBOX_PROP_AUTHMECH(arg) "authmech",(gchar *)(arg) #define MN_PI_MAILBOX_GET_PROP_AUTHMECH(arg) "authmech",(gchar **)(arg) #define MN_PI_MAILBOX_PROP_HOSTNAME(arg) "hostname",(gchar *)(arg) #define MN_PI_MAILBOX_GET_PROP_HOSTNAME(arg) "hostname",(gchar **)(arg) #define MN_PI_MAILBOX_PROP_PORT(arg) "port",(gint )(arg) #define MN_PI_MAILBOX_GET_PROP_PORT(arg) "port",(gint *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mail-icon-private.h0000644000175000001440000000125211015312644023637 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MAIL_ICON_PRIVATE_H__ #define __MN_MAIL_ICON_PRIVATE_H__ #include "mn-mail-icon.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 31 "src/mn-mail-icon.gob" #include "mn-tooltips.h" #line 18 "mn-mail-icon-private.h" struct _MNMailIconPrivate { #line 45 "src/mn-mail-icon.gob" MNTooltips * tooltips; #line 46 "src/mn-mail-icon.gob" GtkWidget * widget; #line 48 "src/mn-mail-icon.gob" char * stock_id; #line 49 "src/mn-mail-icon.gob" int size; #line 51 "src/mn-mail-icon.gob" GtkWidget * menu; #line 30 "mn-mail-icon-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-hotmail-mailbox-private.h0000644000175000001440000000044011015312647025056 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_HOTMAIL_MAILBOX_PRIVATE_H__ #define __MN_HOTMAIL_MAILBOX_PRIVATE_H__ #include "mn-hotmail-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-imap-mailbox.h0000644000175000001440000000603011015312646022677 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-pi-mailbox.h" #ifndef __MN_IMAP_MAILBOX_H__ #define __MN_IMAP_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define MN_IMAP_MAILBOX_N_USE_IDLE 3 extern int mn_imap_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES]; typedef enum { MN_IMAP_MAILBOX_USE_IDLE_NEVER, MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT, MN_IMAP_MAILBOX_USE_IDLE_ALWAYS } MNIMAPMailboxUseIDLE; #define MN_TYPE_IMAP_MAILBOX_USE_IDLE mn_imap_mailbox_use_idle_get_type() GType mn_imap_mailbox_use_idle_get_type (void); /* * Type checking and casting macros */ #define MN_TYPE_IMAP_MAILBOX (mn_imap_mailbox_get_type()) #define MN_IMAP_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_imap_mailbox_get_type(), MNIMAPMailbox) #define MN_IMAP_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_imap_mailbox_get_type(), MNIMAPMailbox const) #define MN_IMAP_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_imap_mailbox_get_type(), MNIMAPMailboxClass) #define MN_IS_IMAP_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_imap_mailbox_get_type ()) #define MN_IMAP_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_imap_mailbox_get_type(), MNIMAPMailboxClass) /* Private structure type */ typedef struct _MNIMAPMailboxPrivate MNIMAPMailboxPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_IMAP_MAILBOX__ #define __TYPEDEF_MN_IMAP_MAILBOX__ typedef struct _MNIMAPMailbox MNIMAPMailbox; #endif struct _MNIMAPMailbox { MNPIMailbox __parent__; /*< public >*/ char * mailbox; MNIMAPMailboxUseIDLE use_idle_extension; /*< private >*/ MNIMAPMailboxPrivate *_priv; }; /* * Class definition */ typedef struct _MNIMAPMailboxClass MNIMAPMailboxClass; struct _MNIMAPMailboxClass { MNPIMailboxClass __parent__; }; /* * Public methods */ GType mn_imap_mailbox_get_type (void) G_GNUC_CONST; #line 1915 "src/mn-imap-mailbox.gob" char * mn_imap_mailbox_build_name (const char * username, const char * server, const char * mailbox); #line 80 "mn-imap-mailbox.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_IMAP_MAILBOX_PROP_MAILBOX(arg) "mailbox", __extension__ ({gchar *z = (arg); z;}) #define MN_IMAP_MAILBOX_GET_PROP_MAILBOX(arg) "mailbox", __extension__ ({gchar **z = (arg); z;}) #define MN_IMAP_MAILBOX_PROP_USE_IDLE_EXTENSION(arg) "use_idle_extension", __extension__ ({gint z = (arg); z;}) #define MN_IMAP_MAILBOX_GET_PROP_USE_IDLE_EXTENSION(arg) "use_idle_extension", __extension__ ({gint *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_IMAP_MAILBOX_PROP_MAILBOX(arg) "mailbox",(gchar *)(arg) #define MN_IMAP_MAILBOX_GET_PROP_MAILBOX(arg) "mailbox",(gchar **)(arg) #define MN_IMAP_MAILBOX_PROP_USE_IDLE_EXTENSION(arg) "use_idle_extension",(gint )(arg) #define MN_IMAP_MAILBOX_GET_PROP_USE_IDLE_EXTENSION(arg) "use_idle_extension",(gint *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-gmime-stream-vfs.c0000644000175000001440000004377011015312647023513 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-gmime-stream-vfs.h" #include "mn-gmime-stream-vfs-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 25 "src/mn-gmime-stream-vfs.gob" #include #include "mn-vfs.h" #define VFS_CALL(stream, expr, fail_format, fail_retval) \ { \ GnomeVFSResult result; \ \ result = expr; \ if (result != GNOME_VFS_OK) \ { \ (stream)->_priv->eof = TRUE; \ if (result != GNOME_VFS_ERROR_EOF) \ { \ g_warning((fail_format), \ (stream)->_priv->uri, \ gnome_vfs_result_to_string(result)); \ return (fail_retval); \ } \ } \ } #define VFS_READ(stream, buffer, bytes, bytes_read, fail_retval) \ VFS_CALL((stream), gnome_vfs_read((stream)->_priv->handle, (buffer), (bytes), (bytes_read)), _("unable to read %s: %s"), (fail_retval)) #define VFS_WRITE(stream, buffer, bytes, bytes_written, fail_retval) \ VFS_CALL((stream), gnome_vfs_write((stream)->_priv->handle, (buffer), (bytes), (bytes_written)), _("unable to write to %s: %s"), (fail_retval)) #define VFS_SEEK(stream, whence, offset, fail_retval) \ VFS_CALL((stream), gnome_vfs_seek((stream)->_priv->handle, (whence), (offset)), _("unable to seek in %s: %s"), (fail_retval)) #define VFS_TELL(stream, offset_return, fail_retval) \ VFS_CALL((stream), gnome_vfs_tell((stream)->_priv->handle, (offset_return)), _("unable to tell position of %s: %s"), (fail_retval)) #define VFS_CLOSE(stream, fail_retval) \ VFS_CALL((stream), gnome_vfs_close((stream)->_priv->handle), _("unable to close %s: %s"), (fail_retval)) #line 60 "mn-gmime-stream-vfs.c" /* self casting macros */ #define SELF(x) MN_GMIME_STREAM_VFS(x) #define SELF_CONST(x) MN_GMIME_STREAM_VFS_CONST(x) #define IS_SELF(x) MN_IS_GMIME_STREAM_VFS(x) #define TYPE_SELF MN_TYPE_GMIME_STREAM_VFS #define SELF_CLASS(x) MN_GMIME_STREAM_VFS_CLASS(x) #define SELF_GET_CLASS(x) MN_GMIME_STREAM_VFS_GET_CLASS(x) /* self typedefs */ typedef MNGMimeStreamVFS Self; typedef MNGMimeStreamVFSClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-gmime-stream-vfs.gob" static void mn_gmime_stream_vfs_init (MNGMimeStreamVFS * o); #line 77 "mn-gmime-stream-vfs.c" #line 0 "src/mn-gmime-stream-vfs.gob" static void mn_gmime_stream_vfs_class_init (MNGMimeStreamVFSClass * c); #line 80 "mn-gmime-stream-vfs.c" #line 67 "src/mn-gmime-stream-vfs.gob" static void mn_gmime_stream_vfs_finalize (MNGMimeStreamVFS * self); #line 83 "mn-gmime-stream-vfs.c" #line 73 "src/mn-gmime-stream-vfs.gob" static ssize_t ___2_mn_gmime_stream_vfs_read (GMimeStream * stream, char * buf, size_t len); #line 86 "mn-gmime-stream-vfs.c" #line 93 "src/mn-gmime-stream-vfs.gob" static ssize_t ___3_mn_gmime_stream_vfs_write (GMimeStream * stream, const char * buf, size_t len); #line 89 "mn-gmime-stream-vfs.c" #line 113 "src/mn-gmime-stream-vfs.gob" static int ___4_mn_gmime_stream_vfs_flush (GMimeStream * stream); #line 92 "mn-gmime-stream-vfs.c" #line 120 "src/mn-gmime-stream-vfs.gob" static int ___5_mn_gmime_stream_vfs_close (GMimeStream * stream); #line 95 "mn-gmime-stream-vfs.c" #line 130 "src/mn-gmime-stream-vfs.gob" static gboolean ___6_mn_gmime_stream_vfs_eos (GMimeStream * stream); #line 98 "mn-gmime-stream-vfs.c" #line 141 "src/mn-gmime-stream-vfs.gob" static int ___7_mn_gmime_stream_vfs_reset (GMimeStream * stream); #line 101 "mn-gmime-stream-vfs.c" #line 155 "src/mn-gmime-stream-vfs.gob" static off_t ___8_mn_gmime_stream_vfs_seek (GMimeStream * stream, off_t offset, GMimeSeekWhence whence); #line 104 "mn-gmime-stream-vfs.c" #line 200 "src/mn-gmime-stream-vfs.gob" static off_t ___9_mn_gmime_stream_vfs_tell (GMimeStream * stream); #line 107 "mn-gmime-stream-vfs.c" #line 206 "src/mn-gmime-stream-vfs.gob" static ssize_t ___a_mn_gmime_stream_vfs_length (GMimeStream * stream); #line 110 "mn-gmime-stream-vfs.c" #line 225 "src/mn-gmime-stream-vfs.gob" static GMimeStream * ___b_mn_gmime_stream_vfs_substream (GMimeStream * stream, off_t start, off_t end); #line 113 "mn-gmime-stream-vfs.c" /* pointer to the class of our parent */ static GMimeStreamClass *parent_class = NULL; /* Short form macros */ #define self_new mn_gmime_stream_vfs_new GType mn_gmime_stream_vfs_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNGMimeStreamVFSClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_gmime_stream_vfs_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNGMimeStreamVFS), 0 /* n_preallocs */, (GInstanceInitFunc) mn_gmime_stream_vfs_init, NULL }; type = g_type_register_static (GMIME_TYPE_STREAM, "MNGMimeStreamVFS", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNGMimeStreamVFS *)g_object_new(mn_gmime_stream_vfs_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNGMimeStreamVFS * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNGMimeStreamVFS * GET_NEW_VARG (const char *first, ...) { MNGMimeStreamVFS *ret; va_list ap; va_start (ap, first); ret = (MNGMimeStreamVFS *)g_object_new_valist (mn_gmime_stream_vfs_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::finalize" MNGMimeStreamVFS *self G_GNUC_UNUSED = MN_GMIME_STREAM_VFS (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 67 "src/mn-gmime-stream-vfs.gob" mn_gmime_stream_vfs_finalize (self); #line 171 "mn-gmime-stream-vfs.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 64 "src/mn-gmime-stream-vfs.gob" if(self->_priv->uri) { g_free ((gpointer) self->_priv->uri); self->_priv->uri = NULL; } #line 176 "mn-gmime-stream-vfs.c" } #undef __GOB_FUNCTION__ static void mn_gmime_stream_vfs_init (MNGMimeStreamVFS * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_GMIME_STREAM_VFS,MNGMimeStreamVFSPrivate); } #undef __GOB_FUNCTION__ static void mn_gmime_stream_vfs_class_init (MNGMimeStreamVFSClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; GMimeStreamClass *gmime_stream_class = (GMimeStreamClass *)c; g_type_class_add_private(c,sizeof(MNGMimeStreamVFSPrivate)); parent_class = g_type_class_ref (GMIME_TYPE_STREAM); #line 73 "src/mn-gmime-stream-vfs.gob" gmime_stream_class->read = ___2_mn_gmime_stream_vfs_read; #line 93 "src/mn-gmime-stream-vfs.gob" gmime_stream_class->write = ___3_mn_gmime_stream_vfs_write; #line 113 "src/mn-gmime-stream-vfs.gob" gmime_stream_class->flush = ___4_mn_gmime_stream_vfs_flush; #line 120 "src/mn-gmime-stream-vfs.gob" gmime_stream_class->close = ___5_mn_gmime_stream_vfs_close; #line 130 "src/mn-gmime-stream-vfs.gob" gmime_stream_class->eos = ___6_mn_gmime_stream_vfs_eos; #line 141 "src/mn-gmime-stream-vfs.gob" gmime_stream_class->reset = ___7_mn_gmime_stream_vfs_reset; #line 155 "src/mn-gmime-stream-vfs.gob" gmime_stream_class->seek = ___8_mn_gmime_stream_vfs_seek; #line 200 "src/mn-gmime-stream-vfs.gob" gmime_stream_class->tell = ___9_mn_gmime_stream_vfs_tell; #line 206 "src/mn-gmime-stream-vfs.gob" gmime_stream_class->length = ___a_mn_gmime_stream_vfs_length; #line 225 "src/mn-gmime-stream-vfs.gob" gmime_stream_class->substream = ___b_mn_gmime_stream_vfs_substream; #line 218 "mn-gmime-stream-vfs.c" g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 67 "src/mn-gmime-stream-vfs.gob" static void mn_gmime_stream_vfs_finalize (MNGMimeStreamVFS * self) { #line 229 "mn-gmime-stream-vfs.c" #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::finalize" { #line 68 "src/mn-gmime-stream-vfs.gob" if (selfp->handle_owned) g_mime_stream_close(GMIME_STREAM(self)); }} #line 237 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #line 73 "src/mn-gmime-stream-vfs.gob" static ssize_t ___2_mn_gmime_stream_vfs_read (GMimeStream * stream G_GNUC_UNUSED, char * buf, size_t len) #line 243 "mn-gmime-stream-vfs.c" #define PARENT_HANDLER(___stream,___buf,___len) \ ((GMIME_STREAM_CLASS(parent_class)->read)? \ (* GMIME_STREAM_CLASS(parent_class)->read)(___stream,___buf,___len): \ ((ssize_t )0)) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::read" { #line 75 "src/mn-gmime-stream-vfs.gob" Self *self = SELF(stream); GnomeVFSFileSize bytes_read; if (stream->bound_end != -1 && stream->position >= stream->bound_end) return -1; if (stream->bound_end != -1) len = MIN(stream->bound_end - stream->position, (off_t) len); /* make sure we are at the right position */ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1); VFS_READ(self, buf, len, &bytes_read, -1); stream->position += bytes_read; return bytes_read; }} #line 269 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 93 "src/mn-gmime-stream-vfs.gob" static ssize_t ___3_mn_gmime_stream_vfs_write (GMimeStream * stream G_GNUC_UNUSED, const char * buf, size_t len) #line 276 "mn-gmime-stream-vfs.c" #define PARENT_HANDLER(___stream,___buf,___len) \ ((GMIME_STREAM_CLASS(parent_class)->write)? \ (* GMIME_STREAM_CLASS(parent_class)->write)(___stream,___buf,___len): \ ((ssize_t )0)) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::write" { #line 95 "src/mn-gmime-stream-vfs.gob" Self *self = SELF(stream); GnomeVFSFileSize bytes_written; if (stream->bound_end != -1 && stream->position >= stream->bound_end) return -1; if (stream->bound_end != -1) len = MIN(stream->bound_end - stream->position, (off_t) len); /* make sure we are at the right position */ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1); VFS_WRITE(self, buf, len, &bytes_written, -1); stream->position += bytes_written; return bytes_written; }} #line 302 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 113 "src/mn-gmime-stream-vfs.gob" static int ___4_mn_gmime_stream_vfs_flush (GMimeStream * stream G_GNUC_UNUSED) #line 309 "mn-gmime-stream-vfs.c" #define PARENT_HANDLER(___stream) \ ((GMIME_STREAM_CLASS(parent_class)->flush)? \ (* GMIME_STREAM_CLASS(parent_class)->flush)(___stream): \ ((int )0)) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::flush" { #line 115 "src/mn-gmime-stream-vfs.gob" /* nop */ return 0; /* success */ }} #line 322 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 120 "src/mn-gmime-stream-vfs.gob" static int ___5_mn_gmime_stream_vfs_close (GMimeStream * stream G_GNUC_UNUSED) #line 329 "mn-gmime-stream-vfs.c" #define PARENT_HANDLER(___stream) \ ((GMIME_STREAM_CLASS(parent_class)->close)? \ (* GMIME_STREAM_CLASS(parent_class)->close)(___stream): \ ((int )0)) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::close" { #line 122 "src/mn-gmime-stream-vfs.gob" Self *self = SELF(stream); VFS_CLOSE(self, -1); return 0; /* success */ }} #line 345 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 130 "src/mn-gmime-stream-vfs.gob" static gboolean ___6_mn_gmime_stream_vfs_eos (GMimeStream * stream G_GNUC_UNUSED) #line 352 "mn-gmime-stream-vfs.c" #define PARENT_HANDLER(___stream) \ ((GMIME_STREAM_CLASS(parent_class)->eos)? \ (* GMIME_STREAM_CLASS(parent_class)->eos)(___stream): \ ((gboolean )0)) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::eos" { #line 132 "src/mn-gmime-stream-vfs.gob" Self *self = SELF(stream); if (stream->bound_end == -1) return selfp->eof; else return stream->position >= stream->bound_end; }} #line 369 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 141 "src/mn-gmime-stream-vfs.gob" static int ___7_mn_gmime_stream_vfs_reset (GMimeStream * stream G_GNUC_UNUSED) #line 376 "mn-gmime-stream-vfs.c" #define PARENT_HANDLER(___stream) \ ((GMIME_STREAM_CLASS(parent_class)->reset)? \ (* GMIME_STREAM_CLASS(parent_class)->reset)(___stream): \ ((int )0)) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::reset" { #line 143 "src/mn-gmime-stream-vfs.gob" Self *self = SELF(stream); if (stream->position == stream->bound_start) return 0; VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->bound_start, -1); stream->position = stream->bound_start; return 0; }} #line 396 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 155 "src/mn-gmime-stream-vfs.gob" static off_t ___8_mn_gmime_stream_vfs_seek (GMimeStream * stream G_GNUC_UNUSED, off_t offset, GMimeSeekWhence whence) #line 403 "mn-gmime-stream-vfs.c" #define PARENT_HANDLER(___stream,___offset,___whence) \ ((GMIME_STREAM_CLASS(parent_class)->seek)? \ (* GMIME_STREAM_CLASS(parent_class)->seek)(___stream,___offset,___whence): \ ((off_t )0)) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::seek" { #line 157 "src/mn-gmime-stream-vfs.gob" Self *self = SELF(stream); off_t real = stream->position; switch (whence) { case GMIME_STREAM_SEEK_SET: real = offset; break; case GMIME_STREAM_SEEK_CUR: real = stream->position + offset; break; case GMIME_STREAM_SEEK_END: if (stream->bound_end == -1) { GnomeVFSFileSize current_position; VFS_SEEK(self, GNOME_VFS_SEEK_END, offset, -1); VFS_TELL(self, ¤t_position, -1); real = current_position; if (real < stream->bound_start) real = stream->bound_start; stream->position = real; return real; } real = stream->bound_end + offset; break; } if (stream->bound_end != -1) real = MIN(real, stream->bound_end); real = MAX(real, stream->bound_start); VFS_SEEK(self, GNOME_VFS_SEEK_START, real, -1); stream->position = real; return real; }} #line 454 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 200 "src/mn-gmime-stream-vfs.gob" static off_t ___9_mn_gmime_stream_vfs_tell (GMimeStream * stream G_GNUC_UNUSED) #line 461 "mn-gmime-stream-vfs.c" #define PARENT_HANDLER(___stream) \ ((GMIME_STREAM_CLASS(parent_class)->tell)? \ (* GMIME_STREAM_CLASS(parent_class)->tell)(___stream): \ ((off_t )0)) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::tell" { #line 202 "src/mn-gmime-stream-vfs.gob" return stream->position; }} #line 473 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 206 "src/mn-gmime-stream-vfs.gob" static ssize_t ___a_mn_gmime_stream_vfs_length (GMimeStream * stream G_GNUC_UNUSED) #line 480 "mn-gmime-stream-vfs.c" #define PARENT_HANDLER(___stream) \ ((GMIME_STREAM_CLASS(parent_class)->length)? \ (* GMIME_STREAM_CLASS(parent_class)->length)(___stream): \ ((ssize_t )0)) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::length" { #line 208 "src/mn-gmime-stream-vfs.gob" Self *self = SELF(stream); GnomeVFSFileSize bound_end; if (stream->bound_start != -1 && stream->bound_end != -1) return stream->bound_end - stream->bound_start; VFS_SEEK(self, GNOME_VFS_SEEK_END, 0, -1); VFS_TELL(self, &bound_end, -1); VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1); if (bound_end < stream->bound_start) return -1; return bound_end - stream->bound_start; }} #line 505 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 225 "src/mn-gmime-stream-vfs.gob" static GMimeStream * ___b_mn_gmime_stream_vfs_substream (GMimeStream * stream G_GNUC_UNUSED, off_t start, off_t end) #line 512 "mn-gmime-stream-vfs.c" #define PARENT_HANDLER(___stream,___start,___end) \ ((GMIME_STREAM_CLASS(parent_class)->substream)? \ (* GMIME_STREAM_CLASS(parent_class)->substream)(___stream,___start,___end): \ ((GMimeStream * )0)) { #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::substream" { #line 227 "src/mn-gmime-stream-vfs.gob" Self *self; self = GET_NEW; selfp->handle = SELF(stream)->_priv->handle; /* handle of the substream is not owned */ g_mime_stream_construct(GMIME_STREAM(self), start, end); return GMIME_STREAM(self); }} #line 532 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 242 "src/mn-gmime-stream-vfs.gob" GMimeStream * mn_gmime_stream_vfs_new (GnomeVFSHandle * handle, GnomeVFSURI * uri, GnomeVFSResult * result) { #line 540 "mn-gmime-stream-vfs.c" #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::new" #line 242 "src/mn-gmime-stream-vfs.gob" g_return_val_if_fail (handle != NULL, (GMimeStream * )0); #line 242 "src/mn-gmime-stream-vfs.gob" g_return_val_if_fail (uri != NULL, (GMimeStream * )0); #line 546 "mn-gmime-stream-vfs.c" { #line 246 "src/mn-gmime-stream-vfs.gob" GMimeStream *stream; GnomeVFSResult _result; GnomeVFSFileSize current_position; if (gnome_vfs_seek(handle, GNOME_VFS_SEEK_CURRENT, 0) != GNOME_VFS_OK || gnome_vfs_tell(handle, ¤t_position) != GNOME_VFS_OK) { char *buf; int size; /* unseekable or untellable file, use a GMimeStreamMem */ _result = mn_vfs_read_entire_file_uri(uri, &size, &buf); if (_result == GNOME_VFS_OK) { stream = g_mime_stream_mem_new_with_buffer(buf, size); g_free(buf); } else stream = NULL; gnome_vfs_close(handle); } else { Self *self; _result = GNOME_VFS_OK; self = GET_NEW; selfp->handle = handle; selfp->handle_owned = TRUE; selfp->uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE); stream = GMIME_STREAM(self); g_mime_stream_construct(stream, current_position, -1); /* check for EOF */ if (g_mime_stream_length(stream) <= 0) selfp->eof = TRUE; } if (result) *result = _result; return stream; }} #line 597 "mn-gmime-stream-vfs.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-custom-vfs-mailbox.h0000644000175000001440000000404211015312647024061 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-vfs-mailbox.h" #ifndef __MN_CUSTOM_VFS_MAILBOX_H__ #define __MN_CUSTOM_VFS_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_CUSTOM_VFS_MAILBOX (mn_custom_vfs_mailbox_get_type()) #define MN_CUSTOM_VFS_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_custom_vfs_mailbox_get_type(), MNCustomVFSMailbox) #define MN_CUSTOM_VFS_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_custom_vfs_mailbox_get_type(), MNCustomVFSMailbox const) #define MN_CUSTOM_VFS_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_custom_vfs_mailbox_get_type(), MNCustomVFSMailboxClass) #define MN_IS_CUSTOM_VFS_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_custom_vfs_mailbox_get_type ()) #define MN_CUSTOM_VFS_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_custom_vfs_mailbox_get_type(), MNCustomVFSMailboxClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_CUSTOM_VFS_MAILBOX__ #define __TYPEDEF_MN_CUSTOM_VFS_MAILBOX__ typedef struct _MNCustomVFSMailbox MNCustomVFSMailbox; #endif struct _MNCustomVFSMailbox { MNVFSMailbox __parent__; /*< public >*/ char * uri; }; /* * Class definition */ typedef struct _MNCustomVFSMailboxClass MNCustomVFSMailboxClass; struct _MNCustomVFSMailboxClass { MNVFSMailboxClass __parent__; }; /* * Public methods */ GType mn_custom_vfs_mailbox_get_type (void) G_GNUC_CONST; /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_CUSTOM_VFS_MAILBOX_PROP_URI(arg) "uri", __extension__ ({gchar *z = (arg); z;}) #define MN_CUSTOM_VFS_MAILBOX_GET_PROP_URI(arg) "uri", __extension__ ({gchar **z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_CUSTOM_VFS_MAILBOX_PROP_URI(arg) "uri",(gchar *)(arg) #define MN_CUSTOM_VFS_MAILBOX_GET_PROP_URI(arg) "uri",(gchar **)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-shell-private.h0000644000175000001440000000136211015312645023101 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_SHELL_PRIVATE_H__ #define __MN_SHELL_PRIVATE_H__ #include "mn-shell.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 29 "src/mn-shell.gob" #include "mn-sound-player.h" #line 18 "mn-shell-private.h" struct _MNShellPrivate { #line 89 "src/mn-shell.gob" int unix_signal_pipe_write_end; #line 91 "src/mn-shell.gob" MNSoundPlayer * sound_player; #line 93 "src/mn-shell.gob" gboolean has_new; #line 95 "src/mn-shell.gob" GtkWidget * properties_dialog; #line 96 "src/mn-shell.gob" GSList * mailbox_properties_dialogs; #line 97 "src/mn-shell.gob" GtkWidget * about_dialog; #line 32 "mn-shell-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-sylpheed-message.c0000644000175000001440000001411111015312646023551 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-sylpheed-message.h" #include "mn-sylpheed-message-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-sylpheed-message.gob" #include #include #include "mn-util.h" #include "mn-sylpheed-mailbox-backend-private.h" #include "mn-message-private.h" #line 34 "mn-sylpheed-message.c" /* self casting macros */ #define SELF(x) MN_SYLPHEED_MESSAGE(x) #define SELF_CONST(x) MN_SYLPHEED_MESSAGE_CONST(x) #define IS_SELF(x) MN_IS_SYLPHEED_MESSAGE(x) #define TYPE_SELF MN_TYPE_SYLPHEED_MESSAGE #define SELF_CLASS(x) MN_SYLPHEED_MESSAGE_CLASS(x) #define SELF_GET_CLASS(x) MN_SYLPHEED_MESSAGE_GET_CLASS(x) /* self typedefs */ typedef MNSylpheedMessage Self; typedef MNSylpheedMessageClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-sylpheed-message.gob" static void mn_sylpheed_message_init (MNSylpheedMessage * o); #line 51 "mn-sylpheed-message.c" #line 0 "src/mn-sylpheed-message.gob" static void mn_sylpheed_message_class_init (MNSylpheedMessageClass * c); #line 54 "mn-sylpheed-message.c" #line 34 "src/mn-sylpheed-message.gob" static void ___1_mn_sylpheed_message_builtin_mark_as_read (MNMessage * message, MNMessageActionRequest * request); #line 57 "mn-sylpheed-message.c" #line 40 "src/mn-sylpheed-message.gob" static GError * mn_sylpheed_message_builtin_mark_as_read_cb (MNMessage * message, gpointer data); #line 60 "mn-sylpheed-message.c" /* pointer to the class of our parent */ static MNVFSMessageClass *parent_class = NULL; /* Short form macros */ #define self_builtin_mark_as_read_cb mn_sylpheed_message_builtin_mark_as_read_cb GType mn_sylpheed_message_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNSylpheedMessageClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_sylpheed_message_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNSylpheedMessage), 0 /* n_preallocs */, (GInstanceInitFunc) mn_sylpheed_message_init, NULL }; type = g_type_register_static (MN_TYPE_VFS_MESSAGE, "MNSylpheedMessage", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNSylpheedMessage *)g_object_new(mn_sylpheed_message_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNSylpheedMessage * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNSylpheedMessage * GET_NEW_VARG (const char *first, ...) { MNSylpheedMessage *ret; va_list ap; va_start (ap, first); ret = (MNSylpheedMessage *)g_object_new_valist (mn_sylpheed_message_get_type (), first, ap); va_end (ap); return ret; } static void mn_sylpheed_message_init (MNSylpheedMessage * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Sylpheed:Message::init" } #undef __GOB_FUNCTION__ static void mn_sylpheed_message_class_init (MNSylpheedMessageClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Sylpheed:Message::class_init" MNMessageClass *mn_message_class = (MNMessageClass *)c; parent_class = g_type_class_ref (MN_TYPE_VFS_MESSAGE); #line 34 "src/mn-sylpheed-message.gob" mn_message_class->builtin_mark_as_read = ___1_mn_sylpheed_message_builtin_mark_as_read; #line 125 "mn-sylpheed-message.c" } #undef __GOB_FUNCTION__ #line 34 "src/mn-sylpheed-message.gob" static void ___1_mn_sylpheed_message_builtin_mark_as_read (MNMessage * message G_GNUC_UNUSED, MNMessageActionRequest * request) #line 134 "mn-sylpheed-message.c" #define PARENT_HANDLER(___message,___request) \ { if(MN_MESSAGE_CLASS(parent_class)->builtin_mark_as_read) \ (* MN_MESSAGE_CLASS(parent_class)->builtin_mark_as_read)(___message,___request); } { #define __GOB_FUNCTION__ "MN:Sylpheed:Message::builtin_mark_as_read" { #line 36 "src/mn-sylpheed-message.gob" mn_message_perform_action_in_thread(request, self_builtin_mark_as_read_cb, NULL); }} #line 145 "mn-sylpheed-message.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 40 "src/mn-sylpheed-message.gob" static GError * mn_sylpheed_message_builtin_mark_as_read_cb (MNMessage * message, gpointer data) { #line 153 "mn-sylpheed-message.c" #define __GOB_FUNCTION__ "MN:Sylpheed:Message::builtin_mark_as_read_cb" { #line 42 "src/mn-sylpheed-message.gob" MNVFSMessage *vmessage = MN_VFS_MESSAGE(message); char *filename; guint32 num; guint32 flags; GError *tmp_err = NULL; GHashTable *marks; GError *err = NULL; filename = gnome_vfs_uri_extract_short_name(vmessage->vfs_uri); g_assert(mn_str_isnumeric(filename)); num = atoi(filename); g_free(filename); /* * We hold the mailbox lock to prevent this: * * thread A: read mark file * thread B: read mark file * thread A: write new mark file * thread B: write new mark file, A's modifications are overwritten */ mn_vfs_mailbox_lock(MN_VFS_MAILBOX(message->mailbox)); marks = mn_sylpheed_mailbox_backend_read_marks(MN_VFS_MAILBOX(message->mailbox)->vfs_uri, &tmp_err); if (! marks) { g_set_error(&err, 0, 0, _("Unable to read %s: %s."), SYLPHEED_MARK_FILE, tmp_err->message); g_error_free(tmp_err); goto end; } flags = GPOINTER_TO_UINT(g_hash_table_lookup(marks, GUINT_TO_POINTER(num))); flags &= ~(SYLPHEED_MSG_NEW | SYLPHEED_MSG_UNREAD); g_hash_table_insert(marks, GUINT_TO_POINTER(num), GUINT_TO_POINTER(flags)); mn_sylpheed_mailbox_backend_write_marks(MN_VFS_MAILBOX(message->mailbox)->vfs_uri, marks, &err); g_hash_table_destroy(marks); end: mn_vfs_mailbox_unlock(MN_VFS_MAILBOX(message->mailbox)); return err; }} #line 201 "mn-sylpheed-message.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-base-mbox-mailbox-backend.c0000644000175000001440000004517711015312645025224 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include "mn-base-mbox-mailbox-backend.h" #include "mn-base-mbox-mailbox-backend-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 26 "src/mn-base-mbox-mailbox-backend.gob" #include #include #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #include "mn-vfs-mailbox-backend-private.h" #include "mn-message-mime.h" #include "mn-gmime-stream-vfs.h" #include "mn-util.h" #include "mn-vfs.h" #if WITH_MBOX #include "mn-mbox-mailbox-backend.h" #endif #if WITH_MOZILLA #include "mn-mozilla-mailbox-backend.h" #endif #line 43 "mn-base-mbox-mailbox-backend.c" /* self casting macros */ #define SELF(x) MN_BASE_MBOX_MAILBOX_BACKEND(x) #define SELF_CONST(x) MN_BASE_MBOX_MAILBOX_BACKEND_CONST(x) #define IS_SELF(x) MN_IS_BASE_MBOX_MAILBOX_BACKEND(x) #define TYPE_SELF MN_TYPE_BASE_MBOX_MAILBOX_BACKEND #define SELF_CLASS(x) MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(x) #define SELF_GET_CLASS(x) MN_BASE_MBOX_MAILBOX_BACKEND_GET_CLASS(x) /* self typedefs */ typedef MNBaseMboxMailboxBackend Self; typedef MNBaseMboxMailboxBackendClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-base-mbox-mailbox-backend.gob" static void mn_base_mbox_mailbox_backend_init (MNBaseMboxMailboxBackend * o); #line 60 "mn-base-mbox-mailbox-backend.c" #line 0 "src/mn-base-mbox-mailbox-backend.gob" static void mn_base_mbox_mailbox_backend_class_init (MNBaseMboxMailboxBackendClass * c); #line 63 "mn-base-mbox-mailbox-backend.c" #line 54 "src/mn-base-mbox-mailbox-backend.gob" static gboolean ___1_mn_base_mbox_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox); #line 66 "mn-base-mbox-mailbox-backend.c" #line 104 "src/mn-base-mbox-mailbox-backend.gob" static GType mn_base_mbox_mailbox_backend_get_mailbox_type (GnomeVFSURI * uri); #line 69 "mn-base-mbox-mailbox-backend.c" #line 164 "src/mn-base-mbox-mailbox-backend.gob" static GMimeParser * mn_base_mbox_mailbox_backend_parser_new (GnomeVFSURI * uri, GnomeVFSResult * result); #line 72 "mn-base-mbox-mailbox-backend.c" #line 191 "src/mn-base-mbox-mailbox-backend.gob" static void ___4_mn_base_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend, int check_id); #line 75 "mn-base-mbox-mailbox-backend.c" #line 353 "src/mn-base-mbox-mailbox-backend.gob" static MNMessage * mn_base_mbox_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * self, GMimeMessage * mime_message); #line 78 "mn-base-mbox-mailbox-backend.c" #line 356 "src/mn-base-mbox-mailbox-backend.gob" static GnomeVFSURI * mn_base_mbox_mailbox_backend_get_uncompressed_uri (GnomeVFSURI * uri, GnomeVFSFileInfo * file_info); #line 81 "mn-base-mbox-mailbox-backend.c" /* pointer to the class of our parent */ static MNVFSMailboxBackendClass *parent_class = NULL; /* Short form macros */ #define self_get_mailbox_type mn_base_mbox_mailbox_backend_get_mailbox_type #define self_parser_new mn_base_mbox_mailbox_backend_parser_new #define self_get_new_message mn_base_mbox_mailbox_backend_get_new_message #define self_get_uncompressed_uri mn_base_mbox_mailbox_backend_get_uncompressed_uri GType mn_base_mbox_mailbox_backend_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNBaseMboxMailboxBackendClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_base_mbox_mailbox_backend_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNBaseMboxMailboxBackend), 0 /* n_preallocs */, (GInstanceInitFunc) mn_base_mbox_mailbox_backend_init, NULL }; type = g_type_register_static (MN_TYPE_VFS_MAILBOX_BACKEND, "MNBaseMboxMailboxBackend", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNBaseMboxMailboxBackend *)g_object_new(mn_base_mbox_mailbox_backend_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNBaseMboxMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNBaseMboxMailboxBackend * GET_NEW_VARG (const char *first, ...) { MNBaseMboxMailboxBackend *ret; va_list ap; va_start (ap, first); ret = (MNBaseMboxMailboxBackend *)g_object_new_valist (mn_base_mbox_mailbox_backend_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::dispose" MNBaseMboxMailboxBackend *self G_GNUC_UNUSED = MN_BASE_MBOX_MAILBOX_BACKEND (obj_self); if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 47 "src/mn-base-mbox-mailbox-backend.gob" if(self->_priv->uri) { gnome_vfs_uri_unref ((gpointer) self->_priv->uri); self->_priv->uri = NULL; } #line 143 "mn-base-mbox-mailbox-backend.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::finalize" MNBaseMboxMailboxBackend *self G_GNUC_UNUSED = MN_BASE_MBOX_MAILBOX_BACKEND (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 52 "src/mn-base-mbox-mailbox-backend.gob" if(self->_priv->mutex) { g_mutex_free ((gpointer) self->_priv->mutex); self->_priv->mutex = NULL; } #line 158 "mn-base-mbox-mailbox-backend.c" } #undef __GOB_FUNCTION__ static void mn_base_mbox_mailbox_backend_init (MNBaseMboxMailboxBackend * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_BASE_MBOX_MAILBOX_BACKEND,MNBaseMboxMailboxBackendPrivate); #line 52 "src/mn-base-mbox-mailbox-backend.gob" o->_priv->mutex = g_mutex_new(); #line 169 "mn-base-mbox-mailbox-backend.c" } #undef __GOB_FUNCTION__ static void mn_base_mbox_mailbox_backend_class_init (MNBaseMboxMailboxBackendClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; MNVFSMailboxBackendClass *mn_vfs_mailbox_backend_class = (MNVFSMailboxBackendClass *)c; g_type_class_add_private(c,sizeof(MNBaseMboxMailboxBackendPrivate)); parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND); #line 54 "src/mn-base-mbox-mailbox-backend.gob" mn_vfs_mailbox_backend_class->is = ___1_mn_base_mbox_mailbox_backend_is; #line 191 "src/mn-base-mbox-mailbox-backend.gob" mn_vfs_mailbox_backend_class->check = ___4_mn_base_mbox_mailbox_backend_check; #line 187 "mn-base-mbox-mailbox-backend.c" c->get_new_message = NULL; g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 54 "src/mn-base-mbox-mailbox-backend.gob" static gboolean ___1_mn_base_mbox_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox) #line 199 "mn-base-mbox-mailbox-backend.c" #define PARENT_HANDLER(___dummy,___class,___mailbox) \ ((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)? \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___class,___mailbox): \ ((gboolean )0)) { #define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::is" { #line 58 "src/mn-base-mbox-mailbox-backend.gob" gboolean is = FALSE; GnomeVFSURI *uri; GnomeVFSFileInfo *file_info; uri = gnome_vfs_uri_ref(mailbox->vfs_uri); file_info = gnome_vfs_file_info_new(); if (gnome_vfs_get_file_info_uri(uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK) { GnomeVFSURI *uncompressed_uri; /* handle a compressed mailbox */ uncompressed_uri = self_get_uncompressed_uri(uri, file_info); if (uncompressed_uri) { GnomeVFSFileInfo *uncompressed_file_info; uncompressed_file_info = gnome_vfs_file_info_new(); if (gnome_vfs_get_file_info_uri(uncompressed_uri, uncompressed_file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS) == GNOME_VFS_OK) { gnome_vfs_file_info_unref(file_info); file_info = uncompressed_file_info; gnome_vfs_uri_unref(uri); uri = uncompressed_uri; } else { gnome_vfs_file_info_unref(uncompressed_file_info); gnome_vfs_uri_unref(uncompressed_uri); } } if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) != 0 && file_info->type == GNOME_VFS_FILE_TYPE_REGULAR && self_get_mailbox_type(uri) == G_TYPE_FROM_CLASS(class)) is = TRUE; } gnome_vfs_uri_unref(uri); gnome_vfs_file_info_unref(file_info); return is; }} #line 253 "mn-base-mbox-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 104 "src/mn-base-mbox-mailbox-backend.gob" static GType mn_base_mbox_mailbox_backend_get_mailbox_type (GnomeVFSURI * uri) { #line 261 "mn-base-mbox-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::get_mailbox_type" #line 104 "src/mn-base-mbox-mailbox-backend.gob" g_return_val_if_fail (uri != NULL, (GType )0); #line 265 "mn-base-mbox-mailbox-backend.c" { #line 106 "src/mn-base-mbox-mailbox-backend.gob" GMimeParser *parser; GType type = 0; parser = self_parser_new(uri, NULL); if (parser) { if (g_mime_parser_eos(parser)) /* * The file is empty. For now, treat it as a mbox mailbox * or, if mbox support was not compiled in, as a Mozilla * mailbox. Whenever the file grows, it will be checked * again and at that point we will decide whether it is a * mbox mailbox, a Mozilla mailbox or another type of file. */ { #if WITH_MBOX type = MN_TYPE_MBOX_MAILBOX_BACKEND; #elif WITH_MOZILLA type = MN_TYPE_MOZILLA_MAILBOX_BACKEND; #endif } else { /* * The file is not empty. Decide whether it is a Mozilla * mailbox or a mbox mailbox by checking if the first * message has a X-Mozilla-Status header. If the first * message cannot be parsed, then it is neither a Mozilla * mailbox nor a mbox mailbox. */ GMimeMessage *mime_message; mime_message = g_mime_parser_construct_message(parser); if (mime_message) { if (g_mime_message_get_header(mime_message, "X-Mozilla-Status")) { #if WITH_MOZILLA type = MN_TYPE_MOZILLA_MAILBOX_BACKEND; #endif } else { #if WITH_MBOX type = MN_TYPE_MBOX_MAILBOX_BACKEND; #endif } g_object_unref(mime_message); } } g_object_unref(parser); } return type; }} #line 325 "mn-base-mbox-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 164 "src/mn-base-mbox-mailbox-backend.gob" static GMimeParser * mn_base_mbox_mailbox_backend_parser_new (GnomeVFSURI * uri, GnomeVFSResult * result) { #line 332 "mn-base-mbox-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::parser_new" #line 164 "src/mn-base-mbox-mailbox-backend.gob" g_return_val_if_fail (uri != NULL, (GMimeParser * )0); #line 336 "mn-base-mbox-mailbox-backend.c" { #line 166 "src/mn-base-mbox-mailbox-backend.gob" GnomeVFSResult _result; GnomeVFSHandle *handle; GMimeParser *parser = NULL; _result = gnome_vfs_open_uri(&handle, uri, GNOME_VFS_OPEN_READ); if (_result == GNOME_VFS_OK) { GMimeStream *stream; stream = mn_gmime_stream_vfs_new(handle, uri, &_result); if (stream) { parser = g_mime_parser_new_with_stream(stream); g_object_unref(stream); g_mime_parser_set_scan_from(parser, TRUE); } } if (result) *result = _result; return parser; }} #line 363 "mn-base-mbox-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 191 "src/mn-base-mbox-mailbox-backend.gob" static void ___4_mn_base_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, int check_id) #line 369 "mn-base-mbox-mailbox-backend.c" #define PARENT_HANDLER(___backend,___check_id) \ { if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check) \ (* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check)(___backend,___check_id); } { #define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::check" { #line 193 "src/mn-base-mbox-mailbox-backend.gob" Self *self = SELF(backend); gboolean polled; GMimeParser *parser; GnomeVFSResult result; gboolean uri_set; mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_FILE); if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) return; /* the poll property is protected by the GDK lock */ GDK_THREADS_ENTER(); polled = mn_mailbox_get_poll(MN_MAILBOX(backend->mailbox)); gdk_flush(); GDK_THREADS_LEAVE(); if (polled) { GnomeVFSFileInfo *file_info; gboolean check; /* * We are here because the mailbox has to be polled; only * check it if necessary. */ file_info = gnome_vfs_file_info_new(); result = gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS); g_mutex_lock(selfp->mutex); if (result == GNOME_VFS_OK && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE) != 0 && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MTIME) != 0 && file_info->size == selfp->last_size && file_info->mtime == selfp->last_mtime) { if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_CTIME) != 0) check = file_info->ctime != selfp->last_ctime; else /* * The ctime is often missing for remote mailboxes; * since anyway the size and mtime do not have changed, * we do not check the mailbox. */ check = FALSE; } else check = TRUE; if (check) { selfp->last_size = file_info->size; selfp->last_mtime = file_info->mtime; selfp->last_ctime = file_info->ctime; if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) check = FALSE; } g_mutex_unlock(selfp->mutex); gnome_vfs_file_info_unref(file_info); if (! check) return; } g_mutex_lock(selfp->mutex); uri_set = selfp->uri != NULL; g_mutex_unlock(selfp->mutex); if (! uri_set) { GnomeVFSFileInfo *file_info; GnomeVFSURI *uri; gboolean aborted; file_info = gnome_vfs_file_info_new(); if (gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK) uri = self_get_uncompressed_uri(backend->mailbox->vfs_uri, file_info); gnome_vfs_file_info_unref(file_info); if (! uri) uri = gnome_vfs_uri_ref(backend->mailbox->vfs_uri); g_mutex_lock(selfp->mutex); if (! selfp->uri) { selfp->uri = uri; uri = NULL; } aborted = mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id); g_mutex_unlock(selfp->mutex); if (uri) gnome_vfs_uri_unref(uri); if (aborted) return; } parser = self_parser_new(selfp->uri, &result); if (parser) { GSList *messages = NULL; while (! g_mime_parser_eos(parser)) { GMimeMessage *mime_message; if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) break; mime_message = g_mime_parser_construct_message(parser); if (mime_message) { MNMessage *message; message = self_get_new_message(self, mime_message); g_object_unref(mime_message); if (message) messages = g_slist_prepend(messages, message); } } g_object_unref(parser); GDK_THREADS_ENTER(); if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages); mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); return; /* success */ } if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to open mailbox: %s"), gnome_vfs_result_to_string(result)); gdk_flush(); GDK_THREADS_LEAVE(); } }} #line 536 "mn-base-mbox-mailbox-backend.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 353 "src/mn-base-mbox-mailbox-backend.gob" static MNMessage * mn_base_mbox_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * self, GMimeMessage * mime_message) { #line 544 "mn-base-mbox-mailbox-backend.c" MNBaseMboxMailboxBackendClass *klass; #line 353 "src/mn-base-mbox-mailbox-backend.gob" g_return_val_if_fail (self != NULL, (MNMessage * )0); #line 353 "src/mn-base-mbox-mailbox-backend.gob" g_return_val_if_fail (MN_IS_BASE_MBOX_MAILBOX_BACKEND (self), (MNMessage * )0); #line 353 "src/mn-base-mbox-mailbox-backend.gob" g_return_val_if_fail (mime_message != NULL, (MNMessage * )0); #line 353 "src/mn-base-mbox-mailbox-backend.gob" g_return_val_if_fail (GMIME_IS_MESSAGE (mime_message), (MNMessage * )0); #line 554 "mn-base-mbox-mailbox-backend.c" klass = MN_BASE_MBOX_MAILBOX_BACKEND_GET_CLASS(self); if(klass->get_new_message) return (*klass->get_new_message)(self,mime_message); else return (MNMessage * )(0); } #line 356 "src/mn-base-mbox-mailbox-backend.gob" static GnomeVFSURI * mn_base_mbox_mailbox_backend_get_uncompressed_uri (GnomeVFSURI * uri, GnomeVFSFileInfo * file_info) { #line 567 "mn-base-mbox-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::get_uncompressed_uri" #line 356 "src/mn-base-mbox-mailbox-backend.gob" g_return_val_if_fail (uri != NULL, (GnomeVFSURI * )0); #line 356 "src/mn-base-mbox-mailbox-backend.gob" g_return_val_if_fail (file_info != NULL, (GnomeVFSURI * )0); #line 573 "mn-base-mbox-mailbox-backend.c" { #line 359 "src/mn-base-mbox-mailbox-backend.gob" if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE) != 0 && file_info->mime_type) { /* compression methods supported by GnomeVFS */ static const struct { const char *mime_type; const char *method; } compressions[] = { { "application/x-gzip", "gzip" }, { "application/x-bzip", "bzip2" } }; int i; for (i = 0; i < G_N_ELEMENTS(compressions); i++) if (! strcmp(file_info->mime_type, compressions[i].mime_type)) { char *str; GnomeVFSURI *uncompressed_uri; str = g_strdup_printf("%s%s:/", GNOME_VFS_URI_MAGIC_STR, compressions[i].method); uncompressed_uri = gnome_vfs_uri_append_string(uri, str); g_free(str); return uncompressed_uri; } } return NULL; }} #line 606 "mn-base-mbox-mailbox-backend.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-gmime-stream-vfs-private.h0000644000175000001440000000113311015312647025153 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_GMIME_STREAM_VFS_PRIVATE_H__ #define __MN_GMIME_STREAM_VFS_PRIVATE_H__ #include "mn-gmime-stream-vfs.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNGMimeStreamVFSPrivate { #line 61 "src/mn-gmime-stream-vfs.gob" GnomeVFSHandle * handle; #line 62 "src/mn-gmime-stream-vfs.gob" gboolean handle_owned; #line 64 "src/mn-gmime-stream-vfs.gob" char * uri; #line 65 "src/mn-gmime-stream-vfs.gob" gboolean eof; #line 22 "mn-gmime-stream-vfs-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-vfs-message-private.h0000644000175000001440000000042411015312646024211 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_VFS_MESSAGE_PRIVATE_H__ #define __MN_VFS_MESSAGE_PRIVATE_H__ #include "mn-vfs-message.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-hotmail-mailbox.c0000644000175000001440000004371711015312647023417 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-hotmail-mailbox.h" #include "mn-hotmail-mailbox-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-hotmail-mailbox.gob" #include #include #include "mn-conf.h" #include "mn-webmail-mailbox-private.h" #include "mn-stock.h" #include "mn-util.h" typedef struct { const char *code; const char *folder; } InboxMapping; /* this list is not exhaustive */ static const InboxMapping inbox_mappings_array[] = { { "da", "Indbakke" }, { "de", "Posteingang" }, { "es", "Band. entrada" }, { "fi", "Saapuneet" }, { "fr", "Boîte de réception" }, { "it", "Posta in arrivo" }, { "nl", "Postvak IN" }, { "no", "Innboks" }, { "pl", "Skrzynka odbiorcza" }, { "pt_BR", "Caixa de Entrada" }, { "pt_PT", "A Receber" }, { "sv", "Inkorgen" }, }; static GHashTable *inbox_mappings; #line 59 "mn-hotmail-mailbox.c" /* self casting macros */ #define SELF(x) MN_HOTMAIL_MAILBOX(x) #define SELF_CONST(x) MN_HOTMAIL_MAILBOX_CONST(x) #define IS_SELF(x) MN_IS_HOTMAIL_MAILBOX(x) #define TYPE_SELF MN_TYPE_HOTMAIL_MAILBOX #define SELF_CLASS(x) MN_HOTMAIL_MAILBOX_CLASS(x) #define SELF_GET_CLASS(x) MN_HOTMAIL_MAILBOX_GET_CLASS(x) /* self typedefs */ typedef MNHotmailMailbox Self; typedef MNHotmailMailboxClass SelfClass; /* here are local prototypes */ #line 59 "src/mn-hotmail-mailbox.gob" static void mn_hotmail_mailbox_class_init (MNHotmailMailboxClass * class); #line 76 "mn-hotmail-mailbox.c" #line 71 "src/mn-hotmail-mailbox.gob" static void mn_hotmail_mailbox_init_inbox_mappings (void); #line 79 "mn-hotmail-mailbox.c" #line 86 "src/mn-hotmail-mailbox.gob" static void mn_hotmail_mailbox_init (MNHotmailMailbox * self); #line 82 "mn-hotmail-mailbox.c" #line 92 "src/mn-hotmail-mailbox.gob" static void mn_hotmail_mailbox_parse_language (const char * code, char ** language, char ** country); #line 85 "mn-hotmail-mailbox.c" #line 123 "src/mn-hotmail-mailbox.gob" static const char * mn_hotmail_mailbox_get_localized_folder (const char * folder); #line 88 "mn-hotmail-mailbox.c" #line 165 "src/mn-hotmail-mailbox.gob" static char * mn_hotmail_mailbox_encode_with_character_references (const char * str); #line 91 "mn-hotmail-mailbox.c" #line 185 "src/mn-hotmail-mailbox.gob" static char * mn_hotmail_mailbox_create_config_file (MNHotmailMailbox * self, const char * spool_file, gboolean getlive_pre_1_40, GError ** err); #line 94 "mn-hotmail-mailbox.c" #line 277 "src/mn-hotmail-mailbox.gob" static char * ___8_mn_hotmail_mailbox_get_error_message (MNWebmailMailbox * mailbox, const char * helper_stdout, const char * helper_stderr, gboolean * is_auth_failure); #line 97 "mn-hotmail-mailbox.c" #line 291 "src/mn-hotmail-mailbox.gob" static gboolean mn_hotmail_mailbox_run_getlive (MNHotmailMailbox * self, const char * config_file, GError ** err); #line 100 "mn-hotmail-mailbox.c" #line 304 "src/mn-hotmail-mailbox.gob" static gboolean mn_hotmail_mailbox_get_getlive_cvs_revision (int * major, int * minor); #line 103 "mn-hotmail-mailbox.c" #line 359 "src/mn-hotmail-mailbox.gob" static gboolean ___b_mn_hotmail_mailbox_webmail_check (MNWebmailMailbox * mailbox, GError ** err); #line 106 "mn-hotmail-mailbox.c" /* pointer to the class of our parent */ static MNWebmailMailboxClass *parent_class = NULL; /* Short form macros */ #define self_init_inbox_mappings mn_hotmail_mailbox_init_inbox_mappings #define self_parse_language mn_hotmail_mailbox_parse_language #define self_get_localized_folder mn_hotmail_mailbox_get_localized_folder #define self_encode_with_character_references mn_hotmail_mailbox_encode_with_character_references #define self_create_config_file mn_hotmail_mailbox_create_config_file #define self_run_getlive mn_hotmail_mailbox_run_getlive #define self_get_getlive_cvs_revision mn_hotmail_mailbox_get_getlive_cvs_revision GType mn_hotmail_mailbox_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNHotmailMailboxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_hotmail_mailbox_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNHotmailMailbox), 0 /* n_preallocs */, (GInstanceInitFunc) mn_hotmail_mailbox_init, NULL }; type = g_type_register_static (MN_TYPE_WEBMAIL_MAILBOX, "MNHotmailMailbox", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNHotmailMailbox *)g_object_new(mn_hotmail_mailbox_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNHotmailMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNHotmailMailbox * GET_NEW_VARG (const char *first, ...) { MNHotmailMailbox *ret; va_list ap; va_start (ap, first); ret = (MNHotmailMailbox *)g_object_new_valist (mn_hotmail_mailbox_get_type (), first, ap); va_end (ap); return ret; } #line 59 "src/mn-hotmail-mailbox.gob" static void mn_hotmail_mailbox_class_init (MNHotmailMailboxClass * class G_GNUC_UNUSED) { #line 165 "mn-hotmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::class_init" MNWebmailMailboxClass *mn_webmail_mailbox_class = (MNWebmailMailboxClass *)class; parent_class = g_type_class_ref (MN_TYPE_WEBMAIL_MAILBOX); #line 277 "src/mn-hotmail-mailbox.gob" mn_webmail_mailbox_class->get_error_message = ___8_mn_hotmail_mailbox_get_error_message; #line 359 "src/mn-hotmail-mailbox.gob" mn_webmail_mailbox_class->webmail_check = ___b_mn_hotmail_mailbox_webmail_check; #line 175 "mn-hotmail-mailbox.c" { #line 60 "src/mn-hotmail-mailbox.gob" MN_MAILBOX_CLASS(class)->type = "hotmail"; /* 5 minutes is a good default */ MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5; MN_WEBMAIL_MAILBOX_CLASS(class)->default_domain = "hotmail.com"; self_init_inbox_mappings(); #line 188 "mn-hotmail-mailbox.c" } } #undef __GOB_FUNCTION__ #line 86 "src/mn-hotmail-mailbox.gob" static void mn_hotmail_mailbox_init (MNHotmailMailbox * self G_GNUC_UNUSED) { #line 196 "mn-hotmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::init" { #line 87 "src/mn-hotmail-mailbox.gob" mn_mailbox_set_format(MN_MAILBOX(self), "Windows Live Hotmail"); mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_HOTMAIL); #line 204 "mn-hotmail-mailbox.c" } } #undef __GOB_FUNCTION__ #line 71 "src/mn-hotmail-mailbox.gob" static void mn_hotmail_mailbox_init_inbox_mappings (void) { #line 214 "mn-hotmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::init_inbox_mappings" { #line 73 "src/mn-hotmail-mailbox.gob" int i; inbox_mappings = g_hash_table_new(g_str_hash, g_str_equal); for (i = 0; i < G_N_ELEMENTS(inbox_mappings_array); i++) { const InboxMapping *mapping = &inbox_mappings_array[i]; g_hash_table_insert(inbox_mappings, (gpointer) mapping->code, (gpointer) mapping->folder); } }} #line 230 "mn-hotmail-mailbox.c" #undef __GOB_FUNCTION__ #line 92 "src/mn-hotmail-mailbox.gob" static void mn_hotmail_mailbox_parse_language (const char * code, char ** language, char ** country) { #line 238 "mn-hotmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::parse_language" #line 92 "src/mn-hotmail-mailbox.gob" g_return_if_fail (code != NULL); #line 242 "mn-hotmail-mailbox.c" { #line 96 "src/mn-hotmail-mailbox.gob" char *stripped = NULL; char *sep; /* strip the charset if any */ sep = strchr(code, '.'); if (sep) { stripped = g_strndup(code, sep - code); code = stripped; } sep = strchr(code, '_'); if (sep) { *language = g_strndup(code, sep - code); *country = g_strdup(sep + 1); } else { *language = g_strdup(code); *country = NULL; } g_free(stripped); }} #line 271 "mn-hotmail-mailbox.c" #undef __GOB_FUNCTION__ #line 123 "src/mn-hotmail-mailbox.gob" static const char * mn_hotmail_mailbox_get_localized_folder (const char * folder) { #line 278 "mn-hotmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::get_localized_folder" #line 123 "src/mn-hotmail-mailbox.gob" g_return_val_if_fail (folder != NULL, (const char * )0); #line 282 "mn-hotmail-mailbox.c" { #line 125 "src/mn-hotmail-mailbox.gob" if (! strcmp(folder, "Inbox")) { int i; const char* const *language_codes; language_codes = g_get_language_names(); for (i = 0; language_codes[i]; i++) { const char *code = language_codes[i]; char *language; char *country; const char *mapping = NULL; self_parse_language(code, &language, &country); if (country) { char *full; full = g_strdup_printf("%s_%s", language, country); mapping = g_hash_table_lookup(inbox_mappings, full); g_free(full); } if (! mapping) mapping = g_hash_table_lookup(inbox_mappings, language); g_free(language); g_free(country); if (mapping) return mapping; } } return folder; }} #line 324 "mn-hotmail-mailbox.c" #undef __GOB_FUNCTION__ #line 165 "src/mn-hotmail-mailbox.gob" static char * mn_hotmail_mailbox_encode_with_character_references (const char * str) { #line 331 "mn-hotmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::encode_with_character_references" #line 165 "src/mn-hotmail-mailbox.gob" g_return_val_if_fail (str != NULL, (char * )0); #line 335 "mn-hotmail-mailbox.c" { #line 167 "src/mn-hotmail-mailbox.gob" GString *encoded; const char *p; encoded = g_string_new(NULL); for (p = str; *p; p = g_utf8_next_char(p)) { gunichar c = g_utf8_get_char(p); if (c < 128 && (g_ascii_isalnum(c) || g_ascii_isspace(c) || c == '.')) g_string_append_c(encoded, c); else g_string_append_printf(encoded, "&#%i;", (int) c); } return g_string_free(encoded, FALSE); }} #line 355 "mn-hotmail-mailbox.c" #undef __GOB_FUNCTION__ #line 185 "src/mn-hotmail-mailbox.gob" static char * mn_hotmail_mailbox_create_config_file (MNHotmailMailbox * self, const char * spool_file, gboolean getlive_pre_1_40, GError ** err) { #line 362 "mn-hotmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::create_config_file" #line 185 "src/mn-hotmail-mailbox.gob" g_return_val_if_fail (self != NULL, (char * )0); #line 185 "src/mn-hotmail-mailbox.gob" g_return_val_if_fail (MN_IS_HOTMAIL_MAILBOX (self), (char * )0); #line 185 "src/mn-hotmail-mailbox.gob" g_return_val_if_fail (spool_file != NULL, (char * )0); #line 370 "mn-hotmail-mailbox.c" { #line 190 "src/mn-hotmail-mailbox.gob" char *username; char *domain; const char *localized_folder; char *folder; GString *contents; char *filename; const char *charset; mn_webmail_mailbox_parse_username(MN_WEBMAIL_MAILBOX(self), &username, &domain); contents = g_string_new(NULL); localized_folder = self_get_localized_folder(MN_WEBMAIL_MAILBOX(self)->folder); if (getlive_pre_1_40) folder = self_encode_with_character_references(localized_folder); else folder = g_strdup(localized_folder); g_string_append_printf(contents, "UserName = %s\n" "Domain = %s\n" "Password = %s\n" "FetchOnlyUnread = Yes\n" "Folder = %s\n" "Processor = cat >> '%s'\n" "MarkRead = No\n", username, domain, MN_AUTHENTICATED_MAILBOX(self)->runtime_password, folder, spool_file); g_free(username); g_free(domain); g_free(folder); if (mn_conf_get_bool(MN_CONF_SYSTEM_HTTP_PROXY_USE_HTTP_PROXY)) { char *host; host = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_HOST); if (host && *host) { g_string_append_printf(contents, "Proxy = %s:%i\n", host, mn_conf_get_int(MN_CONF_SYSTEM_HTTP_PROXY_PORT)); if (mn_conf_get_bool(MN_CONF_SYSTEM_HTTP_PROXY_USE_AUTHENTICATION)) { char *user; char *password; user = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_AUTHENTICATION_USER); password = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_AUTHENTICATION_PASSWORD); if (user && *user && password && *password) g_string_append_printf(contents, "ProxyAuth = %s:%s\n", user, password); g_free(user); g_free(password); } } g_free(host); } mn_webmail_mailbox_print_config(MN_WEBMAIL_MAILBOX(self), contents->str); /* * As of this commit: * * http://getlive.cvs.sourceforge.net/getlive/GetLive/GetLive.pl?r1=1.39&r2=1.40 * * GetLive expects the config file to be encoded in the charset of * the user's locale. */ if (getlive_pre_1_40) charset = "UTF-8"; else g_get_charset(&charset); filename = mn_webmail_mailbox_write_temporary_file(contents->str, charset, err); g_string_free(contents, TRUE); return filename; }} #line 459 "mn-hotmail-mailbox.c" #undef __GOB_FUNCTION__ #line 277 "src/mn-hotmail-mailbox.gob" static char * ___8_mn_hotmail_mailbox_get_error_message (MNWebmailMailbox * mailbox G_GNUC_UNUSED, const char * helper_stdout, const char * helper_stderr, gboolean * is_auth_failure) #line 465 "mn-hotmail-mailbox.c" #define PARENT_HANDLER(___mailbox,___helper_stdout,___helper_stderr,___is_auth_failure) \ ((MN_WEBMAIL_MAILBOX_CLASS(parent_class)->get_error_message)? \ (* MN_WEBMAIL_MAILBOX_CLASS(parent_class)->get_error_message)(___mailbox,___helper_stdout,___helper_stderr,___is_auth_failure): \ ((char * )0)) { #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::get_error_message" { #line 282 "src/mn-hotmail-mailbox.gob" if (helper_stderr && mn_ascii_strcasestr(helper_stderr, "error logging in")) { *is_auth_failure = TRUE; return g_strdup(_("authentication failed")); } return NULL; }} #line 482 "mn-hotmail-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 291 "src/mn-hotmail-mailbox.gob" static gboolean mn_hotmail_mailbox_run_getlive (MNHotmailMailbox * self, const char * config_file, GError ** err) { #line 490 "mn-hotmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::run_getlive" #line 291 "src/mn-hotmail-mailbox.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 291 "src/mn-hotmail-mailbox.gob" g_return_val_if_fail (MN_IS_HOTMAIL_MAILBOX (self), (gboolean )0); #line 291 "src/mn-hotmail-mailbox.gob" g_return_val_if_fail (config_file != NULL, (gboolean )0); #line 498 "mn-hotmail-mailbox.c" { #line 293 "src/mn-hotmail-mailbox.gob" char *command; gboolean status; command = g_strdup_printf("GetLive --config-file %s", config_file); status = mn_webmail_mailbox_run_helper(MN_WEBMAIL_MAILBOX(self), "GetLive", command, err); g_free(command); return status; }} #line 511 "mn-hotmail-mailbox.c" #undef __GOB_FUNCTION__ #line 304 "src/mn-hotmail-mailbox.gob" static gboolean mn_hotmail_mailbox_get_getlive_cvs_revision (int * major, int * minor) { #line 518 "mn-hotmail-mailbox.c" #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::get_getlive_cvs_revision" #line 304 "src/mn-hotmail-mailbox.gob" g_return_val_if_fail (major != NULL, (gboolean )0); #line 304 "src/mn-hotmail-mailbox.gob" g_return_val_if_fail (minor != NULL, (gboolean )0); #line 524 "mn-hotmail-mailbox.c" { #line 306 "src/mn-hotmail-mailbox.gob" char *getlive_stderr; char **lines; int i; if (! g_spawn_command_line_sync("GetLive --version", NULL, &getlive_stderr, NULL, NULL)) return FALSE; lines = g_strsplit(getlive_stderr, "\n", 0); g_free(getlive_stderr); for (i = 0; lines[i]; i++) { char *str; str = mn_strstr_span(lines[i], "GetLive $Revision: "); if (str) { char *end; end = strchr(str, ' '); if (end) { char *rev; char **versions; rev = g_strndup(str, end - str); versions = g_strsplit(rev, ".", 0); g_free(rev); if (g_strv_length(versions) >= 2 && mn_str_isnumeric(versions[0]) && mn_str_isnumeric(versions[1])) { *major = atoi(versions[0]); *minor = atoi(versions[1]); g_strfreev(versions); g_strfreev(lines); return TRUE; } g_strfreev(versions); } } } g_strfreev(lines); return FALSE; }} #line 579 "mn-hotmail-mailbox.c" #undef __GOB_FUNCTION__ #line 359 "src/mn-hotmail-mailbox.gob" static gboolean ___b_mn_hotmail_mailbox_webmail_check (MNWebmailMailbox * mailbox G_GNUC_UNUSED, GError ** err) #line 585 "mn-hotmail-mailbox.c" #define PARENT_HANDLER(___mailbox,___err) \ ((MN_WEBMAIL_MAILBOX_CLASS(parent_class)->webmail_check)? \ (* MN_WEBMAIL_MAILBOX_CLASS(parent_class)->webmail_check)(___mailbox,___err): \ ((gboolean )0)) { #define __GOB_FUNCTION__ "MN:Hotmail:Mailbox::webmail_check" { #line 361 "src/mn-hotmail-mailbox.gob" Self *self = SELF(mailbox); int getlive_major; int getlive_minor; gboolean getlive_pre_1_40; char *spool_file; char *config_file = NULL; gboolean status = FALSE; /* see https://sourceforge.net/tracker/?func=detail&atid=948290&aid=1881842&group_id=194154 */ getlive_pre_1_40 = ! self_get_getlive_cvs_revision(&getlive_major, &getlive_minor) || getlive_major < 1 || (getlive_major == 1 && getlive_minor < 40); /* * We create an empty spool file beforehand to make sure it is not * world-readable. */ spool_file = mn_webmail_mailbox_create_spool_file(err); if (! spool_file) return FALSE; config_file = self_create_config_file(self, spool_file, getlive_pre_1_40, err); if (! config_file) goto end; if (! self_run_getlive(self, config_file, err)) goto end; if (! mn_webmail_mailbox_read_spool_file(mailbox, spool_file, err)) goto end; status = TRUE; end: unlink(spool_file); g_free(spool_file); if (config_file) { unlink(config_file); g_free(config_file); } return status; }} #line 640 "mn-hotmail-mailbox.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER mail-notification-5.4.dfsg.1/build/src/mn-gmail-mailbox.gob.stamp0000644000175000001440000000000011015312646024474 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-system-vfs-mailbox-properties.c0000644000175000001440000001535411015312647026270 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-system-vfs-mailbox-properties.h" #include "mn-system-vfs-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-system-vfs-mailbox-properties.gob" #include #include #include "mn-mailbox-properties-private.h" #include "mn-system-vfs-mailbox.h" #include "mn-stock.h" #line 34 "mn-system-vfs-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_SYSTEM_VFS_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_SYSTEM_VFS_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_SYSTEM_VFS_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_SYSTEM_VFS_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_SYSTEM_VFS_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_SYSTEM_VFS_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNSystemVFSMailboxProperties Self; typedef MNSystemVFSMailboxPropertiesClass SelfClass; /* here are local prototypes */ static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 40 "src/mn-system-vfs-mailbox-properties.gob" static void mn_system_vfs_mailbox_properties_class_init (MNSystemVFSMailboxPropertiesClass * class); #line 52 "mn-system-vfs-mailbox-properties.c" #line 49 "src/mn-system-vfs-mailbox-properties.gob" static void mn_system_vfs_mailbox_properties_init (MNSystemVFSMailboxProperties * self); #line 55 "mn-system-vfs-mailbox-properties.c" enum { PROP_0, PROP_COMPLETE, PROP_DEFAULT_NAME }; /* pointer to the class of our parent */ static MNMailboxPropertiesClass *parent_class = NULL; GType mn_system_vfs_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNSystemVFSMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_system_vfs_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNSystemVFSMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_system_vfs_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_MAILBOX_PROPERTIES, "MNSystemVFSMailboxProperties", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNSystemVFSMailboxProperties *)g_object_new(mn_system_vfs_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNSystemVFSMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNSystemVFSMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNSystemVFSMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNSystemVFSMailboxProperties *)g_object_new_valist (mn_system_vfs_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } #line 40 "src/mn-system-vfs-mailbox-properties.gob" static void mn_system_vfs_mailbox_properties_class_init (MNSystemVFSMailboxPropertiesClass * class G_GNUC_UNUSED) { #line 112 "mn-system-vfs-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox:Properties::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; parent_class = g_type_class_ref (MN_TYPE_MAILBOX_PROPERTIES); g_object_class->get_property = ___object_get_property; { g_object_class_override_property (g_object_class, PROP_COMPLETE, "complete"); g_object_class_override_property (g_object_class, PROP_DEFAULT_NAME, "default_name"); } { #line 41 "src/mn-system-vfs-mailbox-properties.gob" MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "system-vfs"; p_class->stock_id = MN_STOCK_SYSTEM_MAILBOX; p_class->combo_label = _("System mailbox"); #line 136 "mn-system-vfs-mailbox-properties.c" } } #undef __GOB_FUNCTION__ #line 49 "src/mn-system-vfs-mailbox-properties.gob" static void mn_system_vfs_mailbox_properties_init (MNSystemVFSMailboxProperties * self G_GNUC_UNUSED) { #line 144 "mn-system-vfs-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox:Properties::init" { #line 50 "src/mn-system-vfs-mailbox-properties.gob" MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); GtkWidget *location_vbox; GtkWidget *label; const char *system_uri; /* translators: header capitalization */ location_vbox = mn_mailbox_properties_add_general_section(properties, _("Location")); label = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_label_set_selectable(GTK_LABEL(label), TRUE); system_uri = mn_system_vfs_mailbox_get_uri(); if (system_uri) { char *path; char *markup; path = gnome_vfs_get_local_path_from_uri(system_uri); markup = g_markup_printf_escaped(_("Your system mailbox is %s."), path ? path : system_uri); gtk_label_set_markup(GTK_LABEL(label), markup); g_free(markup); g_free(path); } else gtk_label_set_text(GTK_LABEL(label), _("The location of your system mailbox could not be detected. Check the MAIL environment variable.")); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(location_vbox), label, FALSE, FALSE, 0); #line 183 "mn-system-vfs-mailbox-properties.c" } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox:Properties::get_property" { MNSystemVFSMailboxProperties *self G_GNUC_UNUSED; self = MN_SYSTEM_VFS_MAILBOX_PROPERTIES (object); switch (property_id) { case PROP_COMPLETE: { #line 35 "src/mn-system-vfs-mailbox-properties.gob" g_value_set_boolean(VAL, mn_system_vfs_mailbox_get_uri() != NULL); #line 204 "mn-system-vfs-mailbox-properties.c" } break; case PROP_DEFAULT_NAME: { #line 38 "src/mn-system-vfs-mailbox-properties.gob" g_value_set_string(VAL, _("System mailbox")); #line 211 "mn-system-vfs-mailbox-properties.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-maildir-mailbox-backend-private.h0000644000175000001440000000047011015312645026430 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_MAILDIR_MAILBOX_BACKEND_PRIVATE_H__ #define __MN_MAILDIR_MAILBOX_BACKEND_PRIVATE_H__ #include "mn-maildir-mailbox-backend.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-client-private.h0000644000175000001440000000070011015312647025267 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_EVOLUTION_CLIENT_PRIVATE_H__ #define __MN_EVOLUTION_CLIENT_PRIVATE_H__ #include "mn-evolution-client.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNEvolutionClientPrivate { #line 41 "src/mn-evolution-client.gob" gboolean name_owner_signal_connected; #line 16 "mn-evolution-client-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-server.c0000644000175000001440000006103711015312644023651 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-evolution-server.h" #include "mn-evolution-server-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-evolution-server.gob" #include #include #include #include #include #include #include #include #include #include #include "mn-evolution.h" #include "mn-evolution-folder-tree-server.h" #include "mn-evolution-plugin.h" /* see https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=208774 */ static GHashTable *folders = NULL; typedef struct { char *uri; CamelFolder *folder; } FolderInfo; #define MN_EVOLUTION_SERVER_ERROR (mn_evolution_server_error_quark()) typedef enum { MN_EVOLUTION_SERVER_ERROR_FOLDER_NOT_FOUND, MN_EVOLUTION_SERVER_ERROR_MESSAGE_NOT_FOUND, MN_EVOLUTION_SERVER_ERROR_FOLDER_TREE_REGISTRATION_FAILED, } MNEvolutionServerError; #line 60 "mn-evolution-server.c" /* self casting macros */ #define SELF(x) MN_EVOLUTION_SERVER(x) #define SELF_CONST(x) MN_EVOLUTION_SERVER_CONST(x) #define IS_SELF(x) MN_IS_EVOLUTION_SERVER(x) #define TYPE_SELF MN_TYPE_EVOLUTION_SERVER #define SELF_CLASS(x) MN_EVOLUTION_SERVER_CLASS(x) #define SELF_GET_CLASS(x) MN_EVOLUTION_SERVER_GET_CLASS(x) /* self typedefs */ typedef MNEvolutionServer Self; typedef MNEvolutionServerClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-evolution-server.gob" static void mn_evolution_server_init (MNEvolutionServer * o); #line 77 "mn-evolution-server.c" #line 75 "src/mn-evolution-server.gob" static void mn_evolution_server_class_init (MNEvolutionServerClass * class); #line 80 "mn-evolution-server.c" #line 80 "src/mn-evolution-server.gob" static GQuark mn_evolution_server_error_quark (void); #line 83 "mn-evolution-server.c" #line 86 "src/mn-evolution-server.gob" static void mn_evolution_server_cache_folder (const char * uri, CamelFolder * folder); #line 86 "mn-evolution-server.c" #line 103 "src/mn-evolution-server.gob" static void mn_evolution_server_folder_info_free (FolderInfo * info); #line 89 "mn-evolution-server.c" #line 112 "src/mn-evolution-server.gob" static void mn_evolution_server_folder_deleted_cb (CamelObject * object, gpointer event_data, gpointer user_data); #line 92 "mn-evolution-server.c" #line 124 "src/mn-evolution-server.gob" static CamelFolder * mn_evolution_server_lookup_folder (const char * uri, GError ** err); #line 95 "mn-evolution-server.c" #line 158 "src/mn-evolution-server.gob" static GValueArray * mn_evolution_server_value_array_new (GType type, ...); #line 98 "mn-evolution-server.c" #line 188 "src/mn-evolution-server.gob" static GValueArray * mn_evolution_server_camel_message_info_to_dbus_struct (CamelMessageInfo * info); #line 101 "mn-evolution-server.c" #line 216 "src/mn-evolution-server.gob" static gboolean mn_evolution_server_get_unseen_messages (MNEvolutionServer * self, const char * folder_uri, GPtrArray ** ret, GError ** err); #line 104 "mn-evolution-server.c" #line 253 "src/mn-evolution-server.gob" static gboolean mn_evolution_server_get_folder_name (MNEvolutionServer * self, const char * folder_uri, char ** ret, GError ** err); #line 107 "mn-evolution-server.c" #line 275 "src/mn-evolution-server.gob" static gboolean mn_evolution_server_open_message (MNEvolutionServer * self, const char * folder_uri, const char * message_uid, GError ** err); #line 110 "mn-evolution-server.c" #line 307 "src/mn-evolution-server.gob" static gboolean mn_evolution_server_set_message_flags (MNEvolutionServer * self, const char * folder_uri, const char * message_uid, unsigned int flags, GError ** err); #line 113 "mn-evolution-server.c" #line 337 "src/mn-evolution-server.gob" static gboolean mn_evolution_server_folder_tree_new (MNEvolutionServer * self, guint32 id, GError ** err); #line 116 "mn-evolution-server.c" /* * Signal connection wrapper macro shortcuts */ #define self_connect__folder_changed(object,func,data) mn_evolution_server_connect__folder_changed((object),(func),(data)) #define self_connect_after__folder_changed(object,func,data) mn_evolution_server_connect_after__folder_changed((object),(func),(data)) #define self_connect_data__folder_changed(object,func,data,destroy_data,flags) mn_evolution_server_connect_data__folder_changed((object),(func),(data),(destroy_data),(flags)) #define self_connect__message_reading(object,func,data) mn_evolution_server_connect__message_reading((object),(func),(data)) #define self_connect_after__message_reading(object,func,data) mn_evolution_server_connect_after__message_reading((object),(func),(data)) #define self_connect_data__message_reading(object,func,data,destroy_data,flags) mn_evolution_server_connect_data__message_reading((object),(func),(data),(destroy_data),(flags)) typedef void (*___Sig1) (MNEvolutionServer *, gchar *, gpointer); static void ___marshal_Sig1 (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { register ___Sig1 callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; g_return_if_fail (n_param_values == 2); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (___Sig1) (marshal_data != NULL ? marshal_data : cc->callback); callback ((MNEvolutionServer *)data1, (gchar *) g_value_get_string (param_values + 1), data2); } enum { FOLDER_CHANGED_SIGNAL, MESSAGE_READING_SIGNAL, LAST_SIGNAL }; static guint object_signals[LAST_SIGNAL] = {0}; /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_folder_changed mn_evolution_server_folder_changed #define self_message_reading mn_evolution_server_message_reading #define self_error_quark mn_evolution_server_error_quark #define self_cache_folder mn_evolution_server_cache_folder #define self_folder_info_free mn_evolution_server_folder_info_free #define self_folder_deleted_cb mn_evolution_server_folder_deleted_cb #define self_lookup_folder mn_evolution_server_lookup_folder #define self_value_array_new mn_evolution_server_value_array_new #define self_camel_message_info_to_dbus_struct mn_evolution_server_camel_message_info_to_dbus_struct #define self_get_unseen_messages mn_evolution_server_get_unseen_messages #define self_get_folder_name mn_evolution_server_get_folder_name #define self_open_message mn_evolution_server_open_message #define self_set_message_flags mn_evolution_server_set_message_flags #define self_folder_tree_new mn_evolution_server_folder_tree_new #define self_new mn_evolution_server_new GType mn_evolution_server_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNEvolutionServerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_evolution_server_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNEvolutionServer), 0 /* n_preallocs */, (GInstanceInitFunc) mn_evolution_server_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNEvolutionServer", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNEvolutionServer *)g_object_new(mn_evolution_server_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNEvolutionServer * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNEvolutionServer * GET_NEW_VARG (const char *first, ...) { MNEvolutionServer *ret; va_list ap; va_start (ap, first); ret = (MNEvolutionServer *)g_object_new_valist (mn_evolution_server_get_type (), first, ap); va_end (ap); return ret; } #line 58 "src/mn-evolution-server.gob" #include "mn-evolution-server-dbus.h" #line 234 "mn-evolution-server.c" static void mn_evolution_server_init (MNEvolutionServer * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Evolution:Server::init" } #undef __GOB_FUNCTION__ #line 75 "src/mn-evolution-server.gob" static void mn_evolution_server_class_init (MNEvolutionServerClass * class G_GNUC_UNUSED) { #line 245 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class; parent_class = g_type_class_ref (G_TYPE_OBJECT); object_signals[FOLDER_CHANGED_SIGNAL] = g_signal_new ("folder_changed", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNEvolutionServerClass, folder_changed), NULL, NULL, ___marshal_Sig1, G_TYPE_NONE, 1, G_TYPE_STRING); if ___GOB_UNLIKELY(sizeof(const char * ) != sizeof(gchar *) || parent_class == NULL /* avoid warning */) { g_error("src/mn-evolution-server.gob line 69: Type mismatch of \"folder_changed\" signal signature"); } object_signals[MESSAGE_READING_SIGNAL] = g_signal_new ("message_reading", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), G_STRUCT_OFFSET (MNEvolutionServerClass, message_reading), NULL, NULL, ___marshal_Sig1, G_TYPE_NONE, 1, G_TYPE_STRING); if ___GOB_UNLIKELY(sizeof(const char * ) != sizeof(gchar *) || parent_class == NULL /* avoid warning */) { g_error("src/mn-evolution-server.gob line 72: Type mismatch of \"message_reading\" signal signature"); } class->folder_changed = NULL; class->message_reading = NULL; { #line 76 "src/mn-evolution-server.gob" dbus_g_object_type_install_info(TYPE_SELF, &dbus_glib_mn_evolution_server_object_info); #line 283 "mn-evolution-server.c" } } #undef __GOB_FUNCTION__ #line 69 "src/mn-evolution-server.gob" void mn_evolution_server_folder_changed (MNEvolutionServer * self, const char * uri) { #line 293 "mn-evolution-server.c" GValue ___param_values[2]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 69 "src/mn-evolution-server.gob" g_return_if_fail (self != NULL); #line 69 "src/mn-evolution-server.gob" g_return_if_fail (MN_IS_EVOLUTION_SERVER (self)); #line 69 "src/mn-evolution-server.gob" g_return_if_fail (uri != NULL); #line 306 "mn-evolution-server.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); ___param_values[1].g_type = 0; g_value_init (&___param_values[1], G_TYPE_STRING); g_value_set_static_string (&___param_values[1], (gchar *) uri); g_signal_emitv (___param_values, object_signals[FOLDER_CHANGED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); g_value_unset (&___param_values[1]); } #line 72 "src/mn-evolution-server.gob" void mn_evolution_server_message_reading (MNEvolutionServer * self, const char * uri) { #line 329 "mn-evolution-server.c" GValue ___param_values[2]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 72 "src/mn-evolution-server.gob" g_return_if_fail (self != NULL); #line 72 "src/mn-evolution-server.gob" g_return_if_fail (MN_IS_EVOLUTION_SERVER (self)); #line 72 "src/mn-evolution-server.gob" g_return_if_fail (uri != NULL); #line 342 "mn-evolution-server.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); ___param_values[1].g_type = 0; g_value_init (&___param_values[1], G_TYPE_STRING); g_value_set_static_string (&___param_values[1], (gchar *) uri); g_signal_emitv (___param_values, object_signals[MESSAGE_READING_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); g_value_unset (&___param_values[1]); } #line 80 "src/mn-evolution-server.gob" static GQuark mn_evolution_server_error_quark (void) { #line 366 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::error_quark" { #line 82 "src/mn-evolution-server.gob" return g_quark_from_static_string("mn-evolution-server-error"); }} #line 373 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 86 "src/mn-evolution-server.gob" static void mn_evolution_server_cache_folder (const char * uri, CamelFolder * folder) { #line 380 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::cache_folder" #line 86 "src/mn-evolution-server.gob" g_return_if_fail (uri != NULL); #line 86 "src/mn-evolution-server.gob" g_return_if_fail (folder != NULL); #line 386 "mn-evolution-server.c" { #line 89 "src/mn-evolution-server.gob" FolderInfo *info; info = g_new0(FolderInfo, 1); info->uri = g_strdup(uri); info->folder = folder; camel_object_ref(folder); /* uncache the folder when it is deleted */ camel_object_hook_event(folder, "deleted", self_folder_deleted_cb, info); g_hash_table_replace(folders, info->uri, info); }} #line 402 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 103 "src/mn-evolution-server.gob" static void mn_evolution_server_folder_info_free (FolderInfo * info) { #line 409 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::folder_info_free" #line 103 "src/mn-evolution-server.gob" g_return_if_fail (info != NULL); #line 413 "mn-evolution-server.c" { #line 105 "src/mn-evolution-server.gob" camel_object_unhook_event(info->folder, "deleted", self_folder_deleted_cb, info); camel_object_unref(info->folder); g_free(info->uri); g_free(info); }} #line 422 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 112 "src/mn-evolution-server.gob" static void mn_evolution_server_folder_deleted_cb (CamelObject * object, gpointer event_data, gpointer user_data) { #line 429 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::folder_deleted_cb" { #line 116 "src/mn-evolution-server.gob" FolderInfo *info = user_data; gboolean status; status = g_hash_table_remove(folders, info->uri); g_assert(status == TRUE); }} #line 440 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 124 "src/mn-evolution-server.gob" static CamelFolder * mn_evolution_server_lookup_folder (const char * uri, GError ** err) { #line 447 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::lookup_folder" #line 124 "src/mn-evolution-server.gob" g_return_val_if_fail (uri != NULL, (CamelFolder * )0); #line 451 "mn-evolution-server.c" { #line 126 "src/mn-evolution-server.gob" CamelFolder *folder = NULL; if (folders) { FolderInfo *info; info = g_hash_table_lookup(folders, uri); if (info) { folder = info->folder; camel_object_ref(folder); } } else folders = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) self_folder_info_free); if (! folder) { folder = mail_tool_uri_to_folder(uri, 0, NULL); if (folder) self_cache_folder(uri, folder); else g_set_error(err, MN_EVOLUTION_SERVER_ERROR, MN_EVOLUTION_SERVER_ERROR_FOLDER_NOT_FOUND, dgettext(GETTEXT_PACKAGE, "folder not found")); } return folder; }} #line 485 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 158 "src/mn-evolution-server.gob" static GValueArray * mn_evolution_server_value_array_new (GType type, ...) { #line 492 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::value_array_new" { #line 160 "src/mn-evolution-server.gob" GValueArray *value_array; va_list args; value_array = g_value_array_new(0); va_start(args, type); while (type) { GValue value = { 0, }; char *error = NULL; g_value_init(&value, type); G_VALUE_COLLECT(&value, args, 0, &error); g_assert(error == NULL); g_value_array_append(value_array, &value); g_value_unset(&value); type = va_arg(args, GType); } va_end(args); return value_array; }} #line 523 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 188 "src/mn-evolution-server.gob" static GValueArray * mn_evolution_server_camel_message_info_to_dbus_struct (CamelMessageInfo * info) { #line 530 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::camel_message_info_to_dbus_struct" #line 188 "src/mn-evolution-server.gob" g_return_val_if_fail (info != NULL, (GValueArray * )0); #line 534 "mn-evolution-server.c" { #line 190 "src/mn-evolution-server.gob" const CamelSummaryMessageID *id; char hexhash[sizeof(CamelSummaryMessageID) * 2 + 1]; int i; id = camel_message_info_message_id(info); for (i = 0; i < sizeof(id->id.hash); i++) sprintf(hexhash + i * 2, "%.2x", id->id.hash[i]); g_assert(camel_message_info_uid(info) != NULL); return self_value_array_new(/* char *uid */ G_TYPE_STRING, camel_message_info_uid(info), /* unsigned int sent_time */ G_TYPE_UINT, (unsigned int) camel_message_info_date_sent(info), /* unsigned int received_time */ G_TYPE_UINT, (unsigned int) camel_message_info_date_received(info), /* char *id */ G_TYPE_STRING, hexhash, /* char *from */ G_TYPE_STRING, camel_message_info_from(info), /* char *subject */ G_TYPE_STRING, camel_message_info_subject(info), (GType) 0); }} #line 562 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 216 "src/mn-evolution-server.gob" static gboolean mn_evolution_server_get_unseen_messages (MNEvolutionServer * self, const char * folder_uri, GPtrArray ** ret, GError ** err) { #line 569 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::get_unseen_messages" #line 216 "src/mn-evolution-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 216 "src/mn-evolution-server.gob" g_return_val_if_fail (MN_IS_EVOLUTION_SERVER (self), (gboolean )0); #line 216 "src/mn-evolution-server.gob" g_return_val_if_fail (folder_uri != NULL, (gboolean )0); #line 216 "src/mn-evolution-server.gob" g_return_val_if_fail (ret != NULL, (gboolean )0); #line 579 "mn-evolution-server.c" { #line 221 "src/mn-evolution-server.gob" CamelFolder *folder; GDK_THREADS_ENTER(); folder = self_lookup_folder(folder_uri, err); if (folder) { GPtrArray *summary; int i; *ret = g_ptr_array_new(); summary = camel_folder_get_summary(folder); for (i = 0; i < summary->len; i++) { CamelMessageInfo *info = summary->pdata[i]; if ((camel_message_info_flags(info) & CAMEL_MESSAGE_SEEN) == 0) g_ptr_array_add(*ret, self_camel_message_info_to_dbus_struct(info)); } camel_folder_free_summary(folder, summary); camel_object_unref(folder); } GDK_THREADS_LEAVE(); return folder != NULL; }} #line 613 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 253 "src/mn-evolution-server.gob" static gboolean mn_evolution_server_get_folder_name (MNEvolutionServer * self, const char * folder_uri, char ** ret, GError ** err) { #line 620 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::get_folder_name" #line 253 "src/mn-evolution-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 253 "src/mn-evolution-server.gob" g_return_val_if_fail (MN_IS_EVOLUTION_SERVER (self), (gboolean )0); #line 253 "src/mn-evolution-server.gob" g_return_val_if_fail (folder_uri != NULL, (gboolean )0); #line 253 "src/mn-evolution-server.gob" g_return_val_if_fail (ret != NULL, (gboolean )0); #line 630 "mn-evolution-server.c" { #line 258 "src/mn-evolution-server.gob" CamelFolder *folder; GDK_THREADS_ENTER(); folder = self_lookup_folder(folder_uri, err); if (folder) { *ret = g_strdup(camel_folder_get_name(folder)); camel_object_unref(folder); } GDK_THREADS_LEAVE(); return folder != NULL; }} #line 649 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 275 "src/mn-evolution-server.gob" static gboolean mn_evolution_server_open_message (MNEvolutionServer * self, const char * folder_uri, const char * message_uid, GError ** err) { #line 656 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::open_message" #line 275 "src/mn-evolution-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 275 "src/mn-evolution-server.gob" g_return_val_if_fail (MN_IS_EVOLUTION_SERVER (self), (gboolean )0); #line 275 "src/mn-evolution-server.gob" g_return_val_if_fail (folder_uri != NULL, (gboolean )0); #line 275 "src/mn-evolution-server.gob" g_return_val_if_fail (message_uid != NULL, (gboolean )0); #line 666 "mn-evolution-server.c" { #line 280 "src/mn-evolution-server.gob" CamelFolder *folder; GDK_THREADS_ENTER(); folder = self_lookup_folder(folder_uri, err); if (folder) { GtkWidget *browser; /* modelled after Evolution's handleuri_got_folder() */ browser = em_message_browser_window_new(); em_format_set_session((EMFormat *) ((EMFolderView *) browser)->preview, session); em_folder_view_set_folder((EMFolderView *) browser, folder, folder_uri); em_folder_view_set_message((EMFolderView *) browser, message_uid, FALSE); gtk_widget_show(((EMMessageBrowser *) browser)->window); camel_object_unref(folder); } GDK_THREADS_LEAVE(); return folder != NULL; }} #line 695 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 307 "src/mn-evolution-server.gob" static gboolean mn_evolution_server_set_message_flags (MNEvolutionServer * self, const char * folder_uri, const char * message_uid, unsigned int flags, GError ** err) { #line 702 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::set_message_flags" #line 307 "src/mn-evolution-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 307 "src/mn-evolution-server.gob" g_return_val_if_fail (MN_IS_EVOLUTION_SERVER (self), (gboolean )0); #line 307 "src/mn-evolution-server.gob" g_return_val_if_fail (folder_uri != NULL, (gboolean )0); #line 307 "src/mn-evolution-server.gob" g_return_val_if_fail (message_uid != NULL, (gboolean )0); #line 712 "mn-evolution-server.c" { #line 313 "src/mn-evolution-server.gob" CamelFolder *folder; gboolean status = FALSE; GDK_THREADS_ENTER(); folder = self_lookup_folder(folder_uri, err); if (folder) { status = camel_folder_set_message_flags(folder, message_uid, flags, flags); camel_object_unref(folder); if (! status) g_set_error(err, MN_EVOLUTION_SERVER_ERROR, MN_EVOLUTION_SERVER_ERROR_MESSAGE_NOT_FOUND, dgettext(GETTEXT_PACKAGE, "message not found")); } GDK_THREADS_LEAVE(); return status; }} #line 738 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 337 "src/mn-evolution-server.gob" static gboolean mn_evolution_server_folder_tree_new (MNEvolutionServer * self, guint32 id, GError ** err) { #line 745 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::folder_tree_new" #line 337 "src/mn-evolution-server.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 337 "src/mn-evolution-server.gob" g_return_val_if_fail (MN_IS_EVOLUTION_SERVER (self), (gboolean )0); #line 751 "mn-evolution-server.c" { #line 339 "src/mn-evolution-server.gob" MNEvolutionFolderTreeServer *tree; char *service; char *path; GError *tmp_err = NULL; gboolean status; GDK_THREADS_ENTER(); tree = mn_evolution_folder_tree_server_new(id); service = g_strdup_printf(MN_EVOLUTION_FOLDER_TREE_SERVER_SERVICE, id); path = g_strdup_printf(MN_EVOLUTION_FOLDER_TREE_SERVER_PATH, id); status = mn_evolution_plugin_register_server(G_OBJECT(tree), service, path, &tmp_err); g_free(service); g_free(path); if (! status) { /* unlikely to ever happen, not worth a translation */ g_set_error(err, MN_EVOLUTION_SERVER_ERROR, MN_EVOLUTION_SERVER_ERROR_FOLDER_TREE_REGISTRATION_FAILED, "cannot register folder tree server: %s", tmp_err->message); g_error_free(tmp_err); g_object_unref(tree); } GDK_THREADS_LEAVE(); return status; }} #line 788 "mn-evolution-server.c" #undef __GOB_FUNCTION__ #line 374 "src/mn-evolution-server.gob" MNEvolutionServer * mn_evolution_server_new (void) { #line 795 "mn-evolution-server.c" #define __GOB_FUNCTION__ "MN:Evolution:Server::new" { #line 376 "src/mn-evolution-server.gob" return GET_NEW; }} #line 802 "mn-evolution-server.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-authenticated-mailbox-properties.c0000644000175000001440000005332411015312646026770 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-authenticated-mailbox-properties.h" #include "mn-authenticated-mailbox-properties-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 29 "src/mn-authenticated-mailbox-properties.gob" #include #include "mn-mailbox-properties-private.h" #include "mn-util.h" #line 32 "mn-authenticated-mailbox-properties.c" /* self casting macros */ #define SELF(x) MN_AUTHENTICATED_MAILBOX_PROPERTIES(x) #define SELF_CONST(x) MN_AUTHENTICATED_MAILBOX_PROPERTIES_CONST(x) #define IS_SELF(x) MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES(x) #define TYPE_SELF MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES #define SELF_CLASS(x) MN_AUTHENTICATED_MAILBOX_PROPERTIES_CLASS(x) #define SELF_GET_CLASS(x) MN_AUTHENTICATED_MAILBOX_PROPERTIES_GET_CLASS(x) /* self typedefs */ typedef MNAuthenticatedMailboxProperties Self; typedef MNAuthenticatedMailboxPropertiesClass SelfClass; /* here are local prototypes */ #line 0 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_class_init (MNAuthenticatedMailboxPropertiesClass * c); #line 49 "mn-authenticated-mailbox-properties.c" #line 50 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_init (MNAuthenticatedMailboxProperties * self); #line 52 "mn-authenticated-mailbox-properties.c" #line 88 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_dispose (MNAuthenticatedMailboxProperties * self); #line 55 "mn-authenticated-mailbox-properties.c" #line 121 "src/mn-authenticated-mailbox-properties.gob" static void ___4_mn_authenticated_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox); #line 58 "mn-authenticated-mailbox-properties.c" #line 146 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_clear_mailbox_callbacks (MNAuthenticatedMailboxProperties * self); #line 61 "mn-authenticated-mailbox-properties.c" #line 163 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_setting_password_notify_h (GObject * object, GParamSpec * pspec, gpointer user_data); #line 64 "mn-authenticated-mailbox-properties.c" #line 182 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_get_password (MNAuthenticatedMailboxProperties * self, MNAuthenticatedMailbox * mailbox); #line 67 "mn-authenticated-mailbox-properties.c" #line 192 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_get_password_cb (GnomeKeyringResult result, GList * list, gpointer data); #line 70 "mn-authenticated-mailbox-properties.c" #line 224 "src/mn-authenticated-mailbox-properties.gob" static MNMailbox * ___9_mn_authenticated_mailbox_properties_get_mailbox (MNMailboxProperties * properties); #line 73 "mn-authenticated-mailbox-properties.c" #line 246 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_set_password_operation (MNAuthenticatedMailboxProperties * self, const char * operation); #line 76 "mn-authenticated-mailbox-properties.c" /* pointer to the class of our parent */ static MNMailboxPropertiesClass *parent_class = NULL; /* Short form macros */ #define self_field_new mn_authenticated_mailbox_properties_field_new #define self_clear_mailbox_callbacks mn_authenticated_mailbox_properties_clear_mailbox_callbacks #define self_setting_password_notify_h mn_authenticated_mailbox_properties_setting_password_notify_h #define self_get_password mn_authenticated_mailbox_properties_get_password #define self_get_password_cb mn_authenticated_mailbox_properties_get_password_cb #define self_set_password_operation mn_authenticated_mailbox_properties_set_password_operation #define self_get_contents mn_authenticated_mailbox_properties_get_contents #define self_is_complete mn_authenticated_mailbox_properties_is_complete GType mn_authenticated_mailbox_properties_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNAuthenticatedMailboxPropertiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_authenticated_mailbox_properties_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNAuthenticatedMailboxProperties), 0 /* n_preallocs */, (GInstanceInitFunc) mn_authenticated_mailbox_properties_init, NULL }; type = g_type_register_static (MN_TYPE_MAILBOX_PROPERTIES, "MNAuthenticatedMailboxProperties", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNAuthenticatedMailboxProperties *)g_object_new(mn_authenticated_mailbox_properties_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNAuthenticatedMailboxProperties * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNAuthenticatedMailboxProperties * GET_NEW_VARG (const char *first, ...) { MNAuthenticatedMailboxProperties *ret; va_list ap; va_start (ap, first); ret = (MNAuthenticatedMailboxProperties *)g_object_new_valist (mn_authenticated_mailbox_properties_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::dispose" MNAuthenticatedMailboxProperties *self G_GNUC_UNUSED = MN_AUTHENTICATED_MAILBOX_PROPERTIES (obj_self); #line 88 "src/mn-authenticated-mailbox-properties.gob" mn_authenticated_mailbox_properties_dispose (self); #line 140 "mn-authenticated-mailbox-properties.c" if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); #line 43 "src/mn-authenticated-mailbox-properties.gob" if(self->password_entry) { g_object_unref ((gpointer) self->password_entry); self->password_entry = NULL; } #line 145 "mn-authenticated-mailbox-properties.c" #line 44 "src/mn-authenticated-mailbox-properties.gob" if(self->_priv->password_operation_label) { g_object_unref ((gpointer) self->_priv->password_operation_label); self->_priv->password_operation_label = NULL; } #line 148 "mn-authenticated-mailbox-properties.c" } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::finalize" MNAuthenticatedMailboxProperties *self G_GNUC_UNUSED = MN_AUTHENTICATED_MAILBOX_PROPERTIES (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_authenticated_mailbox_properties_class_init (MNAuthenticatedMailboxPropertiesClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)c; g_type_class_add_private(c,sizeof(MNAuthenticatedMailboxPropertiesPrivate)); parent_class = g_type_class_ref (MN_TYPE_MAILBOX_PROPERTIES); #line 121 "src/mn-authenticated-mailbox-properties.gob" mn_mailbox_properties_class->set_mailbox = ___4_mn_authenticated_mailbox_properties_set_mailbox; #line 224 "src/mn-authenticated-mailbox-properties.gob" mn_mailbox_properties_class->get_mailbox = ___9_mn_authenticated_mailbox_properties_get_mailbox; #line 179 "mn-authenticated-mailbox-properties.c" g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; } #undef __GOB_FUNCTION__ #line 50 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_init (MNAuthenticatedMailboxProperties * self G_GNUC_UNUSED) { #line 188 "mn-authenticated-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES,MNAuthenticatedMailboxPropertiesPrivate); { #line 51 "src/mn-authenticated-mailbox-properties.gob" MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); const char *username; /* translators: header capitalization */ self->account_vbox = mn_mailbox_properties_add_general_section(properties, _("Account")); self->username_vbox = self_field_new(self, _("_Username:"), &self->username_label, &self->username_entry); self->password_vbox = self_field_new(self, _("_Password:"), &self->password_label, &self->password_entry); selfp->password_operation_label = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(selfp->password_operation_label), 0.0, 0.5); /* * These two widgets will alternate in their parent container so * we need to reference them. */ g_object_ref_sink(self->password_entry); g_object_ref_sink(selfp->password_operation_label); selfp->password_widget = self->password_entry; /* defaults to the login name */ username = g_get_user_name(); if (username) gtk_entry_set_text(GTK_ENTRY(self->username_entry), username); gtk_entry_set_visibility(GTK_ENTRY(self->password_entry), FALSE); #line 228 "mn-authenticated-mailbox-properties.c" } } #undef __GOB_FUNCTION__ #line 88 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_dispose (MNAuthenticatedMailboxProperties * self) { #line 239 "mn-authenticated-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::dispose" { #line 89 "src/mn-authenticated-mailbox-properties.gob" self_clear_mailbox_callbacks(self); }} #line 246 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 93 "src/mn-authenticated-mailbox-properties.gob" GtkWidget * mn_authenticated_mailbox_properties_field_new (MNAuthenticatedMailboxProperties * self, const char * mnemonic, GtkWidget ** label, GtkWidget ** entry) { #line 253 "mn-authenticated-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::field_new" #line 93 "src/mn-authenticated-mailbox-properties.gob" g_return_val_if_fail (self != NULL, (GtkWidget * )0); #line 93 "src/mn-authenticated-mailbox-properties.gob" g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES (self), (GtkWidget * )0); #line 93 "src/mn-authenticated-mailbox-properties.gob" g_return_val_if_fail (mnemonic != NULL, (GtkWidget * )0); #line 93 "src/mn-authenticated-mailbox-properties.gob" g_return_val_if_fail (entry != NULL, (GtkWidget * )0); #line 263 "mn-authenticated-mailbox-properties.c" { #line 98 "src/mn-authenticated-mailbox-properties.gob" GtkWidget *hbox; GtkWidget *_label; _label = gtk_label_new_with_mnemonic(mnemonic); gtk_misc_set_alignment(GTK_MISC(_label), 0.0, 0.5); *entry = gtk_entry_new(); gtk_label_set_mnemonic_widget(GTK_LABEL(_label), *entry); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), _label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), *entry, TRUE, TRUE, 0); gtk_widget_show_all(hbox); gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->label_size_group, _label); if (label) *label = _label; return hbox; }} #line 288 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 121 "src/mn-authenticated-mailbox-properties.gob" static void ___4_mn_authenticated_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox) #line 294 "mn-authenticated-mailbox-properties.c" #define PARENT_HANDLER(___properties,___mailbox) \ { if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); } { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::set_mailbox" { #line 123 "src/mn-authenticated-mailbox-properties.gob" Self *self = SELF(properties); MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); self_clear_mailbox_callbacks(self); gtk_entry_set_text(GTK_ENTRY(self->username_entry), auth_mailbox->username); /* * If the password is currently being saved, wait for that * operation to finish before querying the keyring for the * password. */ if (mn_authenticated_mailbox_get_setting_password(auth_mailbox)) { selfp->mailbox_setting_password = g_object_ref(auth_mailbox); g_signal_connect(auth_mailbox, "notify::setting-password", G_CALLBACK(self_setting_password_notify_h), self); self_set_password_operation(self, _("Saving password to keyring...")); } else self_get_password(self, auth_mailbox); }} #line 324 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 146 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_clear_mailbox_callbacks (MNAuthenticatedMailboxProperties * self) { #line 332 "mn-authenticated-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::clear_mailbox_callbacks" #line 146 "src/mn-authenticated-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 146 "src/mn-authenticated-mailbox-properties.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES (self)); #line 338 "mn-authenticated-mailbox-properties.c" { #line 148 "src/mn-authenticated-mailbox-properties.gob" if (selfp->mailbox_setting_password) { g_signal_handlers_disconnect_by_func(selfp->mailbox_setting_password, self_setting_password_notify_h, self); g_object_unref(selfp->mailbox_setting_password); selfp->mailbox_setting_password = NULL; } if (selfp->get_password_request) { gnome_keyring_cancel_request(selfp->get_password_request); selfp->get_password_request = NULL; } }} #line 355 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 163 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_setting_password_notify_h (GObject * object, GParamSpec * pspec, gpointer user_data) { #line 362 "mn-authenticated-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::setting_password_notify_h" { #line 167 "src/mn-authenticated-mailbox-properties.gob" Self *self = user_data; MNAuthenticatedMailbox *mailbox = MN_AUTHENTICATED_MAILBOX(object); /* * If the password save operation is finished, we can query the * keyring for the password. */ if (! mn_authenticated_mailbox_get_setting_password(mailbox)) { g_signal_handlers_disconnect_by_func(mailbox, self_setting_password_notify_h, self); self_get_password(self, mailbox); } }} #line 380 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 182 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_get_password (MNAuthenticatedMailboxProperties * self, MNAuthenticatedMailbox * mailbox) { #line 387 "mn-authenticated-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::get_password" #line 182 "src/mn-authenticated-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 182 "src/mn-authenticated-mailbox-properties.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES (self)); #line 182 "src/mn-authenticated-mailbox-properties.gob" g_return_if_fail (mailbox != NULL); #line 395 "mn-authenticated-mailbox-properties.c" { #line 184 "src/mn-authenticated-mailbox-properties.gob" self_set_password_operation(self, _("Retrieving password from keyring...")); selfp->get_password_request = mn_authenticated_mailbox_get_password(mailbox, self_get_password_cb, self); }} #line 405 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 192 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_get_password_cb (GnomeKeyringResult result, GList * list, gpointer data) { #line 412 "mn-authenticated-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::get_password_cb" { #line 194 "src/mn-authenticated-mailbox-properties.gob" Self *self = data; const char *password = NULL; /* * If the request was cancelled, it is either from dispose() and * self might already have been finalized (since this is a main * loop callback), or it is from set_mailbox() and the password * will be retrieved again. In both cases we must do nothing. */ if (result == GNOME_KEYRING_RESULT_CANCELLED) return; selfp->get_password_request = NULL; if (result == GNOME_KEYRING_RESULT_OK && list) { GnomeKeyringNetworkPasswordData *password_data = list->data; password = password_data->password; } GDK_THREADS_ENTER(); gtk_entry_set_text(GTK_ENTRY(self->password_entry), password ? password : ""); self_set_password_operation(self, NULL); /* do not call gdk_flush(), we're normally in the main thread */ GDK_THREADS_LEAVE(); }} #line 445 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 224 "src/mn-authenticated-mailbox-properties.gob" static MNMailbox * ___9_mn_authenticated_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED) #line 451 "mn-authenticated-mailbox-properties.c" #define PARENT_HANDLER(___properties) \ ((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \ (* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \ ((MNMailbox * )0)) { #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::get_mailbox" { #line 226 "src/mn-authenticated-mailbox-properties.gob" Self *self = SELF(properties); MNMailbox *mailbox; MNAuthenticatedMailbox *auth_mailbox; const char *username; const char *password; mailbox = PARENT_HANDLER(properties); auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); username = gtk_entry_get_text(GTK_ENTRY(self->username_entry)); password = gtk_entry_get_text(GTK_ENTRY(self->password_entry)); auth_mailbox->username = g_strdup(username); if (*password) auth_mailbox->password = g_strdup(password); return mailbox; }} #line 479 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ #undef PARENT_HANDLER #line 246 "src/mn-authenticated-mailbox-properties.gob" static void mn_authenticated_mailbox_properties_set_password_operation (MNAuthenticatedMailboxProperties * self, const char * operation) { #line 487 "mn-authenticated-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::set_password_operation" #line 246 "src/mn-authenticated-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 246 "src/mn-authenticated-mailbox-properties.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES (self)); #line 493 "mn-authenticated-mailbox-properties.c" { #line 248 "src/mn-authenticated-mailbox-properties.gob" GtkWidget *password_widget; gtk_label_set_text(GTK_LABEL(selfp->password_operation_label), operation); if (operation) password_widget = selfp->password_operation_label; else password_widget = self->password_entry; if (password_widget != selfp->password_widget) { gtk_container_remove(GTK_CONTAINER(self->password_vbox), selfp->password_widget); gtk_box_pack_start(GTK_BOX(self->password_vbox), password_widget, TRUE, TRUE, 0); gtk_widget_show(password_widget); selfp->password_widget = password_widget; mn_mailbox_properties_notify_complete(MN_MAILBOX_PROPERTIES(self)); } }} #line 517 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 270 "src/mn-authenticated-mailbox-properties.gob" void mn_authenticated_mailbox_properties_get_contents (MNAuthenticatedMailboxProperties * self, const char ** username, const char ** password) { #line 524 "mn-authenticated-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::get_contents" #line 270 "src/mn-authenticated-mailbox-properties.gob" g_return_if_fail (self != NULL); #line 270 "src/mn-authenticated-mailbox-properties.gob" g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES (self)); #line 530 "mn-authenticated-mailbox-properties.c" { #line 274 "src/mn-authenticated-mailbox-properties.gob" if (username) { const char *_username; _username = gtk_entry_get_text(GTK_ENTRY(self->username_entry)); *username = *_username ? _username : NULL; } if (password) { const char *_password; _password = gtk_entry_get_text(GTK_ENTRY(self->password_entry)); *password = *_password ? _password : NULL; } }} #line 549 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ #line 291 "src/mn-authenticated-mailbox-properties.gob" gboolean mn_authenticated_mailbox_properties_is_complete (MNAuthenticatedMailboxProperties * self) { #line 556 "mn-authenticated-mailbox-properties.c" #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::is_complete" #line 291 "src/mn-authenticated-mailbox-properties.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 291 "src/mn-authenticated-mailbox-properties.gob" g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES (self), (gboolean )0); #line 562 "mn-authenticated-mailbox-properties.c" { #line 293 "src/mn-authenticated-mailbox-properties.gob" const char *username; if (selfp->password_widget == selfp->password_operation_label) return FALSE; username = gtk_entry_get_text(GTK_ENTRY(self->username_entry)); return *username != 0; }} #line 575 "mn-authenticated-mailbox-properties.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-mailbox.gob.stamp0000644000175000001440000000000011015312644023403 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-evolution-folder-tree-client.c0000644000175000001440000006563211015312647026037 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-evolution-folder-tree-client.h" #include "mn-evolution-folder-tree-client-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 28 "src/mn-evolution-folder-tree-client.gob" #include #include "mn-evolution-client-dbus.h" #include "mn-dbus-properties-client-dbus.h" #include "mn-evolution.h" #include "mn-shell.h" #include "mn-util.h" #line 35 "mn-evolution-folder-tree-client.c" /* self casting macros */ #define SELF(x) MN_EVOLUTION_FOLDER_TREE_CLIENT(x) #define SELF_CONST(x) MN_EVOLUTION_FOLDER_TREE_CLIENT_CONST(x) #define IS_SELF(x) MN_IS_EVOLUTION_FOLDER_TREE_CLIENT(x) #define TYPE_SELF MN_TYPE_EVOLUTION_FOLDER_TREE_CLIENT #define SELF_CLASS(x) MN_EVOLUTION_FOLDER_TREE_CLIENT_CLASS(x) #define SELF_GET_CLASS(x) MN_EVOLUTION_FOLDER_TREE_CLIENT_GET_CLASS(x) /* self typedefs */ typedef MNEvolutionFolderTreeClient Self; typedef MNEvolutionFolderTreeClientClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_class_init (MNEvolutionFolderTreeClientClass * c); #line 54 "mn-evolution-folder-tree-client.c" #line 67 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_folder_activated (MNEvolutionFolderTreeClient * self); #line 57 "mn-evolution-folder-tree-client.c" #line 70 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_init (MNEvolutionFolderTreeClient * self); #line 60 "mn-evolution-folder-tree-client.c" #line 78 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_dispose (MNEvolutionFolderTreeClient * self); #line 63 "mn-evolution-folder-tree-client.c" #line 91 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_clear_proxy (MNEvolutionFolderTreeClient * self); #line 66 "mn-evolution-folder-tree-client.c" #line 116 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_update (MNEvolutionFolderTreeClient * self); #line 69 "mn-evolution-folder-tree-client.c" #line 148 "src/mn-evolution-folder-tree-client.gob" static gboolean mn_evolution_folder_tree_client_plug_removed_h (GtkSocket * sock, gpointer user_data); #line 72 "mn-evolution-folder-tree-client.c" #line 158 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_realize_h (GtkWidget * widget, gpointer user_data); #line 75 "mn-evolution-folder-tree-client.c" #line 247 "src/mn-evolution-folder-tree-client.gob" static gboolean mn_evolution_folder_tree_client_contact_error_cb (gpointer data); #line 78 "mn-evolution-folder-tree-client.c" #line 258 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_handle_contact_error (MNEvolutionFolderTreeClient * self); #line 81 "mn-evolution-folder-tree-client.c" #line 278 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_sync_selected_uri (MNEvolutionFolderTreeClient * self); #line 84 "mn-evolution-folder-tree-client.c" #line 308 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_set_widget (MNEvolutionFolderTreeClient * self, GtkWidget * widget); #line 87 "mn-evolution-folder-tree-client.c" #line 325 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_folder_selected_h (DBusGProxy * proxy, const char * uri, gpointer user_data); #line 90 "mn-evolution-folder-tree-client.c" #line 343 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_folder_activated_h (DBusGProxy * proxy, gpointer user_data); #line 93 "mn-evolution-folder-tree-client.c" /* * Signal connection wrapper macro shortcuts */ #define self_connect__folder_activated(object,func,data) mn_evolution_folder_tree_client_connect__folder_activated((object),(func),(data)) #define self_connect_after__folder_activated(object,func,data) mn_evolution_folder_tree_client_connect_after__folder_activated((object),(func),(data)) #define self_connect_data__folder_activated(object,func,data,destroy_data,flags) mn_evolution_folder_tree_client_connect_data__folder_activated((object),(func),(data),(destroy_data),(flags)) enum { FOLDER_ACTIVATED_SIGNAL, LAST_SIGNAL }; enum { PROP_0, PROP_CONNECTED, PROP_SELECTED_URI }; static guint object_signals[LAST_SIGNAL] = {0}; /* pointer to the class of our parent */ static GtkHBoxClass *parent_class = NULL; /* Short form macros */ #define self_get_connected mn_evolution_folder_tree_client_get_connected #define self_get_selected_uri mn_evolution_folder_tree_client_get_selected_uri #define self_set_selected_uri mn_evolution_folder_tree_client_set_selected_uri #define self_folder_activated mn_evolution_folder_tree_client_folder_activated #define self_clear_proxy mn_evolution_folder_tree_client_clear_proxy #define self_update mn_evolution_folder_tree_client_update #define self_plug_removed_h mn_evolution_folder_tree_client_plug_removed_h #define self_realize_h mn_evolution_folder_tree_client_realize_h #define self_contact_error_cb mn_evolution_folder_tree_client_contact_error_cb #define self_handle_contact_error mn_evolution_folder_tree_client_handle_contact_error #define self_sync_selected_uri mn_evolution_folder_tree_client_sync_selected_uri #define self_set_widget mn_evolution_folder_tree_client_set_widget #define self_folder_selected_h mn_evolution_folder_tree_client_folder_selected_h #define self_folder_activated_h mn_evolution_folder_tree_client_folder_activated_h #define self_new mn_evolution_folder_tree_client_new GType mn_evolution_folder_tree_client_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNEvolutionFolderTreeClientClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_evolution_folder_tree_client_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNEvolutionFolderTreeClient), 0 /* n_preallocs */, (GInstanceInitFunc) mn_evolution_folder_tree_client_init, NULL }; type = g_type_register_static (GTK_TYPE_HBOX, "MNEvolutionFolderTreeClient", &info, (GTypeFlags)0); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNEvolutionFolderTreeClient *)g_object_new(mn_evolution_folder_tree_client_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNEvolutionFolderTreeClient * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNEvolutionFolderTreeClient * GET_NEW_VARG (const char *first, ...) { MNEvolutionFolderTreeClient *ret; va_list ap; va_start (ap, first); ret = (MNEvolutionFolderTreeClient *)g_object_new_valist (mn_evolution_folder_tree_client_get_type (), first, ap); va_end (ap); return ret; } static void ___dispose (GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::dispose" MNEvolutionFolderTreeClient *self G_GNUC_UNUSED = MN_EVOLUTION_FOLDER_TREE_CLIENT (obj_self); #line 78 "src/mn-evolution-folder-tree-client.gob" mn_evolution_folder_tree_client_dispose (self); #line 184 "mn-evolution-folder-tree-client.c" if (G_OBJECT_CLASS (parent_class)->dispose) \ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self); } #undef __GOB_FUNCTION__ static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::finalize" MNEvolutionFolderTreeClient *self G_GNUC_UNUSED = MN_EVOLUTION_FOLDER_TREE_CLIENT (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); #line 48 "src/mn-evolution-folder-tree-client.gob" if(self->selected_uri) { g_free ((gpointer) self->selected_uri); self->selected_uri = NULL; } #line 201 "mn-evolution-folder-tree-client.c" } #undef __GOB_FUNCTION__ static void mn_evolution_folder_tree_client_class_init (MNEvolutionFolderTreeClientClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNEvolutionFolderTreeClientPrivate)); parent_class = g_type_class_ref (GTK_TYPE_HBOX); object_signals[FOLDER_ACTIVATED_SIGNAL] = g_signal_new ("folder_activated", G_TYPE_FROM_CLASS (g_object_class), (GSignalFlags)(G_SIGNAL_RUN_LAST), G_STRUCT_OFFSET (MNEvolutionFolderTreeClientClass, folder_activated), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); c->folder_activated = NULL; g_object_class->dispose = ___dispose; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_boolean ("connected" /* name */, NULL /* nick */, NULL /* blurb */, FALSE /* default_value */, (GParamFlags)(G_PARAM_READABLE)); g_object_class_install_property (g_object_class, PROP_CONNECTED, param_spec); param_spec = g_param_spec_string ("selected_uri" /* name */, NULL /* nick */, NULL /* blurb */, NULL /* default_value */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (g_object_class, PROP_SELECTED_URI, param_spec); } } #undef __GOB_FUNCTION__ #line 70 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_init (MNEvolutionFolderTreeClient * self G_GNUC_UNUSED) { #line 257 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::init" self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_EVOLUTION_FOLDER_TREE_CLIENT,MNEvolutionFolderTreeClientPrivate); { #line 71 "src/mn-evolution-folder-tree-client.gob" selfp->client = mn_evolution_client_get(); g_signal_connect_swapped(selfp->client, "notify::proxy", G_CALLBACK(self_update), self); self_update(self); #line 268 "mn-evolution-folder-tree-client.c" } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::set_property" { MNEvolutionFolderTreeClient *self G_GNUC_UNUSED; self = MN_EVOLUTION_FOLDER_TREE_CLIENT (object); switch (property_id) { case PROP_SELECTED_URI: { #line 51 "src/mn-evolution-folder-tree-client.gob" g_free(self->selected_uri); self->selected_uri = g_value_dup_string(VAL); if (selfp->proxy) self_sync_selected_uri(self); #line 295 "mn-evolution-folder-tree-client.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::get_property" { MNEvolutionFolderTreeClient *self G_GNUC_UNUSED; self = MN_EVOLUTION_FOLDER_TREE_CLIENT (object); switch (property_id) { case PROP_CONNECTED: { #line 44 "src/mn-evolution-folder-tree-client.gob" g_value_set_boolean(VAL, selfp->proxy != NULL); #line 328 "mn-evolution-folder-tree-client.c" } break; case PROP_SELECTED_URI: { #line 59 "src/mn-evolution-folder-tree-client.gob" g_value_set_string(VAL, self->selected_uri); #line 337 "mn-evolution-folder-tree-client.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 44 "src/mn-evolution-folder-tree-client.gob" gboolean mn_evolution_folder_tree_client_get_connected (MNEvolutionFolderTreeClient * self) { #line 357 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::get_connected" { #line 42 "src/mn-evolution-folder-tree-client.gob" gboolean val; g_object_get (G_OBJECT (self), "connected", &val, NULL); return val; }} #line 363 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 59 "src/mn-evolution-folder-tree-client.gob" gchar * mn_evolution_folder_tree_client_get_selected_uri (MNEvolutionFolderTreeClient * self) { #line 370 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::get_selected_uri" { #line 49 "src/mn-evolution-folder-tree-client.gob" gchar* val; g_object_get (G_OBJECT (self), "selected_uri", &val, NULL); return val; }} #line 376 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 51 "src/mn-evolution-folder-tree-client.gob" void mn_evolution_folder_tree_client_set_selected_uri (MNEvolutionFolderTreeClient * self, gchar * val) { #line 383 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::set_selected_uri" { #line 49 "src/mn-evolution-folder-tree-client.gob" g_object_set (G_OBJECT (self), "selected_uri", val, NULL); }} #line 389 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 67 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_folder_activated (MNEvolutionFolderTreeClient * self) { #line 396 "mn-evolution-folder-tree-client.c" GValue ___param_values[1]; GValue ___return_val; memset (&___return_val, 0, sizeof (___return_val)); memset (&___param_values, 0, sizeof (___param_values)); #line 67 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (self != NULL); #line 67 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (MN_IS_EVOLUTION_FOLDER_TREE_CLIENT (self)); #line 407 "mn-evolution-folder-tree-client.c" ___param_values[0].g_type = 0; g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self)); g_value_set_instance (&___param_values[0], (gpointer) self); g_signal_emitv (___param_values, object_signals[FOLDER_ACTIVATED_SIGNAL], 0 /* detail */, &___return_val); g_value_unset (&___param_values[0]); } #line 78 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_dispose (MNEvolutionFolderTreeClient * self) { #line 426 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::dispose" { #line 79 "src/mn-evolution-folder-tree-client.gob" self_clear_proxy(self); mn_source_clear(&selfp->contact_error_idle_id); if (selfp->client) { g_signal_handlers_disconnect_by_func(selfp->client, self_update, self); selfp->client = NULL; } }} #line 441 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 91 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_clear_proxy (MNEvolutionFolderTreeClient * self) { #line 448 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::clear_proxy" #line 91 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (self != NULL); #line 91 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (MN_IS_EVOLUTION_FOLDER_TREE_CLIENT (self)); #line 454 "mn-evolution-folder-tree-client.c" { #line 93 "src/mn-evolution-folder-tree-client.gob" if (selfp->proxy) { /* * We cannot unreference the proxy because of a memory * management bug in DBusGProxy * (https://bugs.freedesktop.org/show_bug.cgi?id=14030), so * simply disconnect the signals and nullify the proxy. */ dbus_g_proxy_disconnect_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_SELECTED, G_CALLBACK(self_folder_selected_h), self); dbus_g_proxy_disconnect_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_ACTIVATED, G_CALLBACK(self_folder_activated_h), self); mn_remove_weak_pointer(&selfp->proxy); /* also sets it to NULL */ } }} #line 479 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 116 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_update (MNEvolutionFolderTreeClient * self) { #line 486 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::update" #line 116 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (self != NULL); #line 116 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (MN_IS_EVOLUTION_FOLDER_TREE_CLIENT (self)); #line 492 "mn-evolution-folder-tree-client.c" { #line 118 "src/mn-evolution-folder-tree-client.gob" MNEvolutionClient *client; /* * We do not unconditionally create the GtkSocket to avoid the * widget change flicker that would occur if Evolution cannot be * contacted. */ client = mn_evolution_client_get(); if (client->proxy) { GtkWidget *sock; sock = gtk_socket_new(); g_signal_connect(sock, "plug-removed", G_CALLBACK(self_plug_removed_h), NULL); /* * In order to be able to call gtk_socket_get_id(), the socket * must be added to a toplevel window. */ g_signal_connect(sock, "realize", G_CALLBACK(self_realize_h), self); self_set_widget(self, sock); } else self_handle_contact_error(self); }} #line 524 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 148 "src/mn-evolution-folder-tree-client.gob" static gboolean mn_evolution_folder_tree_client_plug_removed_h (GtkSocket * sock, gpointer user_data) { #line 531 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::plug_removed_h" { #line 150 "src/mn-evolution-folder-tree-client.gob" /* * Do not destroy the socket, it will be destroyed when removed * from the vbox in set_widget(). */ return TRUE; }} #line 542 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 158 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_realize_h (GtkWidget * widget, gpointer user_data) { #line 549 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::realize_h" { #line 160 "src/mn-evolution-folder-tree-client.gob" Self *self = user_data; MNEvolutionClient *client; client = mn_evolution_client_get(); if (client->proxy) { guint32 id; GError *err = NULL; id = (guint32) gtk_socket_get_id(GTK_SOCKET(widget)); if (org_gnome_MailNotification_Evolution_folder_tree_new(client->proxy, id, &err)) { char *service; char *path; self_clear_proxy(self); service = g_strdup_printf(MN_EVOLUTION_FOLDER_TREE_SERVER_SERVICE, id); path = g_strdup_printf(MN_EVOLUTION_FOLDER_TREE_SERVER_PATH, id); selfp->proxy = dbus_g_proxy_new_for_name_owner(mn_shell->session_bus, service, path, MN_EVOLUTION_FOLDER_TREE_SERVER_INTERFACE, NULL); g_free(service); g_free(path); if (selfp->proxy) { /* * We must add a weak pointer, so that if the proxy is * destroyed after Evolution exits we won't try to * clear an invalid proxy in clear_proxy(). */ mn_add_weak_pointer(&selfp->proxy); selfp->properties_proxy = dbus_g_proxy_new_from_proxy(selfp->proxy, DBUS_INTERFACE_PROPERTIES, NULL); dbus_g_proxy_add_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_SELECTED, G_TYPE_STRING, /* uri */ G_TYPE_INVALID); dbus_g_proxy_add_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_ACTIVATED, G_TYPE_INVALID); dbus_g_proxy_connect_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_SELECTED, G_CALLBACK(self_folder_selected_h), self, NULL); dbus_g_proxy_connect_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_ACTIVATED, G_CALLBACK(self_folder_activated_h), self, NULL); /* give the folder tree a decent height */ gtk_widget_set_size_request(widget, -1, 150); self_sync_selected_uri(self); g_object_notify(G_OBJECT(self), "connected"); return; /* success */ } } else { /* unlikely to ever happen, not worth a translation */ g_warning("cannot create folder tree: %s", err->message); g_error_free(err); } } /* * Failure. We cannot call handle_contact_error() from here since * it would destroy the GtkSocket that is currently being * realized. Use an idle callback. */ if (! selfp->contact_error_idle_id) selfp->contact_error_idle_id = gdk_threads_add_idle(self_contact_error_cb, self); }} #line 639 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 247 "src/mn-evolution-folder-tree-client.gob" static gboolean mn_evolution_folder_tree_client_contact_error_cb (gpointer data) { #line 646 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::contact_error_cb" { #line 249 "src/mn-evolution-folder-tree-client.gob" Self *self = data; self_handle_contact_error(self); selfp->contact_error_idle_id = 0; return FALSE; /* remove source */ }} #line 658 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 258 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_handle_contact_error (MNEvolutionFolderTreeClient * self) { #line 665 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::handle_contact_error" #line 258 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (self != NULL); #line 258 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (MN_IS_EVOLUTION_FOLDER_TREE_CLIENT (self)); #line 671 "mn-evolution-folder-tree-client.c" { #line 260 "src/mn-evolution-folder-tree-client.gob" GtkWidget *label; if (selfp->proxy) { self_clear_proxy(self); g_object_notify(G_OBJECT(self), "connected"); } label = gtk_label_new(_("Mail Notification can not contact Evolution. Make sure that Evolution is running and that the Evolution Jean-Yves Lefort's Mail Notification plugin is loaded.")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_label_set_selectable(GTK_LABEL(label), TRUE); self_set_widget(self, label); }} #line 691 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 278 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_sync_selected_uri (MNEvolutionFolderTreeClient * self) { #line 698 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::sync_selected_uri" #line 278 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (self != NULL); #line 278 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (MN_IS_EVOLUTION_FOLDER_TREE_CLIENT (self)); #line 704 "mn-evolution-folder-tree-client.c" { #line 280 "src/mn-evolution-folder-tree-client.gob" GValue value = { 0, }; GError *err = NULL; g_return_if_fail(selfp->proxy != NULL); if (! self->selected_uri) return; g_value_init(&value, G_TYPE_STRING); g_value_set_string(&value, self->selected_uri); if (! org_freedesktop_DBus_Properties_set(selfp->properties_proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_INTERFACE, MN_EVOLUTION_FOLDER_TREE_SERVER_PROPERTY_URI, &value, &err)) { g_warning("cannot set D-Bus property %s of interface %s: %s", MN_EVOLUTION_FOLDER_TREE_SERVER_PROPERTY_URI, MN_EVOLUTION_FOLDER_TREE_SERVER_INTERFACE, err->message); g_error_free(err); } g_value_unset(&value); }} #line 734 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 308 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_set_widget (MNEvolutionFolderTreeClient * self, GtkWidget * widget) { #line 741 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::set_widget" #line 308 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (self != NULL); #line 308 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (MN_IS_EVOLUTION_FOLDER_TREE_CLIENT (self)); #line 308 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (widget != NULL); #line 308 "src/mn-evolution-folder-tree-client.gob" g_return_if_fail (GTK_IS_WIDGET (widget)); #line 751 "mn-evolution-folder-tree-client.c" { #line 310 "src/mn-evolution-folder-tree-client.gob" GList *children; children = gtk_container_get_children(GTK_CONTAINER(self)); if (children) { g_assert(g_list_length(children) == 1); gtk_container_remove(GTK_CONTAINER(self), children->data); g_list_free(children); } gtk_box_pack_start(GTK_BOX(self), widget, TRUE, TRUE, 0); gtk_widget_show(widget); }} #line 768 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 325 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_folder_selected_h (DBusGProxy * proxy, const char * uri, gpointer user_data) { #line 775 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::folder_selected_h" { #line 329 "src/mn-evolution-folder-tree-client.gob" Self *self = user_data; /* this is a main loop callback */ GDK_THREADS_ENTER(); g_free(self->selected_uri); self->selected_uri = g_strdup(uri); g_object_notify(G_OBJECT(self), "selected-uri"); GDK_THREADS_LEAVE(); }} #line 792 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 343 "src/mn-evolution-folder-tree-client.gob" static void mn_evolution_folder_tree_client_folder_activated_h (DBusGProxy * proxy, gpointer user_data) { #line 799 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::folder_activated_h" { #line 345 "src/mn-evolution-folder-tree-client.gob" Self *self = user_data; /* this is a main loop callback */ GDK_THREADS_ENTER(); self_folder_activated(self); GDK_THREADS_LEAVE(); }} #line 813 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ #line 356 "src/mn-evolution-folder-tree-client.gob" GtkWidget * mn_evolution_folder_tree_client_new (void) { #line 820 "mn-evolution-folder-tree-client.c" #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Client::new" { #line 358 "src/mn-evolution-folder-tree-client.gob" return GTK_WIDGET(GET_NEW); }} #line 827 "mn-evolution-folder-tree-client.c" #undef __GOB_FUNCTION__ mail-notification-5.4.dfsg.1/build/src/mn-evolution-folder-tree-server.h0000644000175000001440000001565711015312644026073 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #ifndef __MN_EVOLUTION_FOLDER_TREE_SERVER_H__ #define __MN_EVOLUTION_FOLDER_TREE_SERVER_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_EVOLUTION_FOLDER_TREE_SERVER (mn_evolution_folder_tree_server_get_type()) #define MN_EVOLUTION_FOLDER_TREE_SERVER(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_folder_tree_server_get_type(), MNEvolutionFolderTreeServer) #define MN_EVOLUTION_FOLDER_TREE_SERVER_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_folder_tree_server_get_type(), MNEvolutionFolderTreeServer const) #define MN_EVOLUTION_FOLDER_TREE_SERVER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_evolution_folder_tree_server_get_type(), MNEvolutionFolderTreeServerClass) #define MN_IS_EVOLUTION_FOLDER_TREE_SERVER(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_evolution_folder_tree_server_get_type ()) #define MN_EVOLUTION_FOLDER_TREE_SERVER_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_evolution_folder_tree_server_get_type(), MNEvolutionFolderTreeServerClass) /* Private structure type */ typedef struct _MNEvolutionFolderTreeServerPrivate MNEvolutionFolderTreeServerPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_EVOLUTION_FOLDER_TREE_SERVER__ #define __TYPEDEF_MN_EVOLUTION_FOLDER_TREE_SERVER__ typedef struct _MNEvolutionFolderTreeServer MNEvolutionFolderTreeServer; #endif struct _MNEvolutionFolderTreeServer { GObject __parent__; /*< private >*/ MNEvolutionFolderTreeServerPrivate *_priv; }; /* * Class definition */ typedef struct _MNEvolutionFolderTreeServerClass MNEvolutionFolderTreeServerClass; struct _MNEvolutionFolderTreeServerClass { GObjectClass __parent__; /*signal*/void (* folder_selected) (MNEvolutionFolderTreeServer * self, const char * uri); /*signal*/void (* folder_activated) (MNEvolutionFolderTreeServer * self); }; /* * Public methods */ GType mn_evolution_folder_tree_server_get_type (void) G_GNUC_CONST; #line 125 "src/mn-evolution-folder-tree-server.gob" MNEvolutionFolderTreeServer * mn_evolution_folder_tree_server_new (guint32 id); #line 58 "mn-evolution-folder-tree-server.h" /* * Signal connection wrapper macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define mn_evolution_folder_tree_server_connect__folder_selected(object,func,data) g_signal_connect(MN_EVOLUTION_FOLDER_TREE_SERVER(__extension__ ({MNEvolutionFolderTreeServer *___object = (object); ___object; })),"folder_selected",(GCallback) __extension__ ({void (* ___folder_selected) (MNEvolutionFolderTreeServer * ___fake___self, const char * ___fake___uri, gpointer ___data ) = (func); ___folder_selected; }), (data)) #define mn_evolution_folder_tree_server_connect_after__folder_selected(object,func,data) g_signal_connect_after(MN_EVOLUTION_FOLDER_TREE_SERVER(__extension__ ({MNEvolutionFolderTreeServer *___object = (object); ___object; })),"folder_selected",(GCallback) __extension__ ({void (* ___folder_selected) (MNEvolutionFolderTreeServer * ___fake___self, const char * ___fake___uri, gpointer ___data ) = (func); ___folder_selected; }), (data)) #define mn_evolution_folder_tree_server_connect_data__folder_selected(object,func,data,destroy_data,flags) g_signal_connect_data(MN_EVOLUTION_FOLDER_TREE_SERVER(__extension__ ({MNEvolutionFolderTreeServer *___object = (object); ___object; })),"folder_selected",(GCallback) __extension__ ({void (* ___folder_selected) (MNEvolutionFolderTreeServer * ___fake___self, const char * ___fake___uri, gpointer ___data ) = (func); ___folder_selected; }), (data), (destroy_data), (GConnectFlags)(flags)) #define mn_evolution_folder_tree_server_connect__folder_activated(object,func,data) g_signal_connect(MN_EVOLUTION_FOLDER_TREE_SERVER(__extension__ ({MNEvolutionFolderTreeServer *___object = (object); ___object; })),"folder_activated",(GCallback) __extension__ ({void (* ___folder_activated) (MNEvolutionFolderTreeServer * ___fake___self, gpointer ___data ) = (func); ___folder_activated; }), (data)) #define mn_evolution_folder_tree_server_connect_after__folder_activated(object,func,data) g_signal_connect_after(MN_EVOLUTION_FOLDER_TREE_SERVER(__extension__ ({MNEvolutionFolderTreeServer *___object = (object); ___object; })),"folder_activated",(GCallback) __extension__ ({void (* ___folder_activated) (MNEvolutionFolderTreeServer * ___fake___self, gpointer ___data ) = (func); ___folder_activated; }), (data)) #define mn_evolution_folder_tree_server_connect_data__folder_activated(object,func,data,destroy_data,flags) g_signal_connect_data(MN_EVOLUTION_FOLDER_TREE_SERVER(__extension__ ({MNEvolutionFolderTreeServer *___object = (object); ___object; })),"folder_activated",(GCallback) __extension__ ({void (* ___folder_activated) (MNEvolutionFolderTreeServer * ___fake___self, gpointer ___data ) = (func); ___folder_activated; }), (data), (destroy_data), (GConnectFlags)(flags)) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define mn_evolution_folder_tree_server_connect__folder_selected(object,func,data) g_signal_connect(MN_EVOLUTION_FOLDER_TREE_SERVER(object),"folder_selected",(GCallback)(func),(data)) #define mn_evolution_folder_tree_server_connect_after__folder_selected(object,func,data) g_signal_connect_after(MN_EVOLUTION_FOLDER_TREE_SERVER(object),"folder_selected",(GCallback)(func),(data)) #define mn_evolution_folder_tree_server_connect_data__folder_selected(object,func,data,destroy_data,flags) g_signal_connect_data(MN_EVOLUTION_FOLDER_TREE_SERVER(object),"folder_selected",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #define mn_evolution_folder_tree_server_connect__folder_activated(object,func,data) g_signal_connect(MN_EVOLUTION_FOLDER_TREE_SERVER(object),"folder_activated",(GCallback)(func),(data)) #define mn_evolution_folder_tree_server_connect_after__folder_activated(object,func,data) g_signal_connect_after(MN_EVOLUTION_FOLDER_TREE_SERVER(object),"folder_activated",(GCallback)(func),(data)) #define mn_evolution_folder_tree_server_connect_data__folder_activated(object,func,data,destroy_data,flags) g_signal_connect_data(MN_EVOLUTION_FOLDER_TREE_SERVER(object),"folder_activated",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags)) #endif /* __GNUC__ && !__STRICT_ANSI__ */ /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_EVOLUTION_FOLDER_TREE_SERVER_PROP_ID(arg) "id", __extension__ ({guint z = (arg); z;}) #define MN_EVOLUTION_FOLDER_TREE_SERVER_GET_PROP_ID(arg) "id", __extension__ ({guint *z = (arg); z;}) #define MN_EVOLUTION_FOLDER_TREE_SERVER_PROP_URI(arg) "uri", __extension__ ({gchar *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_EVOLUTION_FOLDER_TREE_SERVER_PROP_ID(arg) "id",(guint )(arg) #define MN_EVOLUTION_FOLDER_TREE_SERVER_GET_PROP_ID(arg) "id",(guint *)(arg) #define MN_EVOLUTION_FOLDER_TREE_SERVER_PROP_URI(arg) "uri",(gchar *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-hotmail-mailbox.gob.stamp0000644000175000001440000000000011015312647025041 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-server.h0000644000175000001440000000300611015312645021625 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_SERVER_H__ #define __MN_SERVER_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define MN_SERVER_SERVICE "org.gnome.MailNotification" #define MN_SERVER_PATH "/org/gnome/MailNotification" #define MN_SERVER_INTERFACE "org.gnome.MailNotification" /* * Type checking and casting macros */ #define MN_TYPE_SERVER (mn_server_get_type()) #define MN_SERVER(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_server_get_type(), MNServer) #define MN_SERVER_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_server_get_type(), MNServer const) #define MN_SERVER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_server_get_type(), MNServerClass) #define MN_IS_SERVER(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_server_get_type ()) #define MN_SERVER_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_server_get_type(), MNServerClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_SERVER__ #define __TYPEDEF_MN_SERVER__ typedef struct _MNServer MNServer; #endif struct _MNServer { GObject __parent__; }; /* * Class definition */ typedef struct _MNServerClass MNServerClass; struct _MNServerClass { GObjectClass __parent__; }; /* * Public methods */ GType mn_server_get_type (void) G_GNUC_CONST; #line 118 "src/mn-server.gob" gboolean mn_server_start (DBusGConnection * bus, DBusGProxy * bus_proxy); #line 62 "mn-server.h" #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mbox-mailbox-backend.h0000644000175000001440000000315611015312645024310 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-base-mbox-mailbox-backend.h" #ifndef __MN_MBOX_MAILBOX_BACKEND_H__ #define __MN_MBOX_MAILBOX_BACKEND_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MBOX_MAILBOX_BACKEND (mn_mbox_mailbox_backend_get_type()) #define MN_MBOX_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mbox_mailbox_backend_get_type(), MNMboxMailboxBackend) #define MN_MBOX_MAILBOX_BACKEND_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mbox_mailbox_backend_get_type(), MNMboxMailboxBackend const) #define MN_MBOX_MAILBOX_BACKEND_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_mbox_mailbox_backend_get_type(), MNMboxMailboxBackendClass) #define MN_IS_MBOX_MAILBOX_BACKEND(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mbox_mailbox_backend_get_type ()) #define MN_MBOX_MAILBOX_BACKEND_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_mbox_mailbox_backend_get_type(), MNMboxMailboxBackendClass) /* * Main object structure */ #ifndef __TYPEDEF_MN_MBOX_MAILBOX_BACKEND__ #define __TYPEDEF_MN_MBOX_MAILBOX_BACKEND__ typedef struct _MNMboxMailboxBackend MNMboxMailboxBackend; #endif struct _MNMboxMailboxBackend { MNBaseMboxMailboxBackend __parent__; }; /* * Class definition */ typedef struct _MNMboxMailboxBackendClass MNMboxMailboxBackendClass; struct _MNMboxMailboxBackendClass { MNBaseMboxMailboxBackendClass __parent__; }; /* * Public methods */ GType mn_mbox_mailbox_backend_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-vfs-mailbox.gob.stamp0000644000175000001440000000000011015312647024202 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-autodetect-mailbox-properties.gob.stamp0000644000175000001440000000000011015312644027734 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-sound-player-private.h0000644000175000001440000000077711015312645024425 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_SOUND_PLAYER_PRIVATE_H__ #define __MN_SOUND_PLAYER_PRIVATE_H__ #include "mn-sound-player.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct _MNSoundPlayerPrivate { #line 36 "src/mn-sound-player.gob" gboolean can_play; #line 49 "src/mn-sound-player.gob" GPid pid; #line 50 "src/mn-sound-player.gob" GSource * watch_source; #line 20 "mn-sound-player-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-evolution-mailbox-private.h0000644000175000001440000000141711015312647025452 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_EVOLUTION_MAILBOX_PRIVATE_H__ #define __MN_EVOLUTION_MAILBOX_PRIVATE_H__ #include "mn-evolution-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 24 "src/mn-evolution-mailbox.gob" #include #include "mn-evolution-client.h" #line 19 "mn-evolution-mailbox-private.h" struct _MNEvolutionMailboxPrivate { #line 65 "src/mn-evolution-mailbox.gob" MNEvolutionClient * client; #line 66 "src/mn-evolution-mailbox.gob" gboolean signals_connected; #line 67 "src/mn-evolution-mailbox.gob" DBusGProxyCall * pending_call; #line 69 "src/mn-evolution-mailbox.gob" time_t last_browsed; #line 29 "mn-evolution-mailbox-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-reentrant-mailbox.h0000644000175000001440000000332311015312647023756 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include "mn-mailbox.h" #ifndef __MN_REENTRANT_MAILBOX_H__ #define __MN_REENTRANT_MAILBOX_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_REENTRANT_MAILBOX (mn_reentrant_mailbox_get_type()) #define MN_REENTRANT_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_reentrant_mailbox_get_type(), MNReentrantMailbox) #define MN_REENTRANT_MAILBOX_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_reentrant_mailbox_get_type(), MNReentrantMailbox const) #define MN_REENTRANT_MAILBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_reentrant_mailbox_get_type(), MNReentrantMailboxClass) #define MN_IS_REENTRANT_MAILBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_reentrant_mailbox_get_type ()) #define MN_REENTRANT_MAILBOX_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_reentrant_mailbox_get_type(), MNReentrantMailboxClass) /* Private structure type */ typedef struct _MNReentrantMailboxPrivate MNReentrantMailboxPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_REENTRANT_MAILBOX__ #define __TYPEDEF_MN_REENTRANT_MAILBOX__ typedef struct _MNReentrantMailbox MNReentrantMailbox; #endif struct _MNReentrantMailbox { MNMailbox __parent__; /*< private >*/ MNReentrantMailboxPrivate *_priv; }; /* * Class definition */ typedef struct _MNReentrantMailboxClass MNReentrantMailboxClass; struct _MNReentrantMailboxClass { MNMailboxClass __parent__; void (* reentrant_check) (MNReentrantMailbox * self, int check_id); }; /* * Public methods */ GType mn_reentrant_mailbox_get_type (void) G_GNUC_CONST; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-vfs-mailbox-backend.c0000644000175000001440000003222111015312647024131 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ /* End world hunger, donate to the World Food Programme, http://www.wfp.org */ #define GOB_VERSION_MAJOR 2 #define GOB_VERSION_MINOR 0 #define GOB_VERSION_PATCHLEVEL 15 #define selfp (self->_priv) #include /* memset() */ #include "mn-vfs-mailbox-backend.h" #include "mn-vfs-mailbox-backend-private.h" #ifdef G_LIKELY #define ___GOB_LIKELY(expr) G_LIKELY(expr) #define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) #else /* ! G_LIKELY */ #define ___GOB_LIKELY(expr) (expr) #define ___GOB_UNLIKELY(expr) (expr) #endif /* G_LIKELY */ #line 24 "src/mn-vfs-mailbox-backend.gob" #include #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #include "mn-vfs-mailbox-private.h" #include "mn-conf.h" #include "mn-util.h" #line 36 "mn-vfs-mailbox-backend.c" /* self casting macros */ #define SELF(x) MN_VFS_MAILBOX_BACKEND(x) #define SELF_CONST(x) MN_VFS_MAILBOX_BACKEND_CONST(x) #define IS_SELF(x) MN_IS_VFS_MAILBOX_BACKEND(x) #define TYPE_SELF MN_TYPE_VFS_MAILBOX_BACKEND #define SELF_CLASS(x) MN_VFS_MAILBOX_BACKEND_CLASS(x) #define SELF_GET_CLASS(x) MN_VFS_MAILBOX_BACKEND_GET_CLASS(x) /* self typedefs */ typedef MNVFSMailboxBackend Self; typedef MNVFSMailboxBackendClass SelfClass; /* here are local prototypes */ static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #line 0 "src/mn-vfs-mailbox-backend.gob" static void mn_vfs_mailbox_backend_init (MNVFSMailboxBackend * o); #line 55 "mn-vfs-mailbox-backend.c" #line 0 "src/mn-vfs-mailbox-backend.gob" static void mn_vfs_mailbox_backend_class_init (MNVFSMailboxBackendClass * c); #line 58 "mn-vfs-mailbox-backend.c" #line 57 "src/mn-vfs-mailbox-backend.gob" static void mn_vfs_mailbox_backend_finalize (MNVFSMailboxBackend * self); #line 61 "mn-vfs-mailbox-backend.c" #line 81 "src/mn-vfs-mailbox-backend.gob" static void mn_vfs_mailbox_backend_real_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data); #line 64 "mn-vfs-mailbox-backend.c" static void ___real_mn_vfs_mailbox_backend_monitor_cb (MNVFSMailboxBackend * self, const char * info_uri, GnomeVFSMonitorEventType event_type); #line 91 "src/mn-vfs-mailbox-backend.gob" static void mn_vfs_mailbox_backend_monitor_cb (MNVFSMailboxBackend * self, const char * info_uri, GnomeVFSMonitorEventType event_type); #line 68 "mn-vfs-mailbox-backend.c" #line 124 "src/mn-vfs-mailbox-backend.gob" static gboolean mn_vfs_mailbox_backend_queue_check_cb (gpointer data); #line 71 "mn-vfs-mailbox-backend.c" enum { PROP_0, PROP_MAILBOX }; /* pointer to the class of our parent */ static GObjectClass *parent_class = NULL; /* Short form macros */ #define self_monitor mn_vfs_mailbox_backend_monitor #define self_real_monitor_cb mn_vfs_mailbox_backend_real_monitor_cb #define self_monitor_cb mn_vfs_mailbox_backend_monitor_cb #define self_queue_check mn_vfs_mailbox_backend_queue_check #define self_queue_check_cb mn_vfs_mailbox_backend_queue_check_cb #define self_is mn_vfs_mailbox_backend_is #define self_check mn_vfs_mailbox_backend_check GType mn_vfs_mailbox_backend_get_type (void) { static GType type = 0; if ___GOB_UNLIKELY(type == 0) { static const GTypeInfo info = { sizeof (MNVFSMailboxBackendClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) mn_vfs_mailbox_backend_class_init, (GClassFinalizeFunc) NULL, NULL /* class_data */, sizeof (MNVFSMailboxBackend), 0 /* n_preallocs */, (GInstanceInitFunc) mn_vfs_mailbox_backend_init, NULL }; type = g_type_register_static (G_TYPE_OBJECT, "MNVFSMailboxBackend", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT); } return type; } /* a macro for creating a new object of our type */ #define GET_NEW ((MNVFSMailboxBackend *)g_object_new(mn_vfs_mailbox_backend_get_type(), NULL)) /* a function for creating a new object of our type */ #include static MNVFSMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; static MNVFSMailboxBackend * GET_NEW_VARG (const char *first, ...) { MNVFSMailboxBackend *ret; va_list ap; va_start (ap, first); ret = (MNVFSMailboxBackend *)g_object_new_valist (mn_vfs_mailbox_backend_get_type (), first, ap); va_end (ap); return ret; } static void ___finalize(GObject *obj_self) { #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::finalize" MNVFSMailboxBackend *self G_GNUC_UNUSED = MN_VFS_MAILBOX_BACKEND (obj_self); gpointer priv G_GNUC_UNUSED = self->_priv; #line 57 "src/mn-vfs-mailbox-backend.gob" mn_vfs_mailbox_backend_finalize (self); #line 140 "mn-vfs-mailbox-backend.c" if(G_OBJECT_CLASS(parent_class)->finalize) \ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); } #undef __GOB_FUNCTION__ static void mn_vfs_mailbox_backend_init (MNVFSMailboxBackend * o G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::init" o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_VFS_MAILBOX_BACKEND,MNVFSMailboxBackendPrivate); } #undef __GOB_FUNCTION__ static void mn_vfs_mailbox_backend_class_init (MNVFSMailboxBackendClass * c G_GNUC_UNUSED) { #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::class_init" GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; g_type_class_add_private(c,sizeof(MNVFSMailboxBackendPrivate)); parent_class = g_type_class_ref (G_TYPE_OBJECT); #line 91 "src/mn-vfs-mailbox-backend.gob" c->monitor_cb = ___real_mn_vfs_mailbox_backend_monitor_cb; #line 165 "mn-vfs-mailbox-backend.c" c->is = NULL; c->check = NULL; g_object_class->finalize = ___finalize; g_object_class->get_property = ___object_get_property; g_object_class->set_property = ___object_set_property; { GParamSpec *param_spec; param_spec = g_param_spec_pointer ("mailbox" /* name */, NULL /* nick */, NULL /* blurb */, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (g_object_class, PROP_MAILBOX, param_spec); } } #undef __GOB_FUNCTION__ static void ___object_set_property (GObject *object, guint property_id, const GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::set_property" { MNVFSMailboxBackend *self G_GNUC_UNUSED; self = MN_VFS_MAILBOX_BACKEND (object); switch (property_id) { case PROP_MAILBOX: { #line 45 "src/mn-vfs-mailbox-backend.gob" self->mailbox = g_value_get_pointer (VAL); #line 202 "mn-vfs-mailbox-backend.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ static void ___object_get_property (GObject *object, guint property_id, GValue *VAL G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED) #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::get_property" { MNVFSMailboxBackend *self G_GNUC_UNUSED; self = MN_VFS_MAILBOX_BACKEND (object); switch (property_id) { case PROP_MAILBOX: { #line 45 "src/mn-vfs-mailbox-backend.gob" g_value_set_pointer (VAL, self->mailbox); #line 233 "mn-vfs-mailbox-backend.c" } break; default: /* Apparently in g++ this is needed, glib is b0rk */ #ifndef __PRETTY_FUNCTION__ # undef G_STRLOC # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) #endif G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } #undef __GOB_FUNCTION__ #line 57 "src/mn-vfs-mailbox-backend.gob" static void mn_vfs_mailbox_backend_finalize (MNVFSMailboxBackend * self) { #line 254 "mn-vfs-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::finalize" { #line 58 "src/mn-vfs-mailbox-backend.gob" if (selfp->queue_check_id) g_source_remove(selfp->queue_check_id); /* * If the calling mailbox is being finalized, there is no need to * hold its lock. Otherwise, it holds its lock while finalizing us * (see reentrant_check() in mn-vfs-mailbox.gob). */ mn_vfs_mailbox_remove_monitors_by_owner(self->mailbox, self); }} #line 269 "mn-vfs-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 70 "src/mn-vfs-mailbox-backend.gob" void mn_vfs_mailbox_backend_monitor (MNVFSMailboxBackend * self, int check_id, const char * uri, GnomeVFSMonitorType type) { #line 276 "mn-vfs-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::monitor" #line 70 "src/mn-vfs-mailbox-backend.gob" g_return_if_fail (self != NULL); #line 70 "src/mn-vfs-mailbox-backend.gob" g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self)); #line 70 "src/mn-vfs-mailbox-backend.gob" g_return_if_fail (uri != NULL); #line 284 "mn-vfs-mailbox-backend.c" { #line 75 "src/mn-vfs-mailbox-backend.gob" mn_vfs_mailbox_lock(self->mailbox); mn_vfs_mailbox_monitor(self->mailbox, uri, self, type, self_real_monitor_cb, self); mn_vfs_mailbox_unlock(self->mailbox); }} #line 292 "mn-vfs-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 81 "src/mn-vfs-mailbox-backend.gob" static void mn_vfs_mailbox_backend_real_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data) { #line 299 "mn-vfs-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::real_monitor_cb" { #line 87 "src/mn-vfs-mailbox-backend.gob" self_monitor_cb(user_data, info_uri, event_type); }} #line 306 "mn-vfs-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 91 "src/mn-vfs-mailbox-backend.gob" static void mn_vfs_mailbox_backend_monitor_cb (MNVFSMailboxBackend * self, const char * info_uri, GnomeVFSMonitorEventType event_type) { #line 313 "mn-vfs-mailbox-backend.c" MNVFSMailboxBackendClass *klass; #line 91 "src/mn-vfs-mailbox-backend.gob" g_return_if_fail (self != NULL); #line 91 "src/mn-vfs-mailbox-backend.gob" g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self)); #line 319 "mn-vfs-mailbox-backend.c" klass = MN_VFS_MAILBOX_BACKEND_GET_CLASS(self); if(klass->monitor_cb) (*klass->monitor_cb)(self,info_uri,event_type); } #line 91 "src/mn-vfs-mailbox-backend.gob" static void ___real_mn_vfs_mailbox_backend_monitor_cb (MNVFSMailboxBackend * self G_GNUC_UNUSED, const char * info_uri, GnomeVFSMonitorEventType event_type) { #line 329 "mn-vfs-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::monitor_cb" { #line 95 "src/mn-vfs-mailbox-backend.gob" if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED || event_type == GNOME_VFS_MONITOR_EVENT_DELETED || event_type == GNOME_VFS_MONITOR_EVENT_CREATED) self_queue_check(self); }} #line 339 "mn-vfs-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 112 "src/mn-vfs-mailbox-backend.gob" void mn_vfs_mailbox_backend_queue_check (MNVFSMailboxBackend * self) { #line 346 "mn-vfs-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::queue_check" #line 112 "src/mn-vfs-mailbox-backend.gob" g_return_if_fail (self != NULL); #line 112 "src/mn-vfs-mailbox-backend.gob" g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self)); #line 352 "mn-vfs-mailbox-backend.c" { #line 114 "src/mn-vfs-mailbox-backend.gob" if (selfp->queue_check_id) mn_source_clear(&selfp->queue_check_id); if (self->check_latency) selfp->queue_check_id = gdk_threads_add_timeout(self->check_latency, self_queue_check_cb, self); else mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self->mailbox)); }} #line 364 "mn-vfs-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 124 "src/mn-vfs-mailbox-backend.gob" static gboolean mn_vfs_mailbox_backend_queue_check_cb (gpointer data) { #line 371 "mn-vfs-mailbox-backend.c" #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::queue_check_cb" { #line 126 "src/mn-vfs-mailbox-backend.gob" Self *self = data; mn_mailbox_check(MN_MAILBOX(self->mailbox)); selfp->queue_check_id = 0; return FALSE; /* remove source */ }} #line 383 "mn-vfs-mailbox-backend.c" #undef __GOB_FUNCTION__ #line 135 "src/mn-vfs-mailbox-backend.gob" gboolean mn_vfs_mailbox_backend_is (MNVFSMailboxBackend * self, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox) { #line 390 "mn-vfs-mailbox-backend.c" MNVFSMailboxBackendClass *klass; #line 135 "src/mn-vfs-mailbox-backend.gob" g_return_val_if_fail (self != NULL, (gboolean )0); #line 135 "src/mn-vfs-mailbox-backend.gob" g_return_val_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self), (gboolean )0); #line 396 "mn-vfs-mailbox-backend.c" klass = MN_VFS_MAILBOX_BACKEND_GET_CLASS(self); if(klass->is) return (*klass->is)(self,class,mailbox); else return (gboolean )(0); } #line 138 "src/mn-vfs-mailbox-backend.gob" void mn_vfs_mailbox_backend_check (MNVFSMailboxBackend * self, int check_id) { #line 409 "mn-vfs-mailbox-backend.c" MNVFSMailboxBackendClass *klass; #line 138 "src/mn-vfs-mailbox-backend.gob" g_return_if_fail (self != NULL); #line 138 "src/mn-vfs-mailbox-backend.gob" g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self)); #line 138 "src/mn-vfs-mailbox-backend.gob" g_return_if_fail (check_id != 0); #line 417 "mn-vfs-mailbox-backend.c" klass = MN_VFS_MAILBOX_BACKEND_GET_CLASS(self); if(klass->check) (*klass->check)(self,check_id); } mail-notification-5.4.dfsg.1/build/src/mn-sylpheed-message.gob.stamp0000644000175000001440000000000011015312646025211 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-mailbox-properties-dialog.gob.stamp0000644000175000001440000000000011015312644027032 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-standard-message-view-private.h0000644000175000001440000000046211015312645026164 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_STANDARD_MESSAGE_VIEW_PRIVATE_H__ #define __MN_STANDARD_MESSAGE_VIEW_PRIVATE_H__ #include "mn-standard-message-view.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-mail-icon-widget.h0000644000175000001440000000650611015312644023457 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #include #include #include #ifndef __MN_MAIL_ICON_WIDGET_H__ #define __MN_MAIL_ICON_WIDGET_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Type checking and casting macros */ #define MN_TYPE_MAIL_ICON_WIDGET (mn_mail_icon_widget_get_type()) #define MN_MAIL_ICON_WIDGET(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mail_icon_widget_get_type(), MNMailIconWidget) #define MN_MAIL_ICON_WIDGET_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mail_icon_widget_get_type(), MNMailIconWidget const) #define MN_MAIL_ICON_WIDGET_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_mail_icon_widget_get_type(), MNMailIconWidgetClass) #define MN_IS_MAIL_ICON_WIDGET(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mail_icon_widget_get_type ()) #define MN_MAIL_ICON_WIDGET_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_mail_icon_widget_get_type(), MNMailIconWidgetClass) /* Private structure type */ typedef struct _MNMailIconWidgetPrivate MNMailIconWidgetPrivate; /* * Main object structure */ #ifndef __TYPEDEF_MN_MAIL_ICON_WIDGET__ #define __TYPEDEF_MN_MAIL_ICON_WIDGET__ typedef struct _MNMailIconWidget MNMailIconWidget; #endif struct _MNMailIconWidget { GtkWidget __parent__; /*< private >*/ MNMailIconWidgetPrivate *_priv; }; /* * Class definition */ typedef struct _MNMailIconWidgetClass MNMailIconWidgetClass; struct _MNMailIconWidgetClass { GtkWidgetClass __parent__; }; /* * Public methods */ GType mn_mail_icon_widget_get_type (void) G_GNUC_CONST; #line 63 "src/mn-mail-icon-widget.gob" gboolean mn_mail_icon_widget_get_blinking (MNMailIconWidget * self); #line 60 "mn-mail-icon-widget.h" #line 43 "src/mn-mail-icon-widget.gob" void mn_mail_icon_widget_set_blinking (MNMailIconWidget * self, gboolean val); #line 64 "mn-mail-icon-widget.h" #line 82 "src/mn-mail-icon-widget.gob" gint mn_mail_icon_widget_get_count (MNMailIconWidget * self); #line 67 "mn-mail-icon-widget.h" #line 72 "src/mn-mail-icon-widget.gob" void mn_mail_icon_widget_set_count (MNMailIconWidget * self, gint val); #line 71 "mn-mail-icon-widget.h" #line 288 "src/mn-mail-icon-widget.gob" GtkWidget * mn_mail_icon_widget_new (void); #line 74 "mn-mail-icon-widget.h" #line 294 "src/mn-mail-icon-widget.gob" void mn_mail_icon_widget_set_from_stock (MNMailIconWidget * self, const char * stock_id, GtkIconSize icon_size); #line 79 "mn-mail-icon-widget.h" /* * Argument wrapping macros */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define MN_MAIL_ICON_WIDGET_PROP_BLINKING(arg) "blinking", __extension__ ({gboolean z = (arg); z;}) #define MN_MAIL_ICON_WIDGET_GET_PROP_BLINKING(arg) "blinking", __extension__ ({gboolean *z = (arg); z;}) #define MN_MAIL_ICON_WIDGET_PROP_COUNT(arg) "count", __extension__ ({gint z = (arg); z;}) #define MN_MAIL_ICON_WIDGET_GET_PROP_COUNT(arg) "count", __extension__ ({gint *z = (arg); z;}) #else /* __GNUC__ && !__STRICT_ANSI__ */ #define MN_MAIL_ICON_WIDGET_PROP_BLINKING(arg) "blinking",(gboolean )(arg) #define MN_MAIL_ICON_WIDGET_GET_PROP_BLINKING(arg) "blinking",(gboolean *)(arg) #define MN_MAIL_ICON_WIDGET_PROP_COUNT(arg) "count",(gint )(arg) #define MN_MAIL_ICON_WIDGET_GET_PROP_COUNT(arg) "count",(gint *)(arg) #endif /* __GNUC__ && !__STRICT_ANSI__ */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-imap-mailbox.gob.stamp0000644000175000001440000000000011015312646024331 0ustar evilynuxusersmail-notification-5.4.dfsg.1/build/src/mn-yahoo-mailbox-private.h0000644000175000001440000000043211015312646024540 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_YAHOO_MAILBOX_PRIVATE_H__ #define __MN_YAHOO_MAILBOX_PRIVATE_H__ #include "mn-yahoo-mailbox.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/build/src/mn-imap-mailbox-properties-private.h0000644000175000001440000000152311015312646026543 0ustar evilynuxusers/* Generated by GOB (v2.0.15) (do not edit directly) */ #ifndef __MN_IMAP_MAILBOX_PROPERTIES_PRIVATE_H__ #define __MN_IMAP_MAILBOX_PROPERTIES_PRIVATE_H__ #include "mn-imap-mailbox-properties.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #line 24 "src/mn-imap-mailbox-properties.gob" #include "mn-imap-mailbox.h" #line 18 "mn-imap-mailbox-properties-private.h" struct _MNIMAPMailboxPropertiesPrivate { #line 41 "src/mn-imap-mailbox-properties.gob" GtkWidget * inbox_radio; #line 42 "src/mn-imap-mailbox-properties.gob" GtkWidget * other_radio; #line 43 "src/mn-imap-mailbox-properties.gob" GtkWidget * mailbox_entry; #line 44 "src/mn-imap-mailbox-properties.gob" GtkWidget * use_idle_radio[MN_IMAP_MAILBOX_N_USE_IDLE]; #line 28 "mn-imap-mailbox-properties-private.h" }; #ifdef __cplusplus } #endif /* __cplusplus */ #endif mail-notification-5.4.dfsg.1/help/0000755000175000001440000000000011015313027016574 5ustar evilynuxusersmail-notification-5.4.dfsg.1/help/C/0000755000175000001440000000000011015313027016756 5ustar evilynuxusersmail-notification-5.4.dfsg.1/help/C/documentation-license.xml0000644000175000001440000000773510722400133024004 0ustar evilynuxusers Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.2 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. This manual is part of a collection of GNOME manuals distributed under the GFDL. If you want to distribute this manual separately from the collection, you can do so by adding a copy of the license to the manual, as described in section 6 of the license. Many of the names used by companies to distinguish their products and services are claimed as trademarks. Where those names appear in any GNOME documentation, and the members of the GNOME Documentation Project are made aware of those trademarks, then the names are in capital letters or initial capital letters. DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. mail-notification-5.4.dfsg.1/help/C/mail-notification.xml0000644000175000001440000016576311015312340023125 0ustar evilynuxusers Mail Notification"> aka"> URI"> Maildir"> mbox"> MH"> POP3"> IMAP"> SASL"> SSL"> TLS"> Mozilla"> Sylpheed"> GnomeVFS"> ]>
&app; Manual V&manrevision; 2004 2005 2006 2007 2008 Jean-Yves Lefort &project; &documentation-license; Jean-Yves Lefort &project;
jylefort@brutele.be
Mail Notification Manual V&manrevision; &date; Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.24 Sunday, April 27, 2008 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.23 Thursday, March 20, 2008 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.22 Thursday, March 20, 2008 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.21 Friday, January 4, 2008 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.20 Tuesday, November 27, 2007 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.19 Tuesday, June 26, 2007 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.18 Wednesday, January 17, 2007 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.17 Thursday, December 7, 2006 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.16 Monday, November 27, 2006 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.15 Wednesday, June 14, 2006 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.14 Thursday, May 18, 2006 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.13 Tuesday, May 16, 2006 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.12 Tuesday, August 9, 2005 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.11 Sunday, March 6, 2005 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.10 Thursday, November 25, 2004 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.9 Monday, November 15, 2004 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.8 Thursday, November 4, 2004 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.7 Sunday, October 31, 2004 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.6 Monday, October 25, 2004 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.5 Wednesday, October 6, 2004 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.4 Thursday, September 9, 2004 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.3 Thursday, August 19, 2004 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.2 Monday, August 16, 2004 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.1 Wednesday, July 21, 2004 Jean-Yves Lefort jylefort@brutele.be &project; Mail Notification Manual V2.0 Tuesday, June 29, 2004 Jean-Yves Lefort jylefort@brutele.be &project; This manual describes version &appversion; of Mail Notification. Feedback To report a bug or make a suggestion regarding the &app; application or this manual, follow the directions in .
Mail Notification Introduction &app; is a status icon (&aka; tray icon) that informs you if you have new mail. It works with system trays implementing the freedesktop.org System Tray Specification, such as the GNOME Panel Notification Area, the Xfce Notification Area and the KDE System Tray. &app; features include: multiple mailbox support Evolution, Gmail, &imap;, &maildir;, &mbox;, &mh;, &mozilla; products (Mozilla, SeaMonkey, Thunderbird, …), &pop3;, &sylpheed;, Windows Live Hotmail and Yahoo! Mail support &sasl; authentication support APOP authentication support &ssl;/&tls; support automatic detection of mailbox format immediate notification (the status icon is updated immediately or within seconds after a mailbox changes) message popups HIG 2.0 compliance Getting Started To Start &app; You can start &app; in the following ways: System menu Choose Preferences &app; (this location may vary across systems). Command line To start &app; from a command line, type the following command in a terminal: mail-notification options where options is one or more options from the following non-exhaustive list: -v, --version Show version information and compiled-in features -i, --enable-info Enable informational output Security The output of --enable-info may contain sensitive information such as passwords and session transcripts. -p, --display-properties Display the properties dialog -a, --display-about Display the about dialog -r, --consider-new-mail-as-read Consider new mail as read -u, --update Update the mail status -s, --print-summary Print a XML mail summary --unset-obsolete-configuration Unset obsolete GConf configuration -q, --quit Quit &app; -?, --help Show help When You Start &app; When you start &app;, it puts itself in the background and monitors the status of your mailboxes. When new mail arrives, an icon similar to the following one is displayed in the notification area (&aka; system tray). The number of new messages is displayed over the icon.
&app; when there is new mail Shows the &app; status icon.
Additionally: if the Play a sound when new mail arrives setting is enabled, that sound is played if the Enable message popups setting is enabled, information about each new message is popped up on your desktop If an error is detected, the icon blinks. Leaving your mouse over the icon will reveal more details about the status of your mailboxes. Clicking on the icon will perform the action specified in the Click Action setting.
Properties To configure &app;, choose System Preferences Mail Notification (this location may vary across systems). The Properties dialog contains the following tabbed sections: General Status Icon Message Popups In addition, at the bottom of the dialog, the Display test messages setting can be used to test the various settings against test messages. General General Play a sound when new mail arrives If this setting is enabled, the selected sound will be played when new mail arrives. Mailbox List This is the list of mailboxes to monitor for new mail. Selecting Add or Properties will display the Mailbox Properties dialog. You can drag a file or folder into this list. Status Icon Click Action Launch the mail reader Launches the GNOME mail reader. To specify your preferred mail reader, choose System Preferences Preferred Applications (this location may vary across systems). Open the latest message Opens the most recent message, if supported. This is equivalent to clicking on the Open button in the message popup. See the Message Actions section for more details. Consider new mail as read Hides the messages received so far. This action has no permanent effects: your mailboxes will not be modified, and the messages will no longer be hidden the next time &app; is started. Update the mail status Checks for new mail in all mailboxes which do not support immediate notification. Message Popups General Enable message popups If this setting is enabled, an information window will be popped up on your desktop whenever a new message arrives. Position The location of the message popups on the screen. Attached to the status icon Message popups will be placed next to the status icon. In the popup stack Message popups will be stacked together in one corner of your screen. Expiration You can choose to have message popups stay on the screen until you click on them, or have them disappear after a delay has elapsed. Mailbox Properties The Mailbox Properties dialog is displayed when you add a new mailbox or when you edit an existing one. It may contain the following tabbed sections: General Connection Details General General Mailbox type This is the type of the mailbox. If you select autodetect, the type will be autodetected using the mailbox &uri; and/or contents. Location (Autodetect and System mailbox only) This is the &uri; of the mailbox. &app; abstracts file operations by using &gnomevfs;. All the schemes (http, ftp, sftp, …) supported by &gnomevfs; are therefore supported by &app;. Account (Gmail, IMAP, POP3, Windows Live Hotmail and Yahoo! Mail only) Server (IMAP and POP3 only) This is the hostname or IP address of the &imap; or &pop3; server. Symbolic names as well as IPv4 and IPv6 addresses are supported. Username This is your username on the mail server. Password This is your password on the mail server. If the password is filled in, it will be stored in your default keyring. If it is left out, a password prompt will appear when needed. IMAP and POP3 Security To avoid sending your password over the network in clear text, you must either use a SSL/TLS connection or select a secure authentication mechanism. See the Authentication Mechanism setting for more details. IMAP Mailbox (IMAP only) This is the &imap; mailbox to use. Folder (Evolution only) This is the Evolution folder to monitor for changes. For the folder selector to be available and for monitoring an Evolution mailbox, Evolution must be running and the Evolution Jean-Yves Lefort's Mail Notification plugin must be loaded. Connection (<guilabel>IMAP</guilabel> and <guilabel>POP3</guilabel> only) Connection type This is the type of connection to use and the port number to connect to. In-band SSL/TLS refers to a &ssl;/&tls; connection negotiated inside of the protocol (using the STARTTLS &imap; command or the STLS &pop3; command). SSL/TLS on separate port refers to the most widespread method for establishing a &ssl;/&tls; connection: using a separate port. Authentication Mechanism This is the authentication mechanism to use. If you select autodetect, all the authentication mechanisms supported by the &imap; or &pop3; server will be tried, in descending order of security. Otherwise, the selected mechanism (and only the selected mechanism) will be used. Security If autodetect is selected and secure authentication fails, your credentials may be sent over the network in clear text (unless you use a &ssl;/&tls; connection). If this is a concern, select the appropriate secure authentication mechanism from the drop-down list. Use the IDLE extension (IMAP only) The IDLE extension (as defined by RFC 2177) allows &app; to stay connected to the server and provide immediate notification of changes. If never is selected, &app; will never use the IDLE extension, not even if the server supports it. Use this setting if it appears that &app; does not detect changes to an &imap; mailbox while the IDLE extension is in use. If using this setting fixes the issue, please also send the &imap; session transcript (obtained by running &app; using the --enable-info option) to Jean-Yves Lefort jylefort@brutele.be. If autodetect is selected, &app; will use the IDLE extension if the server supports it, unless the server software is known to have a broken IDLE implementation (currently, the only such software known to &app; is the University of Washington imapd). This is the recommended choice. If always is selected, &app; will use the IDLE extension if the server supports it, regardless of the server software. Use this setting if you want to force &app; to use the IDLE extension, even if it has detected a bogus implementation. Details Mailbox Name You can choose to assign a custom name to the mailbox. The mailbox name has informative purposes only, and is displayed in various parts of &app;. Delay Between Mail Checks This is the amount of time to wait between mail checks. This delay is only used if the mailbox does not support immediate notification of changes. Advanced Configuration Message Actions Message popups support the following actions: Open Mark as Read Mark as Spam Delete Note that the Delete action is disabled by default. It can be enabled by modifying the /apps/mail-notification/popups/actions GConf key. See the GConf Settings section for more details about the GConf database. Built-in Actions The following table summarizes the currently implemented built-in actions for each mailbox type. Built-in Actions Mailbox Type Open Mark as Read Mark as Spam Delete Evolution yes yes yes yes Gmail yes no no no &imap; no no no no &maildir; yes yes no yes &mbox; no no no no &mh; yes no no no &mozilla; no no no no &sylpheed; yes yes no no &pop3; no no no no Windows Live Hotmail no no no no Yahoo! Mail no no no no
Custom Actions To define a custom action for a particular mailbox, edit the ~/.gnome2/mail-notification/mailboxes.xml file and specify a command to be executed when the action button is clicked. If both a built-in action and a custom action exists, the custom action overrides the built-in action. XML attributes should be added to the mailbox element of the mailbox you want the actions to be available for. The following table specifies which XML attribute should be used for a particular action. Action Attributes Action XML Attribute Open open-command Mark as Read mark-as-read-command Mark as Spam mark-as-spam-command Delete delete-command
Before executing a command, some strings will be substituted. The following table summarizes the available substitutions. Command String Substitutions String Substitution %% a single percent character %sent-time the message timestamp expressed in seconds since the Epoch (00:00:00 UTC, January 1, 1970) %id the message unique identifier %from the message sender %subject the message subject, if any %uri the message &uri;, if any %filename if the message has an &uri; and that &uri; points to a local filename, that filename %uid the Evolution message UID, if any
Substitutions will be shell-quoted as appropriate, you therefore must not quote the percent strings. Keywords can be enclosed in braces, as in %{from}. Example: <?xml version="1.0"?> <mailboxes> <mailbox type="custom-vfs" uri="file:///home/jylefort/Mail/misc" open-command="my-open-script %filename" mark-as-spam-command="my-spam-script %filename"/> </mailboxes>
Modifying the Appearance of &app; &app; sets names for several widgets and icons, so that they can easily be matched in a GTK+ resource file. More information about GTK+ resource files, including a description of their format, can be found in the Resource Files section of the GTK+ Reference Manual. Widget Names Widget Name mail icon and message count mn-mail-icon tooltip section title mn-tooltip-section-title tooltip section body (except mail summary) mn-tooltip-section-body tooltip mail summary mn-message-view
Icon Names Icon Name status icon when there is new mail mn-mail status icon when there is no new mail mn-no-mail local mailbox mn-local remote mailbox mn-remote autodetect (in the Mailbox type drop-down menu) mn-unknown mailbox error mn-error Gmail mailbox mn-gmail Yahoo! Mail mailbox mn-yahoo Windows Live Hotmail mailbox mn-hotmail system mailbox mn-system-mailbox Evolution mailbox mn-evolution-mailbox mail reader mn-mail-reader open message mn-open-message consider new mail as read mn-consider-new-mail-as-read
Examples You can modify the appearance of &app; by editing the ~/.gtkrc-2.0 file. To use a larger font for the message count of the mail icon, and display it on a yellow background: style "mn-mail-icon" { font_name = "Sans 12" bg[NORMAL] = "#FFFF00" } widget "*.mn-mail-icon" style "mn-mail-icon" To use a smaller font for the mail summary tooltip messages: style "mn-mail-summary-tooltip-messages" { font_name = "Sans 8" } widget "gtk-tooltips.*.mn-message-view" style "mn-mail-summary-tooltip-messages" To use some custom icons: pixmap_path "/home/myaccount/icons" style "mn-icons" { stock["mn-mail"] = { { "my-mail-icon.png" } } stock["mn-no-mail"] = { { "my-no-mail-icon.png" } } } widget "*" style "mn-icons"
GConf Settings A number of advanced settings are available in the /apps/mail-notification namespace of the GConf database. To modify these settings, type the following command in a terminal: gconf-editor /apps/mail-notification
Troubleshooting If &app; does not work as expected, remember that you can obtain more details by leaving your mouse over its icon. Additionally, a very efficient way to identify and solve problems is to run &app; using the --enable-info option and examine the output. Security The output of --enable-info may contain sensitive information such as passwords and session transcripts. Technical Information Immediate Notification Immediate notification is the ability to detect changes to a mailbox without needing to check it periodically. It allows the status icon to be updated immediately (or within seconds) after a mailbox changes. Requirements for immediate notification to be enabled: &maildir;, &mbox;, &mh;, &mozilla; and &sylpheed; mailboxes: &gnomevfs; must support monitoring (it usually does). &imap; mailboxes: The &imap; server must support the IDLE extension, as defined by RFC 2177. Evolution mailboxes: There is no requirement. Immediate notification is always enabled. Gmail, &pop3;, Windows Live Hotmail and Yahoo! Mail mailboxes: Immediate notification is not supported by these mailbox types. If immediate notification cannot be enabled for a mailbox (either because that type of mailbox does not support it or because the requirements are not met), the mailbox will be checked periodically according to its Delay Between Mail Checks setting. POP3 Implementation The &app; &pop3; implementation strictly conforms to RFC 1939, RFC 2449, RFC 1734, RFC 2595 and RFC 2384. The AUTH, APOP and USER/PASS authentication mechanisms are supported, and the LOGIN-DELAY capability is honoured. The TOP optional command is supported. The authentication logic can be represented with the following pseudo-code: success = false; if (mailbox.config.authmech != autodetect) { if (mailbox.config.authmech in server.supported_authmechs) { success = server.authenticate(mailbox.config.authmech); } } else { if (has_sasl_support && server.supports_sasl) { foreach authmech in server.supported_authmechs { if (server.ssl_connection || ! authmech.plaintext) { success = server.authenticate(authmech); if (success) break; } } if (! success && server.supports_apop) { success = server.authenticate(apop); } if (! success) { success = server.authenticate(userpass); } } } if (! success) { mailbox.error = "authentication failed"; } IMAP Implementation The &app; &imap; implementation strictly conforms to RFC 3501, RFC 2177 and RFC 2192. The AUTHENTICATE and LOGIN authentication mechanisms are supported, and the IDLE extension is implemented. The authentication logic can be represented with the following pseudo-code: success = false; if (mailbox.config.authmech != autodetect) { if (mailbox.config.authmech in server.supported_authmechs) { success = server.authenticate(mailbox.config.authmech); } } else { if (has_sasl_support && server.supports_sasl) { foreach authmech in server.supported_authmechs { if (server.ssl_connection || ! authmech.plaintext) { success = server.authenticate(authmech); if (success) break; } } if (! success && server.supports_login) { server.authenticate(login); } } } if (! success) { mailbox.error = "authentication failed"; } Frequently Asked Questions How can I access the Properties dialog? Choose System Preferences Mail Notification (this location may vary across systems) or type mail-notification -p in a terminal. You say that &app; supports <mailbox type>, but there is no such entry in the Mailbox Properties dialog. &app; was built without support for <mailbox type>. If you have installed &app; from a package, contact the package maintainer and ask him to enable <mailbox type> support. If you have built &app; yourself, install the <mailbox type> prerequisites (they are listed in the INSTALL file), then rebuild &app;. I need &ssl;/&tls; for connecting to my &pop3; or &imap; server, but the &ssl;/&tls; settings are greyed out. &app; was built without &ssl;/&tls; support. If you have installed &app; from a package, contact the package maintainer and ask him to enable &ssl;/&tls; support. If you have built &app; yourself, install the &ssl;/&tls; prerequisites (they are listed in the INSTALL file), then rebuild &app;. When monitoring a &pop3; mailbox, &app; reports all messages as new. This is caused by limitations in the &pop3; protocol. You should configure your mail reader so that it deletes mail from the server after downloading it. How can I monitor multiple &imap; folders? Add each folder as a separate &app; mailbox. Can I monitor a <webmail provider> account? &app; has no native support for <webmail provider> mailboxes. However, &app; supports the &pop3; and &imap; protocols; you can therefore use a separate application for providing &pop3; or &imap; access to the <webmail provider> account. How can I access message data from the new mail command? Parse the output of mail-notification --print-summary. I do not use &app; but I am presented with the properties dialog each time I log in. How can I disable it? Choose System Preferences Sessions (this location may vary across systems). Select the Startup Programs tab. Uncheck the Mail Notification entry. About &app; &app; was written by Jean-Yves Lefort jylefort@brutele.be. To find more information about &app;, visit the Mail Notification web site. Reporting Bugs and Other Feedback Bug reports and feature requests should be filed in the Mail Notification bug tracker. Other feedback can be sent to Jean-Yves Lefort jylefort@brutele.be. Acknowledgements Claudio André Hendrik Brandt Kim Briggs Hiroshi Hasebe Duarte Henriques Nacho Hermoso de Mendoza Dan Korostelev Pav Lucistnik Filip Miletic Phil Nelson Daniel Nylander Lorenzo Orlandini Maurycy Pawłowski-Wieroński Vladimir Petkov Benoît Rouits Tomasz Sarota-Raczek Tomasz Sałaciński Edwin Shin Topi Marcel J. Zwiebel Licensing Terms &software-license; Glossary G GnomeVFS A filesystem abstraction library allowing applications to access local, remote and virtual resources in a transparent fashion. GnomeVFS is part of the GNOME Desktop Environment. I IMAP Internet Message Access Protocol IMAP A protocol allowing a client to access and manipulate electronic mail messages on a server. &app; implements version 4rev1 of the protocol, as defined by RFC 3501. M Maildir A mailbox format popularised by the qmail mail transfer agent. Messages are stored in a structure of directories for reliability. mbox The traditional UNIX mailbox format. Messages are stored in a single file. MH A mailbox format popularised by the MH mail user agent. Messages are stored as separate files for flexibility and performance. Mozilla In this manual, a Mozilla mailbox refers to a mailbox produced by a Mozilla-based mail reader (Mozilla, SeaMonkey, Thunderbird, …). This mailbox format only differs from the &mbox; format by the fact that message status information is stored in the X-Mozilla-Status header instead of the Status header. P POP3 Post Office Protocol Version 3 POP3 A protocol allowing a workstation to dynamically access a maildrop on a server host, as defined by RFC 1939. S SASL Secure Sockets Layer SSL A protocol securing a connection through the use of cryptographic techniques. Simple Authentication and Security Layer SASL A method for adding authentication support to connection-based protocols, as defined by RFC 2222. SSL Sylpheed The mailbox format used by the Sylpheed mail user agent. The Sylpheed format adds a binary cache to MH folders for faster indexing. T TLS Transport Layer Security TLS A protocol securing a connection through the use of cryptographic techniques, as defined by RFC 2246. TLS is the successor of &ssl;. U Uniform Resource Identifier URI A compact string of characters for identifying an abstract or physical resource, as defined by RFC 2396. URI
mail-notification-5.4.dfsg.1/help/C/figures/0000755000175000001440000000000011015313027020422 5ustar evilynuxusersmail-notification-5.4.dfsg.1/help/C/figures/mail.png0000644000175000001440000000153010722402031022047 0ustar evilynuxusersPNG  IHDR(ClesRGBbKGD pHYs  IDATH_HSQ?wKR>OC!j1,X.&BBIYTC=TPb 1֐˼wƦs^#,lcOp ~`άUv"躎i)]_; A!x_[wRrb61L4]ٛs7M~Ų Q!u#p8ep8CP\;_UUdYpPWW@0diII(* DZbQEQ4-ۯ*NE^^j8iΠhƾ躎,Hfpp0}>yl\;3ĥՄ8{-ɱ1C'J+je``͖{0$/F=k'`,**n9kJ @>e|)}u<UUUt:u3<ٙi.rɝtT%EEQx<466R\\$Ih.{%E!##ܜt=y#:8ٳ V^H]]]444`X$)9fg9+a Egvv ܼu'=w;iAOOϺd݈׮mF4 jylefort@brutele.be (Jean-Yves Lefort) jylefort@brutele.be (Jean-Yves Lefort) Mail Notification Manual 2008-05-22 Mail Notification Manual user's guide mail-notification-5.4.dfsg.1/help/C/software-license.xml0000644000175000001440000000064310722320675022770 0ustar evilynuxusers This program is distributed under the terms of the GNU General Public license as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. A copy of this license can be found at this link, or in the file COPYING included with the source code of this program. mail-notification-5.4.dfsg.1/TODO0000644000175000001440000000041111015312156016332 0ustar evilynuxusers* List the available IMAP folders in the mailbox properties dialog, and/or allow to check all subscribed folders * The "delete" message action could also be implemented with little effort for Sylpheed mailboxes (other mailbox types would require more work). mail-notification-5.4.dfsg.1/tests/0000755000175000001440000000000011015313040017001 5ustar evilynuxusersmail-notification-5.4.dfsg.1/tests/test-vfs-read-line2.expected0000644000175000001440000000010110106543401024215 0ustar evilynuxusersline: first line line: second line line: third line (terminated) mail-notification-5.4.dfsg.1/tests/test-vfs-read-line2.input0000644000175000001440000000005710106543401023565 0ustar evilynuxusersfirst line second line third line (terminated) mail-notification-5.4.dfsg.1/tests/test-vfs-read-line1.expected0000644000175000001440000000010310106543401024216 0ustar evilynuxusersline: first line line: second line line: third line (unterminated) mail-notification-5.4.dfsg.1/tests/test-vfs-read-line.c0000644000175000001440000000326710755056245022613 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "mn-vfs.h" int main (int argc, char **argv) { GnomeVFSResult result; GnomeVFSHandle *handle; MNVFSReadLineContext *context = NULL; const char *line; g_log_set_fatal_mask(G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL); if (argc != 2) g_critical("wrong number of arguments"); if (! gnome_vfs_init()) g_critical("unable to initialize GnomeVFS"); result = gnome_vfs_open(&handle, argv[1], GNOME_VFS_OPEN_READ); if (result != GNOME_VFS_OK) g_critical("unable to open %s: %s", argv[1], gnome_vfs_result_to_string(result)); while ((result = mn_vfs_read_line(&context, handle, &line)) == GNOME_VFS_OK) g_print("line: %s\n", line); if (result != GNOME_VFS_OK && result != GNOME_VFS_ERROR_EOF) g_critical("error while reading %s: %s", argv[1], gnome_vfs_result_to_string(result)); mn_vfs_read_line_context_free(context); gnome_vfs_close(handle); return 0; } mail-notification-5.4.dfsg.1/tests/test-vfs-read-line1.input0000644000175000001440000000006010106543401023556 0ustar evilynuxusersfirst line second line third line (unterminated)mail-notification-5.4.dfsg.1/AUTHORS0000644000175000001440000000271510736011514016726 0ustar evilynuxusers=============================================================================== Mail Notification credits =============================================================================== Developed by Jean-Yves Lefort . Translators: * Claudio André (Brazilian Portuguese) * Hendrik Brandt , Jens Seidel (German) * Hiroshi Hasebe (Japanese) * Duarte Henriques (Portuguese) * Nacho Hermoso de Mendoza (Spanish) * Dan Korostelev (Russian) * Pav Lucistnik (Czech) * Filip Miletic (Serbian) * Daniel Nylander (Swedish) * Vladimir Petkov (Bulgarian) * Tomasz Sarota-Raczek , Maurycy Pawłowski-Wieroński , Tomasz Sałaciński (Polish) * Topi (Catalan) * Marcel J. Zwiebel (Dutch) Graphic designers: * Josef Vybíral (art/*/apps/mail-notification.*) External code sources: * libegg (src/egg*) * Nautilus (src/nautilus*) * The GNU C Library (src/mn-md5.*) External image sources (images taken as-is or slightly modified): * Google (gmail.png) * Yahoo! (yahoo.png) * Microsoft (hotmail.png) External sound sources: * Ekiga (new-mail.wav) mail-notification-5.4.dfsg.1/data/0000755000175000001440000000000011015313027016555 5ustar evilynuxusersmail-notification-5.4.dfsg.1/data/new-mail.wav0000644000175000001440000001077510721411000021010 0ustar evilynuxusersRIFFWAVEfmt ++data~|xy{||}wo_\apqohpkADq~|__q_SF;4;OkȰv\@5@Zu{uwwoxkQB@CFHOay{nnqoifkv~ziWPYjzǿ|o^MCDNX`huxi`[UNJPc~unh`UPS^lv|vaOGIPYbm~{qlkjgegmuxvrqv~xk`UNOWcox~xwxyvpjgfffflwsidb`_afnw}}xpe\XZ`is~{snlllkklpvz}{qha\Y\do{{vsrqomlnqtw{ynfcbdglszzvspmjhilryzsnklnprsvy}zsnjhfgkqy|yvtsrrrrsuy}{tnihhkot{~zvsqpopqty~{vqnmnptwz~}xtqonopsw|}ywutttuvwyz|~zvrpnoqtw|}{zxvtttuvy|{xtrqqrux||yvtrrsux{}zwuutuvxz|~}zwusssux{~}{zxxwwwxy{|~{xvutuvxz}}{zxwvvwxz}}zxwvvwxz|~}{ywvvvxz}}{zyxxyyz|}~{yxwwwxz|~~|{zyyyyz{}}{yxxxyz|{xvuuvwyz|}~~~~|~{vqsXC>M`vU ?Tl`dz}}yvvxzxqeWKGN`zj\UTWZ]cnٸgF2$"*6DZs}sg\USV`lz|hR@32>TtĹvY@/&)7Jbxvnhfglvr[H=526>I[szja[XVVX^gr~~vqqt{|{zz|q\I;.(*4CZtujdchpy|vqnnpsvxz|zqkhktycO@737@N`t{snmnqtx|~{z{~zrkd`_`dipx|l^TNLNU^jx|wtrruy|wqjc[SMKNVdvqaVPPU^it~|uolknsy|si`XTSUZblwxpjggimsz}wspoopqrtvy|~}rh^VQPT\gt|uollpw{tniedegjmprtvx|wlc]ZZ]cjrz|wtstw|}xusqpomljjjlnrv{}unheeglrz|vpljikot|}{ywurpmjiikpv||wtsux}}unhdbcfjpv|ztojgffhkotz|zxy{~xqlhfffedhmsxm]\[_|zwloZIWX[JJbvshbbfnv~|sh]URSYco|umfbadjtu_L@;;@FQ\gr}uibafoxzrjecekuuj`YUUX_huo^OFBCJVdq}~wrprv|}yurokgb]XVV[cn|xlaZVUVZ`hpxvngcbfoz}vojfdfkt~ymc\XWX\bir{tkea_`chnu|{xurqpqtx|~zvuw{yod[SONRYdq~}zyxy|{upljhijmquy|~}{ywvvvx{~seZRMJKNS[dnz|xvwz~}wrmkjknqtwyz{{{{zzyyyz|{uojfddfjqx~zwusqqsw{}||}yrjd_]]`elt~ztpnoquy~}unhcaacfkqw}|vpjea_]^`cipy}|{|~|wspnmmnoqsvy|{vpkgdcdglryztqnnpsyyuqonorux{~~}|zyyyz{}|ywvuuvwy{}}yvrponorux}|zxwvutsrqponmmnoruzzwtstux|{xtqommmoruz~|{zz{||}||zxvtsrrrtvy|{xvuvxz}|wtqooprtwz|~|zyxwwwwyz|~~|zyxwxyz}}xtpnlklmorux{}{xtrqqrtvx{}~~|{yxwxy{~{wtqpppqsuvxz{}~}|zzyz{|~}zwutttuwy|~}{zxwwwwxz|~{wsomkkkmptx|~|zywvvvvvwxy{|~|xusqpopqsuxz}~|{yyxxyz|}~}|zzyz{|~~|zyxwwxyz|~~}}||||}~~}|{yxvutttuwy|~}}}}}}|||{zzyyxxxyz{|~}zxvtsrrrsuwz}~~}}~~~}|{zzzz{|}~~}{zyxwwxyz|}~}||{{{{{{{{{{zzz{|}~}{zyyyyyz{||}}~~}}}|||}}~~}|{{zzzzzzyyyzzz{{|~}|{zzzz{|}}~~~~}}}}}~~~}}|{{zzzzz{|}~}|{zyyyzz{|}~~}{zyxxxxxyz{}~~|{zyxxxxxyz{|}~~}{zzyyzz{|}}~~}|||||||}}}}}}}~~~~~~~~~~}|{{{{{||}~}}||{{{zz{{{|}~~}|{zyyyyyz{|}~~}||{zzzzz{||}~~}|{{zz{{{|}~mail-notification-5.4.dfsg.1/data/mail-notification.schemas.in.in0000644000175000001440000003145711015311230024546 0ustar evilynuxusers /schemas/apps/mail-notification/commands/new-mail/enabled /apps/mail-notification/commands/new-mail/enabled mail-notification bool 0 Run a command when new mail arrives Whether to run a command when new mail arrives or not. /schemas/apps/mail-notification/commands/new-mail/command /apps/mail-notification/commands/new-mail/command mail-notification string New mail command The command to run when new mail arrives. /schemas/apps/mail-notification/commands/mail-read/enabled /apps/mail-notification/commands/mail-read/enabled mail-notification bool 0 Run a command when all mail is read Whether to run a command when all mail is read or not. /schemas/apps/mail-notification/commands/mail-read/command /apps/mail-notification/commands/mail-read/command mail-notification string Mail read command The command to run when all mail is read. /schemas/apps/mail-notification/commands/mail-changed/enabled /apps/mail-notification/commands/mail-changed/enabled mail-notification bool 0 Run a command when the message list changes Whether to run a command when the message list changes or not. /schemas/apps/mail-notification/commands/mail-changed/command /apps/mail-notification/commands/mail-changed/command mail-notification string Mail changed command The command to run when the message list changes. /schemas/apps/mail-notification/ui/properties-dialog/height /apps/mail-notification/ui/properties-dialog/height mail-notification int -1 Height of properties dialog The height of the properties dialog in pixels. /schemas/apps/mail-notification/ui/properties-dialog/width /apps/mail-notification/ui/properties-dialog/width mail-notification int -1 Width of properties dialog The width of the properties dialog in pixels. /schemas/apps/mail-notification/blink-on-errors /apps/mail-notification/blink-on-errors mail-notification bool 1 Blink on errors Whether the status icon should blink on errors or not. /schemas/apps/mail-notification/trusted-x509-certificates /apps/mail-notification/trusted-x509-certificates mail-notification list string Fingerprints of trusted X509 certificates The list of trusted X509 certificates, represented by their MD5 fingerprint. /schemas/apps/mail-notification/trusted-servers /apps/mail-notification/trusted-servers mail-notification list string Trusted servers list The list of trusted SSL/TLS servers (hostname:port) lacking a X509 certificate. /schemas/apps/mail-notification/display-seen-mail /apps/mail-notification/display-seen-mail mail-notification bool 1 Display seen mail Whether to display mail which is still marked as unread but has been seen or not. /schemas/apps/mail-notification/tooltip-mail-summary /apps/mail-notification/tooltip-mail-summary mail-notification string standard Tooltip mail summary The type of mail summary to display in the icon's tooltip. Must be "standard", "compact" or "none". /schemas/apps/mail-notification/always-display-icon /apps/mail-notification/always-display-icon mail-notification bool 0 Always display an icon Whether to display an icon when there is no new mail or not. /schemas/apps/mail-notification/display-message-count /apps/mail-notification/display-message-count mail-notification bool 1 Display a message count in the status icon Whether to display a message count in the status icon or not. /schemas/apps/mail-notification/click-action-3 /apps/mail-notification/click-action-3 mail-notification string launch-mail-reader Click action The action to perform when the icon is clicked. Must be "launch-mail-reader", "open-latest-message", "consider-new-mail-as-read" or "update-mail-status". /schemas/apps/mail-notification/popups/enabled /apps/mail-notification/popups/enabled mail-notification bool 1 Enable message popups Whether to enable message popups or not. /schemas/apps/mail-notification/popups/actions /apps/mail-notification/popups/actions mail-notification list string [open,mark-as-read,mark-as-spam] Message popups actions The ordered list of actions to include in the message popups. Each element must be "open", "mark-as-read", "mark-as-spam" or "delete". /schemas/apps/mail-notification/popups/position /apps/mail-notification/popups/position mail-notification string attached Message popups position The position of the message popups. Must be "attached" or "free". /schemas/apps/mail-notification/popups/limit /apps/mail-notification/popups/limit mail-notification int 10 Maximum number of simultaneous popups The maximum number of popups to display simultaneously. If this limit is exceeded, only the most recent messages will be displayed. If the /apps/mail-notification/popups/position key is set to "attached", this limit will be ignored and only one popup will be allowed. /schemas/apps/mail-notification/popups/expiration/enabled /apps/mail-notification/popups/expiration/enabled mail-notification string default Expire message popups Whether to expire message popups or not. Must be "default", "false" or "true". /schemas/apps/mail-notification/popups/expiration/delay-2 /apps/mail-notification/popups/expiration/delay-2 mail-notification int 10 Seconds to wait before expiring message popups If /apps/mail-notification/popups/expiration/enabled is set to "true", the number of seconds to wait before expiring message popups. /schemas/apps/mail-notification/sounds/play-command /apps/mail-notification/sounds/play-command mail-notification string exec gst-launch-0.10 filesrc location=%file ! decodebin ! audioconvert ! gconfaudiosink >/dev/null 2>&1 Play sound command The command to use to play a sound file. The string %file will be substituted with the filename of the sound to play. /schemas/apps/mail-notification/sounds/new-mail/enabled /apps/mail-notification/sounds/new-mail/enabled mail-notification bool 0 Play a sound when new mail arrives Whether to play a sound when new mail arrives or not. /schemas/apps/mail-notification/sounds/new-mail/file /apps/mail-notification/sounds/new-mail/file mail-notification string @pkgdatadir@/new-mail.wav New mail sound The sound file to play when new mail arrives. /schemas/apps/mail-notification/fallback-charsets /apps/mail-notification/fallback-charsets mail-notification list string [user,ISO8859-15] Fallback character sets The list of character sets to attempt conversion from when uncompliant 8-bit data is encountered in message headers. The first character set allowing a successful conversion will be used. The special name "user" will be replaced with the character set of the user's locale. Note that Mail Notification must be restarted for changes to take effect. /schemas/apps/mail-notification/tooltip-mail-summary-limit /apps/mail-notification/tooltip-mail-summary-limit mail-notification int 10 Maximum number of messages in the tooltip mail summary The maximum number of messages to display in the tooltip mail summary. /schemas/apps/mail-notification/messages-considered-as-read /apps/mail-notification/messages-considered-as-read mail-notification list string Messages to consider as read The list of messages to consider as read and ignore. mail-notification-5.4.dfsg.1/data/mail-notification.desktop.in0000644000175000001440000000045511005107725024174 0ustar evilynuxusers[Desktop Entry] Encoding=UTF-8 _Name=Mail Notification Icon=mail-notification _Comment=Get notified when new mail arrives Type=Application Categories=GNOME;GTK;Network;Email; Exec=mail-notification --sm-disable Terminal=false StartupNotify=true X-GNOME-DocPath=mail-notification/mail-notification.xml mail-notification-5.4.dfsg.1/data/sylpheed-locking.diff0000644000175000001440000000523010770317756022674 0ustar evilynuxusers--- libsylph/procmsg.c.orig 2007-01-16 07:00:10.000000000 +0100 +++ libsylph/procmsg.c 2007-08-27 22:48:47.000000000 +0200 @@ -24,6 +24,9 @@ #include #include #include +#include +#include +#include #include "utils.h" #include "procmsg.h" @@ -796,6 +799,20 @@ fclose(fp); } +/* play nice with other applications who'd like to read our data files */ +static void procmsg_lock_data_file(int fd) +{ + struct flock lock; + + memset(&lock, 0, sizeof(lock)); + lock.l_start = 0; /* from l_whence */ + lock.l_len = 0; /* to end of file */ + lock.l_type = F_WRLCK; /* write lock */ + lock.l_whence = SEEK_CUR; /* from current position */ + + fcntl(fd, F_SETLKW, &lock); +} + FILE *procmsg_open_data_file(const gchar *file, guint version, DataOpenMode mode, gchar *buf, size_t buf_size) { @@ -805,21 +822,38 @@ g_return_val_if_fail(file != NULL, NULL); if (mode == DATA_WRITE) { - if ((fp = g_fopen(file, "wb")) == NULL) { + int fd; + + if ((fd = g_open(file, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR)) < 0) { if (errno == EACCES) { change_file_mode_rw(NULL, file); - if ((fp = g_fopen(file, "wb")) == NULL) { - FILE_OP_ERROR(file, "fopen"); + if ((fd = g_open(file, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR)) < 0) { + FILE_OP_ERROR(file, "open"); return NULL; } } else { - FILE_OP_ERROR(file, "fopen"); + FILE_OP_ERROR(file, "open"); return NULL; } } + + procmsg_lock_data_file(fd); + + if ((fp = fdopen(fd, "wb")) == NULL) { + close(fd); + FILE_OP_ERROR(file, "fdopen"); + return NULL; + } + if (change_file_mode_rw(fp, file) < 0) FILE_OP_ERROR(file, "chmod"); + if (ftruncate(fd, 0) < 0) { + close(fd); + FILE_OP_ERROR(file, "ftruncate"); + return NULL; + } + WRITE_CACHE_DATA_INT(version, fp); return fp; } @@ -859,11 +893,14 @@ change_file_mode_rw(NULL, file); if ((fp = g_fopen(file, "ab")) == NULL) { FILE_OP_ERROR(file, "fopen"); + return NULL; } } else { FILE_OP_ERROR(file, "fopen"); + return NULL; } } + procmsg_lock_data_file(fileno(fp)); } else { /* open with overwrite mode if mark file doesn't exist or version is different */ --- src/main.c.orig 2007-01-12 07:14:58.000000000 +0100 +++ src/main.c 2007-08-27 22:50:44.000000000 +0200 @@ -368,7 +368,7 @@ } else if (!strncmp(argv[i], "--send", 6)) { cmd.send = TRUE; } else if (!strncmp(argv[i], "--version", 9)) { - puts("Sylpheed version " VERSION); + puts("Sylpheed version " VERSION "+locking"); exit(0); } else if (!strncmp(argv[i], "--status-full", 13)) { const gchar *p = argv[i + 1]; mail-notification-5.4.dfsg.1/data/mail-notification-properties.desktop.in0000644000175000001440000000047111005107752026364 0ustar evilynuxusers[Desktop Entry] Encoding=UTF-8 _Name=Mail Notification Icon=mail-notification _Comment=Configure Mail Notification Type=Application Categories=GNOME;GTK;Settings;DesktopSettings; Exec=mail-notification --display-properties Terminal=false StartupNotify=true X-GNOME-DocPath=mail-notification/mail-notification.xml mail-notification-5.4.dfsg.1/src/0000755000175000001440000000000011015313040016426 5ustar evilynuxusersmail-notification-5.4.dfsg.1/src/mn-message-view.gob0000644000175000001440000000773411015312440022141 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-text-table.h" #include "mn-message.h" %} %privateheader{ #include %} %{ #include "mn-util.h" #include typedef struct { MNMessageView *self; MNTextTableCell *cell; GList *link; time_t past_time; } PastTimeCell; /* use a GQueue for O(1) append and removal */ static GQueue past_time_cells = G_QUEUE_INIT; static unsigned int past_time_cells_timeout_id = 0; %} class MN:Message:View from MN:Text:Table (abstract) { private GSList *past_time_cells; finalize (self) { self_clear_past_time_cells(self); } override (MN:Text:Table) void clear (MNTextTable *table) { self_clear_past_time_cells(SELF(table)); PARENT_HANDLER(table); } public void set_messages (self, GSList *messages) { time_t now; GSList *l; mn_text_table_clear(MN_TEXT_TABLE(self)); self_append_header(self); now = mn_time(); MN_LIST_FOREACH(l, messages) { MNMessage *message = l->data; self_append_message(self, message, now); if (l->next) self_append_message_separator(self); } } virtual private void append_header (self); virtual private void append_message (self, MN:Message *message (check null type), time_t now); virtual private void append_message_separator (self); protected void append_past_time_cell (self, time_t past_time, time_t now) { PastTimeCell *pcell; pcell = g_new(PastTimeCell, 1); pcell->self = self; pcell->cell = mn_text_table_append_text_cell(MN_TEXT_TABLE(self), NULL); pcell->link = g_list_alloc(); pcell->link->data = pcell; pcell->past_time = past_time; self_update_past_time_cell(pcell, now); selfp->past_time_cells = g_slist_prepend(selfp->past_time_cells, pcell); g_queue_push_tail_link(&past_time_cells, pcell->link); if (! past_time_cells_timeout_id) self_install_past_time_cells_timeout(); } private void clear_past_time_cells (self) { GSList *l; if (! selfp->past_time_cells) return; MN_LIST_FOREACH(l, selfp->past_time_cells) { PastTimeCell *pcell = l->data; g_queue_delete_link(&past_time_cells, pcell->link); g_free(pcell); } mn_g_slist_clear(&selfp->past_time_cells); if (g_queue_is_empty(&past_time_cells)) mn_source_clear(&past_time_cells_timeout_id); } private void install_past_time_cells_timeout (void) { GTimeVal now; int timeout; g_get_current_time(&now); timeout = (G_USEC_PER_SEC - now.tv_usec) / 1000 + 1; past_time_cells_timeout_id = gdk_threads_add_timeout(timeout, self_update_past_time_cells_cb, NULL); } private gboolean update_past_time_cells_cb (gpointer data) { time_t now; GList *l; now = mn_time(); MN_QUEUE_FOREACH(l, &past_time_cells) self_update_past_time_cell(l->data, now); self_install_past_time_cells_timeout(); return FALSE; /* remove source */ } private void update_past_time_cell (PastTimeCell *pcell (check null), time_t now) { char *formatted; formatted = mn_format_past_time(pcell->past_time, now); mn_text_table_cell_set_text(MN_TEXT_TABLE(pcell->self), pcell->cell, formatted); g_free(formatted); } } mail-notification-5.4.dfsg.1/src/mn-dialog.gob0000644000175000001440000000211511015312437020776 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} class MN:Dialog from Gtk:Dialog (abstract) { init (self) { gtk_container_set_border_width(GTK_CONTAINER(self), 5); gtk_dialog_set_has_separator(GTK_DIALOG(self), FALSE); gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(self)->vbox), 2); } } mail-notification-5.4.dfsg.1/src/mn-mailbox-view.gob0000644000175000001440000006204411015312440022143 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %{ #include #include #include #include "mn-util.h" #include "mn-shell.h" #include "mn-stock.h" #include "mn-mailbox-properties-dialog.h" #include "mn-conf.h" #include "mn-mailbox.h" #include "nautilus-cell-renderer-pixbuf-emblem.h" #include "mn-test-mailbox.h" enum { COLUMN_MAILBOX, COLUMN_ICON, COLUMN_EMBLEM, COLUMN_PIXBUF, COLUMN_LABEL, COLUMN_RAW_LABEL, N_COLUMNS }; enum { TARGET_MAILBOXES, TARGET_GNOME_COPIED_FILES, N_TARGETS }; typedef struct { gboolean has_manually_checkable; gboolean has_selection; } SensitivityInfo; static struct { char *name; GdkAtom atom; } clipboard_info[N_TARGETS] = { { "x-special/mail-notification-mailboxes" }, { "x-special/gnome-copied-files" } }; static GtkClipboard *global_clipboard; %} class MN:Mailbox:View from Gtk:Tree:View { private GtkWidget *menu = {gtk_menu_new()} destroywith gtk_widget_destroy; private GtkWidget *properties_item; private GtkWidget *update_item; private GtkWidget *remove_item; private GtkWidget *cut_item; private GtkWidget *copy_item; private GtkWidget *paste_item; private GtkWidget *select_all_item; signal (ACTION) NONE (NONE) void activate_update (self) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_selected_foreach(selection, self_activate_update_cb, self); } private void activate_update_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { MNMailbox *mailbox; gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1); if (mn_mailbox_get_manually_checkable(mailbox)) mn_mailbox_check(mailbox); g_object_unref(mailbox); } signal (ACTION) NONE (NONE) void activate_properties (self) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_selected_foreach(selection, self_activate_properties_cb, self); } private void activate_properties_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { Self *self = data; MNMailbox *mailbox; GtkWidget *dialog; gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1); dialog = (GtkWidget *) mn_shell_get_mailbox_properties_dialog(mn_shell, mailbox); if (dialog) mn_window_present_from_event(GTK_WINDOW(dialog)); else { dialog = mn_mailbox_properties_dialog_new(mn_widget_get_parent_window(GTK_WIDGET(self)), mailbox); g_signal_connect(dialog, "response", G_CALLBACK(self_properties_edit_response_h), NULL); mn_shell_add_mailbox_properties_dialog(mn_shell, MN_MAILBOX_PROPERTIES_DIALOG(dialog)); gtk_widget_show(dialog); } g_object_unref(mailbox); } signal (ACTION) NONE (NONE) void activate_add (self) { GtkWidget *dialog; dialog = mn_mailbox_properties_dialog_new(mn_widget_get_parent_window(GTK_WIDGET(self)), NULL); g_signal_connect(dialog, "response", G_CALLBACK(self_properties_add_response_h), NULL); gtk_widget_show(dialog); } signal (ACTION) NONE (NONE) void activate_remove (self) { self_remove_mailbox(self); } signal (ACTION) NONE (NONE) void activate_cut (self) { self_copy_mailbox(self); self_remove_mailbox(self); } signal (ACTION) NONE (NONE) void activate_copy (self) { self_copy_mailbox(self); } signal (ACTION) NONE (NONE) void activate_paste (self) { GtkSelectionData *data; data = gtk_clipboard_wait_for_contents(global_clipboard, clipboard_info[TARGET_MAILBOXES].atom); if (data) { GSList *configurations; GSList *l; memcpy(&configurations, data->data, data->length); MN_LIST_FOREACH(l, configurations) { MNMailbox *mailbox; mailbox = mn_mailbox_new_from_configuration(l->data); mn_mailbox_seal(mailbox); mn_mailboxes_queue_add(mn_shell->mailboxes, mailbox); g_object_unref(mailbox); } gtk_selection_data_free(data); return; } data = gtk_clipboard_wait_for_contents(global_clipboard, clipboard_info[TARGET_GNOME_COPIED_FILES].atom); if (data) { if (data->format == 8 && data->length > 0) { char *gnome_copied_files; gboolean status; MNGnomeCopiedFilesType type; GSList *uri_list; gnome_copied_files = g_strndup(data->data, data->length); status = mn_parse_gnome_copied_files(gnome_copied_files, &type, &uri_list); g_free(gnome_copied_files); if (status) { if (type == MN_GNOME_COPIED_FILES_COPY) { GSList *l; GSList *invalid_uri_list = NULL; MN_LIST_FOREACH(l, uri_list) { const char *uri = l->data; MNMailbox *mailbox; mailbox = mn_mailbox_new_from_uri(uri); if (mailbox) { mn_mailbox_seal(mailbox); mn_mailboxes_queue_add(mn_shell->mailboxes, mailbox); g_object_unref(mailbox); } else invalid_uri_list = g_slist_append(invalid_uri_list, (gpointer) uri); } if (invalid_uri_list) { mn_show_invalid_uri_list_dialog(mn_widget_get_parent_window(GTK_WIDGET(self)), _("A paste error has occurred"), invalid_uri_list); g_slist_free(invalid_uri_list); } } mn_g_slist_free_deep(uri_list); } } gtk_selection_data_free(data); } } class_init (class) { GtkBindingSet *binding_set; int i; global_clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); for (i = 0; i < N_TARGETS; i++) clipboard_info[i].atom = gdk_atom_intern(clipboard_info[i].name, FALSE); binding_set = gtk_binding_set_by_class(class); /* Delete removes a row */ gtk_binding_entry_add_signal(binding_set, GDK_Delete, 0, "activate-remove", 0); gtk_binding_entry_add_signal(binding_set, GDK_KP_Delete, 0, "activate-remove", 0); /* HIG 2.0 cut/copy/paste shortcuts */ gtk_binding_entry_add_signal(binding_set, GDK_x, GDK_CONTROL_MASK, "activate-cut", 0); gtk_binding_entry_add_signal(binding_set, GDK_c, GDK_CONTROL_MASK, "activate-copy", 0); gtk_binding_entry_add_signal(binding_set, GDK_v, GDK_CONTROL_MASK, "activate-paste", 0); /* cut/copy/paste shortcuts taken from gtkentry.c */ gtk_binding_entry_add_signal(binding_set, GDK_Delete, GDK_SHIFT_MASK, "activate-cut", 0); gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_CONTROL_MASK, "activate-copy", 0); gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_SHIFT_MASK, "activate-paste", 0); /* HIG 2.0 properties */ gtk_binding_entry_add_signal(binding_set, GDK_Return, GDK_MOD1_MASK, "activate-properties", 0); gtk_binding_entry_add_signal(binding_set, GDK_ISO_Enter, GDK_MOD1_MASK, "activate-properties", 0); gtk_binding_entry_add_signal(binding_set, GDK_KP_Enter, GDK_MOD1_MASK, "activate-properties", 0); } init (self) { GtkMenuShell *shell; GtkWidget *add_item; GtkListStore *store; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkTreeSelection *selection; GList *l; /* popup menu */ shell = GTK_MENU_SHELL(selfp->menu); /* ordered according to chapter 4 of the HIG */ selfp->properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL); /* translators: header capitalization */ selfp->update_item = mn_menu_shell_append(shell, GTK_STOCK_REFRESH, _("_Update")); mn_menu_shell_append(shell, NULL, NULL); add_item = mn_menu_shell_append(shell, GTK_STOCK_ADD, NULL); selfp->remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, NULL); mn_menu_shell_append(shell, NULL, NULL); selfp->cut_item = mn_menu_shell_append(shell, GTK_STOCK_CUT, NULL); selfp->copy_item = mn_menu_shell_append(shell, GTK_STOCK_COPY, NULL); selfp->paste_item = mn_menu_shell_append(shell, GTK_STOCK_PASTE, NULL); mn_menu_shell_append(shell, NULL, NULL); selfp->select_all_item = mn_menu_shell_append(shell, GTK_STOCK_SELECT_ALL, NULL); g_signal_connect_swapped(selfp->properties_item, "activate", G_CALLBACK(self_activate_properties), self); g_signal_connect_swapped(selfp->update_item, "activate", G_CALLBACK(self_activate_update), self); g_signal_connect_swapped(add_item, "activate", G_CALLBACK(self_activate_add), self); g_signal_connect_swapped(selfp->remove_item, "activate", G_CALLBACK(self_activate_remove), self); g_signal_connect_swapped(selfp->cut_item, "activate", G_CALLBACK(self_activate_cut), self); g_signal_connect_swapped(selfp->copy_item, "activate", G_CALLBACK(self_activate_copy), self); g_signal_connect_swapped(selfp->paste_item, "activate", G_CALLBACK(self_activate_paste), self); g_signal_connect_swapped(selfp->select_all_item, "activate", G_CALLBACK(self_select_all), self); /* store */ store = gtk_list_store_new(N_COLUMNS, MN_TYPE_MAILBOX, G_TYPE_STRING, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(store), self_sort_cb, NULL, NULL); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); gtk_tree_view_set_model(GTK_TREE_VIEW(self), GTK_TREE_MODEL(store)); column = gtk_tree_view_column_new(); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); renderer = nautilus_cell_renderer_pixbuf_emblem_new(); g_object_set(renderer, "stock-size", GTK_ICON_SIZE_LARGE_TOOLBAR, NULL); gtk_tree_view_column_pack_start(column, renderer, FALSE); gtk_tree_view_column_set_attributes(column, renderer, "stock-id", COLUMN_ICON, "pixbuf-emblem", COLUMN_EMBLEM, "pixbuf", COLUMN_PIXBUF, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_add_attribute(column, renderer, "markup", COLUMN_LABEL); gtk_tree_view_append_column(GTK_TREE_VIEW(self), column); /* misc */ gtk_tree_view_set_search_column(GTK_TREE_VIEW(self), COLUMN_RAW_LABEL); gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(self), self_search_equal_cb, NULL, NULL); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(self), FALSE); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); MN_LIST_FOREACH(l, mn_shell->mailboxes->list) { MNMailbox *mailbox = l->data; if (! MN_IS_TEST_MAILBOX(mailbox)) self_append(self, l->data); } self_update_sensitivity(self); g_object_connect(store, /* for the sensitivity of "Select All" */ "swapped-signal::row-inserted", self_update_sensitivity, self, "swapped-signal::row-deleted", self_update_sensitivity, self, NULL); mn_g_object_connect(self, mn_shell->mailboxes, "signal::mailbox-added", self_mailbox_added_h, self, "signal::mailbox-notify::stock-id", self_mailbox_notify_h, self, "swapped-signal::mailbox-notify::manually-checkable", self_update_sensitivity, self, "signal::mailbox-notify::format", self_mailbox_notify_h, self, "signal::mailbox-notify::error", self_mailbox_notify_h, self, "signal::mailbox-removed", self_mailbox_removed_h, self, NULL); g_signal_connect_swapped(selection, "changed", G_CALLBACK(self_update_sensitivity), self); g_object_connect(self, "signal::popup-menu", self_popup_menu_h, NULL, "signal::button-press-event", self_button_press_event_h, NULL, "signal::row-activated", self_row_activated_h, NULL, NULL); g_object_unref(store); } private int sort_cb (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data) { MNMailbox *mailbox_a; MNMailbox *mailbox_b; int cmp; gtk_tree_model_get(model, a, COLUMN_MAILBOX, &mailbox_a, -1); gtk_tree_model_get(model, b, COLUMN_MAILBOX, &mailbox_b, -1); cmp = mn_mailboxes_compare_by_name_func(mailbox_a, mailbox_b); g_object_unref(mailbox_a); g_object_unref(mailbox_b); return cmp; } private gboolean search_equal_cb (GtkTreeModel *model, int column, const char *key, GtkTreeIter *iter, gpointer search_data) { gboolean status = TRUE; GValue value = { 0, }; GValue transformed = { 0, }; const char *str; char *normalized_string; char *normalized_key; /* * The stock gtk_tree_view_search_equal_func() only searches the * start of the string, using strncmp(). We use strstr(), to * search anywhere inside the string. */ gtk_tree_model_get_value(model, iter, column, &value); g_value_init(&transformed, G_TYPE_STRING); if (! g_value_transform(&value, &transformed)) { g_value_unset(&value); return TRUE; } g_value_unset(&value); str = g_value_get_string(&transformed); if (! str) { g_value_unset(&transformed); return TRUE; } normalized_string = g_utf8_normalize(str, -1, G_NORMALIZE_ALL); normalized_key = g_utf8_normalize(key, -1, G_NORMALIZE_ALL); if (normalized_string && normalized_key) { char *case_normalized_string; char *case_normalized_key; case_normalized_string = g_utf8_casefold(normalized_string, -1); case_normalized_key = g_utf8_casefold(normalized_key, -1); if (strstr(case_normalized_string, case_normalized_key)) status = FALSE; g_free(case_normalized_string); g_free(case_normalized_key); } g_value_unset (&transformed); g_free(normalized_key); g_free(normalized_string); return status; } private void append (self, MN:Mailbox *mailbox (check null type)) { GtkTreeModel *model; GtkTreeIter iter; model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); gtk_list_store_append(GTK_LIST_STORE(model), &iter); self_update_iter(self, &iter, mailbox); } private void mailbox_added_h (MNMailboxes *mailboxes, MNMailbox *mailbox, gpointer user_data) { Self *self = user_data; if (! MN_IS_TEST_MAILBOX(mailbox)) self_append(self, mailbox); } private void mailbox_notify_h (MNMailboxes *mailboxes, MNMailbox *mailbox, GParamSpec *pspec, gpointer user_data) { Self *self = user_data; GtkTreeIter iter; if (self_find_mailbox(self, mailbox, &iter)) self_update_iter(self, &iter, mailbox); } private void mailbox_removed_h (MNMailboxes *mailboxes, MNMailbox *mailbox, gpointer user_data) { Self *self = user_data; GtkTreeIter iter; if (self_find_mailbox(self, mailbox, &iter)) { GtkTreeModel *model; model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); gtk_list_store_remove(GTK_LIST_STORE(model), &iter); } } private void update_iter (self, GtkTreeIter *iter (check null), MN:Mailbox *mailbox (check null type)) { GtkTreeModel *model; char *status; const char *emblem_stock_id = NULL; GdkPixbuf *emblem = NULL; char *markup; char *text; if (mailbox->format) { if (mailbox->error) { status = g_strdup_printf(_("unhandled %s mailbox (%s)"), mailbox->format, mailbox->error); emblem_stock_id = MN_STOCK_ERROR; } else status = g_strdup_printf(_("%s mailbox"), mailbox->format); } else { if (mailbox->error) { status = g_strdup(mailbox->error); emblem_stock_id = MN_STOCK_ERROR; } else { status = g_strdup(_("detecting mailbox type...")); emblem_stock_id = GTK_STOCK_EXECUTE; } } if (emblem_stock_id) emblem = gtk_widget_render_icon(GTK_WIDGET(self), emblem_stock_id, GTK_ICON_SIZE_MENU, NULL); markup = g_markup_printf_escaped("%s\n%s", mailbox->runtime_name, status); text = g_strdup_printf("%s\n%s", mailbox->runtime_name, status); g_free(status); model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); gtk_list_store_set(GTK_LIST_STORE(model), iter, COLUMN_MAILBOX, mailbox, COLUMN_ICON, mailbox->stock_id, COLUMN_EMBLEM, emblem, COLUMN_PIXBUF, NULL, COLUMN_LABEL, markup, COLUMN_RAW_LABEL, text, -1); if (emblem) g_object_unref(emblem); g_free(markup); g_free(text); } private gboolean find_mailbox (self, MN:Mailbox *mailbox (check null type), GtkTreeIter *iter (check null)) { GtkTreeModel *model; GtkTreeIter our_iter; gboolean valid; model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); MN_TREE_MODEL_FOREACH(valid, &our_iter, model) { MNMailbox *this_mailbox; gboolean is; gtk_tree_model_get(model, &our_iter, COLUMN_MAILBOX, &this_mailbox, -1); is = mailbox == this_mailbox; g_object_unref(this_mailbox); if (is) { *iter = our_iter; return TRUE; } } return FALSE; } private void update_sensitivity (self) { GtkTreeSelection *selection; SensitivityInfo info = { FALSE, FALSE }; GtkTreeModel *model; GtkTreeIter iter; gboolean has_mailboxes; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_selected_foreach(selection, self_update_sensitivity_cb, &info); model = gtk_tree_view_get_model(GTK_TREE_VIEW(self)); has_mailboxes = gtk_tree_model_get_iter_first(model, &iter); gtk_widget_set_sensitive(selfp->properties_item, info.has_selection); gtk_widget_set_sensitive(selfp->update_item, info.has_manually_checkable); gtk_widget_set_sensitive(selfp->remove_item, info.has_selection); gtk_widget_set_sensitive(selfp->cut_item, info.has_selection); gtk_widget_set_sensitive(selfp->copy_item, info.has_selection); gtk_widget_set_sensitive(selfp->select_all_item, has_mailboxes); } private void update_sensitivity_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { SensitivityInfo *info = data; info->has_selection = TRUE; if (! info->has_manually_checkable) { MNMailbox *mailbox; gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1); if (mn_mailbox_get_manually_checkable(mailbox)) info->has_manually_checkable = TRUE; g_object_unref(mailbox); } } private void remove_mailbox (self) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_selected_foreach(selection, self_remove_mailbox_cb, NULL); } private void remove_mailbox_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { MNMailbox *mailbox; gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1); mn_mailboxes_queue_remove(mn_shell->mailboxes, mailbox); g_object_unref(mailbox); } private void copy_mailbox (self) { GSList *configurations = NULL; GtkTreeSelection *selection; const GtkTargetEntry targets[] = { { clipboard_info[TARGET_MAILBOXES].name, 0, TARGET_MAILBOXES } }; gboolean status; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_selected_foreach(selection, self_copy_mailbox_cb, &configurations); status = gtk_clipboard_set_with_data(global_clipboard, targets, G_N_ELEMENTS(targets), self_get_clipboard_cb, self_clear_clipboard_cb, configurations); g_assert(status == TRUE); } private void copy_mailbox_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { GSList **configurations = data; MNMailbox *mailbox; /* * Note that the MNMailboxConfiguration object returned by * mn_mailbox_get_configuration() does not include the keyring * password. This is not a problem unless the user copies a * mailbox, removes the password from the keyring and then pastes * the mailbox: the pasted mailbox will have no password. * * Including the password in MNMailboxConfiguration would require * to cope with the fact that gnome-keyring requests can block the * UI. It's really not worth the effort. */ gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1); *configurations = g_slist_append(*configurations, mn_mailbox_get_configuration(mailbox)); g_object_unref(mailbox); } private void get_clipboard_cb (GtkClipboard *clipboard, GtkSelectionData *selection_data, unsigned int info, gpointer user_data_or_owner) { GSList *configurations = user_data_or_owner; g_assert(info == TARGET_MAILBOXES); gtk_selection_data_set(selection_data, clipboard_info[info].atom, 8, (unsigned char *) &configurations, sizeof(configurations)); } private void clear_clipboard_cb (GtkClipboard *clipboard, gpointer user_data_or_owner) { GSList *configurations = user_data_or_owner; mn_g_slist_free_deep_custom(configurations, (GFunc) mn_mailbox_configuration_free, NULL); } private void select_all (self) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); gtk_tree_selection_select_all(selection); } private void properties_add_response_h (GtkDialog *dialog, int response, gpointer user_data) { switch (response) { case GTK_RESPONSE_CANCEL: gtk_widget_destroy(GTK_WIDGET(dialog)); break; case GTK_RESPONSE_ACCEPT: { MNMailbox *mailbox; mailbox = mn_mailbox_properties_dialog_get_current_mailbox(MN_MAILBOX_PROPERTIES_DIALOG(dialog)); g_assert(MN_IS_MAILBOX(mailbox)); mn_mailbox_seal(mailbox); mn_mailboxes_add(mn_shell->mailboxes, mailbox); g_object_unref(mailbox); gtk_widget_destroy(GTK_WIDGET(dialog)); } break; } } private void properties_edit_response_h (GtkDialog *dialog, int response, gpointer user_data) { switch (response) { case GTK_RESPONSE_APPLY: mn_mailbox_properties_dialog_apply(MN_MAILBOX_PROPERTIES_DIALOG(dialog)); break; case GTK_RESPONSE_CANCEL: mn_mailbox_properties_dialog_cancel(MN_MAILBOX_PROPERTIES_DIALOG(dialog)); gtk_widget_destroy(GTK_WIDGET(dialog)); break; case GTK_RESPONSE_OK: mn_mailbox_properties_dialog_apply(MN_MAILBOX_PROPERTIES_DIALOG(dialog)); gtk_widget_destroy(GTK_WIDGET(dialog)); break; } } private void popup_menu (self, unsigned int button, guint32 activate_time) { Self **self_box; gtk_widget_set_sensitive(selfp->paste_item, FALSE); /* do not crash if self is finalized before the request completes */ self_box = g_new(Self *, 1); *self_box = self; mn_add_weak_pointer(self_box); gtk_clipboard_request_targets(global_clipboard, self_popup_menu_targets_received_cb, self_box); gtk_menu_popup(GTK_MENU(selfp->menu), NULL, NULL, NULL, NULL, button, activate_time); } private gboolean can_paste (GdkAtom *atoms, int n_atoms) { int i; for (i = 0; i < n_atoms; i++) if (atoms[i] == clipboard_info[TARGET_MAILBOXES].atom || atoms[i] == clipboard_info[TARGET_GNOME_COPIED_FILES].atom) return TRUE; return FALSE; } private void popup_menu_targets_received_cb (GtkClipboard *clipboard, GdkAtom *atoms, int n_atoms, gpointer data) { Self **self_box = data; Self *self = *self_box; if (self) { if (atoms) gtk_widget_set_sensitive(selfp->paste_item, self_can_paste(atoms, n_atoms)); mn_remove_weak_pointer(self_box); } g_free(self_box); } private gboolean popup_menu_h (GtkWidget *widget, gpointer user_data) { Self *self = SELF(widget); self_popup_menu(self, 0, gtk_get_current_event_time()); gtk_menu_shell_select_first(GTK_MENU_SHELL(selfp->menu), FALSE); return TRUE; /* a menu was activated */ } private gboolean button_press_event_h (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { if (event->button == 3) self_popup_menu(SELF(widget), event->button, event->time); return FALSE; /* propagate event */ } private void row_activated_h (GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data) { self_activate_properties(SELF(treeview)); } public GtkWidget * new (void) { g_return_val_if_fail(mn_shell != NULL, NULL); return GTK_WIDGET(GET_NEW); } } mail-notification-5.4.dfsg.1/src/mn-evolution-plugin.h0000644000175000001440000000223511015312437022542 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_EVOLUTION_PLUGIN_H #define _MN_EVOLUTION_PLUGIN_H #include gboolean mn_evolution_plugin_register_server (GObject *server, const char *service, const char *path, GError **err); gboolean mn_evolution_plugin_unregister_server (const char *service, GError **err); #endif /* _MN_EVOLUTION_PLUGIN_H */ mail-notification-5.4.dfsg.1/src/org-freedesktop-DBus-Properties.xml0000644000175000001440000000050210741732623025253 0ustar evilynuxusers mail-notification-5.4.dfsg.1/src/mn-base-mbox-mailbox-backend.gob0000644000175000001440000002372111015312437024440 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-vfs-mailbox-backend.h" #include "mn-message.h" %} %{ #include #include #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #include "mn-vfs-mailbox-backend-private.h" #include "mn-message-mime.h" #include "mn-gmime-stream-vfs.h" #include "mn-util.h" #include "mn-vfs.h" #if WITH_MBOX #include "mn-mbox-mailbox-backend.h" #endif #if WITH_MOZILLA #include "mn-mozilla-mailbox-backend.h" #endif %} class MN:Base:Mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend (abstract) { private GnomeVFSURI *uri unrefwith gnome_vfs_uri_unref; private GnomeVFSFileSize last_size; private time_t last_mtime; private time_t last_ctime; private GMutex *mutex = {g_mutex_new()} destroywith g_mutex_free; override (MN:VFS:Mailbox:Backend) gboolean is (MNVFSMailboxBackend *dummy, MNVFSMailboxBackendClass *class, MNVFSMailbox *mailbox) { gboolean is = FALSE; GnomeVFSURI *uri; GnomeVFSFileInfo *file_info; uri = gnome_vfs_uri_ref(mailbox->vfs_uri); file_info = gnome_vfs_file_info_new(); if (gnome_vfs_get_file_info_uri(uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK) { GnomeVFSURI *uncompressed_uri; /* handle a compressed mailbox */ uncompressed_uri = self_get_uncompressed_uri(uri, file_info); if (uncompressed_uri) { GnomeVFSFileInfo *uncompressed_file_info; uncompressed_file_info = gnome_vfs_file_info_new(); if (gnome_vfs_get_file_info_uri(uncompressed_uri, uncompressed_file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS) == GNOME_VFS_OK) { gnome_vfs_file_info_unref(file_info); file_info = uncompressed_file_info; gnome_vfs_uri_unref(uri); uri = uncompressed_uri; } else { gnome_vfs_file_info_unref(uncompressed_file_info); gnome_vfs_uri_unref(uncompressed_uri); } } if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) != 0 && file_info->type == GNOME_VFS_FILE_TYPE_REGULAR && self_get_mailbox_type(uri) == G_TYPE_FROM_CLASS(class)) is = TRUE; } gnome_vfs_uri_unref(uri); gnome_vfs_file_info_unref(file_info); return is; } private GType get_mailbox_type (GnomeVFSURI *uri (check null)) { GMimeParser *parser; GType type = 0; parser = self_parser_new(uri, NULL); if (parser) { if (g_mime_parser_eos(parser)) /* * The file is empty. For now, treat it as a mbox mailbox * or, if mbox support was not compiled in, as a Mozilla * mailbox. Whenever the file grows, it will be checked * again and at that point we will decide whether it is a * mbox mailbox, a Mozilla mailbox or another type of file. */ { #if WITH_MBOX type = MN_TYPE_MBOX_MAILBOX_BACKEND; #elif WITH_MOZILLA type = MN_TYPE_MOZILLA_MAILBOX_BACKEND; #endif } else { /* * The file is not empty. Decide whether it is a Mozilla * mailbox or a mbox mailbox by checking if the first * message has a X-Mozilla-Status header. If the first * message cannot be parsed, then it is neither a Mozilla * mailbox nor a mbox mailbox. */ GMimeMessage *mime_message; mime_message = g_mime_parser_construct_message(parser); if (mime_message) { if (g_mime_message_get_header(mime_message, "X-Mozilla-Status")) { #if WITH_MOZILLA type = MN_TYPE_MOZILLA_MAILBOX_BACKEND; #endif } else { #if WITH_MBOX type = MN_TYPE_MBOX_MAILBOX_BACKEND; #endif } g_object_unref(mime_message); } } g_object_unref(parser); } return type; } private GMimeParser * parser_new (GnomeVFSURI *uri (check null), GnomeVFSResult *result) { GnomeVFSResult _result; GnomeVFSHandle *handle; GMimeParser *parser = NULL; _result = gnome_vfs_open_uri(&handle, uri, GNOME_VFS_OPEN_READ); if (_result == GNOME_VFS_OK) { GMimeStream *stream; stream = mn_gmime_stream_vfs_new(handle, uri, &_result); if (stream) { parser = g_mime_parser_new_with_stream(stream); g_object_unref(stream); g_mime_parser_set_scan_from(parser, TRUE); } } if (result) *result = _result; return parser; } override (MN:VFS:Mailbox:Backend) void check (MNVFSMailboxBackend *backend, int check_id) { Self *self = SELF(backend); gboolean polled; GMimeParser *parser; GnomeVFSResult result; gboolean uri_set; mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_FILE); if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) return; /* the poll property is protected by the GDK lock */ GDK_THREADS_ENTER(); polled = mn_mailbox_get_poll(MN_MAILBOX(backend->mailbox)); gdk_flush(); GDK_THREADS_LEAVE(); if (polled) { GnomeVFSFileInfo *file_info; gboolean check; /* * We are here because the mailbox has to be polled; only * check it if necessary. */ file_info = gnome_vfs_file_info_new(); result = gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS); g_mutex_lock(selfp->mutex); if (result == GNOME_VFS_OK && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE) != 0 && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MTIME) != 0 && file_info->size == selfp->last_size && file_info->mtime == selfp->last_mtime) { if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_CTIME) != 0) check = file_info->ctime != selfp->last_ctime; else /* * The ctime is often missing for remote mailboxes; * since anyway the size and mtime do not have changed, * we do not check the mailbox. */ check = FALSE; } else check = TRUE; if (check) { selfp->last_size = file_info->size; selfp->last_mtime = file_info->mtime; selfp->last_ctime = file_info->ctime; if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) check = FALSE; } g_mutex_unlock(selfp->mutex); gnome_vfs_file_info_unref(file_info); if (! check) return; } g_mutex_lock(selfp->mutex); uri_set = selfp->uri != NULL; g_mutex_unlock(selfp->mutex); if (! uri_set) { GnomeVFSFileInfo *file_info; GnomeVFSURI *uri; gboolean aborted; file_info = gnome_vfs_file_info_new(); if (gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK) uri = self_get_uncompressed_uri(backend->mailbox->vfs_uri, file_info); gnome_vfs_file_info_unref(file_info); if (! uri) uri = gnome_vfs_uri_ref(backend->mailbox->vfs_uri); g_mutex_lock(selfp->mutex); if (! selfp->uri) { selfp->uri = uri; uri = NULL; } aborted = mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id); g_mutex_unlock(selfp->mutex); if (uri) gnome_vfs_uri_unref(uri); if (aborted) return; } parser = self_parser_new(selfp->uri, &result); if (parser) { GSList *messages = NULL; while (! g_mime_parser_eos(parser)) { GMimeMessage *mime_message; if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) break; mime_message = g_mime_parser_construct_message(parser); if (mime_message) { MNMessage *message; message = self_get_new_message(self, mime_message); g_object_unref(mime_message); if (message) messages = g_slist_prepend(messages, message); } } g_object_unref(parser); GDK_THREADS_ENTER(); if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages); mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); return; /* success */ } if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to open mailbox: %s"), gnome_vfs_result_to_string(result)); gdk_flush(); GDK_THREADS_LEAVE(); } } virtual private MNMessage * get_new_message (self, GMime:Message *mime_message (check null type)); private GnomeVFSURI * get_uncompressed_uri (GnomeVFSURI *uri (check null), GnomeVFSFileInfo *file_info (check null)) { if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE) != 0 && file_info->mime_type) { /* compression methods supported by GnomeVFS */ static const struct { const char *mime_type; const char *method; } compressions[] = { { "application/x-gzip", "gzip" }, { "application/x-bzip", "bzip2" } }; int i; for (i = 0; i < G_N_ELEMENTS(compressions); i++) if (! strcmp(file_info->mime_type, compressions[i].mime_type)) { char *str; GnomeVFSURI *uncompressed_uri; str = g_strdup_printf("%s%s:/", GNOME_VFS_URI_MAGIC_STR, compressions[i].method); uncompressed_uri = gnome_vfs_uri_append_string(uri, str); g_free(str); return uncompressed_uri; } } return NULL; } } mail-notification-5.4.dfsg.1/src/mn-sasl.h0000644000175000001440000000165011015312437020164 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_SASL_H #define _MN_SASL_H #include gboolean mn_sasl_init (GError **err); #endif /* _MN_SASL_H */ mail-notification-5.4.dfsg.1/src/eggtrayicon.h0000644000175000001440000000512711015312437021130 0ustar evilynuxusers/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* eggtrayicon.h * Copyright (C) 2002 Anders Carlsson * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __EGG_TRAY_ICON_H__ #define __EGG_TRAY_ICON_H__ #include #ifdef GDK_WINDOWING_X11 #include #endif G_BEGIN_DECLS #define EGG_TYPE_TRAY_ICON (egg_tray_icon_get_type ()) #define EGG_TRAY_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_TRAY_ICON, EggTrayIcon)) #define EGG_TRAY_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_TRAY_ICON, EggTrayIconClass)) #define EGG_IS_TRAY_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_TRAY_ICON)) #define EGG_IS_TRAY_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_TRAY_ICON)) #define EGG_TRAY_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_TRAY_ICON, EggTrayIconClass)) typedef struct _EggTrayIcon EggTrayIcon; typedef struct _EggTrayIconClass EggTrayIconClass; struct _EggTrayIcon { GtkPlug parent_instance; guint stamp; #ifdef GDK_WINDOWING_X11 Atom selection_atom; Atom manager_atom; Atom system_tray_opcode_atom; Atom orientation_atom; Window manager_window; #endif GtkOrientation orientation; }; struct _EggTrayIconClass { GtkPlugClass parent_class; }; GType egg_tray_icon_get_type (void); EggTrayIcon *egg_tray_icon_new_for_screen (GdkScreen *screen, const gchar *name); EggTrayIcon *egg_tray_icon_new (const gchar *name); guint egg_tray_icon_send_message (EggTrayIcon *icon, gint timeout, const char *message, gint len); void egg_tray_icon_cancel_message (EggTrayIcon *icon, guint id); GtkOrientation egg_tray_icon_get_orientation (EggTrayIcon *icon); G_END_DECLS #endif /* __EGG_TRAY_ICON_H__ */ mail-notification-5.4.dfsg.1/src/mn-sasl.c0000644000175000001440000000316511015312437020162 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include static gboolean attempted = FALSE; static gboolean initialized = FALSE; static char *init_error = NULL; G_LOCK_DEFINE_STATIC(init); gboolean mn_sasl_init (GError **err) { /* * Bad things may happen if we call sasl_client_init() again after * having called sasl_done(), so we just keep SASL initialized for * the whole application lifetime. */ G_LOCK(init); if (! attempted) { int status; status = sasl_client_init(NULL); if (status == SASL_OK) initialized = TRUE; else init_error = g_strdup(sasl_errstring(status, NULL, NULL)); attempted = TRUE; } if (! initialized) { g_assert(init_error != NULL); g_set_error(err, 0, 0, "%s", init_error); } G_UNLOCK(init); return initialized; } mail-notification-5.4.dfsg.1/src/mn-mail-icon.gob0000644000175000001440000002106111015312440021402 0ustar evilynuxusers/* * Size adjustment code (size_allocate_h(), find_icon_size()) taken * from GtkStatusIcon, * Copyright (C) 2003 Sun Microsystems, Inc. * Copyright (C) 2005 Hans Breuer * Copyright (C) 2005 Novell, Inc. * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "eggtrayicon.h" %} %privateheader{ #include "mn-tooltips.h" %} %{ #include #include #include "mn-stock.h" #include "mn-util.h" #include "mn-mail-icon-widget.h" %} class MN:Mail:Icon from Egg:Tray:Icon { private MNTooltips *tooltips = {mn_tooltips_new()} unrefwith g_object_unref; private GtkWidget *widget = {mn_mail_icon_widget_new()}; private char *stock_id destroywith g_free; private int size; private GtkWidget *menu = {gtk_menu_new()} destroywith gtk_widget_destroy; public GtkWidget *mail_reader_item; public GtkWidget *open_latest_message_item; public GtkWidget *update_item; public GtkWidget *consider_new_mail_as_read_item; signal (ACTION) private NONE (NONE) void activate (self); signal (ACTION) private NONE (NONE) void activate_mail_reader (self); signal (ACTION) private NONE (NONE) void activate_open_latest_message (self); signal (ACTION) private NONE (NONE) void activate_consider_new_mail_as_read (self); signal (ACTION) private NONE (NONE) void activate_update (self); signal (ACTION) private NONE (NONE) void activate_properties (self); signal (ACTION) private NONE (NONE) void activate_help (self); signal (ACTION) private NONE (NONE) void activate_about (self); signal (ACTION) private NONE (NONE) void activate_remove (self); init (self) { GtkMenuShell *shell; GtkWidget *properties_item; GtkWidget *help_item; GtkWidget *about_item; GtkWidget *remove_item; shell = GTK_MENU_SHELL(selfp->menu); /* translators: header capitalization */ self->mail_reader_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_READER, _("_Mail Reader")); /* translators: header capitalization */ self->open_latest_message_item = mn_menu_shell_append(shell, MN_STOCK_OPEN_MESSAGE, _("_Open Latest Message")); mn_menu_shell_append(shell, NULL, NULL); /* translators: header capitalization */ self->consider_new_mail_as_read_item = mn_menu_shell_append(shell, MN_STOCK_CONSIDER_NEW_MAIL_AS_READ, _("_Consider New Mail as Read")); /* translators: header capitalization */ self->update_item = mn_menu_shell_append(shell, GTK_STOCK_REFRESH, _("_Update")); mn_menu_shell_append(shell, NULL, NULL); properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL); help_item = mn_menu_shell_append(shell, GTK_STOCK_HELP, NULL); about_item = mn_menu_shell_append(shell, GTK_STOCK_ABOUT, NULL); mn_menu_shell_append(shell, NULL, NULL); /* translators: header capitalization */ remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area")); g_signal_connect_swapped(self->mail_reader_item, "activate", G_CALLBACK(self_activate_mail_reader), self); g_signal_connect_swapped(self->open_latest_message_item, "activate", G_CALLBACK(self_activate_open_latest_message), self); g_signal_connect_swapped(self->consider_new_mail_as_read_item, "activate", G_CALLBACK(self_activate_consider_new_mail_as_read), self); g_signal_connect_swapped(self->update_item, "activate", G_CALLBACK(self_activate_update), self); g_signal_connect_swapped(properties_item, "activate", G_CALLBACK(self_activate_properties), self); g_signal_connect_swapped(help_item, "activate", G_CALLBACK(self_activate_help), self); g_signal_connect_swapped(about_item, "activate", G_CALLBACK(self_activate_about), self); g_signal_connect_swapped(remove_item, "activate", G_CALLBACK(self_activate_remove), self); gtk_widget_add_events(GTK_WIDGET(self), GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); gtk_container_add(GTK_CONTAINER(self), selfp->widget); g_object_connect(self, "signal::button-press-event", self_button_press_event_h, self, "signal::button-release-event", self_button_release_event_h, self, NULL); g_signal_connect(selfp->widget, "size-allocate", G_CALLBACK(self_size_allocate_h), self); gtk_widget_show(selfp->widget); } private void size_allocate_h (GtkWidget *widget, GtkAllocation *allocation, gpointer user_data) { Self *self = user_data; GtkOrientation orientation; int size; orientation = egg_tray_icon_get_orientation(EGG_TRAY_ICON(self)); if (orientation == GTK_ORIENTATION_HORIZONTAL) size = allocation->height; else size = allocation->width; if (selfp->size != size) { selfp->size = size; self_update_image(self); } } private GtkIconSize find_icon_size (Gtk:Widget *widget (check null type), int pixel_size) { GdkScreen *screen; GtkSettings *settings; GtkIconSize s, size; int w, h, d, dist; screen = gtk_widget_get_screen(widget); if (! screen) return GTK_ICON_SIZE_MENU; settings = gtk_settings_get_for_screen(screen); dist = G_MAXINT; size = GTK_ICON_SIZE_MENU; for (s = GTK_ICON_SIZE_MENU; s < GTK_ICON_SIZE_DIALOG; s++) { if (gtk_icon_size_lookup_for_settings(settings, s, &w, &h) && w <= pixel_size && h <= pixel_size) { d = MAX(pixel_size - w, pixel_size - h); if (d < dist) { dist = d; size = s; } } } return size; } private void update_image (self) { GtkIconSize size; size = self_find_icon_size(selfp->widget, selfp->size); mn_mail_icon_widget_set_from_stock(MN_MAIL_ICON_WIDGET(selfp->widget), selfp->stock_id, size); } private gboolean button_press_event_h (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { Self *self = user_data; if (event->button == 1) self_activate(self); else if (event->button == 3) { gtk_menu_popup(GTK_MENU(selfp->menu), NULL, NULL, self_popup_menu_position_cb, self, event->button, event->time); return TRUE; /* do not propagate event */ } return FALSE; /* propagate event */ } private gboolean button_release_event_h (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { Self *self = user_data; if (event->button == 3) { gtk_menu_popdown(GTK_MENU(selfp->menu)); return TRUE; /* do not propagate event */ } return FALSE; /* propagate event */ } private void popup_menu_position_cb (GtkMenu *menu, int *x, int *y, gboolean *push_in, gpointer user_data) { GtkWidget *widget = user_data; gdk_window_get_origin(widget->window, x, y); *x += widget->allocation.x; *y += widget->allocation.y; if (*y > gdk_screen_get_height(gtk_widget_get_screen(widget)) / 2) { GtkRequisition req; gtk_widget_size_request(GTK_WIDGET(menu), &req); *y -= req.height; } else *y += widget->allocation.height; *push_in = TRUE; } public void set_from_stock (self, const char *stock_id) { g_free(selfp->stock_id); selfp->stock_id = g_strdup(stock_id); self_update_image(self); } public void set_blinking (self, gboolean blinking) { mn_mail_icon_widget_set_blinking(MN_MAIL_ICON_WIDGET(selfp->widget), blinking); } public void set_count (self, int count) { mn_mail_icon_widget_set_count(MN_MAIL_ICON_WIDGET(selfp->widget), count); } public void set_tip (self, const char *tip) { mn_tooltips_set_tip(selfp->tooltips, GTK_WIDGET(self), tip); } public void set_tip_widget (self, Gtk:Widget *tip_widget) { mn_tooltips_set_tip_widget(selfp->tooltips, GTK_WIDGET(self), tip_widget); } public GtkWidget * new (void) { return GTK_WIDGET(GET_NEW_VARG("title", _("Mail Notification"), NULL)); } } mail-notification-5.4.dfsg.1/src/mn-pi-mailbox.gob0000644000175000001440000002400211015312440021571 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-authenticated-mailbox.h" %} %h{ #define MN_PI_MAILBOX_N_CONNECTION_TYPES 3 %} %privateheader{ #include #include "mn-client-session.h" #define MN_PI_MAILBOX_SESSION_PRIVATE \ MNMailbox *mailbox; \ MNAuthenticatedMailbox *auth_mailbox; \ MNPIMailbox *pi_mailbox; \ MNClientSession *session %} %{ #include #include "mn-authenticated-mailbox-private.h" #include "mn-mailbox-private.h" #include "mn-util.h" #include "mn-stock.h" #include "mn-conf.h" struct _MNClientSessionPrivate { MN_PI_MAILBOX_SESSION_PRIVATE; }; %} enum MN_PI_MAILBOX_CONNECTION_TYPE { NORMAL, INBAND_SSL, SSL, } MN:PI:Mailbox:Connection:Type; class MN:PI:Mailbox from MN:Authenticated:Mailbox (abstract) { classwide int *default_ports; public MNPIMailboxConnectionType connection_type; property ENUM connection_type (link, enum_type = MN:PI:Mailbox:Connection:Type, flags = CONSTRUCT | MN_MAILBOX_PARAM_LOAD_SAVE, default_value = MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL); public char *authmech destroywith g_free; property STRING authmech (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE); /* named hostname and not server for historical reasons */ public char *hostname destroywith g_free; property STRING hostname (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE | MN_MAILBOX_PARAM_REQUIRED); public int port; property INT port (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE, minimum = 0, maximum = 65535); public int runtime_port; private GtkWidget *untrusted_dialog; class_init (class) { /* * 5 minutes is a good default check delay for remote POP3/IMAP * mailboxes. */ MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5; } init (self) { mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_REMOTE); } override (MN:Mailbox) void seal (MNMailbox *mailbox) { MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); /* do not save default port to mailboxes.xml */ if (self->port == SELF_GET_CLASS(self)->default_ports[self->connection_type]) self->port = 0; self->runtime_port = self->port == 0 ? SELF_GET_CLASS(self)->default_ports[self->connection_type] : self->port; auth_mailbox->keyring_server = g_strdup(self->hostname); auth_mailbox->keyring_port = self->runtime_port; } override (MN:Mailbox) void removed (MNMailbox *mailbox) { Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (selfp->untrusted_dialog) gtk_dialog_response(GTK_DIALOG(selfp->untrusted_dialog), GTK_RESPONSE_CANCEL); } override (MN:Authenticated:Mailbox) void authenticated_check (MNAuthenticatedMailbox *mailbox) { #if ! WITH_SSL Self *self = SELF(mailbox); #endif PARENT_HANDLER(mailbox); #if ! WITH_SSL if (self->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL || self->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(mailbox), _("SSL/TLS support has not been compiled in")); mn_mailbox_set_poll(MN_MAILBOX(mailbox), FALSE); /* disable the mailbox */ gdk_flush(); GDK_THREADS_LEAVE(); } #endif } protected gboolean split_uri (const char *uri (check null), int maxlen, char *scheme (check null), char *auth (check null), char *location (check null)) { char *pat; int n; pat = g_strdup_printf("%%%i[^:]://%%%i[^@]@%%%is", maxlen, maxlen, maxlen); n = sscanf(uri, pat, scheme, auth, location); g_free(pat); return n == 3; /* MN requires an username, hence the auth part */ } protected gboolean split_uri_auth (const char *auth (check null), int maxlen, char *username (check null), char *authmech (check null), gboolean *has_authmech (check null)) { char *pat; int n; pat = g_strdup_printf("%%%i[^;];AUTH=%%%is", maxlen, maxlen); n = sscanf(auth, pat, username, authmech); g_free(pat); if (n < 1) return FALSE; /* MN requires an username */ *has_authmech = n == 2; return TRUE; } protected void split_uri_hostport (const char *hostport (check null), int maxlen, char *hostname (check null), int *port (check null)) { char *pat; int n; /* split host:port part in 2 subparts: host and port */ pat = g_strdup_printf("[%%%i[^]]]:%%u", maxlen); n = sscanf(hostport, pat, hostname, port); g_free(pat); if (n < 1) { pat = g_strdup_printf("%%%i[^:]:%%u", maxlen); n = sscanf(hostport, pat, hostname, port); g_free(pat); } g_assert(n >= 1); if (n < 2) *port = 0; } protected void session_private_init (self, MNClientSessionPrivate *priv (check null)) { priv->mailbox = MN_MAILBOX(self); priv->auth_mailbox = MN_AUTHENTICATED_MAILBOX(self); priv->pi_mailbox = MN_PI_MAILBOX(self); } protected gboolean sasl_get_credentials_cb (MNClientSession *session, MNClientSessionPrivate *priv, const char **username, const char **password) { #if WITH_SASL g_return_val_if_fail(username != NULL || password != NULL, FALSE); if (username) *username = priv->auth_mailbox->username; if (password) { if (mn_authenticated_mailbox_fill_password(priv->auth_mailbox, TRUE)) *password = priv->auth_mailbox->runtime_password; else return FALSE; } else /* * Reset auth_cancelled ourselves since we did not call * mn_authenticated_mailbox_fill_password(). */ priv->auth_mailbox->auth_cancelled = FALSE; return TRUE; #else g_assert_not_reached(); return FALSE; #endif /* WITH_SASL */ } protected gboolean ssl_trust_server_cb (MNClientSession *session, const char *server, int port, const char *fingerprint, const char *verify_error, MNClientSessionPrivate *priv) { #if WITH_SSL gboolean status = FALSE; if (fingerprint) { GSList *gconf_fingerprints; gconf_fingerprints = mn_conf_get_string_list(MN_CONF_TRUSTED_X509_CERTIFICATES); if (mn_g_str_slist_find(gconf_fingerprints, fingerprint)) status = TRUE; else if (self_run_untrusted_dialog(priv->pi_mailbox, server, verify_error, fingerprint)) { status = TRUE; gconf_fingerprints = g_slist_append(gconf_fingerprints, g_strdup(fingerprint)); mn_conf_set_string_list(MN_CONF_TRUSTED_X509_CERTIFICATES, gconf_fingerprints); } mn_g_slist_free_deep(gconf_fingerprints); } else { char *key; GSList *gconf_servers = NULL; key = g_strdup_printf("%s:%i", server, port); gconf_servers = mn_conf_get_string_list(MN_CONF_TRUSTED_SERVERS); if (mn_g_str_slist_find(gconf_servers, key)) status = TRUE; else { if (self_run_untrusted_dialog(priv->pi_mailbox, server, _("missing certificate"), NULL)) { status = TRUE; gconf_servers = g_slist_append(gconf_servers, g_strdup(key)); mn_conf_set_string_list(MN_CONF_TRUSTED_SERVERS, gconf_servers); } } g_free(key); mn_g_slist_free_deep(gconf_servers); } return status; #else g_assert_not_reached(); return FALSE; #endif /* WITH_SSL */ } private gboolean run_untrusted_dialog (self, const char *server (check null), const char *reason (check null), const char *cert_fingerprint) { #if WITH_SSL GString *secondary; gboolean status; g_return_val_if_fail(server != NULL, FALSE); g_return_val_if_fail(reason != NULL, FALSE); secondary = g_string_new(NULL); g_string_printf(secondary, _("Mail Notification was unable to trust \"%s\" " "(%s). It is possible that someone is " "intercepting your communication to obtain " "your confidential information.\n" "\n" "You should only connect to the server if you " "are certain you are connected to \"%s\". " "If you choose to connect to the server, this " "message will not be shown again."), server, reason, server); if (cert_fingerprint) { g_string_append(secondary, "\n\n"); g_string_append_printf(secondary, _("Certificate fingerprint: %s."), cert_fingerprint); } GDK_THREADS_ENTER(); selfp->untrusted_dialog = mn_alert_dialog_new(NULL, GTK_MESSAGE_WARNING, 0, _("Connect to untrusted server?"), secondary->str); g_string_free(secondary, TRUE); mn_add_weak_pointer(&selfp->untrusted_dialog); gtk_dialog_add_buttons(GTK_DIALOG(selfp->untrusted_dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_CONNECT, GTK_RESPONSE_OK, NULL); status = mn_dialog_run_nonmodal(GTK_DIALOG(selfp->untrusted_dialog)) == GTK_RESPONSE_OK; gtk_widget_destroy(selfp->untrusted_dialog); gdk_flush(); GDK_THREADS_LEAVE(); return status; #else g_assert_not_reached(); return FALSE; #endif /* WITH_SSL */ } protected void notice_cb (MNClientSession *session, const char *message, MNClientSessionPrivate *priv) { mn_mailbox_notice(priv->mailbox, "%s", message); } protected void warning_cb (MNClientSession *session, const char *message, MNClientSessionPrivate *priv) { mn_mailbox_warning(priv->mailbox, "%s", message); } } mail-notification-5.4.dfsg.1/src/mn-popup.gob0000644000175000001440000001240211015312440020674 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-message.h" %} %{ #include #include "mn-conf.h" #include "mn-shell.h" #include "mn-util.h" %} class MN:Popup from Notify:Notification { private MNMessage *message unrefwith g_object_unref; property OBJECT message (flags = CONSTRUCT_ONLY, link, object_type = MN:Message, type = MNMessage *); public gboolean visible; public GTimeVal show_timestamp; constructor (self) { GString *body; body = g_string_new(NULL); self_append_row(body, _("Mailbox:"), selfp->message->mailbox->runtime_name); self_append_row(body, _("From:"), selfp->message->from); self_append_row(body, _("Subject:"), selfp->message->subject); g_object_set(self, "body", body->str, "icon-name", "stock_mail", NULL); if (mn_conf_get_enum_value(MN_TYPE_POPUP_POSITION, MN_CONF_POPUPS_POSITION) == MN_POPUP_POSITION_ATTACHED) g_object_set(self, "attach-widget", mn_shell->icon, NULL); g_string_free(body, TRUE); self_add_actions(self); notify_notification_set_timeout(NOTIFY_NOTIFICATION(self), self_get_conf_timeout()); g_signal_connect(self, "closed", G_CALLBACK(self_closed_h), NULL); } private void add_actions (self) { GSList *actions; GSList *l; /* * Note that notification-daemon currently assigns icons to * actions by prepending "stock_" to the action ID. */ actions = mn_conf_get_string_list(MN_CONF_POPUPS_ACTIONS); MN_LIST_FOREACH(l, actions) { char *name = l->data; MNMessageAction *action; action = mn_message_get_action(name); if (action) { if (mn_message_can_perform_action(selfp->message, action)) notify_notification_add_action(NOTIFY_NOTIFICATION(self), action->icon, _(action->label), self_action_cb, action, NULL); } else g_warning(_("configuration key %s: there is no action named \"%s\""), MN_CONF_POPUPS_ACTIONS, name); } mn_g_slist_free_deep(actions); } private void action_cb (NotifyNotification *notification, char *id, gpointer user_data) { Self *self = SELF(notification); MNMessageAction *action = user_data; GDK_THREADS_ENTER(); mn_message_perform_action(selfp->message, action, self_action_done_cb, self); GDK_THREADS_LEAVE(); } private void action_done_cb (MNMessageAction *action, GError *err, gpointer data) { if (err && ! g_error_matches(err, MN_MESSAGE_ACTION_ERROR, MN_MESSAGE_ACTION_ERROR_CANCELLED)) mn_show_error_dialog(NULL, _(action->error_message), "%s", err->message); } private void closed_h (NotifyNotification *notification, gpointer user_data) { Self *self = SELF(notification); self->visible = FALSE; } private void append_row (GString *body (check null), const char *name (check null), const char *value (check null)) { char *escaped; if (*body->str) g_string_append_c(body, '\n'); g_string_append_printf(body, "%s", name); escaped = g_markup_escape_text(value, -1); g_string_append_printf(body, " %s", escaped); g_free(escaped); } private int get_conf_timeout (void) { switch (mn_conf_get_enum_value(MN_TYPE_EXPIRATION_ENABLED, MN_CONF_POPUPS_EXPIRATION_ENABLED)) { case MN_EXPIRATION_ENABLED_DEFAULT: return NOTIFY_EXPIRES_DEFAULT; case MN_EXPIRATION_ENABLED_FALSE: return NOTIFY_EXPIRES_NEVER; case MN_EXPIRATION_ENABLED_TRUE: return mn_conf_get_int(MN_CONF_POPUPS_EXPIRATION_DELAY) * 1000; default: g_assert_not_reached(); return 0; } } public void show (self) { GError *err = NULL; if (self->visible) return; if (! notify_notification_show(NOTIFY_NOTIFICATION(self), &err)) { g_warning(_("unable to show popup: %s"), err->message); g_error_free(err); } self->visible = TRUE; g_get_current_time(&self->show_timestamp); } public void close (self) { GError *err = NULL; if (! self->visible) return; if (! notify_notification_close(NOTIFY_NOTIFICATION(self), &err)) { g_warning(_("unable to close popup: %s"), err->message); g_error_free(err); } } public MNPopup * new (MN:Message *message (check null type)) { /* we set the summary here because libnotify requires it */ /* translators: header capitalization */ return GET_NEW_VARG("summary", _("New Message"), MN_POPUP_PROP_MESSAGE(message), NULL); } } mail-notification-5.4.dfsg.1/src/nautilus-cell-renderer-pixbuf-emblem.c0000644000175000001440000004152311015312437025727 0ustar evilynuxusers/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- * * nautilus-cell-renderer-pixbuf-emblem.c: cell renderer which can render * an emblem on top of a pixbuf (for use in FMListView and FMTreeView) * Copyright (C) 2003 Juerg Billeter * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "nautilus-cell-renderer-pixbuf-emblem.h" static void nautilus_cell_renderer_pixbuf_emblem_get_property (GObject *object, guint param_id, GValue *value, GParamSpec *pspec); static void nautilus_cell_renderer_pixbuf_emblem_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec); static void nautilus_cell_renderer_pixbuf_emblem_init (NautilusCellRendererPixbufEmblem *cellpixbuf); static void nautilus_cell_renderer_pixbuf_emblem_class_init (NautilusCellRendererPixbufEmblemClass *klass); static void nautilus_cell_renderer_pixbuf_emblem_finalize (GObject *object); static void nautilus_cell_renderer_pixbuf_emblem_create_stock_pixbuf (NautilusCellRendererPixbufEmblem *cellpixbuf, GtkWidget *widget); static void nautilus_cell_renderer_pixbuf_emblem_get_size (GtkCellRenderer *cell, GtkWidget *widget, GdkRectangle *rectangle, gint *x_offset, gint *y_offset, gint *width, gint *height); static void nautilus_cell_renderer_pixbuf_emblem_render (GtkCellRenderer *cell, GdkWindow *window, GtkWidget *widget, GdkRectangle *background_area, GdkRectangle *cell_area, GdkRectangle *expose_area, GtkCellRendererState flags); enum { PROP_ZERO, PROP_PIXBUF, PROP_PIXBUF_EXPANDER_OPEN, PROP_PIXBUF_EXPANDER_CLOSED, PROP_STOCK_ID, PROP_STOCK_SIZE, PROP_STOCK_DETAIL, PROP_PIXBUF_EMBLEM }; static gpointer parent_class; #define CELLINFO_KEY "nautilus-cell-renderer-pixbuf-emblem-info" typedef struct _NautilusCellRendererPixbufEmblemInfo NautilusCellRendererPixbufEmblemInfo; struct _NautilusCellRendererPixbufEmblemInfo { gchar *stock_id; GtkIconSize stock_size; gchar *stock_detail; }; GType nautilus_cell_renderer_pixbuf_emblem_get_type (void) { static GType cell_pixbuf_type = 0; if (!cell_pixbuf_type) { static const GTypeInfo cell_pixbuf_info = { sizeof (NautilusCellRendererPixbufEmblemClass), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) nautilus_cell_renderer_pixbuf_emblem_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof (NautilusCellRendererPixbufEmblem), 0, /* n_preallocs */ (GInstanceInitFunc) nautilus_cell_renderer_pixbuf_emblem_init, }; cell_pixbuf_type = g_type_register_static (GTK_TYPE_CELL_RENDERER, "NautilusCellRendererPixbufEmblem", &cell_pixbuf_info, 0); } return cell_pixbuf_type; } static void nautilus_cell_renderer_pixbuf_emblem_init (NautilusCellRendererPixbufEmblem *cellpixbuf) { NautilusCellRendererPixbufEmblemInfo *cellinfo; cellinfo = g_new0 (NautilusCellRendererPixbufEmblemInfo, 1); cellinfo->stock_size = GTK_ICON_SIZE_MENU; g_object_set_data (G_OBJECT (cellpixbuf), CELLINFO_KEY, cellinfo); } static void nautilus_cell_renderer_pixbuf_emblem_class_init (NautilusCellRendererPixbufEmblemClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS (klass); parent_class = g_type_class_peek_parent (klass); object_class->finalize = nautilus_cell_renderer_pixbuf_emblem_finalize; object_class->get_property = nautilus_cell_renderer_pixbuf_emblem_get_property; object_class->set_property = nautilus_cell_renderer_pixbuf_emblem_set_property; cell_class->get_size = nautilus_cell_renderer_pixbuf_emblem_get_size; cell_class->render = nautilus_cell_renderer_pixbuf_emblem_render; g_object_class_install_property (object_class, PROP_PIXBUF, g_param_spec_object ("pixbuf", "Pixbuf Object", "The pixbuf to render", GDK_TYPE_PIXBUF, G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (object_class, PROP_PIXBUF_EXPANDER_OPEN, g_param_spec_object ("pixbuf_expander_open", "Pixbuf Expander Open", "Pixbuf for open expander", GDK_TYPE_PIXBUF, G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (object_class, PROP_PIXBUF_EXPANDER_CLOSED, g_param_spec_object ("pixbuf_expander_closed", "Pixbuf Expander Closed", "Pixbuf for closed expander", GDK_TYPE_PIXBUF, G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (object_class, PROP_STOCK_ID, g_param_spec_string ("stock_id", "Stock ID", "The stock ID of the stock icon to render", NULL, G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_STOCK_SIZE, g_param_spec_enum ("stock_size", "Size", "The size of the rendered icon", GTK_TYPE_ICON_SIZE, GTK_ICON_SIZE_MENU, G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_STOCK_DETAIL, g_param_spec_string ("stock_detail", "Detail", "Render detail to pass to the theme engine", NULL, G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_PIXBUF_EMBLEM, g_param_spec_object ("pixbuf_emblem", "Pixbuf Emblem Object", "The emblem to overlay", GDK_TYPE_PIXBUF, G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void nautilus_cell_renderer_pixbuf_emblem_finalize (GObject *object) { NautilusCellRendererPixbufEmblem *cellpixbuf = NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM (object); NautilusCellRendererPixbufEmblemInfo *cellinfo = g_object_get_data (object, CELLINFO_KEY); if (cellpixbuf->pixbuf && cellinfo->stock_id) { g_object_unref (cellpixbuf->pixbuf); } if (cellinfo->stock_id) { g_free (cellinfo->stock_id); } if (cellinfo->stock_detail) { g_free (cellinfo->stock_detail); } g_free (cellinfo); g_object_set_data (object, CELLINFO_KEY, NULL); (* G_OBJECT_CLASS (parent_class)->finalize) (object); } static void nautilus_cell_renderer_pixbuf_emblem_get_property (GObject *object, guint param_id, GValue *value, GParamSpec *pspec) { NautilusCellRendererPixbufEmblem *cellpixbuf = NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM (object); NautilusCellRendererPixbufEmblemInfo *cellinfo = g_object_get_data (object, CELLINFO_KEY); switch (param_id) { case PROP_PIXBUF: g_value_set_object (value, cellpixbuf->pixbuf ? G_OBJECT (cellpixbuf->pixbuf) : NULL); break; case PROP_PIXBUF_EXPANDER_OPEN: g_value_set_object (value, cellpixbuf->pixbuf_expander_open ? G_OBJECT (cellpixbuf->pixbuf_expander_open) : NULL); break; case PROP_PIXBUF_EXPANDER_CLOSED: g_value_set_object (value, cellpixbuf->pixbuf_expander_closed ? G_OBJECT (cellpixbuf->pixbuf_expander_closed) : NULL); break; case PROP_STOCK_ID: g_value_set_string (value, cellinfo->stock_id); break; case PROP_STOCK_SIZE: g_value_set_enum (value, cellinfo->stock_size); break; case PROP_STOCK_DETAIL: g_value_set_string (value, cellinfo->stock_detail); break; case PROP_PIXBUF_EMBLEM: g_value_set_object (value, cellpixbuf->pixbuf_emblem ? G_OBJECT (cellpixbuf->pixbuf_emblem) : NULL); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } } static void nautilus_cell_renderer_pixbuf_emblem_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec) { GdkPixbuf *pixbuf; NautilusCellRendererPixbufEmblem *cellpixbuf = NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM (object); NautilusCellRendererPixbufEmblemInfo *cellinfo = g_object_get_data (object, CELLINFO_KEY); switch (param_id) { case PROP_PIXBUF: pixbuf = (GdkPixbuf*) g_value_get_object (value); if (pixbuf) { g_object_ref (pixbuf); } if (cellpixbuf->pixbuf) { g_object_unref (cellpixbuf->pixbuf); } cellpixbuf->pixbuf = pixbuf; break; case PROP_PIXBUF_EXPANDER_OPEN: pixbuf = (GdkPixbuf*) g_value_get_object (value); if (pixbuf) { g_object_ref (pixbuf); } if (cellpixbuf->pixbuf_expander_open) { g_object_unref (cellpixbuf->pixbuf_expander_open); } cellpixbuf->pixbuf_expander_open = pixbuf; break; case PROP_PIXBUF_EXPANDER_CLOSED: pixbuf = (GdkPixbuf*) g_value_get_object (value); if (pixbuf) { g_object_ref (pixbuf); } if (cellpixbuf->pixbuf_expander_closed) { g_object_unref (cellpixbuf->pixbuf_expander_closed); } cellpixbuf->pixbuf_expander_closed = pixbuf; break; case PROP_STOCK_ID: if (cellinfo->stock_id) { g_free (cellinfo->stock_id); } cellinfo->stock_id = g_strdup (g_value_get_string (value)); break; case PROP_STOCK_SIZE: cellinfo->stock_size = g_value_get_enum (value); break; case PROP_STOCK_DETAIL: if (cellinfo->stock_detail) { g_free (cellinfo->stock_detail); } cellinfo->stock_detail = g_strdup (g_value_get_string (value)); break; case PROP_PIXBUF_EMBLEM: pixbuf = (GdkPixbuf *) g_value_get_object (value); if (pixbuf) { g_object_ref (pixbuf); } if (cellpixbuf->pixbuf_emblem) { g_object_unref (cellpixbuf->pixbuf_emblem); } cellpixbuf->pixbuf_emblem = pixbuf; break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } } GtkCellRenderer * nautilus_cell_renderer_pixbuf_emblem_new (void) { return g_object_new (NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM, NULL); } static void nautilus_cell_renderer_pixbuf_emblem_create_stock_pixbuf (NautilusCellRendererPixbufEmblem *cellpixbuf, GtkWidget *widget) { NautilusCellRendererPixbufEmblemInfo *cellinfo = g_object_get_data (G_OBJECT (cellpixbuf), CELLINFO_KEY); if (cellpixbuf->pixbuf) { g_object_unref (cellpixbuf->pixbuf); } cellpixbuf->pixbuf = gtk_widget_render_icon (widget, cellinfo->stock_id, cellinfo->stock_size, cellinfo->stock_detail); } static void nautilus_cell_renderer_pixbuf_emblem_get_size (GtkCellRenderer *cell, GtkWidget *widget, GdkRectangle *cell_area, gint *x_offset, gint *y_offset, gint *width, gint *height) { NautilusCellRendererPixbufEmblem *cellpixbuf = (NautilusCellRendererPixbufEmblem *) cell; NautilusCellRendererPixbufEmblemInfo *cellinfo = g_object_get_data (G_OBJECT (cell), CELLINFO_KEY); gint pixbuf_width = 0; gint pixbuf_height = 0; gint calc_width; gint calc_height; if (!cellpixbuf->pixbuf && cellinfo->stock_id) nautilus_cell_renderer_pixbuf_emblem_create_stock_pixbuf (cellpixbuf, widget); if (cellpixbuf->pixbuf) { pixbuf_width = gdk_pixbuf_get_width (cellpixbuf->pixbuf); pixbuf_height = gdk_pixbuf_get_height (cellpixbuf->pixbuf); } if (cellpixbuf->pixbuf_expander_open) { pixbuf_width = MAX (pixbuf_width, gdk_pixbuf_get_width (cellpixbuf->pixbuf_expander_open)); pixbuf_height = MAX (pixbuf_height, gdk_pixbuf_get_height (cellpixbuf->pixbuf_expander_open)); } if (cellpixbuf->pixbuf_expander_closed) { pixbuf_width = MAX (pixbuf_width, gdk_pixbuf_get_width (cellpixbuf->pixbuf_expander_closed)); pixbuf_height = MAX (pixbuf_height, gdk_pixbuf_get_height (cellpixbuf->pixbuf_expander_closed)); } calc_width = (gint) cell->xpad * 2 + pixbuf_width; calc_height = (gint) cell->ypad * 2 + pixbuf_height; if (x_offset) *x_offset = 0; if (y_offset) *y_offset = 0; if (cell_area && pixbuf_width > 0 && pixbuf_height > 0) { if (x_offset) { *x_offset = (((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ? 1.0 - cell->xalign : cell->xalign) * (cell_area->width - calc_width - 2 * cell->xpad)); *x_offset = MAX (*x_offset, 0) + cell->xpad; } if (y_offset) { *y_offset = (cell->yalign * (cell_area->height - calc_height - 2 * cell->ypad)); *y_offset = MAX (*y_offset, 0) + cell->ypad; } } if (width) *width = calc_width; if (height) *height = calc_height; } static void nautilus_cell_renderer_pixbuf_emblem_render (GtkCellRenderer *cell, GdkWindow *window, GtkWidget *widget, GdkRectangle *background_area, GdkRectangle *cell_area, GdkRectangle *expose_area, GtkCellRendererState flags) { NautilusCellRendererPixbufEmblem *cellpixbuf = (NautilusCellRendererPixbufEmblem *) cell; NautilusCellRendererPixbufEmblemInfo *cellinfo = g_object_get_data (G_OBJECT (cell), CELLINFO_KEY); GdkPixbuf *pixbuf; GdkRectangle pix_rect; GdkRectangle pix_emblem_rect; GdkRectangle draw_rect; gboolean stock_pixbuf = FALSE; pixbuf = cellpixbuf->pixbuf; if (cell->is_expander) { if (cell->is_expanded && cellpixbuf->pixbuf_expander_open != NULL) { pixbuf = cellpixbuf->pixbuf_expander_open; } else if (!cell->is_expanded && cellpixbuf->pixbuf_expander_closed != NULL) { pixbuf = cellpixbuf->pixbuf_expander_closed; } } if (!pixbuf && !cellinfo->stock_id) { return; } else if (!pixbuf && cellinfo->stock_id) { stock_pixbuf = TRUE; } nautilus_cell_renderer_pixbuf_emblem_get_size (cell, widget, cell_area, &pix_rect.x, &pix_rect.y, &pix_rect.width, &pix_rect.height); if (stock_pixbuf) pixbuf = cellpixbuf->pixbuf; pix_rect.x += cell_area->x; pix_rect.y += cell_area->y; pix_rect.width -= cell->xpad * 2; pix_rect.height -= cell->ypad * 2; if (gdk_rectangle_intersect (cell_area, &pix_rect, &draw_rect) && gdk_rectangle_intersect (expose_area, &draw_rect, &draw_rect)) { gdk_draw_pixbuf (window, widget->style->black_gc, pixbuf, /* pixbuf 0, 0 is at pix_rect.x, pix_rect.y */ draw_rect.x - pix_rect.x, draw_rect.y - pix_rect.y, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height, GDK_RGB_DITHER_NORMAL, 0, 0); } if (cellpixbuf->pixbuf_emblem) { pix_emblem_rect.width = gdk_pixbuf_get_width (cellpixbuf->pixbuf_emblem); pix_emblem_rect.height = gdk_pixbuf_get_height (cellpixbuf->pixbuf_emblem); pix_emblem_rect.x = pix_rect.x; pix_emblem_rect.y = pix_rect.y + pix_rect.height - pix_emblem_rect.height; if (gdk_rectangle_intersect (cell_area, &pix_emblem_rect, &draw_rect) && gdk_rectangle_intersect (expose_area, &draw_rect, &draw_rect)) { gdk_draw_pixbuf (window, widget->style->black_gc, cellpixbuf->pixbuf_emblem, /* pixbuf 0, 0 is at pix_emblem_rect.x, pix_emblem_rect.y */ draw_rect.x - pix_emblem_rect.x, draw_rect.y - pix_emblem_rect.y, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height, GDK_RGB_DITHER_NORMAL, 0, 0); } } } mail-notification-5.4.dfsg.1/src/mn-mail-icon-widget.gob0000644000175000001440000001562411015312440022673 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %{ #include #include "mn-util.h" #define ICON_XALIGN 0.5 #define ICON_YALIGN 0.5 #define COUNT_BOX_XPAD 3 #define COUNT_BOX_YPAD 3 #define COUNT_BOX_XMARGIN 0 #define COUNT_BOX_YMARGIN 0 %} class MN:Mail:Icon:Widget from Gtk:Widget { private gboolean blinking; property BOOLEAN blinking (export) set { gboolean blinking = g_value_get_boolean(VAL); if (blinking != selfp->blinking) { selfp->blinking = blinking; if (blinking) { g_assert(selfp->blink_timeout_id == 0); selfp->blink_timeout_id = gdk_threads_add_timeout(500, self_blink_timeout_cb, self); } else { g_assert(selfp->blink_timeout_id != 0); mn_source_clear(&selfp->blink_timeout_id); selfp->is_on = TRUE; gtk_widget_queue_draw(GTK_WIDGET(self)); } } } get { g_value_set_boolean(VAL, selfp->blinking); }; private PangoLayout *count_layout unrefwith g_object_unref; private int count; property INT count (export) set { int count = g_value_get_int(VAL); if (count != selfp->count) { selfp->count = count; self_invalidate_count_layout(self); gtk_widget_queue_draw(GTK_WIDGET(self)); } } get { g_value_set_int(VAL, selfp->count); }; private unsigned int blink_timeout_id; private gboolean is_on = TRUE; /* is currently displaying the image? */ private char *stock_id destroywith g_free; private GtkIconSize icon_size; init (self) { GTK_WIDGET_SET_FLAGS(self, GTK_NO_WINDOW); gtk_widget_set_name(GTK_WIDGET(self), "mn-mail-icon"); g_object_connect(self, "swapped-signal::size-allocate", self_invalidate_count_layout, self, "swapped-signal::style-set", self_context_changed, self, "swapped-signal::direction-changed", self_context_changed, self, NULL); } dispose (self) { mn_source_clear(&selfp->blink_timeout_id); } override (Gtk:Widget) void size_request (GtkWidget *widget, GtkRequisition *requisition) { Self *self = SELF(widget); GdkPixbuf *pixbuf; pixbuf = self_render_icon(self); if (pixbuf) { requisition->width = gdk_pixbuf_get_width(pixbuf); requisition->height = gdk_pixbuf_get_height(pixbuf); g_object_unref(pixbuf); } else { requisition->width = 0; requisition->height = 0; } } override (Gtk:Widget) gboolean expose_event (GtkWidget *widget, GdkEventExpose *event) { Self *self = SELF(widget); if (! GTK_WIDGET_DRAWABLE(widget) || ! selfp->stock_id) return FALSE; if (selfp->is_on) { int x; int y; GdkRectangle image_area; /* note: widget->requisition is the pixbuf size, see size_request() */ x = floor(widget->allocation.x + ((widget->allocation.width - widget->requisition.width) * ICON_XALIGN)); y = floor(widget->allocation.y + ((widget->allocation.height - widget->requisition.height) * ICON_YALIGN)); image_area.x = x; image_area.y = y; image_area.width = widget->requisition.width; image_area.height = widget->requisition.height; if (gdk_rectangle_intersect(&event->area, &image_area, &image_area)) { GdkPixbuf *pixbuf; pixbuf = self_render_icon(self); gdk_draw_pixbuf(widget->window, NULL, pixbuf, image_area.x - x, image_area.y - y, image_area.x, image_area.y, image_area.width, image_area.height, GDK_RGB_DITHER_NORMAL, 0, 0); g_object_unref(pixbuf); } } if (selfp->count) { PangoRectangle count_rect; int count_x; int count_y; int box_x; int box_y; int box_width; int box_height; if (! selfp->count_layout) { const char *size; char *markup; if (widget->allocation.height < 32) size = "small"; else size = "medium"; selfp->count_layout = gtk_widget_create_pango_layout(widget, NULL); markup = g_strdup_printf("%i", size, selfp->count); pango_layout_set_markup(selfp->count_layout, markup, -1); g_free(markup); } pango_layout_get_pixel_extents(selfp->count_layout, &count_rect, NULL); box_width = count_rect.width + COUNT_BOX_XPAD * 2; box_height = count_rect.height + COUNT_BOX_YPAD * 2; box_x = widget->allocation.x + widget->allocation.width - box_width - COUNT_BOX_XMARGIN; box_y = widget->allocation.y + widget->allocation.height - box_height - COUNT_BOX_YMARGIN; count_x = box_x - count_rect.x + COUNT_BOX_XPAD; count_y = box_y - count_rect.y + COUNT_BOX_YPAD; gtk_paint_box(widget->style, widget->window, GTK_WIDGET_STATE(widget), GTK_SHADOW_OUT, &event->area, widget, NULL, box_x, box_y, box_width, box_height); gtk_paint_layout(widget->style, widget->window, GTK_WIDGET_STATE(widget), FALSE, &event->area, widget, NULL, count_x, count_y, selfp->count_layout); } return FALSE; } private GdkPixbuf * render_icon (self) { if (selfp->stock_id) return gtk_widget_render_icon(GTK_WIDGET(self), selfp->stock_id, selfp->icon_size, NULL); else return NULL; } private void context_changed (self) { if (selfp->count_layout) { pango_layout_context_changed(selfp->count_layout); gtk_widget_queue_draw(GTK_WIDGET(self)); } } private void invalidate_count_layout (self) { if (selfp->count_layout) { g_object_unref(selfp->count_layout); selfp->count_layout = NULL; } } private gboolean blink_timeout_cb (gpointer data) { Self *self = data; selfp->is_on = ! selfp->is_on; gtk_widget_queue_draw(GTK_WIDGET(self)); return TRUE; } public GtkWidget * new (void) { return GTK_WIDGET(GET_NEW); } public void set_from_stock (self, const char *stock_id (check null), GtkIconSize icon_size) { g_free(selfp->stock_id); selfp->stock_id = g_strdup(stock_id); selfp->icon_size = icon_size; /* affects the size request: call queue_resize(), not queue_draw() */ gtk_widget_queue_resize(GTK_WIDGET(self)); } } mail-notification-5.4.dfsg.1/src/mn-vfs.c0000644000175000001440000002226311015312437020016 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include "mn-vfs.h" #ifndef MN_REGRESSION_TEST #define READ_LINE_BLOCK_SIZE 16384 #endif struct _MNVFSReadLineContext { GnomeVFSHandle *handle; GString *buf; char *terminator; GnomeVFSResult last_result; gboolean eof; }; /* FIXME: must also handle \r and \r\n terminators */ GnomeVFSResult mn_vfs_read_line (MNVFSReadLineContext **context, GnomeVFSHandle *handle, const char **line) { GnomeVFSResult result; gboolean first_pass = TRUE; g_return_val_if_fail(context != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS); g_return_val_if_fail(handle != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS); g_return_val_if_fail(line != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS); if (*context) { g_return_val_if_fail((*context)->handle == handle, GNOME_VFS_ERROR_BAD_PARAMETERS); if ((*context)->terminator) { g_string_erase((*context)->buf, 0, (*context)->terminator - (*context)->buf->str + 1); (*context)->terminator = NULL; } else if ((*context)->eof) return GNOME_VFS_ERROR_EOF; /* we're done */ } else { *context = g_new0(MNVFSReadLineContext, 1); (*context)->handle = handle; (*context)->buf = g_string_new(NULL); } while (TRUE) { if (! (*context)->buf->str[0] || ! first_pass) { char buf[READ_LINE_BLOCK_SIZE]; GnomeVFSFileSize bytes_read; result = (*context)->last_result = gnome_vfs_read(handle, buf, sizeof(buf), &bytes_read); if (result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF) g_string_append_len((*context)->buf, buf, bytes_read); else break; /* error */ } (*context)->terminator = strchr((*context)->buf->str, '\n'); if ((*context)->terminator || (*context)->last_result == GNOME_VFS_ERROR_EOF) { result = (*context)->last_result; if ((*context)->terminator || (*context)->buf->str[0]) { *line = (*context)->buf->str; if (result == GNOME_VFS_ERROR_EOF) result = GNOME_VFS_OK; } if ((*context)->terminator) (*context)->terminator[0] = 0; else if ((*context)->last_result == GNOME_VFS_ERROR_EOF) (*context)->eof = TRUE; break; /* line found, or last line */ } first_pass = FALSE; } return result; } void mn_vfs_read_line_context_free (MNVFSReadLineContext *context) { g_return_if_fail(context != NULL); g_string_free(context->buf, TRUE); g_free(context); } gboolean mn_vfs_test (GnomeVFSURI *uri, GFileTest test) { GnomeVFSFileInfoOptions options; GnomeVFSFileInfo *file_info; gboolean status = FALSE; g_return_val_if_fail(uri != NULL, FALSE); options = GNOME_VFS_FILE_INFO_DEFAULT; if (! (test & G_FILE_TEST_IS_SYMLINK)) options |= GNOME_VFS_FILE_INFO_FOLLOW_LINKS; if (test & G_FILE_TEST_IS_EXECUTABLE) options |= GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS; file_info = gnome_vfs_file_info_new(); if (gnome_vfs_get_file_info_uri(uri, file_info, options) == GNOME_VFS_OK) { if (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) { if (test & G_FILE_TEST_IS_REGULAR) status = file_info->type == GNOME_VFS_FILE_TYPE_REGULAR; if (! status && test & G_FILE_TEST_IS_SYMLINK) status = file_info->type == GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK; if (! status && test & G_FILE_TEST_IS_DIR) status = file_info->type == GNOME_VFS_FILE_TYPE_DIRECTORY; } if (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) { if (! status && test & G_FILE_TEST_IS_EXECUTABLE) status = file_info->permissions & GNOME_VFS_PERM_ACCESS_EXECUTABLE; } if (! status && test & G_FILE_TEST_EXISTS) status = TRUE; /* gnome_vfs_get_file_info() succeeded, so the file exists */ } gnome_vfs_file_info_unref(file_info); return status; } GnomeVFSResult mn_vfs_read_entire_file_uri (GnomeVFSURI *uri, int *file_size, char **file_contents) { char *text_uri; GnomeVFSResult result; g_return_val_if_fail(uri != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS); text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE); result = gnome_vfs_read_entire_file(text_uri, file_size, file_contents); g_free(text_uri); return result; } GnomeVFSResult mn_vfs_write_entire_file_uri (GnomeVFSURI *uri, gsize file_size, const char *file_contents, gboolean exclusive, unsigned int perms) { GnomeVFSHandle *handle; GnomeVFSResult result; GnomeVFSFileSize bytes_written = 0; result = gnome_vfs_create_uri(&handle, uri, GNOME_VFS_OPEN_WRITE | GNOME_VFS_OPEN_TRUNCATE, exclusive, perms); if (result != GNOME_VFS_OK) return result; while (bytes_written < file_size) { GnomeVFSFileSize this_bytes_written; result = gnome_vfs_write(handle, file_contents + bytes_written, file_size - bytes_written, &this_bytes_written); if (result != GNOME_VFS_OK) { gnome_vfs_close(handle); return result; } bytes_written += this_bytes_written; } return gnome_vfs_close(handle); } gboolean mn_vfs_write_entire_file_uri_safe (GnomeVFSURI *uri, gsize file_size, const char *file_contents, unsigned int perms, GError **err) { GnomeVFSResult result; char *text_uri; GnomeVFSURI *tmp_uri; char *tmp_text_uri; GnomeVFSURI *old_uri; char *old_text_uri; gboolean status = FALSE; gboolean old_exists; g_return_val_if_fail(uri != NULL, FALSE); text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_PASSWORD); tmp_uri = mn_vfs_uri_append_file_suffix(uri, ".tmp"); tmp_text_uri = gnome_vfs_uri_to_string(tmp_uri, GNOME_VFS_URI_HIDE_PASSWORD); old_uri = mn_vfs_uri_append_file_suffix(uri, ".old"); old_text_uri = gnome_vfs_uri_to_string(old_uri, GNOME_VFS_URI_HIDE_PASSWORD); if (mn_vfs_test(tmp_uri, G_FILE_TEST_EXISTS)) { result = gnome_vfs_unlink_from_uri(tmp_uri); if (result != GNOME_VFS_OK) { g_set_error(err, 0, 0, _("Unable to remove %s: %s."), tmp_text_uri, gnome_vfs_result_to_string(result)); goto end; } } result = mn_vfs_write_entire_file_uri(tmp_uri, file_size, file_contents, TRUE, perms); if (result != GNOME_VFS_OK) { g_set_error(err, 0, 0, _("Unable to write %s: %s."), tmp_text_uri, gnome_vfs_result_to_string(result)); goto end; } old_exists = mn_vfs_test(uri, G_FILE_TEST_EXISTS); if (old_exists) { result = gnome_vfs_move_uri(uri, old_uri, TRUE); if (result != GNOME_VFS_OK) { g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), text_uri, old_text_uri, gnome_vfs_result_to_string(result)); goto end; } } result = gnome_vfs_move_uri(tmp_uri, uri, TRUE); if (result != GNOME_VFS_OK) { g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), tmp_text_uri, text_uri, gnome_vfs_result_to_string(result)); goto end; } if (old_exists) { GnomeVFSResult this_result; this_result = gnome_vfs_unlink_from_uri(old_uri); if (this_result != GNOME_VFS_OK) /* non fatal */ g_warning(_("unable to delete %s: %s"), old_text_uri, gnome_vfs_result_to_string(this_result)); } status = TRUE; /* success */ end: g_free(text_uri); gnome_vfs_uri_unref(tmp_uri); g_free(tmp_text_uri); gnome_vfs_uri_unref(old_uri); g_free(old_text_uri); return status; } GnomeVFSURI * mn_vfs_uri_append_file_suffix (GnomeVFSURI *uri, const char *suffix) { GnomeVFSURI *result; g_return_val_if_fail(uri != NULL, NULL); g_return_val_if_fail(suffix != NULL, NULL); result = gnome_vfs_uri_dup(uri); if (result->text) { char *new_text; new_text = g_strconcat(result->text, suffix, NULL); g_free(result->text); result->text = new_text; } else result->text = g_strdup(suffix); return result; } char * mn_vfs_uri_extract_short_name (const char *text_uri) { GnomeVFSURI *uri; char *name; g_return_val_if_fail(text_uri != NULL, NULL); uri = gnome_vfs_uri_new(text_uri); if (! uri) return NULL; name = gnome_vfs_uri_extract_short_name(uri); gnome_vfs_uri_unref(uri); return name; } char * mn_vfs_get_local_path (GnomeVFSURI *uri) { char *text_uri; char *path; g_return_val_if_fail(uri != NULL, NULL); text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE); path = gnome_vfs_get_local_path_from_uri(text_uri); g_free(text_uri); return path; } gboolean mn_vfs_result_to_g_error (GnomeVFSResult result, GError **err) { if (result == GNOME_VFS_OK) return TRUE; g_set_error(err, 0, 0, "%s", gnome_vfs_result_to_string(result)); return FALSE; } mail-notification-5.4.dfsg.1/src/mn-webmail-mailbox-properties.gob0000644000175000001440000001400111015312440024771 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-authenticated-mailbox-properties.h" %} %{ #include #include "mn-webmail-mailbox.h" #include "mn-mailbox-properties-private.h" #include "mn-authenticated-mailbox-properties-private.h" #include "mn-util.h" %} class MN:Webmail:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstract) { private GtkWidget *inbox_radio; private GtkWidget *other_radio; private GtkWidget *folder_entry; property BOOLEAN complete (override) get { gboolean complete; complete = mn_authenticated_mailbox_properties_is_complete(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self)); if (complete) { gboolean other_active; const char *folder; other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)); folder = gtk_entry_get_text(GTK_ENTRY(selfp->folder_entry)); if (other_active && ! *folder) complete = FALSE; } g_value_set_boolean(VAL, complete); }; property STRING default_name (override) get { const char *username; gboolean other_active; const char *folder; MNMailboxClass *class; username = gtk_entry_get_text(GTK_ENTRY(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self)->username_entry)); g_assert(*username != 0); other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)); folder = gtk_entry_get_text(GTK_ENTRY(selfp->folder_entry)); class = mn_mailbox_get_class_from_name(MN_MAILBOX_PROPERTIES_CLASS(SELF_GET_CLASS(self))->type); g_value_take_string(VAL, mn_webmail_mailbox_build_name(MN_WEBMAIL_MAILBOX_CLASS(class), username, other_active ? folder : NULL)); g_type_class_unref(class); }; init (self) { MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); MNAuthenticatedMailboxProperties *auth = MN_AUTHENTICATED_MAILBOX_PROPERTIES(self); GtkWidget *folder_vbox; GtkWidget *hbox; gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->username_vbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->password_vbox, FALSE, FALSE, 0); /* translators: header capitalization */ folder_vbox = mn_mailbox_properties_add_general_section(properties, _("Folder")); selfp->inbox_radio = gtk_radio_button_new_with_mnemonic(NULL, _("In_box")); gtk_size_group_add_widget(properties->label_size_group, selfp->inbox_radio); gtk_box_pack_start(GTK_BOX(folder_vbox), selfp->inbox_radio, FALSE, FALSE, 0); selfp->other_radio = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->inbox_radio), _("_Other:")); gtk_size_group_add_widget(properties->label_size_group, selfp->other_radio); selfp->folder_entry = gtk_entry_new(); gtk_widget_set_sensitive(selfp->folder_entry, FALSE); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), selfp->other_radio, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), selfp->folder_entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(folder_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show_all(folder_vbox); properties->entries = mn_g_slist_append_elements(properties->entries, auth->username_entry, auth->password_entry, selfp->folder_entry, NULL); g_signal_connect(selfp->inbox_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self); g_signal_connect(selfp->other_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self); g_object_connect(auth->username_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); g_object_connect(selfp->folder_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); } private void radio_toggled_h (GtkToggleButton *togglebutton, gpointer user_data) { Self *self = user_data; gtk_widget_set_sensitive(selfp->folder_entry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio))); g_object_notify(G_OBJECT(self), "complete"); g_object_notify(G_OBJECT(self), "default-name"); } override (MN:Mailbox:Properties) void set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox) { Self *self = SELF(properties); MNWebmailMailbox *webmail_mailbox = MN_WEBMAIL_MAILBOX(mailbox); PARENT_HANDLER(properties, mailbox); if (! strcmp(webmail_mailbox->folder, "Inbox")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->inbox_radio), TRUE); else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->other_radio), TRUE); gtk_entry_set_text(GTK_ENTRY(selfp->folder_entry), webmail_mailbox->folder); } } override (MN:Mailbox:Properties) MNMailbox * get_mailbox (MNMailboxProperties *properties) { Self *self = SELF(properties); MNMailbox *mailbox; mailbox = PARENT_HANDLER(properties); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio))) g_object_set(mailbox, MN_WEBMAIL_MAILBOX_PROP_FOLDER((char *) gtk_entry_get_text(GTK_ENTRY(selfp->folder_entry))), NULL); return mailbox; } } mail-notification-5.4.dfsg.1/src/mn-vfs-message.gob0000644000175000001440000000575711015312440021770 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-message.h" #include "mn-decls.h" %} %{ #include "mn-vfs-mailbox-backend.h" #include "mn-message-mime.h" #include "mn-util.h" %} class MN:VFS:Message from MN:Message (abstract) { /* can only be NULL during construction (see new()) */ protected GnomeVFSURI *vfs_uri unrefwith gnome_vfs_uri_unref; property POINTER vfs_uri (flags = CONSTRUCT_ONLY, type = GnomeVFSURI *) set { GnomeVFSURI *uri; g_assert(self->vfs_uri == NULL); uri = g_value_get_pointer(VAL); if (uri) self->vfs_uri = gnome_vfs_uri_ref(uri); } get { g_value_set_pointer(VAL, self->vfs_uri != NULL ? gnome_vfs_uri_ref(self->vfs_uri) : NULL); }; public MNVFSMessage * new (GType type, MN:VFS:Mailbox:Backend *backend (check null type), const char *mid, GnomeVFSURI *dir_uri (check null), const char *filename (check null), MNMessageFlags flags, gboolean handle_status, GError **err) { GnomeVFSURI *message_uri; MNVFSMessage *message; message_uri = gnome_vfs_uri_append_file_name(dir_uri, filename); message = MN_VFS_MESSAGE(mn_message_new_from_uri_full(type, MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), mid, message_uri, flags, handle_status, err)); if (message) message->vfs_uri = gnome_vfs_uri_ref(message_uri); gnome_vfs_uri_unref(message_uri); return message; } public MNVFSMessage * new_from_message (MN:VFS:Message *message (check null type), GnomeVFSURI *dir_uri (check null), const char *filename (check null), MNMessageFlags flags) { GnomeVFSURI *message_uri; char *message_text_uri; MNVFSMessage *new_message; message_uri = gnome_vfs_uri_append_file_name(dir_uri, filename); message_text_uri = gnome_vfs_uri_to_string(message_uri, GNOME_VFS_URI_HIDE_NONE); new_message = mn_g_object_clone(message, MN_MESSAGE_PROP_URI((char *) message_text_uri), MN_MESSAGE_PROP_FLAGS(flags), MN_VFS_MESSAGE_PROP_VFS_URI(message_uri), NULL); gnome_vfs_uri_unref(message_uri); g_free(message_text_uri); return new_message; } } mail-notification-5.4.dfsg.1/src/mn-keyring.c0000644000175000001440000001343411015312437020670 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "mn-keyring.h" typedef struct { GMutex *mutex; GCond *cond; gboolean done; } Request; typedef struct { Request request; const char *username; const char *domain; const char *server; const char *protocol; const char *authtype; int port; MNKeyringRequestCallback request_callback; gpointer data; char *password; } GetPasswordInfo; typedef struct { Request request; const char *keyring; const char *username; const char *domain; const char *server; const char *protocol; const char *authtype; int port; const char *password; MNKeyringRequestCallback request_callback; gpointer data; GnomeKeyringResult result; guint32 item_id; } SetPasswordInfo; static void request_perform (Request *request, GSourceFunc perform_callback, gpointer data) { g_return_if_fail(request != NULL); g_return_if_fail(perform_callback != NULL); request->mutex = g_mutex_new(); request->cond = g_cond_new(); request->done = FALSE; /* * Work around http://bugzilla.gnome.org/show_bug.cgi?id=474695 by * calling the gnome-keyring async function from a main loop * callback. */ g_idle_add(perform_callback, data); g_mutex_lock(request->mutex); if (! request->done) g_cond_wait(request->cond, request->mutex); g_mutex_unlock(request->mutex); g_mutex_free(request->mutex); g_cond_free(request->cond); } static void request_signal (Request *request) { g_return_if_fail(request != NULL); g_mutex_lock(request->mutex); request->done = TRUE; g_cond_signal(request->cond); g_mutex_unlock(request->mutex); } static void get_password_sync_cb (GnomeKeyringResult result, GList *list, gpointer data) { GetPasswordInfo *info = data; info->request_callback(NULL, info->data); if (result == GNOME_KEYRING_RESULT_OK && list) { GnomeKeyringNetworkPasswordData *password_data = list->data; info->password = g_strdup(password_data->password); } request_signal(&info->request); } static gboolean get_password_sync_perform_cb (gpointer data) { GetPasswordInfo *info = data; gpointer request; request = gnome_keyring_find_network_password(info->username, info->domain, info->server, NULL, info->protocol, info->authtype, info->port, get_password_sync_cb, info, NULL); info->request_callback(request, info->data); return FALSE; /* remove source */ } char * mn_keyring_get_password_sync (const char *username, const char *domain, const char *server, const char *protocol, const char *authtype, int port, MNKeyringRequestCallback request_callback, gpointer data) { GetPasswordInfo info; g_return_val_if_fail(request_callback != NULL, NULL); info.username = username; info.domain = domain; info.server = server; info.protocol = protocol; info.authtype = authtype; info.port = port; info.request_callback = request_callback; info.data = data; info.password = NULL; request_perform(&info.request, get_password_sync_perform_cb, &info); return info.password; } static void set_password_sync_cb (GnomeKeyringResult result, guint32 item_id, gpointer data) { SetPasswordInfo *info = data; info->request_callback(NULL, info->data); info->result = result; info->item_id = item_id; request_signal(&info->request); } static gboolean set_password_sync_perform_cb (gpointer data) { SetPasswordInfo *info = data; gpointer request; request = gnome_keyring_set_network_password(info->keyring, info->username, info->domain, info->server, NULL, info->protocol, info->authtype, info->port, info->password, set_password_sync_cb, info, NULL); info->request_callback(request, info->data); return FALSE; /* remove source */ } GnomeKeyringResult mn_keyring_set_password_sync (const char *keyring, const char *username, const char *domain, const char *server, const char *protocol, const char *authtype, int port, const char *password, guint32 *item_id, MNKeyringRequestCallback request_callback, gpointer data) { SetPasswordInfo info; g_return_val_if_fail(password != NULL, GNOME_KEYRING_RESULT_BAD_ARGUMENTS); g_return_val_if_fail(item_id != NULL, GNOME_KEYRING_RESULT_BAD_ARGUMENTS); g_return_val_if_fail(request_callback != NULL, GNOME_KEYRING_RESULT_BAD_ARGUMENTS); info.keyring = keyring; info.username = username; info.domain = domain; info.server = server; info.protocol = protocol; info.authtype = authtype; info.port = port; info.password = password; info.request_callback = request_callback; info.data = data; request_perform(&info.request, set_password_sync_perform_cb, &info); if (info.result == GNOME_KEYRING_RESULT_OK) *item_id = info.item_id; return info.result; } mail-notification-5.4.dfsg.1/src/mn-compact-message-view.gob0000644000175000001440000000446211015312437023566 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-message-view.h" %} %{ #include #include "mn-message-view-private.h" #include "mn-message.h" #include "mn-util.h" #include "mn-text-table.h" %} class MN:Compact:Message:View from MN:Message:View { override (MN:Message:View) void append_header (MNMessageView *view) { Self *self = SELF(view); self_append_header(self, _("Mailbox")); self_append_header(self, _("From")); self_append_header(self, _("Subject")); self_append_header(self, _("Sent")); mn_text_table_line_break(MN_TEXT_TABLE(self)); } override (MN:Message:View) void append_message (MNMessageView *view, MNMessage *message, time_t now) { Self *self = SELF(view); self_append_cell(self, message->mailbox->runtime_name); self_append_cell(self, message->from); self_append_cell(self, message->subject); if (message->sent_time > 0) mn_message_view_append_past_time_cell(MN_MESSAGE_VIEW(self), message->sent_time, now); mn_text_table_line_break(MN_TEXT_TABLE(self)); } private void append_header (self, const char *name (check null)) { char *markup; markup = g_markup_printf_escaped("%s", name); mn_text_table_append_text_cell_from_markup(MN_TEXT_TABLE(self), markup); g_free(markup); } private void append_cell (self, const char *text (check null)) { mn_text_table_append_text_cell(MN_TEXT_TABLE(self), text); } public GtkWidget * new (void) { return GTK_WIDGET(GET_NEW); } } mail-notification-5.4.dfsg.1/src/mn-mh-mailbox-backend.gob0000644000175000001440000001543411015312440023163 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-vfs-mailbox-backend.h" %} %{ #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #include "mn-vfs-mailbox-backend-private.h" #include "mn-vfs.h" #include "mn-util.h" #include "mn-message-mime.h" #define SEQUENCES_FILE ".mh_sequences" #define XMH_CACHE_FILE ".xmhcache" %} class MN:MH:Mailbox:Backend from MN:VFS:Mailbox:Backend { class_init (class) { MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "MH"; } constructor (self) { MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self); /* * There is no standard way of locking a MH mailbox, so avoid race * conditions by setting a check latency of 3 seconds. */ backend->check_latency = 3000; } override (MN:VFS:Mailbox:Backend) void monitor_cb (MNVFSMailboxBackend *backend, const char *info_uri, GnomeVFSMonitorEventType event_type) { if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED || event_type == GNOME_VFS_MONITOR_EVENT_DELETED || event_type == GNOME_VFS_MONITOR_EVENT_CREATED) { char *filename; filename = mn_vfs_uri_extract_short_name(info_uri); if (filename) { if (! strcmp(filename, SEQUENCES_FILE) || mn_str_isnumeric(filename)) mn_vfs_mailbox_backend_queue_check(backend); g_free(filename); } } } override (MN:VFS:Mailbox:Backend) gboolean is (MNVFSMailboxBackend *dummy, MNVFSMailboxBackendClass *class, MNVFSMailbox *mailbox) { GnomeVFSURI *sequences_uri; gboolean is; sequences_uri = gnome_vfs_uri_append_file_name(mailbox->vfs_uri, SEQUENCES_FILE); is = mn_vfs_test(sequences_uri, G_FILE_TEST_IS_REGULAR); gnome_vfs_uri_unref(sequences_uri); if (! is) { GnomeVFSURI *cache_uri; cache_uri = gnome_vfs_uri_append_file_name(mailbox->vfs_uri, XMH_CACHE_FILE); is = mn_vfs_test(cache_uri, G_FILE_TEST_IS_REGULAR); gnome_vfs_uri_unref(cache_uri); } return is; } override (MN:VFS:Mailbox:Backend) void check (MNVFSMailboxBackend *backend, int check_id) { GnomeVFSURI *sequences_uri; GnomeVFSResult result; GnomeVFSHandle *handle; mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_DIRECTORY); sequences_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, SEQUENCES_FILE); result = gnome_vfs_open_uri(&handle, sequences_uri, GNOME_VFS_OPEN_READ); gnome_vfs_uri_unref(sequences_uri); if (result == GNOME_VFS_OK) { MNVFSReadLineContext *context = NULL; const char *line; GSList *messages = NULL; int num_errors = 0; GnomeVFSResult close_result; while ((result = mn_vfs_read_line(&context, handle, &line)) == GNOME_VFS_OK) if (g_str_has_prefix(line, "unseen: ")) { int first; char **elements; int i; elements = g_strsplit(line + 8, " ", 0); for (i = 0; elements[i]; i++) { int last; int n; n = sscanf(elements[i], "%d-%d", &first, &last); if (n >= 1) { int j; if (n == 1) last = first; for (j = first; j <= last; j++) { char *filename; GnomeVFSURI *message_uri; MNMessage *message; GError *err = NULL; if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { g_strfreev(elements); goto loop_end; } filename = g_strdup_printf("%i", j); message_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, filename); g_free(filename); /* * We set handle_status to FALSE, since * messages in the unseen sequence are by * definition unseen (that is, new). */ message = mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri, MN_MESSAGE_NEW, FALSE, &err); if (message) messages = g_slist_prepend(messages, message); else if (err) { char *message_text_uri; message_text_uri = gnome_vfs_uri_to_string(message_uri, GNOME_VFS_URI_HIDE_PASSWORD); mn_mailbox_warning(MN_MAILBOX(backend->mailbox), "cannot read message \"%s\": %s", message_text_uri, err->message); g_free(message_text_uri); g_error_free(err); num_errors++; } gnome_vfs_uri_unref(message_uri); } } } g_strfreev(elements); } loop_end: mn_vfs_read_line_context_free(context); close_result = gnome_vfs_close(handle); GDK_THREADS_ENTER(); if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK) { if (close_result == GNOME_VFS_OK) { mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages); if (num_errors != 0) mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), ngettext("cannot read %i message", "cannot read %i messages", num_errors), num_errors); } else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to close %s: %s"), SEQUENCES_FILE, gnome_vfs_result_to_string(close_result)); } else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("error while reading %s: %s"), SEQUENCES_FILE, gnome_vfs_result_to_string(result)); } mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); } else { GnomeVFSURI *cache_uri; gboolean cache_exists; cache_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, XMH_CACHE_FILE); cache_exists = mn_vfs_test(cache_uri, G_FILE_TEST_IS_REGULAR); gnome_vfs_uri_unref(cache_uri); if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { GDK_THREADS_ENTER(); if (cache_exists) mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), NULL); else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to open %s: %s"), SEQUENCES_FILE, gnome_vfs_result_to_string(result)); gdk_flush(); GDK_THREADS_LEAVE(); } } } } mail-notification-5.4.dfsg.1/src/mn-client-session.h0000644000175000001440000001666511015312437022175 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_CLIENT_SESSION_H #define _MN_CLIENT_SESSION_H #include #if WITH_SASL #include #endif typedef struct _MNClientSession MNClientSession; typedef struct _MNClientSessionPrivate MNClientSessionPrivate; typedef struct _MNClientSessionResponse MNClientSessionResponse; #define MN_CLIENT_SESSION_ERROR (mn_client_session_error_quark()) typedef enum { MN_CLIENT_SESSION_ERROR_OTHER, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST } MNClientSessionError; enum { /* read the next input line */ MN_CLIENT_SESSION_RESULT_CONTINUE = -1, /* signal an uncompliant response and disconnect */ MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT = -2, /* disconnect */ MN_CLIENT_SESSION_RESULT_DISCONNECT = -3 }; /* * In all the session callbacks below, @session is the session which * is being run, and @private is the opaque data pointer which was * passed to mn_client_session_run(). */ typedef struct { /* * The state ID, which must be a positive non-zero integer. */ unsigned int id; /* * enter_cb (optional): * * Enters the state. If set to %NULL, does nothing and returns * %MN_CLIENT_SESSION_RESULT_CONTINUE. * * Return value: must return a state ID to switch to, or one of the * MN_CLIENT_SESSION_RESULT_ codes above */ int (*enter_cb) (MNClientSession *session, MNClientSessionPrivate *private); /* * handle_cb (required): * @response: the #MNClientSessionResponse returned by the response_new() * callback. * * Handles a response received while the state is active. * * Return value: must return a state ID to switch to, or one of the * MN_CLIENT_SESSION_RESULT_ codes above */ int (*handle_cb) (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *private); } MNClientSessionState; /* the state to enter after connecting */ #define MN_CLIENT_SESSION_INITIAL_STATE 1 /* the MNClientSessionState array canary */ #define MN_CLIENT_SESSION_STATES_END { 0, NULL, NULL } typedef struct { /* * notice (optional): * @message: the notice message * * Handles a notice. */ void (*notice) (MNClientSession *session, const char *message, MNClientSessionPrivate *private); /* * warning (optional): * @message: the warning message * * Handles a warning. */ void (*warning) (MNClientSession *session, const char *message, MNClientSessionPrivate *private); /* * response_new (required): * @input: an input line received from the server * * Parses server input. * * Return value: must return an opaque data pointer on success, or * %NULL on failure */ MNClientSessionResponse *(*response_new) (MNClientSession *session, const char *input, MNClientSessionPrivate *private); /* * response_free (optional): * @response: a response that was returned by response_new() * * Releases all the memory associated with @response. */ void (*response_free) (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *private); /* * pre_read (optional): * * Called before calling read() or one of its variants. */ void (*pre_read) (MNClientSession *session, MNClientSessionPrivate *private); /* * post_read (optional): * * Called after calling read() or one of its variants. */ void (*post_read) (MNClientSession *session, MNClientSessionPrivate *private); #if WITH_SASL /* * sasl_get_credentials (required if * mn_client_session_sasl_authentication_start() is needed, optional * otherwise): * @username: a pointer to store the username, or %NULL * @password: a pointer to store the password, or %NULL * * Fills in the requested credentials. * * Return value: must return %TRUE in case of success, or %FALSE if * a requested credential cannot be provided (in such case, the SASL * authentication exchange will be aborted) */ gboolean (*sasl_get_credentials) (MNClientSession *session, MNClientSessionPrivate *priv, const char **username, const char **password); #endif /* WITH_SASL */ #if WITH_SSL /* * ssl_trust_server (required if SSL support was compiled in): * * Decides whether to trust the given server after SSL verification * failed. If the server provided a certificate, the @fingerprint * and @verify_error arguments will be set. * * Return value: must return %TRUE if the given server should be trusted. */ gboolean (*ssl_trust_server) (MNClientSession *session, const char *server, int port, const char *fingerprint, const char *verify_error, MNClientSessionPrivate *priv); #endif /* WITH_SSL */ } MNClientSessionCallbacks; gboolean mn_client_session_run (const MNClientSessionState *states, const MNClientSessionCallbacks *callbacks, #if WITH_SSL gboolean use_ssl, #endif const char *hostname, int port, MNClientSessionPrivate *private, GError **err); gconstpointer mn_client_session_read (MNClientSession *session, unsigned int nbytes); const char *mn_client_session_read_line (MNClientSession *session); int mn_client_session_write (MNClientSession *session, const char *format, ...) G_GNUC_PRINTF(2, 3); #if WITH_SSL gboolean mn_client_session_enable_ssl (MNClientSession *session); #endif #if WITH_SASL gboolean mn_client_session_sasl_authentication_start (MNClientSession *session, const char *service, GSList *mechanisms, const char *forced_mechanism, const char **used_mechanism, const char **initial_clientout, unsigned int *initial_clientoutlen); int mn_client_session_sasl_authentication_step (MNClientSession *session, const char *input); gboolean mn_client_session_sasl_authentication_done (MNClientSession *session); void mn_client_session_sasl_dispose (MNClientSession *session); sasl_ssf_t mn_client_session_sasl_get_ssf (MNClientSession *session); #endif /* WITH_SASL */ void mn_client_session_notice (MNClientSession *session, const char *format, ...) G_GNUC_PRINTF(2, 3); void mn_client_session_warning (MNClientSession *session, const char *format, ...) G_GNUC_PRINTF(2, 3); int mn_client_session_set_error (MNClientSession *session, int code, const char *format, ...) G_GNUC_PRINTF(3, 4); int mn_client_session_set_error_from_response (MNClientSession *session, int code, const char *response); GQuark mn_client_session_error_quark (void); #endif /* _MN_CLIENT_SESSION_H */ mail-notification-5.4.dfsg.1/src/mn-hotmail-mailbox.gob0000644000175000001440000002265411015312440022631 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-webmail-mailbox.h" %} %{ #include #include #include "mn-conf.h" #include "mn-webmail-mailbox-private.h" #include "mn-stock.h" #include "mn-util.h" typedef struct { const char *code; const char *folder; } InboxMapping; /* this list is not exhaustive */ static const InboxMapping inbox_mappings_array[] = { { "da", "Indbakke" }, { "de", "Posteingang" }, { "es", "Band. entrada" }, { "fi", "Saapuneet" }, { "fr", "Boîte de réception" }, { "it", "Posta in arrivo" }, { "nl", "Postvak IN" }, { "no", "Innboks" }, { "pl", "Skrzynka odbiorcza" }, { "pt_BR", "Caixa de Entrada" }, { "pt_PT", "A Receber" }, { "sv", "Inkorgen" }, }; static GHashTable *inbox_mappings; %} class MN:Hotmail:Mailbox from MN:Webmail:Mailbox { class_init (class) { MN_MAILBOX_CLASS(class)->type = "hotmail"; /* 5 minutes is a good default */ MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5; MN_WEBMAIL_MAILBOX_CLASS(class)->default_domain = "hotmail.com"; self_init_inbox_mappings(); } private void init_inbox_mappings (void) { int i; inbox_mappings = g_hash_table_new(g_str_hash, g_str_equal); for (i = 0; i < G_N_ELEMENTS(inbox_mappings_array); i++) { const InboxMapping *mapping = &inbox_mappings_array[i]; g_hash_table_insert(inbox_mappings, (gpointer) mapping->code, (gpointer) mapping->folder); } } init (self) { mn_mailbox_set_format(MN_MAILBOX(self), "Windows Live Hotmail"); mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_HOTMAIL); } private void parse_language (const char *code (check null), char **language, char **country) { char *stripped = NULL; char *sep; /* strip the charset if any */ sep = strchr(code, '.'); if (sep) { stripped = g_strndup(code, sep - code); code = stripped; } sep = strchr(code, '_'); if (sep) { *language = g_strndup(code, sep - code); *country = g_strdup(sep + 1); } else { *language = g_strdup(code); *country = NULL; } g_free(stripped); } private const char * get_localized_folder (const char *folder (check null)) { if (! strcmp(folder, "Inbox")) { int i; const char* const *language_codes; language_codes = g_get_language_names(); for (i = 0; language_codes[i]; i++) { const char *code = language_codes[i]; char *language; char *country; const char *mapping = NULL; self_parse_language(code, &language, &country); if (country) { char *full; full = g_strdup_printf("%s_%s", language, country); mapping = g_hash_table_lookup(inbox_mappings, full); g_free(full); } if (! mapping) mapping = g_hash_table_lookup(inbox_mappings, language); g_free(language); g_free(country); if (mapping) return mapping; } } return folder; } private char * encode_with_character_references (const char *str (check null)) { GString *encoded; const char *p; encoded = g_string_new(NULL); for (p = str; *p; p = g_utf8_next_char(p)) { gunichar c = g_utf8_get_char(p); if (c < 128 && (g_ascii_isalnum(c) || g_ascii_isspace(c) || c == '.')) g_string_append_c(encoded, c); else g_string_append_printf(encoded, "&#%i;", (int) c); } return g_string_free(encoded, FALSE); } private char * create_config_file (self, const char *spool_file (check null), gboolean getlive_pre_1_40, GError **err) { char *username; char *domain; const char *localized_folder; char *folder; GString *contents; char *filename; const char *charset; mn_webmail_mailbox_parse_username(MN_WEBMAIL_MAILBOX(self), &username, &domain); contents = g_string_new(NULL); localized_folder = self_get_localized_folder(MN_WEBMAIL_MAILBOX(self)->folder); if (getlive_pre_1_40) folder = self_encode_with_character_references(localized_folder); else folder = g_strdup(localized_folder); g_string_append_printf(contents, "UserName = %s\n" "Domain = %s\n" "Password = %s\n" "FetchOnlyUnread = Yes\n" "Folder = %s\n" "Processor = cat >> '%s'\n" "MarkRead = No\n", username, domain, MN_AUTHENTICATED_MAILBOX(self)->runtime_password, folder, spool_file); g_free(username); g_free(domain); g_free(folder); if (mn_conf_get_bool(MN_CONF_SYSTEM_HTTP_PROXY_USE_HTTP_PROXY)) { char *host; host = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_HOST); if (host && *host) { g_string_append_printf(contents, "Proxy = %s:%i\n", host, mn_conf_get_int(MN_CONF_SYSTEM_HTTP_PROXY_PORT)); if (mn_conf_get_bool(MN_CONF_SYSTEM_HTTP_PROXY_USE_AUTHENTICATION)) { char *user; char *password; user = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_AUTHENTICATION_USER); password = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_AUTHENTICATION_PASSWORD); if (user && *user && password && *password) g_string_append_printf(contents, "ProxyAuth = %s:%s\n", user, password); g_free(user); g_free(password); } } g_free(host); } mn_webmail_mailbox_print_config(MN_WEBMAIL_MAILBOX(self), contents->str); /* * As of this commit: * * http://getlive.cvs.sourceforge.net/getlive/GetLive/GetLive.pl?r1=1.39&r2=1.40 * * GetLive expects the config file to be encoded in the charset of * the user's locale. */ if (getlive_pre_1_40) charset = "UTF-8"; else g_get_charset(&charset); filename = mn_webmail_mailbox_write_temporary_file(contents->str, charset, err); g_string_free(contents, TRUE); return filename; } override (MN:Webmail:Mailbox) char * get_error_message (MNWebmailMailbox *mailbox, const char *helper_stdout, const char *helper_stderr, gboolean *is_auth_failure) { if (helper_stderr && mn_ascii_strcasestr(helper_stderr, "error logging in")) { *is_auth_failure = TRUE; return g_strdup(_("authentication failed")); } return NULL; } private gboolean run_getlive (self, const char *config_file (check null), GError **err) { char *command; gboolean status; command = g_strdup_printf("GetLive --config-file %s", config_file); status = mn_webmail_mailbox_run_helper(MN_WEBMAIL_MAILBOX(self), "GetLive", command, err); g_free(command); return status; } private gboolean get_getlive_cvs_revision (int *major (check null), int *minor (check null)) { char *getlive_stderr; char **lines; int i; if (! g_spawn_command_line_sync("GetLive --version", NULL, &getlive_stderr, NULL, NULL)) return FALSE; lines = g_strsplit(getlive_stderr, "\n", 0); g_free(getlive_stderr); for (i = 0; lines[i]; i++) { char *str; str = mn_strstr_span(lines[i], "GetLive $Revision: "); if (str) { char *end; end = strchr(str, ' '); if (end) { char *rev; char **versions; rev = g_strndup(str, end - str); versions = g_strsplit(rev, ".", 0); g_free(rev); if (g_strv_length(versions) >= 2 && mn_str_isnumeric(versions[0]) && mn_str_isnumeric(versions[1])) { *major = atoi(versions[0]); *minor = atoi(versions[1]); g_strfreev(versions); g_strfreev(lines); return TRUE; } g_strfreev(versions); } } } g_strfreev(lines); return FALSE; } override (MN:Webmail:Mailbox) gboolean webmail_check (MNWebmailMailbox *mailbox, GError **err) { Self *self = SELF(mailbox); int getlive_major; int getlive_minor; gboolean getlive_pre_1_40; char *spool_file; char *config_file = NULL; gboolean status = FALSE; /* see https://sourceforge.net/tracker/?func=detail&atid=948290&aid=1881842&group_id=194154 */ getlive_pre_1_40 = ! self_get_getlive_cvs_revision(&getlive_major, &getlive_minor) || getlive_major < 1 || (getlive_major == 1 && getlive_minor < 40); /* * We create an empty spool file beforehand to make sure it is not * world-readable. */ spool_file = mn_webmail_mailbox_create_spool_file(err); if (! spool_file) return FALSE; config_file = self_create_config_file(self, spool_file, getlive_pre_1_40, err); if (! config_file) goto end; if (! self_run_getlive(self, config_file, err)) goto end; if (! mn_webmail_mailbox_read_spool_file(mailbox, spool_file, err)) goto end; status = TRUE; end: unlink(spool_file); g_free(spool_file); if (config_file) { unlink(config_file); g_free(config_file); } return status; } } mail-notification-5.4.dfsg.1/src/mn-util.c0000644000175000001440000012466211015312437020203 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include #include #include #include #include #include #include #include "mn-util.h" #include "mn-mailboxes.h" #include "mn-shell.h" #include "mn-conf.h" typedef struct { GtkContainer *container; const char *callback_prefix; } ContainerCreateInterfaceConnectInfo; enum { TARGET_URI_LIST, TARGET_MOZ_URL }; typedef struct { gpointer instance; unsigned long id; } SignalHandler; typedef struct { GMainLoop *loop; int response; gboolean destroyed; } RunNonmodalInfo; void mn_info (const char *format, ...) { va_list args; g_return_if_fail(format != NULL); va_start(args, format); g_logv(NULL, G_LOG_LEVEL_INFO, format, args); va_end(args); } void mn_g_list_free_deep_custom (GList *list, GFunc element_free_func, gpointer user_data) { g_list_foreach(list, element_free_func, user_data); g_list_free(list); } GSList * mn_g_slist_append_elements (GSList *list, gpointer data, ...) { va_list args; va_start(args, data); while (data) { list = g_slist_append(list, data); data = va_arg(args, gpointer); } va_end(args); return list; } void mn_g_slist_free_deep (GSList *list) { mn_g_slist_free_deep_custom(list, (GFunc) g_free, NULL); } void mn_g_slist_free_deep_custom (GSList *list, GFunc element_free_func, gpointer user_data) { g_slist_foreach(list, element_free_func, user_data); g_slist_free(list); } void mn_g_slist_clear (GSList **list) { g_return_if_fail(list != NULL); g_slist_free(*list); *list = NULL; } void mn_g_slist_clear_deep (GSList **list) { g_return_if_fail(list != NULL); mn_g_slist_free_deep(*list); *list = NULL; } void mn_g_slist_clear_deep_custom (GSList **list, GFunc element_free_func, gpointer user_data) { g_return_if_fail(list != NULL); g_return_if_fail(element_free_func != NULL); mn_g_slist_free_deep_custom(*list, element_free_func, user_data); *list = NULL; } /** * mn_g_slist_delete_link_deep_custom: * @list: a #GSList of @element_free_func-freeable objects * @link_: an element in the #GSList * @element_free_func: a function to free @link_->data * @user_data: user data to pass to @element_free_func * * Equivalent of g_slist_delete_link() for a list of * @element_free_func-freeable objects. * * Return value: new head of @list. **/ GSList * mn_g_slist_delete_link_deep_custom (GSList *list, GSList *link_, GFunc element_free_func, gpointer user_data) { g_return_val_if_fail(element_free_func != NULL, NULL); if (link_) element_free_func(link_->data, user_data); return g_slist_delete_link(list, link_); } static int str_slist_compare_func (gconstpointer a, gconstpointer b) { return strcmp(a, b); } GSList * mn_g_str_slist_find (GSList *list, const char *str) { g_return_val_if_fail(str != NULL, NULL); return g_slist_find_custom(list, str, str_slist_compare_func); } void mn_g_object_list_free (GList *list) { mn_g_list_free_deep_custom(list, (GFunc) g_object_unref, NULL); } GSList * mn_g_object_slist_ref (GSList *list) { g_slist_foreach(list, (GFunc) g_object_ref, NULL); return list; } GSList * mn_g_object_slist_copy (GSList *list) { return g_slist_copy(mn_g_object_slist_ref(list)); } /** * mn_g_object_slist_free: * @list: a #GSList of #GObject instances * * Equivalent of mn_g_object_list_free() for a singly-linked list. **/ void mn_g_object_slist_free (GSList *list) { mn_g_slist_free_deep_custom(list, (GFunc) g_object_unref, NULL); } void mn_g_object_slist_clear (GSList **list) { g_return_if_fail(list != NULL); mn_g_object_slist_free(*list); *list = NULL; } /** * mn_str_isnumeric: * @str: the ASCII string to test * * Tests if the ASCII string @str is numeric. Implemented by calling * g_ascii_isdigit() on each character of @str. * * Return value: %TRUE if the ASCII string @str only consists of digits **/ gboolean mn_str_isnumeric (const char *str) { int i; g_return_val_if_fail(str != NULL, FALSE); for (i = 0; str[i]; i++) if (! g_ascii_isdigit(str[i])) return FALSE; return i > 0; } gboolean mn_str_ishex (const char *str) { int i; g_return_val_if_fail(str != NULL, FALSE); for (i = 0; str[i]; i++) if (! g_ascii_isxdigit(str[i])) return FALSE; return i > 0; } /** * mn_strstr_span: * @big: a string. * @little: a string to search for in @big. * * Locates the first occurrence of @little in @big. * * Return value: a pointer to the character following the first * occurrence of @little in @big, or %NULL if @little does not appear * in @big. **/ char * mn_strstr_span (const char *big, const char *little) { char *s; g_return_val_if_fail(big != NULL, NULL); g_return_val_if_fail(little != NULL, NULL); s = strstr(big, little); if (s) s += strlen(little); return s; } GdkPixbuf * mn_pixbuf_new (const char *filename) { GdkPixbuf *pixbuf; GError *err = NULL; g_return_val_if_fail(filename != NULL, NULL); pixbuf = gdk_pixbuf_new_from_file(filename, &err); if (! pixbuf) { mn_show_fatal_error_dialog(NULL, "Unable to load image \"%s\" (%s).", filename, err->message); g_error_free(err); } return pixbuf; } static GladeXML * mn_glade_xml_new (const char *filename, const char *root, const char *domain) { GladeXML *xml; g_return_val_if_fail(filename != NULL, NULL); xml = glade_xml_new(filename, root, domain); if (! xml) mn_show_fatal_error_dialog(NULL, "Unable to load interface \"%s\".", filename); return xml; } static GtkWidget * mn_glade_xml_get_widget (GladeXML *xml, const char *widget_name) { GtkWidget *widget; g_return_val_if_fail(GLADE_IS_XML(xml), NULL); g_return_val_if_fail(widget_name != NULL, NULL); widget = glade_xml_get_widget(xml, widget_name); if (! widget) mn_show_fatal_error_dialog(NULL, "Widget \"%s\" not found in interface \"%s\".", widget_name, xml->filename); return widget; } static void create_interface_connect_cb (const char *handler_name, GObject *object, const char *signal_name, const char *signal_data, GObject *connect_object, gboolean after, gpointer user_data) { static GModule *module = NULL; ContainerCreateInterfaceConnectInfo *info = user_data; char *cb_name; GCallback cb; GConnectFlags flags; if (! module) { module = g_module_open(NULL, 0); if (! module) mn_show_fatal_error_dialog(NULL, "Unable to open the program as a module (%s).", g_module_error()); } cb_name = g_strconcat(info->callback_prefix, handler_name, NULL); if (! g_module_symbol(module, cb_name, (gpointer) &cb)) mn_show_fatal_error_dialog(NULL, "Signal handler \"%s\" not found.", cb_name); g_free(cb_name); flags = G_CONNECT_SWAPPED; if (after) flags |= G_CONNECT_AFTER; g_signal_connect_data(object, signal_name, cb, info->container, NULL, flags); } void mn_container_create_interface (GtkContainer *container, const char *filename, const char *child_name, const char *callback_prefix, ...) { GladeXML *xml; GtkWidget *child; ContainerCreateInterfaceConnectInfo info; va_list args; const char *widget_name; g_return_if_fail(GTK_IS_CONTAINER(container)); g_return_if_fail(filename != NULL); g_return_if_fail(child_name != NULL); g_return_if_fail(callback_prefix != NULL); xml = mn_glade_xml_new(filename, child_name, NULL); child = mn_glade_xml_get_widget(xml, child_name); if (GTK_IS_DIALOG(container)) gtk_box_pack_start(GTK_BOX(GTK_DIALOG(container)->vbox), child, TRUE, TRUE, 0); else gtk_container_add(container, child); info.container = container; info.callback_prefix = callback_prefix; glade_xml_signal_autoconnect_full(xml, create_interface_connect_cb, &info); va_start(args, callback_prefix); while ((widget_name = va_arg(args, const char *))) { GtkWidget **widget; widget = va_arg(args, GtkWidget **); g_return_if_fail(widget != NULL); *widget = mn_glade_xml_get_widget(xml, widget_name); } va_end(args); g_object_unref(xml); } GtkWindow * mn_widget_get_parent_window (GtkWidget *widget) { GtkWidget *toplevel; g_return_val_if_fail(GTK_IS_WIDGET(widget), NULL); toplevel = gtk_widget_get_toplevel(widget); return GTK_WIDGET_TOPLEVEL(toplevel) ? GTK_WINDOW(toplevel) : NULL; } static void file_chooser_dialog_file_activated_h (GtkFileChooser *chooser, gpointer user_data) { int accept_id = GPOINTER_TO_INT(user_data); gtk_dialog_response(GTK_DIALOG(chooser), accept_id); } static void file_chooser_dialog_response_h (GtkDialog *dialog, int response_id, gpointer user_data) { int accept_id = GPOINTER_TO_INT(user_data); if (response_id == accept_id) { char *uri; uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); if (uri) g_free(uri); else g_signal_stop_emission_by_name(dialog, "response"); } } /** * mn_file_chooser_dialog_allow_select_folder: * @dialog: a #GtkFileChooserDialog * @accept_id: the "accept" response ID (must not be * GTK_RESPONSE_ACCEPT, GTK_RESPONSE_OK, GTK_RESPONSE_YES * or GTK_RESPONSE_APPLY) * * Allows @dialog to pick a file (%GTK_FILE_CHOOSER_ACTION_OPEN) or * select a folder (%GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) at the * same time. * * Can be removed after * http://bugzilla.gnome.org/show_bug.cgi?id=136294 is fixed. **/ void mn_file_chooser_dialog_allow_select_folder (GtkFileChooserDialog *dialog, int accept_id) { g_return_if_fail(GTK_IS_FILE_CHOOSER_DIALOG(dialog)); g_return_if_fail(gtk_file_chooser_get_action(GTK_FILE_CHOOSER(dialog)) == GTK_FILE_CHOOSER_ACTION_OPEN); g_return_if_fail(! (accept_id == GTK_RESPONSE_ACCEPT || accept_id == GTK_RESPONSE_OK || accept_id == GTK_RESPONSE_YES || accept_id == GTK_RESPONSE_APPLY)); g_object_connect(dialog, "signal::file-activated", file_chooser_dialog_file_activated_h, GINT_TO_POINTER(accept_id), "signal::response", file_chooser_dialog_response_h, GINT_TO_POINTER(accept_id), NULL); } static gboolean scrolled_window_drag_motion_h (GtkWidget *widget, GdkDragContext *drag_context, int x, int y, unsigned int time_, gpointer user_data) { GtkAdjustment *adjustment; adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(widget)); gtk_adjustment_set_value(adjustment, (double) y / (widget->allocation.height - 2) * (adjustment->upper - adjustment->page_size)); return TRUE; /* we're forcibly in a drop zone */ } static void drag_data_received_h (GtkWidget *widget, GdkDragContext *drag_context, int x, int y, GtkSelectionData *selection_data, unsigned int info, unsigned int time_, gpointer user_data) { switch (info) { case TARGET_URI_LIST: { char **uriv; int i; GSList *invalid_uri_list = NULL; uriv = gtk_selection_data_get_uris(selection_data); if (! uriv) { mn_show_error_dialog(mn_widget_get_parent_window(widget), _("A drag and drop error has occurred"), _("An invalid location list has been received.")); return; } for (i = 0; uriv[i]; i++) if (*uriv[i]) { MNMailbox *mailbox; mailbox = mn_mailbox_new_from_uri(uriv[i]); if (mailbox) { mn_mailbox_seal(mailbox); mn_mailboxes_queue_add(mn_shell->mailboxes, mailbox); g_object_unref(mailbox); } else invalid_uri_list = g_slist_append(invalid_uri_list, uriv[i]); } if (invalid_uri_list) { mn_show_invalid_uri_list_dialog(mn_widget_get_parent_window(widget), _("A drag and drop error has occurred"), invalid_uri_list); g_slist_free(invalid_uri_list); } g_strfreev(uriv); } break; case TARGET_MOZ_URL: { GString *url; const guint16 *char_data; int char_len; int i; MNMailbox *mailbox; /* text/x-moz-url is encoded in UCS-2 but in format 8: broken */ if (selection_data->format != 8 || selection_data->length <= 0 || (selection_data->length % 2) != 0) { mn_show_error_dialog(mn_widget_get_parent_window(widget), _("A drag and drop error has occurred"), _("An invalid Mozilla location has been received.")); return; } char_data = (const guint16 *) selection_data->data; char_len = selection_data->length / 2; url = g_string_new(NULL); for (i = 0; i < char_len && char_data[i] != '\n'; i++) g_string_append_unichar(url, char_data[i]); g_assert(mn_shell != NULL); mailbox = mn_mailbox_new_from_uri(url->str); if (mailbox) { mn_mailbox_seal(mailbox); mn_mailboxes_queue_add(mn_shell->mailboxes, mailbox); g_object_unref(mailbox); } else mn_show_invalid_uri_dialog(mn_widget_get_parent_window(widget), _("A drag and drop error has occurred"), url->str); g_string_free(url, TRUE); } break; } } /** * mn_setup_dnd: * @widget: a widget to setup mailbox drag-and-drop for * * Configures @widget so that when mailboxes are dropped on it, they * will be added to the Mail Notification mailbox list. **/ void mn_setup_dnd (GtkWidget *widget) { static const GtkTargetEntry targets[] = { { "text/uri-list", 0, TARGET_URI_LIST }, { "text/x-moz-url", 0, TARGET_MOZ_URL } }; g_return_if_fail(GTK_IS_WIDGET(widget)); gtk_drag_dest_set(widget, GTK_DEST_DEFAULT_ALL, targets, G_N_ELEMENTS(targets), GDK_ACTION_COPY); if (GTK_IS_SCROLLED_WINDOW(widget)) g_signal_connect(widget, "drag-motion", G_CALLBACK(scrolled_window_drag_motion_h), NULL); g_signal_connect(widget, "drag-data-received", G_CALLBACK(drag_data_received_h), NULL); } gboolean mn_parse_gnome_copied_files (const char *gnome_copied_files, MNGnomeCopiedFilesType *type, GSList **uri_list) { char **strv; gboolean status = FALSE; g_return_val_if_fail(gnome_copied_files != NULL, FALSE); g_return_val_if_fail(type != NULL, FALSE); g_return_val_if_fail(uri_list != NULL, FALSE); strv = g_strsplit(gnome_copied_files, "\n", 0); if (strv[0]) { int i; if (! strcmp(strv[0], "cut")) { status = TRUE; *type = MN_GNOME_COPIED_FILES_CUT; } else if (! strcmp(strv[0], "copy")) { status = TRUE; *type = MN_GNOME_COPIED_FILES_COPY; } if (status) { *uri_list = NULL; for (i = 1; strv[i]; i++) *uri_list = g_slist_append(*uri_list, g_strdup(strv[i])); } } g_strfreev(strv); return status; } void mn_show_help (GtkWindow *parent, const char *link_id) { GError *err = NULL; if (! gnome_help_display("mail-notification.xml", link_id, &err)) { mn_show_error_dialog(parent, _("Unable to display help"), "%s", err->message); g_error_free(err); } } void mn_open_link (GtkWindow *parent, const char *url) { GError *err = NULL; if (! gnome_url_show(url, &err)) { mn_show_error_dialog(parent, _("Unable to open link"), "%s", err->message); g_error_free(err); } } void mn_thread_create (GThreadFunc func, gpointer data) { GError *err = NULL; g_return_if_fail(func != NULL); if (! g_thread_create(func, data, FALSE, &err)) { mn_show_fatal_error_dialog(NULL, "Unable to create a thread: %s.", err->message); g_error_free(err); } } static GtkWidget * menu_item_new (const char *stock_id, const char *mnemonic) { GtkWidget *item; if (stock_id && mnemonic) { GtkWidget *image; item = gtk_image_menu_item_new_with_mnemonic(mnemonic); image = gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_MENU); gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image); gtk_widget_show(image); } else if (stock_id) item = gtk_image_menu_item_new_from_stock(stock_id, NULL); else if (mnemonic) item = gtk_menu_item_new_with_mnemonic(mnemonic); else item = gtk_separator_menu_item_new(); return item; } /** * mn_menu_shell_append: * @shell: the #GtkMenuShell to append to * @stock_id: the stock ID of the item or %NULL * @mnemonic: the mnemonic of the item or %NULL * * Creates a new menu item, shows it and appends it to @shell. * * If both @stock_id and @mnemonic are provided, a #GtkImageMenuItem * will be created using the text of @mnemonic and the icon of * @stock_id. * * If only @stock_id is provided, a #GtkImageMenuitem will be created * using the text and icon of @stock_id. * * If only @mnemonic is provided, a #GtkMenuItem will be created using * the text of @mnemonic. * * If @stock_id and @mnemonic are both %NULL, a #GtkSeparatorMenuItem * will be created. * * Return value: the new menu item. **/ GtkWidget * mn_menu_shell_append (GtkMenuShell *shell, const char *stock_id, const char *mnemonic) { GtkWidget *item; g_return_val_if_fail(GTK_IS_MENU_SHELL(shell), NULL); item = menu_item_new(stock_id, mnemonic); gtk_menu_shell_append(shell, item); gtk_widget_show(item); return item; } static void show_error_dialog_real (GtkWindow *parent, MNDialogFlags flags, const char *primary, const char *format, va_list args) { char *secondary; GtkWidget *dialog; g_return_if_fail(primary != NULL); g_return_if_fail(format != NULL); secondary = g_strdup_vprintf(format, args); dialog = mn_alert_dialog_new(parent, GTK_MESSAGE_ERROR, flags, primary, secondary); g_free(secondary); gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); if ((flags & MN_DIALOG_BLOCKING) != 0) { gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } else { g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); gtk_widget_show(dialog); } } void mn_show_error_dialog (GtkWindow *parent, const char *primary, const char *format, ...) { va_list args; g_return_if_fail(primary != NULL); g_return_if_fail(format != NULL); va_start(args, format); show_error_dialog_real(parent, 0, primary, format, args); va_end(args); } /* only the secondary text can have markup */ void mn_show_error_dialog_with_markup (GtkWindow *parent, const char *primary, const char *format, ...) { va_list args; g_return_if_fail(primary != NULL); g_return_if_fail(format != NULL); va_start(args, format); show_error_dialog_real(parent, MN_DIALOG_MARKUP, primary, format, args); va_end(args); } void mn_show_invalid_uri_dialog (GtkWindow *parent, const char *primary, const char *invalid_uri) { GSList *list = NULL; g_return_if_fail(primary != NULL); g_return_if_fail(invalid_uri != NULL); list = g_slist_append(list, (gpointer) invalid_uri); mn_show_invalid_uri_list_dialog(parent, primary, list); g_slist_free(list); } void mn_show_invalid_uri_list_dialog (GtkWindow *parent, const char *primary, GSList *invalid_uri_list) { GString *string; GSList *l; g_return_if_fail(primary != NULL); g_return_if_fail(invalid_uri_list != NULL); string = g_string_new(NULL); MN_LIST_FOREACH(l, invalid_uri_list) { const char *uri = l->data; g_string_append(string, uri); if (l->next) g_string_append_c(string, '\n'); } mn_show_error_dialog(parent, primary, ngettext("The following location is invalid:\n\n%s", "The following locations are invalid:\n\n%s", g_slist_length((GSList *) invalid_uri_list)), string->str); g_string_free(string, TRUE); } void mn_show_fatal_error_dialog (GtkWindow *parent, const char *format, ...) { va_list args; g_assert(format != NULL); va_start(args, format); show_error_dialog_real(parent, MN_DIALOG_BLOCKING, _("A fatal error has occurred in Mail Notification"), format, args); va_end(args); exit(1); } GtkWidget * mn_alert_dialog_new (GtkWindow *parent, GtkMessageType type, MNDialogFlags flags, const char *primary, const char *secondary) { GtkWidget *dialog; g_return_val_if_fail(primary != NULL, NULL); g_return_val_if_fail(secondary != NULL, NULL); dialog = gtk_message_dialog_new(parent, GTK_DIALOG_DESTROY_WITH_PARENT, type, GTK_BUTTONS_NONE, "%s", primary); if ((flags & MN_DIALOG_MARKUP) != 0) gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), "%s", secondary); else gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", secondary); gtk_window_set_title(GTK_WINDOW(dialog), ""); /* HIG */ return dialog; } time_t mn_time (void) { time_t t; t = time(NULL); if (t < 0) { t = 0; g_warning("unable to get current time: %s", g_strerror(errno)); } return t; } char * mn_strftime (const char *format, const struct tm *timeptr) { char *buf; size_t bufsize = 64; g_return_val_if_fail(format != NULL, NULL); g_return_val_if_fail(timeptr != NULL, NULL); buf = g_malloc(bufsize); while (strftime(buf, bufsize, format, timeptr) == 0) { bufsize *= 2; buf = g_realloc(buf, bufsize); } return buf; } char * mn_format_past_time (time_t past_time, time_t now) { time_t diff; g_return_val_if_fail(past_time > 0, NULL); diff = now - past_time; if (diff >= 0) { if (diff < 60) return g_strdup_printf(ngettext("%i second ago", "%i seconds ago", (int) diff), (int) diff); else if (diff < 60 * 60) { int minutes = diff / 60; return g_strdup_printf(ngettext("about %i minute ago", "about %i minutes ago", minutes), minutes); } else if (diff < 60 * 60 * 24) { int hours = diff / (60 * 60); return g_strdup_printf(ngettext("about %i hour ago", "about %i hours ago", hours), hours); } else if (diff < 60 * 60 * 24 * 7) { int days = diff / (60 * 60 * 24); return g_strdup_printf(ngettext("about %i day ago", "about %i days ago", days), days); } else { int weeks = diff / (60 * 60 * 24 * 7); return g_strdup_printf(ngettext("about %i week ago", "about %i weeks ago", weeks), weeks); } } else /* future time: simply format it */ { struct tm *tm; tm = localtime(&past_time); g_assert(tm != NULL); return mn_strftime("%c", tm); } } char * mn_format_seconds (int seconds) { if (seconds < MN_MINS(1)) return g_strdup_printf(ngettext("%i second", "%i seconds", seconds), seconds); else if (seconds < MN_HOURS(1)) { int mins = seconds / MN_MINS(1); return g_strdup_printf(ngettext("%i minute", "%i minutes", mins), mins); } else if (seconds < MN_DAYS(1)) { int hours = seconds / MN_HOURS(1); return g_strdup_printf(ngettext("%i hour", "%i hours", hours), hours); } else { g_return_val_if_fail(seconds == MN_DAYS(1), NULL); return g_strdup(_("1 day")); } } void mn_g_object_null_unref (gpointer object) { if (object) g_object_unref(object); } static void object_connect_weak_notify_cb (gpointer data, GObject *former_object) { SignalHandler *handler = data; if (handler->instance) { g_signal_handler_disconnect(handler->instance, handler->id); mn_remove_weak_pointer(&handler->instance); } g_free(handler); } /** * mn_g_object_connect: * @object: the object to associate the handlers with * @instance: the instance to connect to * @signal_spec: the spec for the first signal * @...: #GCallback for the first signal, followed by data for the * first signal, followed optionally by more signal spec/callback/data * triples, followed by NULL * * Connects to one or more signals of @instance, associating the * handlers with @object. The handlers will be disconnected whenever * @object is finalized. * * Note: this function is not thread-safe. If @object and @instance * are finalized concurrently, the behaviour is undefined. * * The signals specs must be in the same format than those passed to * g_object_connect(), except that object-signal, * swapped-object-signal, object-signal-after and * swapped-object-signal-after are not accepted. * * Note that this function is only useful because of * http://bugzilla.gnome.org/show_bug.cgi?id=118536, otherwise * g_signal_connect_object() and the object specs of * g_object_connect() could be used. * * Return value: @object **/ gpointer mn_g_object_connect (gpointer object, gpointer instance, const char *signal_spec, ...) { va_list args; g_return_val_if_fail(G_IS_OBJECT(object), NULL); g_return_val_if_fail(G_IS_OBJECT(instance), NULL); va_start(args, signal_spec); while (signal_spec) { GCallback callback = va_arg(args, GCallback); gpointer data = va_arg(args, gpointer); SignalHandler *handler; handler = g_new(SignalHandler, 1); handler->instance = instance; if (g_str_has_prefix(signal_spec, "signal::")) handler->id = g_signal_connect(instance, signal_spec + 8, callback, data); else if (g_str_has_prefix(signal_spec, "swapped_signal::") || g_str_has_prefix(signal_spec, "swapped-signal::")) handler->id = g_signal_connect_swapped(instance, signal_spec + 16, callback, data); else if (g_str_has_prefix(signal_spec, "signal_after::") || g_str_has_prefix(signal_spec, "signal-after::")) handler->id = g_signal_connect_after(instance, signal_spec + 14, callback, data); else if (g_str_has_prefix(signal_spec, "swapped_signal_after::") || g_str_has_prefix(signal_spec, "swapped-signal-after::")) handler->id = g_signal_connect_data(instance, signal_spec + 22, callback, data, NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED); else g_critical("invalid signal specification \"%s\"", signal_spec); mn_add_weak_pointer(&handler->instance); g_object_weak_ref(object, object_connect_weak_notify_cb, handler); signal_spec = va_arg(args, const char *); } va_end(args); return object; } static void object_clone_parameter_free (GParameter *parameter) { g_return_if_fail(parameter != NULL); g_value_unset(¶meter->value); g_free(parameter); } static void object_clone_parameters_foreach_cb (gpointer key, GParameter *parameter, gpointer user_data) { GArray *parameters = user_data; g_array_append_val(parameters, *parameter); } gpointer mn_g_object_clone (gpointer object, const char *property_name, ...) { GHashTable *parameters; va_list args; GParamSpec **properties; unsigned int n_properties; int i; GArray *parameters_array; GObject *new_object; g_return_val_if_fail(G_IS_OBJECT(object), NULL); parameters = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) object_clone_parameter_free); /* add provided properties */ va_start(args, property_name); while (property_name) { GParamSpec *pspec; GParameter *parameter; char *error = NULL; pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(object), property_name); g_assert(pspec != NULL); parameter = g_new0(GParameter, 1); parameter->name = g_param_spec_get_name(pspec); g_value_init(¶meter->value, G_PARAM_SPEC_VALUE_TYPE(pspec)); G_VALUE_COLLECT(¶meter->value, args, 0, &error); g_assert(error == NULL); g_hash_table_replace(parameters, (gpointer) parameter->name, parameter); property_name = va_arg(args, const char *); } va_end(args); /* clone existing properties */ properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(object), &n_properties); for (i = 0; i < n_properties; i++) if ((properties[i]->flags & G_PARAM_READWRITE) == G_PARAM_READWRITE) { const char *name; name = g_param_spec_get_name(properties[i]); if (! g_hash_table_lookup(parameters, name)) { GParameter *parameter; parameter = g_new0(GParameter, 1); parameter->name = name; g_value_init(¶meter->value, G_PARAM_SPEC_VALUE_TYPE(properties[i])); g_object_get_property(object, parameter->name, ¶meter->value); g_hash_table_insert(parameters, (gpointer) parameter->name, parameter); } } g_free(properties); parameters_array = g_array_new(FALSE, FALSE, sizeof(GParameter)); g_hash_table_foreach(parameters, (GHFunc) object_clone_parameters_foreach_cb, parameters_array); new_object = g_object_newv(G_OBJECT_TYPE(object), parameters_array->len, (GParameter *) parameters_array->data); g_hash_table_destroy(parameters); g_array_free(parameters_array, TRUE); return new_object; } int mn_utf8_strcasecmp (const char *s1, const char *s2) { char *normalized_s1; char *normalized_s2; char *folded_s1; char *folded_s2; int cmp; g_return_val_if_fail(s1 != NULL, 0); g_return_val_if_fail(s2 != NULL, 0); normalized_s1 = g_utf8_normalize(s1, -1, G_NORMALIZE_ALL); normalized_s2 = g_utf8_normalize(s2, -1, G_NORMALIZE_ALL); folded_s1 = g_utf8_casefold(normalized_s1, -1); folded_s2 = g_utf8_casefold(normalized_s2, -1); cmp = strcmp(folded_s1, folded_s2); g_free(normalized_s1); g_free(normalized_s2); g_free(folded_s1); g_free(folded_s2); return cmp; } gboolean mn_utf8_str_case_has_suffix (const char *str, const char *suffix) { char *normalized_str; char *normalized_suffix; char *folded_str; char *folded_suffix; int str_len; int suffix_len; gboolean has; g_return_val_if_fail(str != NULL, FALSE); g_return_val_if_fail(suffix != NULL, FALSE); normalized_str = g_utf8_normalize(str, -1, G_NORMALIZE_ALL); normalized_suffix = g_utf8_normalize(suffix, -1, G_NORMALIZE_ALL); folded_str = g_utf8_casefold(normalized_str, -1); folded_suffix = g_utf8_casefold(normalized_suffix, -1); str_len = strlen(folded_str); suffix_len = strlen(folded_suffix); has = str_len >= suffix_len && ! strcmp(folded_str + str_len - suffix_len, folded_suffix); g_free(normalized_str); g_free(normalized_suffix); g_free(folded_str); g_free(folded_suffix); return has; } char * mn_utf8_escape (const char *str) { GString *escaped; g_return_val_if_fail(str != NULL, NULL); escaped = g_string_new(NULL); while (*str) { gunichar c; c = g_utf8_get_char_validated(str, -1); if (c != (gunichar) -2 && c != (gunichar) -1) { g_string_append_unichar(escaped, c); str = g_utf8_next_char(str); } else { g_string_append_printf(escaped, "\\x%02x", (unsigned int) (unsigned char) *str); str++; } } return g_string_free(escaped, FALSE); } static void dialog_run_nonmodal_shutdown_loop (RunNonmodalInfo *info) { g_return_if_fail(info != NULL); if (g_main_loop_is_running(info->loop)) g_main_loop_quit(info->loop); } static void dialog_run_nonmodal_destroy_h (GtkObject *object, gpointer user_data) { RunNonmodalInfo *info = user_data; info->destroyed = TRUE; /* * mn_dialog_run_nonmodal_shutdown_loop() will be called by * mn_dialog_run_nonmodal_unmap_h() */ } static void dialog_run_nonmodal_unmap_h (GtkWidget *widget, gpointer user_data) { RunNonmodalInfo *info = user_data; dialog_run_nonmodal_shutdown_loop(info); } static void dialog_run_nonmodal_response_h (GtkDialog *dialog, int response, gpointer user_data) { RunNonmodalInfo *info = user_data; info->response = response; dialog_run_nonmodal_shutdown_loop(info); } static gboolean dialog_run_nonmodal_delete_event_h (GtkWidget *widget, GdkEvent *event, gpointer user_data) { RunNonmodalInfo *info = user_data; dialog_run_nonmodal_shutdown_loop(info); return TRUE; /* do not destroy */ } int mn_dialog_run_nonmodal (GtkDialog *dialog) { RunNonmodalInfo info = { NULL, GTK_RESPONSE_NONE, FALSE }; g_return_val_if_fail(GTK_IS_DIALOG(dialog), -1); g_object_ref(dialog); if (! GTK_WIDGET_VISIBLE(dialog)) gtk_widget_show(GTK_WIDGET(dialog)); g_object_connect(dialog, "signal::destroy", dialog_run_nonmodal_destroy_h, &info, "signal::unmap", dialog_run_nonmodal_unmap_h, &info, "signal::response", dialog_run_nonmodal_response_h, &info, "signal::delete-event", dialog_run_nonmodal_delete_event_h, &info, NULL); info.loop = g_main_loop_new(NULL, FALSE); GDK_THREADS_LEAVE(); g_main_loop_run(info.loop); GDK_THREADS_ENTER(); g_main_loop_unref(info.loop); if (! info.destroyed) g_object_disconnect(dialog, "any-signal", dialog_run_nonmodal_destroy_h, &info, "any-signal", dialog_run_nonmodal_unmap_h, &info, "any-signal", dialog_run_nonmodal_response_h, &info, "any-signal", dialog_run_nonmodal_delete_event_h, &info, NULL); g_object_unref(dialog); return info.response; } void mn_source_clear (unsigned int *tag) { g_return_if_fail(tag != NULL); if (*tag) { g_source_remove(*tag); *tag = 0; } } gboolean mn_ascii_str_case_has_prefix (const char *str, const char *prefix) { int str_len; int prefix_len; g_return_val_if_fail(str != NULL, FALSE); g_return_val_if_fail(prefix != NULL, FALSE); str_len = strlen(str); prefix_len = strlen(prefix); if (str_len < prefix_len) return FALSE; return g_ascii_strncasecmp(str, prefix, prefix_len) == 0; } char * mn_ascii_strcasestr (const char *big, const char *little) { char *lower_big; char *lower_little; char *s; g_return_val_if_fail(big != NULL, NULL); g_return_val_if_fail(little != NULL, NULL); lower_big = g_ascii_strdown(big, -1); lower_little = g_ascii_strdown(little, -1); s = strstr(lower_big, lower_little); g_free(lower_big); g_free(lower_little); return s ? (char *) big + (s - lower_big) : NULL; } char * mn_ascii_strcasestr_span (const char *big, const char *little) { char *s; g_return_val_if_fail(big != NULL, NULL); g_return_val_if_fail(little != NULL, NULL); s = mn_ascii_strcasestr(big, little); if (s) s += strlen(little); return s; } char * mn_subst_command (const char *command, MNSubstCommandFunction subst, gpointer data, GError **err) { GString *result; const char *p; g_return_val_if_fail(command != NULL, NULL); g_return_val_if_fail(subst != NULL, NULL); result = g_string_new(NULL); for (p = command; *p;) if (*p == '%') { char *name = NULL; if (p[1] == '%') { g_string_append_c(result, '%'); p += 2; } else if (p[1] == '{') { char *end; end = strchr(p + 2, '}'); if (! end) { g_set_error(err, 0, 0, _("unterminated substitution")); goto error; } name = g_strndup(p + 2, end - p - 2); p = end + 1; } else { const char *end = p + 1; while (g_ascii_isalnum(*end) || *end == '-' || *end == '_') end++; name = g_strndup(p + 1, end - p - 1); p = end; } if (name) { gboolean ok = FALSE; if (*name) { char *value; if (subst(name, &value, data)) { char *quoted; quoted = mn_shell_quote_safe(value ? value : ""); g_free(value); g_string_append(result, quoted); g_free(quoted); ok = TRUE; } else g_set_error(err, 0, 0, _("unknown substitution \"%s\""), name); } else g_set_error(err, 0, 0, _("empty substitution")); g_free(name); if (! ok) goto error; } } else { g_string_append_c(result, *p); p++; } goto end; /* success */ error: g_string_free(result, TRUE); result = NULL; end: return result ? g_string_free(result, FALSE) : NULL; } static void handle_execute_result (int status, const char *command) { if (status < 0) mn_show_error_dialog(NULL, _("A command error has occurred in Mail Notification"), _("Unable to execute \"%s\": %s."), command, g_strerror(errno)); } void mn_execute_command (const char *command) { g_return_if_fail(command != NULL); handle_execute_result(gnome_execute_shell(NULL, command), command); } void mn_execute_command_in_terminal (const char *command) { g_return_if_fail(command != NULL); handle_execute_result(gnome_execute_terminal_shell(NULL, command), command); } /** * mn_shell_quote_safe: * @unquoted_string: a literal string * * Like g_shell_quote(), but guarantees that the string will be quoted * using single quotes, therefore making sure that backticks will not * be processed. * * Return value: the quoted string **/ char * mn_shell_quote_safe (const char *unquoted_string) { GString *result; int i; g_return_val_if_fail(unquoted_string != NULL, NULL); result = g_string_new("'"); for (i = 0; unquoted_string[i]; i++) if (unquoted_string[i] == '\'') g_string_append(result, "'\\''"); else g_string_append_c(result, unquoted_string[i]); g_string_append_c(result, '\''); return g_string_free(result, FALSE); } GtkWidget * mn_hig_section_new (const char *title, GtkWidget **label, GtkWidget **alignment) { GtkWidget *section; char *markup; GtkWidget *_label; GtkWidget *_alignment; g_return_val_if_fail(title != NULL, NULL); section = gtk_vbox_new(FALSE, 6); markup = g_markup_printf_escaped("%s", title); _label = gtk_label_new(markup); g_free(markup); gtk_misc_set_alignment(GTK_MISC(_label), 0.0, 0.5); gtk_label_set_use_markup(GTK_LABEL(_label), TRUE); gtk_box_pack_start(GTK_BOX(section), _label, FALSE, FALSE, 0); _alignment = gtk_alignment_new(0.5, 0.5, 1.0, 1.0); gtk_alignment_set_padding(GTK_ALIGNMENT(_alignment), 0, 0, 12, 0); gtk_box_pack_start(GTK_BOX(section), _alignment, TRUE, TRUE, 0); gtk_widget_show(_label); gtk_widget_show(_alignment); if (label) *label = _label; if (alignment) *alignment = _alignment; return section; } GtkWidget * mn_hig_section_new_with_box (const char *title, GtkWidget **label, GtkWidget **vbox) { GtkWidget *section; GtkWidget *alignment; GtkWidget *_vbox; g_return_val_if_fail(title != NULL, NULL); section = mn_hig_section_new(title, label, &alignment); _vbox = gtk_vbox_new(FALSE, 6); gtk_container_add(GTK_CONTAINER(alignment), _vbox); gtk_widget_show(_vbox); if (vbox) *vbox = _vbox; return section; } char * mn_g_value_to_string (const GValue *value) { char *str; g_return_val_if_fail(G_IS_VALUE(value), NULL); /* * We only handle types which we actually export (grep for * MN_MESSAGE_PARAM_EXPORT and MN_MAILBOX_PARAM.*SAVE). */ if (G_VALUE_HOLDS_INT(value)) str = g_strdup_printf("%i", g_value_get_int(value)); else if (G_VALUE_HOLDS_ULONG(value)) str = g_strdup_printf("%lu", g_value_get_ulong(value)); else if (G_VALUE_HOLDS_STRING(value)) str = g_value_dup_string(value); else if (G_VALUE_HOLDS_ENUM(value)) { GEnumClass *enum_class; GEnumValue *enum_value; enum_class = g_type_class_ref(G_VALUE_TYPE(value)); enum_value = g_enum_get_value(enum_class, g_value_get_enum(value)); g_assert(enum_value != NULL); str = g_strdup(enum_value->value_nick); g_type_class_unref(enum_class); } else g_return_val_if_reached(NULL); return str; } gboolean mn_g_value_from_string (GValue *value, const char *str) { g_return_val_if_fail(G_IS_VALUE(value), FALSE); g_return_val_if_fail(str != NULL, FALSE); /* * We only handle types which we actually import (grep for * MN_MAILBOX_PARAM_LOAD). */ if (G_VALUE_HOLDS_INT(value)) { int n; char *endptr; n = strtol(str, &endptr, 10); if (*endptr == '\0') /* successful conversion */ g_value_set_int(value, n); else return FALSE; } else if (G_VALUE_HOLDS_STRING(value)) g_value_set_string(value, str); else if (G_VALUE_HOLDS_ENUM(value)) { GEnumClass *enum_class; GEnumValue *enum_value; gboolean found; enum_class = g_type_class_ref(G_VALUE_TYPE(value)); enum_value = g_enum_get_value_by_nick(enum_class, str); if (enum_value) { g_value_set_enum(value, enum_value->value); found = TRUE; } else found = FALSE; g_type_class_unref(enum_class); if (! found) return FALSE; } else g_return_val_if_reached(FALSE); return TRUE; } void mn_window_present_from_event (GtkWindow *window) { g_return_if_fail(GTK_IS_WINDOW(window)); gtk_window_present_with_time(window, gtk_get_current_event_time()); } void mn_add_weak_pointer (gpointer object_location) { gpointer *p; g_return_if_fail(object_location != NULL); p = (gpointer *) object_location; g_return_if_fail(G_IS_OBJECT(*p)); g_object_add_weak_pointer(G_OBJECT(*p), p); } void mn_remove_weak_pointer (gpointer object_location) { gpointer *p; g_return_if_fail(object_location != NULL); p = (gpointer *) object_location; g_return_if_fail(G_IS_OBJECT(*p)); g_object_remove_weak_pointer(G_OBJECT(*p), p); *p = NULL; } int mn_strv_find (char **strv, const char *elem) { int i; g_return_val_if_fail(strv != NULL, -1); g_return_val_if_fail(elem != NULL, -1); for (i = 0; strv[i]; i++) if (! strcmp(strv[i], elem)) return i; return -1; } GSList * mn_g_ptr_array_to_slist (GPtrArray *array) { GSList *list = NULL; int i; g_return_val_if_fail(array != NULL, NULL); for (i = array->len - 1; i >= 0; i--) list = g_slist_prepend(list, g_ptr_array_index(array, i)); return list; } void mn_g_ptr_array_free_deep_custom (GPtrArray *array, GFunc element_free_func, gpointer user_data) { g_return_if_fail(array != NULL); g_return_if_fail(element_free_func != NULL); g_ptr_array_foreach(array, element_free_func, user_data); g_ptr_array_free(array, TRUE); } void mn_g_object_ptr_array_free (GPtrArray *array) { g_return_if_fail(array != NULL); mn_g_ptr_array_free_deep_custom(array, (GFunc) g_object_unref, NULL); } const char * mn_enum_get_value_nick (GType type, int value) { GEnumClass *enum_class; GEnumValue *enum_value; g_return_val_if_fail(G_TYPE_IS_ENUM(type), NULL); enum_class = g_type_class_ref(type); g_return_val_if_fail(G_IS_ENUM_CLASS(enum_class), NULL); enum_value = g_enum_get_value(enum_class, value); g_return_val_if_fail(enum_value != NULL, NULL); g_type_class_unref(enum_class); return enum_value->value_nick; } mail-notification-5.4.dfsg.1/src/mn-pi-mailbox-properties.gob0000644000175000001440000002522311015312440023771 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-authenticated-mailbox-properties.h" #include "mn-pi-mailbox.h" %} %{ #include #include "mn-mailbox-properties-dialog.h" #include "mn-mailbox-properties-dialog-private.h" #include "mn-mailbox-properties-private.h" #include "mn-authenticated-mailbox-properties-private.h" #include "mn-auth-combo-box.h" #include "mn-util.h" #include "mn-stock.h" %} class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstract) { protected GtkWidget *server_entry; protected GtkWidget *connection_page unrefwith g_object_unref; protected GtkSizeGroup *connection_size_group = {gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL)} unrefwith g_object_unref; protected GtkWidget *conn_radio[MN_PI_MAILBOX_N_CONNECTION_TYPES]; protected GtkWidget *port_spin[MN_PI_MAILBOX_N_CONNECTION_TYPES]; protected GtkWidget *auth_combo; property BOOLEAN complete (override) get { g_value_set_boolean(VAL, self_is_complete(self)); }; class_init (class) { MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->stock_id = MN_STOCK_REMOTE; } init (self) { MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); MNAuthenticatedMailboxProperties *auth = MN_AUTHENTICATED_MAILBOX_PROPERTIES(self); GtkWidget *hbox; GtkWidget *label; GtkWidget *type_section; GtkWidget *type_vbox; int i; static const struct { MNPIMailboxConnectionType type; const char *mnemonic; } connection_types[] = { { MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL, N_("_Standard") }, { MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL, N_("In-_band SSL/TLS") }, { MN_PI_MAILBOX_CONNECTION_TYPE_SSL, N_("SSL/TLS on s_eparate port") } }; hbox = mn_authenticated_mailbox_properties_field_new(auth, _("_Server:"), &label, &self->server_entry); gtk_box_pack_start(GTK_BOX(auth->account_vbox), hbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->username_vbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->password_vbox, FALSE, FALSE, 0); properties->entries = mn_g_slist_append_elements(properties->entries, self->server_entry, auth->username_entry, auth->password_entry, NULL); self->connection_page = gtk_vbox_new(FALSE, 18); gtk_container_set_border_width(GTK_CONTAINER(self->connection_page), 12); mn_mailbox_properties_dialog_set_help_section(self->connection_page, "mailbox-properties-connection"); g_object_ref_sink(self->connection_page); /* translators: header capitalization */ type_section = mn_hig_section_new_with_box(_("Connection Type"), NULL, &type_vbox); gtk_box_pack_start(GTK_BOX(self->connection_page), type_section, FALSE, FALSE, 0); gtk_widget_show(type_section); for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++) self_add_connection_type(self, GTK_BOX(type_vbox), connection_types[i].type, _(connection_types[i].mnemonic)); #if ! WITH_SSL gtk_widget_set_sensitive(self->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL], FALSE); gtk_widget_set_sensitive(self->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_SSL], FALSE); #endif /* by default, standard is enabled */ gtk_widget_set_sensitive(self->port_spin[MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL], FALSE); gtk_widget_set_sensitive(self->port_spin[MN_PI_MAILBOX_CONNECTION_TYPE_SSL], FALSE); self_add_authentication(self); gtk_widget_show_all(self->connection_page); g_object_connect(self->server_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); g_object_connect(auth->username_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); } private void add_connection_type (self, Gtk:Box *type_vbox (check null), MNPIMailboxConnectionType type, const char *mnemonic (check null)) { GtkWidget *hbox; GtkWidget *port_label; self->conn_radio[type] = type == 0 ? gtk_radio_button_new_with_mnemonic(NULL, mnemonic) : gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(self->conn_radio[0]), mnemonic); port_label = gtk_label_new(_("Port:")); self->port_spin[type] = gtk_spin_button_new_with_range(0, 0xFFFF, 1); gtk_entry_set_activates_default(GTK_ENTRY(self->port_spin[type]), TRUE); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(self->port_spin[type]), TRUE); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), self->conn_radio[type], FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), port_label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), self->port_spin[type], FALSE, FALSE, 0); gtk_box_pack_start(type_vbox, hbox, FALSE, FALSE, 0); gtk_widget_show_all(hbox); gtk_size_group_add_widget(self->connection_size_group, self->conn_radio[type]); g_signal_connect(self->conn_radio[type], "toggled", G_CALLBACK(self_radio_toggled_h), self); } private void add_authentication (self) { GtkWidget *section; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *label; /* translators: header capitalization */ section = mn_hig_section_new_with_box(_("Authentication"), NULL, &vbox); gtk_box_pack_start(GTK_BOX(self->connection_page), section, FALSE, FALSE, 0); hbox = gtk_hbox_new(FALSE, 12); label = gtk_label_new_with_mnemonic(_("_Mechanism:")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); self->auth_combo = mn_auth_combo_box_new(); gtk_label_set_mnemonic_widget(GTK_LABEL(label), self->auth_combo); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), self->auth_combo, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); gtk_size_group_add_widget(self->connection_size_group, label); } private void radio_toggled_h (Gtk:Toggle:Button *togglebutton (check null type), gpointer user_data (check null)) { Self *self = user_data; int i; for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++) gtk_widget_set_sensitive(self->port_spin[i], GTK_WIDGET_SENSITIVE(self->conn_radio[i]) && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self->conn_radio[i]))); g_object_notify(G_OBJECT(self), "complete"); } override (MN:Mailbox:Properties) void activate (MNMailboxProperties *properties) { Self *self = SELF(properties); PARENT_HANDLER(properties); gtk_notebook_insert_page(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), self->connection_page, NULL, 1); gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), self->connection_page, _("Connection")); } override (MN:Mailbox:Properties) void deactivate (MNMailboxProperties *properties) { PARENT_HANDLER(properties); gtk_notebook_remove_page(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), 1); } override (MN:Mailbox:Properties) void set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox) { Self *self = SELF(properties); MNPIMailbox *pi_mailbox = MN_PI_MAILBOX(mailbox); PARENT_HANDLER(properties, mailbox); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->conn_radio[pi_mailbox->connection_type]), TRUE); mn_auth_combo_box_set_active_mechanism(MN_AUTH_COMBO_BOX(self->auth_combo), pi_mailbox->authmech); gtk_entry_set_text(GTK_ENTRY(self->server_entry), pi_mailbox->hostname); gtk_spin_button_set_value(GTK_SPIN_BUTTON(self->port_spin[pi_mailbox->connection_type]), pi_mailbox->runtime_port); } override (MN:Mailbox:Properties) MNMailbox * get_mailbox (MNMailboxProperties *properties) { MNMailbox *mailbox; MNPIMailboxConnectionType connection_type; char *authmech; const char *server; int port; mailbox = PARENT_HANDLER(properties); self_get_contents(SELF(properties), &connection_type, &authmech, &server, &port); g_object_set(mailbox, MN_PI_MAILBOX_PROP_CONNECTION_TYPE(connection_type), MN_PI_MAILBOX_PROP_AUTHMECH(authmech), MN_PI_MAILBOX_PROP_HOSTNAME((char *) server), MN_PI_MAILBOX_PROP_PORT(port), NULL); g_free(authmech); return mailbox; } protected void get_contents (self, MNPIMailboxConnectionType *connection_type, char **authmech, const char **server, int *port) { MNPIMailboxConnectionType _connection_type; if (connection_type || port) { int i; _connection_type = -1; for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++) if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self->conn_radio[i]))) { _connection_type = i; break; } g_assert(_connection_type != -1); } if (connection_type) *connection_type = _connection_type; if (authmech) *authmech = mn_auth_combo_box_get_active_mechanism(MN_AUTH_COMBO_BOX(self->auth_combo)); if (server) *server = gtk_entry_get_text(GTK_ENTRY(self->server_entry)); if (port) *port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(self->port_spin[_connection_type])); } protected gboolean is_complete (self) { const char *server; if (! mn_authenticated_mailbox_properties_is_complete(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self))) return FALSE; server = gtk_entry_get_text(GTK_ENTRY(self->server_entry)); if (! *server) return FALSE; #if ! WITH_SSL if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(MN_PI_MAILBOX_PROPERTIES(self)->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL]))) return FALSE; #endif /* WITH_SSL */ return TRUE; } } mail-notification-5.4.dfsg.1/src/mn-mailbox.gob0000644000175000001440000007472711015312440021206 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include #include #include "mn-decls.h" %} %h{ #define MN_MAILBOX_MAX_TYPES 8 extern GType mn_mailbox_types[MN_MAILBOX_MAX_TYPES + 1]; typedef struct _MNMailboxConfiguration MNMailboxConfiguration; %} %privateheader{ #include "mn-xml.h" typedef enum { /* load from mailboxes.xml */ MN_MAILBOX_PARAM_LOAD = MN_XML_PARAM_IMPORT, /* save to mailboxes.xml */ MN_MAILBOX_PARAM_SAVE = MN_XML_PARAM_EXPORT, /* load from and save to mailboxes.xml */ MN_MAILBOX_PARAM_LOAD_SAVE = MN_MAILBOX_PARAM_LOAD | MN_MAILBOX_PARAM_SAVE, /* ignore the case of a string property when checking if it has the default value */ MN_MAILBOX_PARAM_IGNORE_CASE = MN_XML_PARAM_IGNORE_CASE, /* require a string property to be non-empty */ MN_MAILBOX_PARAM_REQUIRED = 1 << (MN_XML_PARAM_USER_SHIFT + 0), } MNMailboxParamFlags; %} %{ #include #include #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED #include "mn-system-vfs-mailbox.h" #include "mn-custom-vfs-mailbox.h" #endif #if WITH_POP3 #include "mn-pop3-mailbox.h" #endif #if WITH_IMAP #include "mn-imap-mailbox.h" #endif #if WITH_GMAIL #include "mn-gmail-mailbox.h" #endif #if WITH_YAHOO #include "mn-yahoo-mailbox.h" #endif #if WITH_HOTMAIL #include "mn-hotmail-mailbox.h" #endif #if WITH_EVOLUTION #include "mn-evolution-mailbox.h" #endif #include "mn-util.h" #include "mn-message.h" #include "mn-conf.h" #include "mn-locked-callback.h" #include "mn-shell.h" struct _MNMailboxConfiguration { GType type; unsigned int n_parameters; GParameter *parameters; }; GType mn_mailbox_types[MN_MAILBOX_MAX_TYPES + 1]; typedef struct { MNMailbox *self; GHashTable *messages; GHashTable *messages_considered_as_read; gboolean display_seen_mail; } FilterMessagesInfo; typedef struct { GHashTable *other; gboolean changed; } CompareMessagesInfo; static unsigned int cleanup_messages_considered_as_read_idle_id = 0; %} class MN:Mailbox (abstract) { classwide const char *type; classwide int default_check_delay = -1; /* * If enabled, the base MNMailbox implementation of added() will * call mn_mailbox_enable_checking(). */ classwide gboolean enable_checking_when_added = TRUE; /* * Whether the mailbox is in the mailboxes list (a mailbox can be * removed from the mailboxes list without being finalized * immediately if a threaded check is in progress). * * Used for performance (testing it is faster than searching the * list) and for thread safety. Do not access directly, use the * accessors. */ private gboolean _active; public gboolean get_active (self) { return g_atomic_int_get(&selfp->_active); } private void set_active (self, gboolean value) { g_atomic_int_set(&selfp->_active, value); } /** * added: * @self: the object which received the signal * * This signal gets emitted after the mailbox is added to the * mailboxes list. **/ signal NONE (NONE) void added (self) { self_set_active(self, TRUE); if (SELF_GET_CLASS(self)->enable_checking_when_added) self_enable_checking(self); } /** * removed: * @self: the object which received the signal * * This signal gets emitted after the mailbox is removed from the * mailboxes list. **/ signal NONE (NONE) void removed (self) { self_set_active(self, FALSE); mn_source_clear(&selfp->check_timeout_id); /* * Do not queue a cleanup of the messages-considered-as-read GConf * setting: it should not be done if the mailbox is only being * replaced (eg. from mn_mailbox_properties_dialog_apply()). * * If however the mailbox is being permanently removed, its * messages considered as read will be cleaned up the next time * another mailbox is checked, which is good enough. * * Note that we could queue a cleanup from here by adding and * testing a "gboolean replacing" signal parameter, but it is not * worth the effort. */ } public char *runtime_name destroywith g_free; public char *name destroywith g_free; property STRING name (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE); public char *open_command destroywith g_free; property STRING open_command (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE); public char *mark_as_read_command destroywith g_free; property STRING mark_as_read_command (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE); public char *mark_as_spam_command destroywith g_free; property STRING mark_as_spam_command (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE); public char *delete_command destroywith g_free; property STRING delete_command (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE); public char *stock_id destroywith g_free; property STRING stock_id (link, export); public char *format destroywith g_free; property STRING format (link, export); private unsigned int check_timeout_id; public int runtime_check_delay; public int check_delay; property INT check_delay (link, flags = CONSTRUCT | MN_MAILBOX_PARAM_LOAD_SAVE, default_value = -1); private gboolean poll = TRUE; property BOOLEAN poll (export) set { gboolean new_poll = g_value_get_boolean(VAL); /* * We do nothing unless the property has changed, because we do * not want to reset an already existing check timeout. */ if (new_poll != selfp->poll) { selfp->poll = new_poll; if (self_get_active(self) && selfp->checking_enabled) self_update_check_timeout(self); g_object_notify(G_OBJECT(self), "manually-checkable"); } } get { g_value_set_boolean(VAL, selfp->poll); }; /* * Whether the user can initiate a check manually (for instance by * clicking on an Update menu item or by running mail-notification * --update). */ property BOOLEAN manually_checkable (export) get { g_value_set_boolean(VAL, selfp->checking_enabled && selfp->poll); }; private void update_check_timeout (self) { g_assert(self_get_active(self) == TRUE); g_assert(selfp->checking_enabled == TRUE); mn_source_clear(&selfp->check_timeout_id); if (selfp->poll && self->runtime_check_delay > 0) selfp->check_timeout_id = gdk_threads_add_timeout(self->runtime_check_delay * 1000, self_check_timeout_cb, self); } /* whether set_messages() has ever been called */ private gboolean all_messages_set; /* all unread (unseen and seen) messages, indexed by id */ private GHashTable *all_messages = {g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref)} destroywith g_hash_table_destroy; /* all_messages, indexed by mid (message references held by all_message) */ private GHashTable *all_messages_by_mid = {g_hash_table_new(g_str_hash, g_str_equal)} destroywith g_hash_table_destroy; /* all_messages after applying the "seen messages" filter, indexed by id */ public GHashTable *messages = {g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref)} destroywith g_hash_table_destroy; /* for performance */ public time_t timestamp; /* timestamp of most recent message in self->messages */ property POINTER messages (type = GHashTable *) get { g_value_set_pointer(VAL, self->messages); }; protected void set_messages (self, GSList *messages) { GSList *l; selfp->all_messages_set = TRUE; g_hash_table_remove_all(selfp->all_messages); g_hash_table_remove_all(selfp->all_messages_by_mid); MN_LIST_FOREACH(l, messages) { MNMessage *message = l->data; g_hash_table_replace(selfp->all_messages, message->id, g_object_ref(message)); if (message->mid) /* do not ref message, it is owned by all_messages */ g_hash_table_replace(selfp->all_messages_by_mid, message->mid, message); } /* * Some messages might be gone, queue a cleanup of the * considered-as-read GConf setting. */ self_queue_cleanup_messages_considered_as_read(); self_filter_messages(self); } /** * filter_messages: * @self: the mailbox to act upon * * Filters @self->all_messages with the "seen mail" filter and the * considered-as-read GConf list, and stores the resulting set in * @self->messages. Additionally, if @self->messages has changed, * emits the "messages-changed" signal. **/ private void filter_messages (self) { FilterMessagesInfo info; gboolean changed = FALSE; gboolean has_new = FALSE; /* filter messages */ self->timestamp = 0; info.self = self; info.messages = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref); info.messages_considered_as_read = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ); info.display_seen_mail = mn_conf_get_bool(MN_CONF_DISPLAY_SEEN_MAIL); g_hash_table_foreach(selfp->all_messages, (GHFunc) self_filter_messages_cb, &info); g_hash_table_destroy(info.messages_considered_as_read); /* detect changes */ if (self_compare_messages(self->messages, info.messages)) changed = TRUE; if (self_compare_messages(info.messages, self->messages)) changed = has_new = TRUE; g_hash_table_destroy(self->messages); self->messages = info.messages; g_object_notify(G_OBJECT(self), "messages"); if (changed) self_messages_changed(self, has_new); } private void filter_messages_cb (const char *id, MNMessage *message, FilterMessagesInfo *info) { Self *self = info->self; if (! info->display_seen_mail && (message->flags & MN_MESSAGE_NEW) == 0) return; if (g_hash_table_lookup(info->messages_considered_as_read, message->id)) return; if (message->sent_time > self->timestamp) self->timestamp = message->sent_time; g_hash_table_replace(info->messages, message->id, g_object_ref(message)); } /** * compare_messages: * @messages1: a %GHashTable containing %MNMessage objects * @messages2: another %GHashTable containing %MNMessage objects * * Compares @messages1 and @messages2. * * Return value: %TRUE if @messages1 contains messages not present * in @messages2, %FALSE otherwise. **/ private gboolean compare_messages (GHashTable *messages1, GHashTable *messages2) { CompareMessagesInfo info; info.other = messages2; info.changed = FALSE; g_hash_table_foreach(messages1, (GHFunc) self_compare_messages_cb, &info); return info.changed; } private void compare_messages_cb (const char *id, MNMessage *message, CompareMessagesInfo *info) { if (! info->changed && ! g_hash_table_lookup(info->other, id)) info->changed = TRUE; } private void queue_cleanup_messages_considered_as_read (void) { if (! cleanup_messages_considered_as_read_idle_id) cleanup_messages_considered_as_read_idle_id = gdk_threads_add_idle(self_cleanup_messages_considered_as_read_cb, NULL); } private gboolean cleanup_messages_considered_as_read_cb (gpointer data) { self_cleanup_messages_considered_as_read(); cleanup_messages_considered_as_read_idle_id = 0; return FALSE; /* remove source */ } /* * Remove messages which no longer exist from the considered-as-read * GConf list. * * The primary goal is to ensure that a message which has been * opened or marked as read (these functions implicitly add the * message to the considered-as-read list) and then marked back as * unread in the mail reader will reappear in MN. * * The secondary goal is to ensure that the considered-as-list will * not grow forever. */ private void cleanup_messages_considered_as_read (void) { GList *l; GHashTable *set; /* * If there is a mailbox which has not been successfully checked * yet, abort. Otherwise, the messages of that mailbox could be * mistakenly cleaned up. */ MN_LIST_FOREACH(l, mn_shell->mailboxes->list) { MNMailbox *mailbox = l->data; if (! mailbox->_priv->all_messages_set) return; } set = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ); if (g_hash_table_foreach_remove(set, (GHRFunc) self_cleanup_messages_considered_as_read_remove_cb, NULL)) /* one or more messages were removed, reflect the changes */ mn_conf_set_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ, set); g_hash_table_destroy(set); } private gboolean cleanup_messages_considered_as_read_remove_cb (const char *id, gpointer value, gpointer user_data) { GList *l; MN_LIST_FOREACH(l, mn_shell->mailboxes->list) { MNMailbox *mailbox = l->data; if (g_hash_table_lookup(mailbox->_priv->all_messages, id)) return FALSE; /* message still exists, do not remove it */ } return TRUE; /* message no longer exists, remove it */ } /** * messages-changed: * @self: the object which received the signal * @has_new: whether a new message has been received or not * * This signal gets emitted whenever the messages property changes. * * It is considered that the property changes if a new message * appears or if an old message disappears. If the contents of an * existing message change but the message keeps the same id, this * signal is not emitted (use the "notify::messages" signal if you * need notification of such events). **/ signal private NONE (BOOLEAN) void messages_changed (self, gboolean has_new); public char *error destroywith g_free; property STRING error (link); [G_GNUC_PRINTF(2, 3)] protected void set_error (self, const char *format, ...) { char *error = NULL; if (format) MN_STRDUP_VPRINTF(error, format); g_object_set(G_OBJECT(self), MN_MAILBOX_PROP_ERROR(error), NULL); g_free(error); } public void init_types (void) { int i = 0; #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED /* * MNSystemVFSMailbox must be registered before * MNCustomVFSMailbox, because the latter's parse_uri() method * will accept any URI. */ mn_mailbox_types[i++] = MN_TYPE_SYSTEM_VFS_MAILBOX; mn_mailbox_types[i++] = MN_TYPE_CUSTOM_VFS_MAILBOX; #endif #if WITH_POP3 mn_mailbox_types[i++] = MN_TYPE_POP3_MAILBOX; #endif #if WITH_IMAP mn_mailbox_types[i++] = MN_TYPE_IMAP_MAILBOX; #endif #if WITH_GMAIL mn_mailbox_types[i++] = MN_TYPE_GMAIL_MAILBOX; #endif #if WITH_YAHOO mn_mailbox_types[i++] = MN_TYPE_YAHOO_MAILBOX; #endif #if WITH_HOTMAIL mn_mailbox_types[i++] = MN_TYPE_HOTMAIL_MAILBOX; #endif #if WITH_EVOLUTION mn_mailbox_types[i++] = MN_TYPE_EVOLUTION_MAILBOX; #endif mn_mailbox_types[i] = 0; } /* references the returned class */ public MNMailboxClass * get_class_from_name (const char *type (check null)) { int i; for (i = 0; mn_mailbox_types[i]; i++) { SelfClass *class; class = g_type_class_ref(mn_mailbox_types[i]); if (! strcmp(class->type, type)) return class; g_type_class_unref(class); } return NULL; } public GType get_type_from_name (const char *type (check null)) { SelfClass *class; class = self_get_class_from_name(type); if (class) { GType gtype; gtype = G_OBJECT_CLASS_TYPE(class); g_type_class_unref(class); return gtype; } return 0; } init (self) { mn_g_object_gconf_notifications_add_gdk_locked(self, MN_CONF_DISPLAY_SEEN_MAIL, self_notify_display_seen_messages_cb, self, MN_CONF_MESSAGES_CONSIDERED_AS_READ, self_notify_messages_considered_as_read_cb, self, NULL); } finalize (self) { /* * Even though we clear the source in removed(), it might have * been reinstalled afterwards (by a mn_mailbox_set_poll() call * from a check thread, etc). */ if (selfp->check_timeout_id) g_source_remove(selfp->check_timeout_id); } private void notify_display_seen_messages_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { Self *self = user_data; self_filter_messages(self); } private void notify_messages_considered_as_read_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { Self *self = user_data; self_filter_messages(self); } [G_GNUC_NULL_TERMINATED] public MNMailbox * new (const char *type (check null), ...) { va_list args; GType type_id; const char *first_property_name; GObject *object; type_id = self_get_type_from_name(type); if (! type_id) return NULL; va_start(args, type); first_property_name = va_arg(args, const char *); object = g_object_new_valist(type_id, first_property_name, args); va_end(args); return SELF(object); } public MNMailbox * new_from_xml_node (xmlNode *node (check null), GError **err) { char *type; Self *self = NULL; type = xmlGetProp(node, "type"); if (! type) { g_set_error(err, 0, 0, _("\"type\" attribute missing")); return NULL; } self = self_new(type, NULL); if (! self) { g_set_error(err, 0, 0, _("unknown mailbox type \"%s\""), type); goto end; } mn_xml_import_properties(G_OBJECT(self), node); if (! self_validate(self, err)) { g_object_unref(self); self = NULL; } end: g_free(type); return self; } public xmlNode * xml_node_new (self) { xmlNode *node; node = xmlNewNode(NULL, "mailbox"); xmlSetProp(node, "type", SELF_GET_CLASS(self)->type); mn_xml_export_properties(G_OBJECT(self), node); return node; } public MNMailbox * new_from_uri (const char *uri (check null)) { int i; for (i = 0; mn_mailbox_types[i]; i++) { MNMailboxClass *class; MNMailbox *mailbox; class = g_type_class_ref(mn_mailbox_types[i]); mailbox = class->parse_uri ? class->parse_uri(NULL, uri) : NULL; g_type_class_unref(class); if (mailbox) return mailbox; } return NULL; } public MNMailbox * new_from_configuration (MNMailboxConfiguration *config (check null)) { return g_object_newv(config->type, config->n_parameters, config->parameters); } public MNMailboxConfiguration * get_configuration (self) { GObject *object = G_OBJECT(self); GArray *parameters; GParamSpec **properties; unsigned int n_properties; int i; MNMailboxConfiguration *config; parameters = g_array_new(FALSE, FALSE, sizeof(GParameter)); properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties); for (i = 0; i < n_properties; i++) if ((properties[i]->flags & MN_MAILBOX_PARAM_SAVE) != 0) { GParameter parameter = { NULL, { 0, } }; parameter.name = g_param_spec_get_name(properties[i]); g_value_init(¶meter.value, G_PARAM_SPEC_VALUE_TYPE(properties[i])); g_object_get_property(object, parameter.name, ¶meter.value); g_array_append_val(parameters, parameter); } g_free(properties); config = g_new0(MNMailboxConfiguration, 1); config->type = G_OBJECT_TYPE(self); config->n_parameters = parameters->len; config->parameters = (GParameter *) g_array_free(parameters, FALSE); return config; } public void configuration_free (MNMailboxConfiguration *config (check null)) { int i; for (i = 0; i < config->n_parameters; i++) g_value_unset(&config->parameters[i].value); g_free(config->parameters); g_free(config); } public MNMailbox * new_from_obsolete_uri (const char *uri (check null)) { char *real_uri; char *scheme; gboolean obsolete = FALSE; Self *self = NULL; real_uri = g_str_has_prefix(uri, "pop3:") /* also handle very old pop3 locators */ ? g_strconcat("pop://", uri + 5, NULL) : g_strdup(uri); scheme = gnome_vfs_get_uri_scheme(real_uri); if (scheme) { if (! strcmp(scheme, "pop") || ! strcmp(scheme, "pops") || ! strcmp(scheme, "imap") || ! strcmp(scheme, "imaps") || ! strcmp(scheme, "gmail")) obsolete = TRUE; g_free(scheme); } self = obsolete ? self_parse_obsolete_uri(real_uri) : self_new_from_uri(real_uri); g_free(real_uri); if (self && ! self_validate(self, NULL)) { g_object_unref(self); self = NULL; } return self; } private MNMailbox * parse_obsolete_uri (const char *uri (check null)) { int len; int buflen; char *scheme; char *username; char *password; char *authmech; char *hostname; int port; char *path; char **queries; Self *self = NULL; len = strlen(uri); buflen = len + 1; { char *pat; char scheme_buf[buflen]; char auth_buf[buflen]; char location_buf[buflen]; char username_buf[buflen]; char password_buf[buflen]; char authmech_buf[buflen]; char hostname_buf[buflen]; int _port; char path_buf[buflen]; char queries_buf[buflen]; gboolean has_location = FALSE; gboolean has_password = FALSE; gboolean has_authmech = FALSE; gboolean has_port = FALSE; gboolean has_path = FALSE; gboolean has_queries = FALSE; int n; /* split URI in 3 parts: scheme, auth and location */ pat = g_strdup_printf("%%%i[^:]://%%%i[^@]@%%%is", len, len, len); n = sscanf(uri, pat, scheme_buf, auth_buf, location_buf); g_free(pat); if (n >= 2) { if (n == 3) has_location = TRUE; } else return NULL; /* unparsable */ /* split auth part in 3 subparts: username, password and authmech */ /* * For backward compatibility with previous versions of Mail * Notification, we also support ;auth= (in lowercase). */ pat = g_strdup_printf("%%%i[^:]:%%%i[^;];%%*1[aA]%%*1[uU]%%*1[tT]%%*1[hH]=%%%is", len, len, len); n = sscanf(auth_buf, pat, username_buf, password_buf, authmech_buf); g_free(pat); if (n >= 2) { has_password = TRUE; if (n == 3) has_authmech = TRUE; } else { pat = g_strdup_printf("%%%i[^;];%%*1[aA]%%*1[uU]%%*1[tT]%%*1[hH]=%%%is", len, len); n = sscanf(auth_buf, pat, username_buf, authmech_buf); g_free(pat); if (n >= 1) { if (n == 2) has_authmech = TRUE; } else return NULL; /* unparsable */ } if (has_location) { char hostport_buf[buflen]; /* split location part in 3 subparts: hostport, path and queries */ pat = g_strdup_printf("%%%i[^/]/%%%i[^?]?%%%is", len, len, len); n = sscanf(location_buf, pat, hostport_buf, path_buf, queries_buf); g_free(pat); if (n >= 2) { has_path = TRUE; if (n == 3) has_queries = TRUE; } else { pat = g_strdup_printf("%%%i[^?]?%%%is", len, len); n = sscanf(location_buf, pat, hostport_buf, queries_buf); g_free(pat); if (n == 2) has_queries = TRUE; } /* split hostport in 2 subparts: host and port */ pat = g_strdup_printf("[%%%i[^]]]:%%u", len); n = sscanf(hostport_buf, pat, hostname_buf, &_port); g_free(pat); if (n < 1) { pat = g_strdup_printf("%%%i[^:]:%%u", len); n = sscanf(hostport_buf, pat, hostname_buf, &_port); g_free(pat); } if (n == 2) has_port = TRUE; } scheme = gnome_vfs_unescape_string(scheme_buf, NULL); username = gnome_vfs_unescape_string(username_buf, NULL); password = has_password ? gnome_vfs_unescape_string(password_buf, NULL) : NULL; authmech = has_authmech ? gnome_vfs_unescape_string(authmech_buf, NULL) : NULL; hostname = has_location ? gnome_vfs_unescape_string(hostname_buf, NULL) : NULL; port = has_port ? _port : 0; path = has_path ? gnome_vfs_unescape_string(path_buf, NULL) : NULL; if (has_queries) { int i; queries = g_strsplit(queries_buf, "&", 0); for (i = 0; queries[i]; i++) { char *unescaped; unescaped = gnome_vfs_unescape_string(queries[i], NULL); g_free(queries[i]); queries[i] = unescaped; } } else queries = NULL; } if (! strcmp(scheme, "pop") || ! strcmp(scheme, "pops")) { #if WITH_POP3 MNPIMailboxConnectionType connection_type; if (queries && mn_strv_find(queries, "STLS") != -1) connection_type = MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL; else connection_type = ! strcmp(scheme, "pops") ? MN_PI_MAILBOX_CONNECTION_TYPE_SSL : MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL; self = self_new("pop3", "connection-type", connection_type, "username", username, "password", password, "authmech", authmech, "hostname", hostname, "port", port, NULL); #endif } else if (! strcmp(scheme, "imap") || ! strcmp(scheme, "imaps")) { #if WITH_IMAP MNPIMailboxConnectionType connection_type; if (queries && mn_strv_find(queries, "STARTTLS") != -1) connection_type = MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL; else connection_type = ! strcmp(scheme, "imaps") ? MN_PI_MAILBOX_CONNECTION_TYPE_SSL : MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL; self = self_new("imap", "connection-type", connection_type, "username", username, "password", password, "authmech", authmech, "hostname", hostname, "port", port, NULL); if (path) g_object_set(self, MN_IMAP_MAILBOX_PROP_MAILBOX(path), NULL); if (queries && mn_strv_find(queries, "noidle") != -1) g_object_set(G_OBJECT(self), MN_IMAP_MAILBOX_PROP_USE_IDLE_EXTENSION(MN_IMAP_MAILBOX_USE_IDLE_NEVER), NULL); #endif } else if (! strcmp(scheme, "gmail")) { #if WITH_GMAIL self = self_new("gmail", "username", username, "password", password, NULL); #endif } g_free(scheme); g_free(username); g_free(password); g_free(authmech); g_free(hostname); g_free(path); g_strfreev(queries); return self; } private gboolean check_timeout_cb (gpointer data) { Self *self = data; self_check(self); return TRUE; /* continue */ } private gboolean validate (self, GError **err) { GParamSpec **properties; unsigned int n_properties; int i; gboolean status = TRUE; properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties); for (i = 0; i < n_properties; i++) if ((properties[i]->flags & MN_MAILBOX_PARAM_REQUIRED) != 0) { GValue value = { 0, }; const char *str; gboolean is_empty; g_assert(G_IS_PARAM_SPEC_STRING(properties[i])); g_value_init(&value, G_TYPE_STRING); g_object_get_property(G_OBJECT(self), g_param_spec_get_name(properties[i]), &value); str = g_value_get_string(&value); is_empty = ! str || ! *str; g_value_unset(&value); if (is_empty) { g_set_error(err, 0, 0, _("property \"%s\" has no value"), g_param_spec_get_name(properties[i])); status = FALSE; break; } } g_free(properties); return status; } /** * seal: * @self: a mailbox * * Seals the mailbox before it is made operational by being added to * the mailboxes list. The point of this function is to allow * subclasses to perform initialization which needs to consult the * value of properties loaded from mailboxes.xml or set by the * properties dialog. That would not be possible from init(), since * these properties are only set after the mailbox is constructed. **/ virtual public void seal (self) { if (self->name) { g_free(self->runtime_name); self->runtime_name = g_strdup(self->name); } self->runtime_check_delay = self->check_delay != -1 ? self->check_delay : SELF_GET_CLASS(self)->default_check_delay; } [G_GNUC_UNUSED] /* invoked via the class pointer */ virtual private MNMailbox * parse_uri (self, const char *uri (check null)); virtual public void check (self) { g_assert(self_get_active(self) == TRUE); g_assert(selfp->checking_enabled == TRUE); } /* * Mailboxes start with this property disabled. As long as this * property is disabled, the Update menu items are insensitive, the * periodic poll timeout is not installed, and mn_mailbox_check() is * not called. This allows subclasses to prevent checks while they * are saving the password, etc. */ private gboolean checking_enabled; protected void enable_checking (self) { selfp->checking_enabled = TRUE; g_object_notify(G_OBJECT(self), "manually-checkable"); self_update_check_timeout(self); self_check(self); } [G_GNUC_PRINTF(2, 3)] protected void notice (self, const char *format (check null), ...) { char *message; /* * Disregard messages sent by a threaded check still in progress * after the mailbox has been removed. */ if (! self_get_active(self)) return; MN_STRDUP_VPRINTF(message, format); mn_info(_("%s: %s"), self->runtime_name, message); g_free(message); } [G_GNUC_PRINTF(2, 3)] protected void warning (self, const char *format (check null), ...) { char *message; /* * Disregard messages sent by a threaded check still in progress * after the mailbox has been removed. */ if (! self_get_active(self)) return; MN_STRDUP_VPRINTF(message, format); g_warning(_("%s: %s"), self->runtime_name, message); g_free(message); } protected MNMessage * get_message_from_mid (self, const char *mid (check null)) { return g_hash_table_lookup(selfp->all_messages_by_mid, mid); } public char * get_command (self, const char *id (check null)) { char *prop; char *command; prop = g_strconcat(id, "-command", NULL); g_object_get(self, prop, &command, NULL); g_free(prop); if (command && ! *command) { g_free(command); return NULL; } return command; } public gboolean has_command (self, const char *id (check null)) { char *command; gboolean has; command = self_get_command(self, id); has = command != NULL; g_free(command); return has; } } mail-notification-5.4.dfsg.1/src/org-gnome-MailNotification-Evolution-FolderTree.xml0000644000175000001440000000055510741732623030332 0ustar evilynuxusers mail-notification-5.4.dfsg.1/src/mn-custom-vfs-mailbox.gob0000644000175000001440000000372211015312437023303 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-vfs-mailbox.h" %} %{ #include #include "mn-mailbox-private.h" %} class MN:Custom:VFS:Mailbox from MN:VFS:Mailbox { public char *uri destroywith g_free; property STRING uri (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE | MN_MAILBOX_PARAM_REQUIRED); class_init (class) { MN_MAILBOX_CLASS(class)->type = "custom-vfs"; } override (MN:Mailbox) void seal (MNMailbox *mailbox) { MN_VFS_MAILBOX(mailbox)->uri = gnome_vfs_make_uri_canonical(SELF(mailbox)->uri); PARENT_HANDLER(mailbox); } override (MN:Mailbox) MNMailbox * parse_uri (MNMailbox *dummy, const char *uri) { GnomeVFSURI *vfs_uri; MNMailbox *mailbox = NULL; vfs_uri = gnome_vfs_uri_new(uri); if (vfs_uri) { mailbox = mn_mailbox_new("custom-vfs", "uri", uri, NULL); gnome_vfs_uri_unref(vfs_uri); } return mailbox; } override (MN:Mailbox) void check (MNMailbox *mailbox) { if (MN_VFS_MAILBOX(mailbox)->vfs_uri) { PARENT_HANDLER(mailbox); } else { mn_mailbox_set_error(mailbox, _("invalid location")); mn_mailbox_set_poll(mailbox, FALSE); /* disable the mailbox */ } } } mail-notification-5.4.dfsg.1/src/mn-md5.c0000644000175000001440000002574011015312437017710 0ustar evilynuxusers/* * MD5 message digest implementation, taken from glibc and edited for * style. * * The GNU C Library, * Copyright (C) 1995,1996,1997,1999,2000,2001,2005 * Free Software Foundation, Inc. * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include "mn-md5.h" #ifdef WORDS_BIGENDIAN # define SWAP(n) \ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24)) #else # define SWAP(n) (n) #endif #define HEXCHARS "0123456789abcdef" /* This array contains the bytes used to pad the buffer to the next 64-byte boundary. (RFC 1321, 3.1: Step 1) */ static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ }; /* Initialize structure containing state of computation. (RFC 1321, 3.3: Step 3) */ void mn_md5_init_ctx (MNMD5Context *ctx) { ctx->A = 0x67452301; ctx->B = 0xefcdab89; ctx->C = 0x98badcfe; ctx->D = 0x10325476; ctx->total[0] = ctx->total[1] = 0; ctx->buflen = 0; } /* Put result from CTX in first 16 bytes following RESBUF. The result must be in little endian byte order. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ void * mn_md5_read_ctx (MNMD5Context *ctx, void *resbuf) { ((uint32_t *) resbuf)[0] = SWAP (ctx->A); ((uint32_t *) resbuf)[1] = SWAP (ctx->B); ((uint32_t *) resbuf)[2] = SWAP (ctx->C); ((uint32_t *) resbuf)[3] = SWAP (ctx->D); return resbuf; } /* Process the remaining bytes in the internal buffer and the usual prolog according to the standard and write the result to RESBUF. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ void * mn_md5_finish_ctx (MNMD5Context *ctx, unsigned char resbuf[16]) { /* Take yet unprocessed bytes into account. */ uint32_t bytes = ctx->buflen; size_t pad; /* Now count remaining bytes. */ ctx->total[0] += bytes; if (ctx->total[0] < bytes) ++ctx->total[1]; pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes; memcpy (&ctx->buffer[bytes], fillbuf, pad); /* Put the 64-bit file length in *bits* at the end of the buffer. */ *(uint32_t *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3); *(uint32_t *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29)); /* Process last bytes. */ mn_md5_process_block (ctx, ctx->buffer, bytes + pad + 8); return mn_md5_read_ctx (ctx, resbuf); } void mn_md5_to_hex (const unsigned char resbuf[16], char hexbuf[33]) { int i; for (i = 0; i < 16; i++) { hexbuf[i * 2] = HEXCHARS[resbuf[i] >> 4]; hexbuf[i * 2 + 1] = HEXCHARS[resbuf[i] & 0xf]; } hexbuf[32] = 0; } void mn_md5_process_bytes (MNMD5Context *ctx, const void *buffer, size_t len) { /* When we already have some bits in our internal buffer concatenate both inputs first. */ if (ctx->buflen != 0) { size_t left_over = ctx->buflen; size_t add = 128 - left_over > len ? len : 128 - left_over; memcpy (&ctx->buffer[left_over], buffer, add); ctx->buflen += add; if (ctx->buflen > 64) { mn_md5_process_block (ctx, ctx->buffer, ctx->buflen & ~63); ctx->buflen &= 63; /* The regions in the following copy operation cannot overlap. */ memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], ctx->buflen); } buffer = (const char *) buffer + add; len -= add; } /* Process available complete blocks. */ if (len >= 64) { #ifndef STRING_ARCH_UNALIGNED /* To check alignment gcc has an appropriate operator. Other compilers don't. */ # if __GNUC__ >= 2 # define UNALIGNED_P(p) (((uintptr_t) p) % __alignof__ (uint32_t) != 0) # else # define UNALIGNED_P(p) (((uintptr_t) p) % sizeof (uint32_t) != 0) # endif if (UNALIGNED_P (buffer)) while (len > 64) { mn_md5_process_block (ctx, memcpy (ctx->buffer, buffer, 64), 64); buffer = (const char *) buffer + 64; len -= 64; } else #endif { mn_md5_process_block (ctx, buffer, len & ~63); buffer = (const char *) buffer + (len & ~63); len &= 63; } } /* Move remaining bytes in internal buffer. */ if (len > 0) { size_t left_over = ctx->buflen; memcpy (&ctx->buffer[left_over], buffer, len); left_over += len; if (left_over >= 64) { mn_md5_process_block (ctx, ctx->buffer, 64); left_over -= 64; memcpy (ctx->buffer, &ctx->buffer[64], left_over); } ctx->buflen = left_over; } } /* These are the four functions used in the four steps of the MD5 algorithm and defined in the RFC 1321. The first function is a little bit optimized (as found in Colin Plumbs public domain implementation). */ /* #define FF(b, c, d) ((b & c) | (~b & d)) */ #define FF(b, c, d) (d ^ (b & (c ^ d))) #define FG(b, c, d) FF (d, b, c) #define FH(b, c, d) (b ^ c ^ d) #define FI(b, c, d) (c ^ (b | ~d)) /* Process LEN bytes of BUFFER, accumulating context into CTX. It is assumed that LEN % 64 == 0. */ void mn_md5_process_block (MNMD5Context *ctx, const void *buffer, size_t len) { uint32_t correct_words[16]; const uint32_t *words = buffer; size_t nwords = len / sizeof (uint32_t); const uint32_t *endp = words + nwords; uint32_t A = ctx->A; uint32_t B = ctx->B; uint32_t C = ctx->C; uint32_t D = ctx->D; /* First increment the byte count. RFC 1321 specifies the possible length of the file up to 2^64 bits. Here we only compute the number of bytes. Do a double word increment. */ ctx->total[0] += len; if (ctx->total[0] < len) ++ctx->total[1]; /* Process all bytes in the buffer with 64 bytes in each round of the loop. */ while (words < endp) { uint32_t *cwp = correct_words; uint32_t A_save = A; uint32_t B_save = B; uint32_t C_save = C; uint32_t D_save = D; /* First round: using the given function, the context and a constant the next context is computed. Because the algorithms processing unit is a 32-bit word and it is determined to work on words in little endian byte order we perhaps have to change the byte order before the computation. To reduce the work for the next steps we store the swapped words in the array CORRECT_WORDS. */ #define OP(a, b, c, d, s, T) \ do \ { \ a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \ ++words; \ CYCLIC (a, s); \ a += b; \ } \ while (0) /* It is unfortunate that C does not provide an operator for cyclic rotation. Hope the C compiler is smart enough. */ #define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s))) /* Before we start, one word to the strange constants. They are defined in RFC 1321 as T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64 */ /* Round 1. */ OP (A, B, C, D, 7, 0xd76aa478); OP (D, A, B, C, 12, 0xe8c7b756); OP (C, D, A, B, 17, 0x242070db); OP (B, C, D, A, 22, 0xc1bdceee); OP (A, B, C, D, 7, 0xf57c0faf); OP (D, A, B, C, 12, 0x4787c62a); OP (C, D, A, B, 17, 0xa8304613); OP (B, C, D, A, 22, 0xfd469501); OP (A, B, C, D, 7, 0x698098d8); OP (D, A, B, C, 12, 0x8b44f7af); OP (C, D, A, B, 17, 0xffff5bb1); OP (B, C, D, A, 22, 0x895cd7be); OP (A, B, C, D, 7, 0x6b901122); OP (D, A, B, C, 12, 0xfd987193); OP (C, D, A, B, 17, 0xa679438e); OP (B, C, D, A, 22, 0x49b40821); /* For the second to fourth round we have the possibly swapped words in CORRECT_WORDS. Redefine the macro to take an additional first argument specifying the function to use. */ #undef OP #define OP(f, a, b, c, d, k, s, T) \ do \ { \ a += f (b, c, d) + correct_words[k] + T; \ CYCLIC (a, s); \ a += b; \ } \ while (0) /* Round 2. */ OP (FG, A, B, C, D, 1, 5, 0xf61e2562); OP (FG, D, A, B, C, 6, 9, 0xc040b340); OP (FG, C, D, A, B, 11, 14, 0x265e5a51); OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa); OP (FG, A, B, C, D, 5, 5, 0xd62f105d); OP (FG, D, A, B, C, 10, 9, 0x02441453); OP (FG, C, D, A, B, 15, 14, 0xd8a1e681); OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8); OP (FG, A, B, C, D, 9, 5, 0x21e1cde6); OP (FG, D, A, B, C, 14, 9, 0xc33707d6); OP (FG, C, D, A, B, 3, 14, 0xf4d50d87); OP (FG, B, C, D, A, 8, 20, 0x455a14ed); OP (FG, A, B, C, D, 13, 5, 0xa9e3e905); OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8); OP (FG, C, D, A, B, 7, 14, 0x676f02d9); OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a); /* Round 3. */ OP (FH, A, B, C, D, 5, 4, 0xfffa3942); OP (FH, D, A, B, C, 8, 11, 0x8771f681); OP (FH, C, D, A, B, 11, 16, 0x6d9d6122); OP (FH, B, C, D, A, 14, 23, 0xfde5380c); OP (FH, A, B, C, D, 1, 4, 0xa4beea44); OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9); OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60); OP (FH, B, C, D, A, 10, 23, 0xbebfbc70); OP (FH, A, B, C, D, 13, 4, 0x289b7ec6); OP (FH, D, A, B, C, 0, 11, 0xeaa127fa); OP (FH, C, D, A, B, 3, 16, 0xd4ef3085); OP (FH, B, C, D, A, 6, 23, 0x04881d05); OP (FH, A, B, C, D, 9, 4, 0xd9d4d039); OP (FH, D, A, B, C, 12, 11, 0xe6db99e5); OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8); OP (FH, B, C, D, A, 2, 23, 0xc4ac5665); /* Round 4. */ OP (FI, A, B, C, D, 0, 6, 0xf4292244); OP (FI, D, A, B, C, 7, 10, 0x432aff97); OP (FI, C, D, A, B, 14, 15, 0xab9423a7); OP (FI, B, C, D, A, 5, 21, 0xfc93a039); OP (FI, A, B, C, D, 12, 6, 0x655b59c3); OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92); OP (FI, C, D, A, B, 10, 15, 0xffeff47d); OP (FI, B, C, D, A, 1, 21, 0x85845dd1); OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f); OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0); OP (FI, C, D, A, B, 6, 15, 0xa3014314); OP (FI, B, C, D, A, 13, 21, 0x4e0811a1); OP (FI, A, B, C, D, 4, 6, 0xf7537e82); OP (FI, D, A, B, C, 11, 10, 0xbd3af235); OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb); OP (FI, B, C, D, A, 9, 21, 0xeb86d391); /* Add the starting values of the context. */ A += A_save; B += B_save; C += C_save; D += D_save; } /* Put checksum in context given as argument. */ ctx->A = A; ctx->B = B; ctx->C = C; ctx->D = D; } mail-notification-5.4.dfsg.1/src/mn-sylpheed-message.gob0000644000175000001440000000524011015312440022772 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-vfs-message.h" %} %{ #include #include #include "mn-util.h" #include "mn-sylpheed-mailbox-backend-private.h" #include "mn-message-private.h" %} class MN:Sylpheed:Message from MN:VFS:Message { override (MN:Message) void builtin_mark_as_read (MNMessage *message, MNMessageActionRequest *request) { mn_message_perform_action_in_thread(request, self_builtin_mark_as_read_cb, NULL); } private GError * builtin_mark_as_read_cb (MNMessage *message, gpointer data) { MNVFSMessage *vmessage = MN_VFS_MESSAGE(message); char *filename; guint32 num; guint32 flags; GError *tmp_err = NULL; GHashTable *marks; GError *err = NULL; filename = gnome_vfs_uri_extract_short_name(vmessage->vfs_uri); g_assert(mn_str_isnumeric(filename)); num = atoi(filename); g_free(filename); /* * We hold the mailbox lock to prevent this: * * thread A: read mark file * thread B: read mark file * thread A: write new mark file * thread B: write new mark file, A's modifications are overwritten */ mn_vfs_mailbox_lock(MN_VFS_MAILBOX(message->mailbox)); marks = mn_sylpheed_mailbox_backend_read_marks(MN_VFS_MAILBOX(message->mailbox)->vfs_uri, &tmp_err); if (! marks) { g_set_error(&err, 0, 0, _("Unable to read %s: %s."), SYLPHEED_MARK_FILE, tmp_err->message); g_error_free(tmp_err); goto end; } flags = GPOINTER_TO_UINT(g_hash_table_lookup(marks, GUINT_TO_POINTER(num))); flags &= ~(SYLPHEED_MSG_NEW | SYLPHEED_MSG_UNREAD); g_hash_table_insert(marks, GUINT_TO_POINTER(num), GUINT_TO_POINTER(flags)); mn_sylpheed_mailbox_backend_write_marks(MN_VFS_MAILBOX(message->mailbox)->vfs_uri, marks, &err); g_hash_table_destroy(marks); end: mn_vfs_mailbox_unlock(MN_VFS_MAILBOX(message->mailbox)); return err; } } mail-notification-5.4.dfsg.1/src/mn-conf.h0000644000175000001440000001550511015312437020153 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_CONF_H #define _MN_CONF_H #include #include #include #define MN_CONF_NAMESPACE \ "/apps/mail-notification" #define MN_CONF_COMMANDS_NAMESPACE \ MN_CONF_NAMESPACE "/commands" #define MN_CONF_COMMANDS_NEW_MAIL_NAMESPACE \ MN_CONF_COMMANDS_NAMESPACE "/new-mail" #define MN_CONF_COMMANDS_NEW_MAIL_ENABLED \ MN_CONF_COMMANDS_NEW_MAIL_NAMESPACE "/enabled" #define MN_CONF_COMMANDS_NEW_MAIL_COMMAND \ MN_CONF_COMMANDS_NEW_MAIL_NAMESPACE "/command" #define MN_CONF_COMMANDS_MAIL_READ_NAMESPACE \ MN_CONF_COMMANDS_NAMESPACE "/mail-read" #define MN_CONF_COMMANDS_MAIL_READ_ENABLED \ MN_CONF_COMMANDS_MAIL_READ_NAMESPACE "/enabled" #define MN_CONF_COMMANDS_MAIL_READ_COMMAND \ MN_CONF_COMMANDS_MAIL_READ_NAMESPACE "/command" #define MN_CONF_COMMANDS_MAIL_CHANGED_NAMESPACE \ MN_CONF_COMMANDS_NAMESPACE "/mail-changed" #define MN_CONF_COMMANDS_MAIL_CHANGED_ENABLED \ MN_CONF_COMMANDS_MAIL_CHANGED_NAMESPACE "/enabled" #define MN_CONF_COMMANDS_MAIL_CHANGED_COMMAND \ MN_CONF_COMMANDS_MAIL_CHANGED_NAMESPACE "/command" #define MN_CONF_SOUNDS_NAMESPACE \ MN_CONF_NAMESPACE "/sounds" #define MN_CONF_SOUNDS_NEW_MAIL_NAMESPACE \ MN_CONF_SOUNDS_NAMESPACE "/new-mail" #define MN_CONF_SOUNDS_NEW_MAIL_ENABLED \ MN_CONF_SOUNDS_NEW_MAIL_NAMESPACE "/enabled" #define MN_CONF_SOUNDS_NEW_MAIL_FILE \ MN_CONF_SOUNDS_NEW_MAIL_NAMESPACE "/file" #define MN_CONF_SOUNDS_PLAY_COMMAND \ MN_CONF_SOUNDS_NAMESPACE "/play-command" #define MN_CONF_UI_NAMESPACE \ MN_CONF_NAMESPACE "/ui" #define MN_CONF_PROPERTIES_DIALOG \ MN_CONF_UI_NAMESPACE "/properties-dialog" #define MN_CONF_BLINK_ON_ERRORS \ MN_CONF_NAMESPACE "/blink-on-errors" #define MN_CONF_TRUSTED_X509_CERTIFICATES \ MN_CONF_NAMESPACE "/trusted-x509-certificates" #define MN_CONF_TRUSTED_SERVERS \ MN_CONF_NAMESPACE "/trusted-servers" #define MN_CONF_DISPLAY_SEEN_MAIL \ MN_CONF_NAMESPACE "/display-seen-mail" #define MN_CONF_TOOLTIP_MAIL_SUMMARY \ MN_CONF_NAMESPACE "/tooltip-mail-summary" #define MN_CONF_TOOLTIP_MAIL_SUMMARY_LIMIT \ MN_CONF_NAMESPACE "/tooltip-mail-summary-limit" #define MN_CONF_ALWAYS_DISPLAY_ICON \ MN_CONF_NAMESPACE "/always-display-icon" #define MN_CONF_DISPLAY_MESSAGE_COUNT \ MN_CONF_NAMESPACE "/display-message-count" #define MN_CONF_CLICK_ACTION \ MN_CONF_NAMESPACE "/click-action-3" #define MN_CONF_POPUPS_NAMESPACE \ MN_CONF_NAMESPACE "/popups" #define MN_CONF_POPUPS_ENABLED \ MN_CONF_POPUPS_NAMESPACE "/enabled" #define MN_CONF_POPUPS_POSITION \ MN_CONF_POPUPS_NAMESPACE "/position" #define MN_CONF_POPUPS_EXPIRATION_NAMESPACE \ MN_CONF_POPUPS_NAMESPACE "/expiration" #define MN_CONF_POPUPS_EXPIRATION_ENABLED \ MN_CONF_POPUPS_EXPIRATION_NAMESPACE "/enabled" #define MN_CONF_POPUPS_EXPIRATION_DELAY \ MN_CONF_POPUPS_EXPIRATION_NAMESPACE "/delay-2" #define MN_CONF_POPUPS_ACTIONS \ MN_CONF_POPUPS_NAMESPACE "/actions" #define MN_CONF_POPUPS_LIMIT \ MN_CONF_POPUPS_NAMESPACE "/limit" #define MN_CONF_FALLBACK_CHARSETS \ MN_CONF_NAMESPACE "/fallback-charsets" #define MN_CONF_MESSAGES_CONSIDERED_AS_READ \ MN_CONF_NAMESPACE "/messages-considered-as-read" /* obsolete keys */ #define MN_CONF_OBSOLETE_MAILBOXES \ MN_CONF_NAMESPACE "/mailboxes" /* foreign keys */ #define MN_CONF_GNOME_MAIL_READER_NAMESPACE \ "/desktop/gnome/url-handlers/mailto" #define MN_CONF_GNOME_MAIL_READER_COMMAND \ MN_CONF_GNOME_MAIL_READER_NAMESPACE "/command" #define MN_CONF_GNOME_MAIL_READER_NEEDS_TERMINAL \ MN_CONF_GNOME_MAIL_READER_NAMESPACE "/needs_terminal" #define MN_CONF_SYSTEM_HTTP_PROXY_NAMESPACE \ "/system/http_proxy" #define MN_CONF_SYSTEM_HTTP_PROXY_USE_HTTP_PROXY \ MN_CONF_SYSTEM_HTTP_PROXY_NAMESPACE "/use_http_proxy" #define MN_CONF_SYSTEM_HTTP_PROXY_HOST \ MN_CONF_SYSTEM_HTTP_PROXY_NAMESPACE "/host" #define MN_CONF_SYSTEM_HTTP_PROXY_PORT \ MN_CONF_SYSTEM_HTTP_PROXY_NAMESPACE "/port" #define MN_CONF_SYSTEM_HTTP_PROXY_USE_AUTHENTICATION \ MN_CONF_SYSTEM_HTTP_PROXY_NAMESPACE "/use_authentication" #define MN_CONF_SYSTEM_HTTP_PROXY_AUTHENTICATION_USER \ MN_CONF_SYSTEM_HTTP_PROXY_NAMESPACE "/authentication_user" #define MN_CONF_SYSTEM_HTTP_PROXY_AUTHENTICATION_PASSWORD \ MN_CONF_SYSTEM_HTTP_PROXY_NAMESPACE "/authentication_password" extern const char *mn_conf_dot_dir; void mn_conf_init (void); void mn_conf_unset_obsolete (void); GConfClient *mn_conf_get_client (void); GConfValue *mn_conf_get_value (const char *key); void mn_conf_set_value (const char *key, const GConfValue *value); gboolean mn_conf_get_bool (const char *key); void mn_conf_set_bool (const char *key, gboolean value); int mn_conf_get_int (const char *key); void mn_conf_set_int (const char *key, int value); char *mn_conf_get_string (const char *key); void mn_conf_set_string (const char *key, const char *value); GSList *mn_conf_get_string_list (const char *key); void mn_conf_set_string_list (const char *key, GSList *list); GHashTable *mn_conf_get_string_hash_set (const char *key); void mn_conf_set_string_hash_set (const char *key, GHashTable *set); void mn_conf_suggest_sync (void); void mn_conf_recursive_unset (const char *key, GConfUnsetFlags flags); gboolean mn_conf_is_set (const char *key); void mn_conf_monitor_add (const char *directory); unsigned int mn_conf_notification_add (const char *key, GConfClientNotifyFunc callback, gpointer user_data, GFreeFunc destroy_notify); void mn_conf_notification_remove (unsigned int notification_id); void mn_conf_link_object (gpointer object, const char *key, const char *property_name); void mn_conf_link_window (GtkWindow *window, const char *key); void mn_conf_link_non_linear_range (GtkRange *range, const char *key); void mn_conf_link_radio_group_to_enum (GType enum_type, const char *key, ...) G_GNUC_NULL_TERMINATED; int mn_conf_get_enum_value (GType enum_type, const char *key); gboolean mn_conf_has_command (const char *namespace); void mn_conf_execute_command (const char *conf_key); void mn_conf_execute_mail_reader (void); #endif /* _MN_CONF_H */ mail-notification-5.4.dfsg.1/src/mn-xml.h0000644000175000001440000000315211015312437020021 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_XML_H #define _MN_XML_H #include #include typedef enum { /* import this property in mn_xml_import_properties() */ MN_XML_PARAM_IMPORT = 1 << (G_PARAM_USER_SHIFT + 0), /* export this property in mn_xml_export_properties() */ MN_XML_PARAM_EXPORT = 1 << (G_PARAM_USER_SHIFT + 1), /* import and export this property */ MN_XML_PARAM_IMPORT_EXPORT = MN_XML_PARAM_IMPORT | MN_XML_PARAM_EXPORT, /* ignore the case of a string property when checking if it has the default value */ MN_XML_PARAM_IGNORE_CASE = 1 << (G_PARAM_USER_SHIFT + 2) } MNXMLParamFlags; #define MN_XML_PARAM_USER_SHIFT (G_PARAM_USER_SHIFT + 3) void mn_xml_import_properties (GObject *object, xmlNode *node); void mn_xml_export_properties (GObject *object, xmlNode *node); #endif /* _MN_XML_H */ mail-notification-5.4.dfsg.1/src/mn-conf.c0000644000175000001440000007020511015312437020144 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include #include #include #include "mn-util.h" #include "mn-conf.h" #include "mn-shell.h" #include "mn-locked-callback.h" #include "mn-non-linear-range.h" /* obsolete keys */ #define MN_CONF_OBSOLETE_LOCAL_NAMESPACE \ MN_CONF_NAMESPACE "/local" #define MN_CONF_OBSOLETE_LOCAL_ENABLED \ MN_CONF_OBSOLETE_LOCAL_NAMESPACE "/enabled" #define MN_CONF_OBSOLETE_LOCAL_DELAY_MINUTES \ MN_CONF_OBSOLETE_LOCAL_NAMESPACE "/delay/minutes" #define MN_CONF_OBSOLETE_LOCAL_DELAY_SECONDS \ MN_CONF_OBSOLETE_LOCAL_NAMESPACE "/delay/seconds" #define MN_CONF_OBSOLETE_REMOTE_NAMESPACE \ MN_CONF_NAMESPACE "/remote" #define MN_CONF_OBSOLETE_REMOTE_ENABLED \ MN_CONF_OBSOLETE_REMOTE_NAMESPACE "/enabled" #define MN_CONF_OBSOLETE_REMOTE_DELAY_MINUTES \ MN_CONF_OBSOLETE_REMOTE_NAMESPACE "/delay/minutes" #define MN_CONF_OBSOLETE_REMOTE_DELAY_SECONDS \ MN_CONF_OBSOLETE_REMOTE_NAMESPACE "/delay/seconds" #define MN_CONF_OBSOLETE_COMMANDS_CLICKED_NAMESPACE \ MN_CONF_COMMANDS_NAMESPACE "/clicked" #define MN_CONF_OBSOLETE_COMMANDS_CLICKED_ENABLED \ MN_CONF_OBSOLETE_COMMANDS_CLICKED_NAMESPACE "/enabled" #define MN_CONF_OBSOLETE_COMMANDS_CLICKED_COMMAND \ MN_CONF_OBSOLETE_COMMANDS_CLICKED_NAMESPACE "/command" #define MN_CONF_OBSOLETE_COMMANDS_DOUBLE_CLICKED_NAMESPACE \ MN_CONF_COMMANDS_NAMESPACE "/double-clicked" #define MN_CONF_OBSOLETE_COMMANDS_DOUBLE_CLICKED_ENABLED \ MN_CONF_OBSOLETE_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/enabled" #define MN_CONF_OBSOLETE_COMMANDS_DOUBLE_CLICKED_COMMAND \ MN_CONF_OBSOLETE_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/command" #define MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_NAMESPACE \ MN_CONF_COMMANDS_NAMESPACE "/mail-reader" #define MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_ENABLED \ MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_NAMESPACE "/enabled" #define MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_COMMAND \ MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_NAMESPACE "/command" #define MN_CONF_OBSOLETE_PREFERENCES_DIALOG \ MN_CONF_UI_NAMESPACE "/preferences-dialog" #define MN_CONF_OBSOLETE_SUMMARY_DIALOG \ MN_CONF_UI_NAMESPACE "/summary-dialog" #define MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION \ MN_CONF_NAMESPACE "/double-click-action" #define MN_CONF_OBSOLETE_ALREADY_RUN \ MN_CONF_NAMESPACE "/already-run" #define MN_CONF_OBSOLETE_SUMMARY_TOOLTIP \ MN_CONF_NAMESPACE "/summary-tooltip" #define MN_CONF_OBSOLETE_DELAY_NAMESPACE \ MN_CONF_NAMESPACE "/delay" #define MN_CONF_OBSOLETE_DELAY_MINUTES \ MN_CONF_OBSOLETE_DELAY_NAMESPACE "/minutes" #define MN_CONF_OBSOLETE_DELAY_SECONDS \ MN_CONF_OBSOLETE_DELAY_NAMESPACE "/seconds" #define MN_CONF_OBSOLETE_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE \ MN_CONF_UI_NAMESPACE "/immediate-notification-error-dialog" #define MN_CONF_OBSOLETE_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW \ MN_CONF_OBSOLETE_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE "/do-not-show" #define MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION_2 \ MN_CONF_NAMESPACE "/double-click-action-2" #define MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE \ MN_CONF_UI_NAMESPACE "/main-window" #define MN_CONF_OBSOLETE_MAIN_WINDOW_DIMENSIONS \ MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE "/dimensions" #define MN_CONF_OBSOLETE_MAIN_WINDOW_VIEW_TOOLBARS \ MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE "/view-toolbars" #define MN_CONF_OBSOLETE_MAIN_WINDOW_VIEW_STATUSBAR \ MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE "/view-statusbar" #define MN_CONF_OBSOLETE_MAIN_WINDOW_TOOLBARS_STYLE \ MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE "/toolbars-style" #define MN_CONF_OBSOLETE_MAIN_WINDOW_EDIT_TOOLBARS_DIALOG \ MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE "/edit-toolbars-dialog" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE \ MN_CONF_NAMESPACE "/mail-summary-popup" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_ENABLE \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/enable" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/autoclose" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/autoclose-delay" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE "/minutes" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE "/seconds" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_LAYOUT \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/layout" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_POSITION \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/position" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/offset" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE "/horizontal" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE "/vertical" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_ONLY_RECENT \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/only-recent" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/fonts" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE "/aspect-source" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_TITLE_NAMESPACE \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE "/title" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_TITLE_FONT \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_TITLE_NAMESPACE "/font" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_NAMESPACE \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE "/contents" #define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_FONT \ MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_NAMESPACE "/font" #define MN_CONF_OBSOLETE_CLICK_ACTION \ MN_CONF_NAMESPACE "/click-action" #define MN_CONF_OBSOLETE_CLICK_ACTION_2 \ MN_CONF_NAMESPACE "/click-action-2" #define MN_CONF_OBSOLETE_POPUPS_EXPIRATION_DELAY_NAMESPACE \ MN_CONF_POPUPS_EXPIRATION_NAMESPACE "/delay" #define MN_CONF_OBSOLETE_POPUPS_EXPIRATION_DELAY_MINUTES \ MN_CONF_OBSOLETE_POPUPS_EXPIRATION_DELAY_NAMESPACE "/minutes" #define MN_CONF_OBSOLETE_POPUPS_EXPIRATION_DELAY_SECONDS \ MN_CONF_OBSOLETE_POPUPS_EXPIRATION_DELAY_NAMESPACE "/seconds" #define BLOCK(info) \ g_signal_handler_block((info)->object, (info)->handler_id) #define UNBLOCK(info) \ g_signal_handler_unblock((info)->object, (info)->handler_id) #define LINK_INFO(ptr) ((LinkInfo *) (ptr)) typedef struct { gpointer object; char *key; unsigned long handler_id; GDestroyNotify finalize; } LinkInfo; typedef struct { LinkInfo parent; char *str; } LinkRadioButtonToStringInfo; typedef struct { LinkInfo parent; char *width_key; char *height_key; } LinkWindowInfo; typedef struct { LinkInfo parent; GParamSpec *pspec; } LinkObjectInfo; const char *mn_conf_dot_dir = NULL; #if WITH_GCONF_SANITY_CHECK /* * If the GConf schemas were not installed properly, refuse to * proceed. This ensures that MN will not behave unexpectedly because * of missing default values. The --disable-gconf-sanity-check * configure argument disables this check and is meant to be used for * development only. */ static void check_schemas (void) { static const char *keys[] = { MN_CONF_COMMANDS_NEW_MAIL_ENABLED, MN_CONF_COMMANDS_NEW_MAIL_COMMAND, MN_CONF_COMMANDS_MAIL_READ_ENABLED, MN_CONF_COMMANDS_MAIL_READ_COMMAND, MN_CONF_COMMANDS_MAIL_CHANGED_ENABLED, MN_CONF_COMMANDS_MAIL_CHANGED_COMMAND, MN_CONF_SOUNDS_NEW_MAIL_ENABLED, MN_CONF_SOUNDS_NEW_MAIL_FILE, MN_CONF_SOUNDS_PLAY_COMMAND, MN_CONF_PROPERTIES_DIALOG "/width", MN_CONF_PROPERTIES_DIALOG "/height", MN_CONF_BLINK_ON_ERRORS, MN_CONF_TRUSTED_X509_CERTIFICATES, MN_CONF_TRUSTED_SERVERS, MN_CONF_DISPLAY_SEEN_MAIL, MN_CONF_TOOLTIP_MAIL_SUMMARY, MN_CONF_TOOLTIP_MAIL_SUMMARY_LIMIT, MN_CONF_ALWAYS_DISPLAY_ICON, MN_CONF_DISPLAY_MESSAGE_COUNT, MN_CONF_CLICK_ACTION, MN_CONF_POPUPS_ENABLED, MN_CONF_POPUPS_POSITION, MN_CONF_POPUPS_EXPIRATION_ENABLED, MN_CONF_POPUPS_EXPIRATION_DELAY, MN_CONF_POPUPS_ACTIONS, MN_CONF_POPUPS_LIMIT, MN_CONF_FALLBACK_CHARSETS, MN_CONF_POPUPS_EXPIRATION_DELAY, MN_CONF_MESSAGES_CONSIDERED_AS_READ }; int i; GConfClient *client; gboolean schema_missing = FALSE; client = mn_conf_get_client(); g_assert(client != NULL); for (i = 0; i < G_N_ELEMENTS(keys); i++) { GConfEntry *entry; entry = gconf_client_get_entry(client, keys[i], NULL, TRUE, NULL); if (entry) { gboolean has_schema; has_schema = gconf_entry_get_schema_name(entry) != NULL; gconf_entry_unref(entry); if (has_schema) continue; } g_warning(_("cannot find default value of configuration key \"%s\""), keys[i]); schema_missing = TRUE; } if (schema_missing) mn_show_fatal_error_dialog(NULL, _("The default configuration has not been installed properly. Please check your Mail Notification installation.")); } #endif /* WITH_GCONF_SANITY_CHECK */ static void import_obsolete_key (const char *obsolete, const char *new) { g_return_if_fail(obsolete != NULL); g_return_if_fail(new != NULL); if (! mn_conf_is_set(new) && mn_conf_is_set(obsolete)) { GConfValue *value; value = mn_conf_get_value(obsolete); if (value) { mn_conf_set_value(new, value); gconf_value_free(value); } } } void mn_conf_init (void) { g_assert(mn_conf_dot_dir == NULL); mn_conf_dot_dir = g_build_filename(g_get_home_dir(), GNOME_DOT_GNOME, "mail-notification", NULL); if (! g_file_test(mn_conf_dot_dir, G_FILE_TEST_IS_DIR)) { if (mkdir(mn_conf_dot_dir, 0755) < 0) mn_show_error_dialog(NULL, _("A directory creation error has occurred"), _("Unable to create directory \"%s\": %s."), mn_conf_dot_dir, g_strerror(errno)); } #if WITH_GCONF_SANITY_CHECK check_schemas(); #endif mn_conf_monitor_add(MN_CONF_NAMESPACE); import_obsolete_key(MN_CONF_OBSOLETE_PREFERENCES_DIALOG "/height", MN_CONF_PROPERTIES_DIALOG "/height"); import_obsolete_key(MN_CONF_OBSOLETE_PREFERENCES_DIALOG "/width", MN_CONF_PROPERTIES_DIALOG "/width"); import_obsolete_key(MN_CONF_OBSOLETE_CLICK_ACTION, MN_CONF_CLICK_ACTION); if (! mn_conf_is_set(MN_CONF_TOOLTIP_MAIL_SUMMARY) && mn_conf_is_set(MN_CONF_OBSOLETE_SUMMARY_TOOLTIP)) { if (! mn_conf_get_bool(MN_CONF_OBSOLETE_SUMMARY_TOOLTIP)) mn_conf_set_string(MN_CONF_TOOLTIP_MAIL_SUMMARY, mn_enum_get_value_nick(MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY, MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE)); } if (! mn_conf_is_set(MN_CONF_POPUPS_EXPIRATION_DELAY) && (mn_conf_is_set(MN_CONF_OBSOLETE_POPUPS_EXPIRATION_DELAY_MINUTES) || mn_conf_is_set(MN_CONF_OBSOLETE_POPUPS_EXPIRATION_DELAY_SECONDS))) { int minutes; int seconds; minutes = mn_conf_get_int(MN_CONF_OBSOLETE_POPUPS_EXPIRATION_DELAY_MINUTES); seconds = mn_conf_get_int(MN_CONF_OBSOLETE_POPUPS_EXPIRATION_DELAY_SECONDS); mn_conf_set_int(MN_CONF_POPUPS_EXPIRATION_DELAY, minutes * 60 + seconds); } } void mn_conf_unset_obsolete (void) { static const char *obsolete[] = { MN_CONF_OBSOLETE_LOCAL_NAMESPACE, MN_CONF_OBSOLETE_REMOTE_NAMESPACE, MN_CONF_OBSOLETE_COMMANDS_CLICKED_NAMESPACE, MN_CONF_OBSOLETE_COMMANDS_DOUBLE_CLICKED_NAMESPACE, MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_NAMESPACE, MN_CONF_OBSOLETE_PREFERENCES_DIALOG, MN_CONF_OBSOLETE_SUMMARY_DIALOG, MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION, MN_CONF_OBSOLETE_MAILBOXES, MN_CONF_OBSOLETE_ALREADY_RUN, MN_CONF_OBSOLETE_SUMMARY_TOOLTIP, MN_CONF_OBSOLETE_DELAY_NAMESPACE, MN_CONF_OBSOLETE_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE, MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION_2, MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE, MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE, MN_CONF_OBSOLETE_CLICK_ACTION, MN_CONF_OBSOLETE_CLICK_ACTION_2, MN_CONF_OBSOLETE_POPUPS_EXPIRATION_DELAY_NAMESPACE }; int i; for (i = 0; i < G_N_ELEMENTS(obsolete); i++) { g_message(_("recursively unsetting %s"), obsolete[i]); mn_conf_recursive_unset(obsolete[i], GCONF_UNSET_INCLUDING_SCHEMA_NAMES); } g_message(_("syncing the GConf database")); mn_conf_suggest_sync(); g_message(_("completed")); } GConfClient * mn_conf_get_client (void) { static GConfClient *client = NULL; /* * Does not need to be thread-safe since it is always called early * in the main thread. */ if (! client) { client = gconf_client_get_default(); g_assert(client != NULL); } return client; } static void handle_error (GError **err) { if (*err) mn_show_fatal_error_dialog(NULL, "A GConf error has occurred: %s.", (*err)->message); } GConfValue * mn_conf_get_value (const char *key) { GConfValue *v; GError *err = NULL; g_return_val_if_fail(key != NULL, NULL); v = gconf_client_get(mn_conf_get_client(), key, &err); handle_error(&err); return v; } void mn_conf_set_value (const char *key, const GConfValue *value) { GError *err = NULL; g_return_if_fail(key != NULL); g_return_if_fail(value != NULL); gconf_client_set(mn_conf_get_client(), key, value, &err); handle_error(&err); } #define CONF_GETTER(name, ctype, fail_retval) \ ctype \ mn_conf_get_ ## name (const char *key) \ { \ ctype v; \ GError *err = NULL; \ \ g_return_val_if_fail(key != NULL, (fail_retval)); \ \ v = gconf_client_get_ ## name(mn_conf_get_client(), key, &err); \ handle_error(&err); \ \ return v; \ } #define CONF_SETTER(name, ctype) \ void \ mn_conf_set_ ## name (const char *key, ctype value) \ { \ GError *err = NULL; \ \ g_return_if_fail(key != NULL); \ \ gconf_client_set_ ## name(mn_conf_get_client(), key, value, &err); \ handle_error(&err); \ } #define CONF_ACCESSORS(name, get_ctype, set_ctype, fail_retval) \ CONF_GETTER(name, get_ctype, fail_retval) \ CONF_SETTER(name, set_ctype) CONF_ACCESSORS(bool, gboolean, gboolean, FALSE) CONF_ACCESSORS(int, int, int, 0) CONF_ACCESSORS(string, char *, const char *, NULL) GSList * mn_conf_get_string_list (const char *key) { GSList *v; GError *err = NULL; g_return_val_if_fail(key != NULL, NULL); v = gconf_client_get_list(mn_conf_get_client(), key, GCONF_VALUE_STRING, &err); handle_error(&err); return v; } void mn_conf_set_string_list (const char *key, GSList *list) { GError *err = NULL; g_return_if_fail(key != NULL); gconf_client_set_list(mn_conf_get_client(), key, GCONF_VALUE_STRING, list, &err); handle_error(&err); } GHashTable * mn_conf_get_string_hash_set (const char *key) { GSList *list; GSList *l; GHashTable *set; g_return_val_if_fail(key != NULL, NULL); list = mn_conf_get_string_list(key); set = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); MN_LIST_FOREACH(l, list) { const char *str = l->data; g_hash_table_replace(set, g_strdup(str), GINT_TO_POINTER(TRUE)); } mn_g_slist_free_deep(list); return set; } static void set_string_hash_set_cb (const char *str, gpointer value, GSList **list) { *list = g_slist_prepend(*list, (gpointer) str); } void mn_conf_set_string_hash_set (const char *key, GHashTable *set) { GSList *list = NULL; g_return_if_fail(key != NULL); g_return_if_fail(set != NULL); g_hash_table_foreach(set, (GHFunc) set_string_hash_set_cb, &list); mn_conf_set_string_list(key, list); g_slist_free(list); } void mn_conf_suggest_sync (void) { GError *err = NULL; gconf_client_suggest_sync(mn_conf_get_client(), &err); handle_error(&err); } void mn_conf_recursive_unset (const char *key, GConfUnsetFlags flags) { GError *err = NULL; g_return_if_fail(key != NULL); gconf_client_recursive_unset(mn_conf_get_client(), key, flags, &err); handle_error(&err); } gboolean mn_conf_is_set (const char *key) { GConfValue *value; GError *err = NULL; gboolean set = FALSE; g_return_val_if_fail(key != NULL, FALSE); value = gconf_client_get_without_default(mn_conf_get_client(), key, &err); if (value) { set = TRUE; gconf_value_free(value); } if (err) { g_error_free(err); set = FALSE; } return set; } void mn_conf_monitor_add (const char *directory) { GError *err = NULL; gconf_client_add_dir(mn_conf_get_client(), directory, GCONF_CLIENT_PRELOAD_NONE, &err); handle_error(&err); } unsigned int mn_conf_notification_add (const char *key, GConfClientNotifyFunc callback, gpointer user_data, GFreeFunc destroy_notify) { unsigned int id; GError *err = NULL; g_return_val_if_fail(key != NULL, 0); g_return_val_if_fail(callback != NULL, 0); id = gconf_client_notify_add(mn_conf_get_client(), key, callback, user_data, destroy_notify, &err); handle_error(&err); return id; } void mn_conf_notification_remove (unsigned int notification_id) { gconf_client_notify_remove(mn_conf_get_client(), notification_id); } static void link_weak_notify_cb (gpointer data, GObject *former_object) { LinkInfo *info = data; if (info->finalize) info->finalize(info); g_free(info); } static void link_real (LinkInfo *info, gpointer object, const char *key, const char *signal_name, GCallback signal_handler, GConfClientNotifyFunc notification_cb) { g_return_if_fail(G_IS_OBJECT(object)); g_return_if_fail(key != NULL); g_return_if_fail(signal_name != NULL); g_return_if_fail(signal_handler != NULL); g_return_if_fail(notification_cb != NULL); if (info) { g_return_if_fail(info->object == NULL); g_return_if_fail(info->key == NULL); g_return_if_fail(info->handler_id == 0); } else info = g_new0(LinkInfo, 1); info->object = object; info->key = g_strdup(key); info->handler_id = g_signal_connect(object, signal_name, signal_handler, info); mn_g_object_gconf_notification_add_gdk_locked(object, key, notification_cb, info); g_object_weak_ref(object, link_weak_notify_cb, info); } static void link_object_set (gpointer object, GParamSpec *pspec, const GConfValue *value) { GValue gvalue = { 0, }; g_return_if_fail(G_IS_OBJECT(object)); g_return_if_fail(pspec != NULL); if (! value) return; g_value_init(&gvalue, G_PARAM_SPEC_VALUE_TYPE(pspec)); if (G_PARAM_SPEC_VALUE_TYPE(pspec) == G_TYPE_BOOLEAN) g_value_set_boolean(&gvalue, gconf_value_get_bool(value)); else if (G_PARAM_SPEC_VALUE_TYPE(pspec) == G_TYPE_STRING) g_value_set_string(&gvalue, gconf_value_get_string(value)); else g_return_if_reached(); g_object_set_property(object, g_param_spec_get_name(pspec), &gvalue); g_value_unset(&gvalue); } static void link_object_h (GObject *object, GParamSpec *pspec, gpointer user_data) { LinkInfo *info = user_data; GValue value = { 0, }; g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(pspec)); g_object_get_property(object, g_param_spec_get_name(pspec), &value); if (G_PARAM_SPEC_VALUE_TYPE(pspec) == G_TYPE_BOOLEAN) mn_conf_set_bool(info->key, g_value_get_boolean(&value)); else if (G_PARAM_SPEC_VALUE_TYPE(pspec) == G_TYPE_STRING) { const char *str = g_value_get_string(&value); mn_conf_set_string(info->key, str ? str : ""); } else g_return_if_reached(); g_value_unset(&value); } static void link_object_notify_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { LinkObjectInfo *info = user_data; BLOCK(LINK_INFO(info)); link_object_set(LINK_INFO(info)->object, info->pspec, gconf_entry_get_value(entry)); UNBLOCK(LINK_INFO(info)); } void mn_conf_link_object (gpointer object, const char *key, const char *property_name) { LinkObjectInfo *info; GConfValue *value; char *signal_name; g_return_if_fail(G_IS_OBJECT(object)); g_return_if_fail(key != NULL); g_return_if_fail(property_name != NULL); info = g_new0(LinkObjectInfo, 1); info->pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(object), property_name); g_return_if_fail(info->pspec != NULL); value = mn_conf_get_value(key); link_object_set(object, info->pspec, value); if (value) gconf_value_free(value); signal_name = g_strconcat("notify::", property_name, NULL); link_real(LINK_INFO(info), object, key, signal_name, G_CALLBACK(link_object_h), link_object_notify_cb); g_free(signal_name); } static gboolean link_window_h (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { LinkWindowInfo *info = user_data; mn_conf_set_int(info->width_key, event->width); mn_conf_set_int(info->height_key, event->height); return FALSE; } static void link_window_notify_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { LinkWindowInfo *info = user_data; BLOCK(LINK_INFO(info)); gtk_window_resize(LINK_INFO(info)->object, mn_conf_get_int(info->width_key), mn_conf_get_int(info->height_key)); UNBLOCK(LINK_INFO(info)); } static void link_window_free_info (LinkWindowInfo *info) { g_free(info->width_key); g_free(info->height_key); } void mn_conf_link_window (GtkWindow *window, const char *key) { LinkWindowInfo *window_info; LinkInfo *info; g_return_if_fail(GTK_IS_WINDOW(window)); g_return_if_fail(key != NULL); window_info = g_new0(LinkWindowInfo, 1); window_info->width_key = g_strdup_printf("%s/width", key); window_info->height_key = g_strdup_printf("%s/height", key); info = LINK_INFO(window_info); info->finalize = (GDestroyNotify) link_window_free_info; gtk_window_set_default_size(window, mn_conf_get_int(window_info->width_key), mn_conf_get_int(window_info->height_key)); link_real(info, window, key, "configure-event", G_CALLBACK(link_window_h), link_window_notify_cb); } static void link_non_linear_range_h (GtkRange *range, gpointer user_data) { LinkInfo *info = user_data; mn_conf_set_int(info->key, mn_non_linear_range_get_value(range)); } static void link_non_linear_range_notify_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { GConfValue *value = gconf_entry_get_value(entry); LinkInfo *info = user_data; BLOCK(info); mn_non_linear_range_set_value(info->object, value ? gconf_value_get_int(value) : 0); UNBLOCK(info); } void mn_conf_link_non_linear_range (GtkRange *range, const char *key) { g_return_if_fail(mn_is_non_linear_range(range)); g_return_if_fail(key != NULL); mn_non_linear_range_set_value(range, mn_conf_get_int(key)); link_real(NULL, range, key, "value-changed", G_CALLBACK(link_non_linear_range_h), link_non_linear_range_notify_cb); } static void link_radio_button_to_string_h (GtkToggleButton *toggle, gpointer user_data) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle))) { LinkRadioButtonToStringInfo *info = user_data; mn_conf_set_string(LINK_INFO(info)->key, info->str); } } static void link_radio_button_to_string_notify_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { LinkRadioButtonToStringInfo *info = user_data; GConfValue *value = gconf_entry_get_value(entry); const char *str = value ? gconf_value_get_string(value) : NULL; if (str && ! strcmp(str, info->str)) { BLOCK(LINK_INFO(info)); gtk_toggle_button_set_active(LINK_INFO(info)->object, TRUE); UNBLOCK(LINK_INFO(info)); } } static void link_radio_button_to_string_free_info (LinkRadioButtonToStringInfo *info) { g_free(info->str); } static void link_radio_button_to_string (GtkRadioButton *radio, const char *key, const char *str) { LinkRadioButtonToStringInfo *rinfo; LinkInfo *info; char *current_str; g_return_if_fail(GTK_IS_RADIO_BUTTON(radio)); g_return_if_fail(key != NULL); g_return_if_fail(str != NULL); current_str = mn_conf_get_string(key); if (current_str) { if (! strcmp(current_str, str)) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE); g_free(current_str); } rinfo = g_new0(LinkRadioButtonToStringInfo, 1); rinfo->str = g_strdup(str); info = LINK_INFO(rinfo); info->finalize = (GDestroyNotify) link_radio_button_to_string_free_info; link_real(info, radio, key, "toggled", G_CALLBACK(link_radio_button_to_string_h), link_radio_button_to_string_notify_cb); } void mn_conf_link_radio_group_to_enum (GType enum_type, const char *key, ...) { GEnumClass *enum_class; GtkRadioButton *radio; va_list args; g_return_if_fail(G_TYPE_IS_ENUM(enum_type)); g_return_if_fail(key != NULL); enum_class = g_type_class_ref(enum_type); g_return_if_fail(G_IS_ENUM_CLASS(enum_class)); va_start(args, key); while ((radio = va_arg(args, GtkRadioButton *))) { int value; GEnumValue *enum_value; value = va_arg(args, int); enum_value = g_enum_get_value(enum_class, value); g_return_if_fail(enum_value != NULL); link_radio_button_to_string(radio, key, enum_value->value_nick); } va_end(args); g_type_class_unref(enum_class); } int mn_conf_get_enum_value (GType enum_type, const char *key) { GEnumClass *enum_class; GEnumValue *enum_value = NULL; char *nick; g_return_val_if_fail(G_TYPE_IS_ENUM(enum_type), 0); g_return_val_if_fail(key != NULL, 0); enum_class = g_type_class_ref(enum_type); g_return_val_if_fail(G_IS_ENUM_CLASS(enum_class), 0); nick = mn_conf_get_string(key); if (nick) { enum_value = g_enum_get_value_by_nick(enum_class, nick); g_free(nick); } g_type_class_unref(enum_class); return enum_value ? enum_value->value : 0; } gboolean mn_conf_has_command (const char *namespace) { char *enabled_key; gboolean has = FALSE; g_return_val_if_fail(namespace != NULL, FALSE); enabled_key = g_strconcat(namespace, "/enabled", NULL); if (mn_conf_get_bool(enabled_key)) { char *command_key; char *command; command_key = g_strconcat(namespace, "/command", NULL); command = mn_conf_get_string(command_key); g_free(command_key); if (command) { if (*command) has = TRUE; g_free(command); } } g_free(enabled_key); return has; } void mn_conf_execute_command (const char *conf_key) { char *command; g_return_if_fail(conf_key != NULL); command = mn_conf_get_string(conf_key); g_return_if_fail(command != NULL && *command != 0); mn_execute_command(command); g_free(command); } void mn_conf_execute_mail_reader (void) { char *command; char *separator; char *program; command = mn_conf_get_string(MN_CONF_GNOME_MAIL_READER_COMMAND); g_return_if_fail(command != NULL && *command != 0); separator = strpbrk(command, " \t\n\r"); program = separator ? g_strndup(command, separator - command) : g_strdup(command); g_free(command); if (! strcmp(program, "mozilla")) command = g_strdup_printf("%s -mail", program); else if (! strcmp(program, "evolution")) command = g_strdup_printf("%s --component=mail", program); else command = g_strdup(program); g_free(program); if (mn_conf_get_bool(MN_CONF_GNOME_MAIL_READER_NEEDS_TERMINAL)) mn_execute_command_in_terminal(command); else mn_execute_command(command); g_free(command); } mail-notification-5.4.dfsg.1/src/mn-evolution-server.gob0000644000175000001440000002165411015312440023072 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %{ #include #include #include #include #include #include #include #include #include #include #include "mn-evolution.h" #include "mn-evolution-folder-tree-server.h" #include "mn-evolution-plugin.h" /* see https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=208774 */ static GHashTable *folders = NULL; typedef struct { char *uri; CamelFolder *folder; } FolderInfo; #define MN_EVOLUTION_SERVER_ERROR (mn_evolution_server_error_quark()) typedef enum { MN_EVOLUTION_SERVER_ERROR_FOLDER_NOT_FOUND, MN_EVOLUTION_SERVER_ERROR_MESSAGE_NOT_FOUND, MN_EVOLUTION_SERVER_ERROR_FOLDER_TREE_REGISTRATION_FAILED, } MNEvolutionServerError; %} %afterdecls{ #include "mn-evolution-server-dbus.h" %} /* * We hold the GDK lock because Evolution is multi-threaded and D-Bus * interface methods are run from a main loop callback. */ class MN:Evolution:Server { signal NONE (STRING) void folder_changed (self, const char *uri (check null)); signal NONE (STRING) void message_reading (self, const char *uri (check null)); class_init (class) { dbus_g_object_type_install_info(TYPE_SELF, &dbus_glib_mn_evolution_server_object_info); } private GQuark error_quark (void) { return g_quark_from_static_string("mn-evolution-server-error"); } private void cache_folder (const char *uri (check null), CamelFolder *folder (check null)) { FolderInfo *info; info = g_new0(FolderInfo, 1); info->uri = g_strdup(uri); info->folder = folder; camel_object_ref(folder); /* uncache the folder when it is deleted */ camel_object_hook_event(folder, "deleted", self_folder_deleted_cb, info); g_hash_table_replace(folders, info->uri, info); } private void folder_info_free (FolderInfo *info (check null)) { camel_object_unhook_event(info->folder, "deleted", self_folder_deleted_cb, info); camel_object_unref(info->folder); g_free(info->uri); g_free(info); } private void folder_deleted_cb (CamelObject *object, gpointer event_data, gpointer user_data) { FolderInfo *info = user_data; gboolean status; status = g_hash_table_remove(folders, info->uri); g_assert(status == TRUE); } private CamelFolder * lookup_folder (const char *uri (check null), GError **err) { CamelFolder *folder = NULL; if (folders) { FolderInfo *info; info = g_hash_table_lookup(folders, uri); if (info) { folder = info->folder; camel_object_ref(folder); } } else folders = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) self_folder_info_free); if (! folder) { folder = mail_tool_uri_to_folder(uri, 0, NULL); if (folder) self_cache_folder(uri, folder); else g_set_error(err, MN_EVOLUTION_SERVER_ERROR, MN_EVOLUTION_SERVER_ERROR_FOLDER_NOT_FOUND, dgettext(GETTEXT_PACKAGE, "folder not found")); } return folder; } private GValueArray * value_array_new (GType type, ...) { GValueArray *value_array; va_list args; value_array = g_value_array_new(0); va_start(args, type); while (type) { GValue value = { 0, }; char *error = NULL; g_value_init(&value, type); G_VALUE_COLLECT(&value, args, 0, &error); g_assert(error == NULL); g_value_array_append(value_array, &value); g_value_unset(&value); type = va_arg(args, GType); } va_end(args); return value_array; } private GValueArray * camel_message_info_to_dbus_struct (CamelMessageInfo *info (check null)) { const CamelSummaryMessageID *id; char hexhash[sizeof(CamelSummaryMessageID) * 2 + 1]; int i; id = camel_message_info_message_id(info); for (i = 0; i < sizeof(id->id.hash); i++) sprintf(hexhash + i * 2, "%.2x", id->id.hash[i]); g_assert(camel_message_info_uid(info) != NULL); return self_value_array_new(/* char *uid */ G_TYPE_STRING, camel_message_info_uid(info), /* unsigned int sent_time */ G_TYPE_UINT, (unsigned int) camel_message_info_date_sent(info), /* unsigned int received_time */ G_TYPE_UINT, (unsigned int) camel_message_info_date_received(info), /* char *id */ G_TYPE_STRING, hexhash, /* char *from */ G_TYPE_STRING, camel_message_info_from(info), /* char *subject */ G_TYPE_STRING, camel_message_info_subject(info), (GType) 0); } private gboolean get_unseen_messages (self, const char *folder_uri (check null), GPtrArray **ret (check null), GError **err) { CamelFolder *folder; GDK_THREADS_ENTER(); folder = self_lookup_folder(folder_uri, err); if (folder) { GPtrArray *summary; int i; *ret = g_ptr_array_new(); summary = camel_folder_get_summary(folder); for (i = 0; i < summary->len; i++) { CamelMessageInfo *info = summary->pdata[i]; if ((camel_message_info_flags(info) & CAMEL_MESSAGE_SEEN) == 0) g_ptr_array_add(*ret, self_camel_message_info_to_dbus_struct(info)); } camel_folder_free_summary(folder, summary); camel_object_unref(folder); } GDK_THREADS_LEAVE(); return folder != NULL; } private gboolean get_folder_name (self, const char *folder_uri (check null), char **ret (check null), GError **err) { CamelFolder *folder; GDK_THREADS_ENTER(); folder = self_lookup_folder(folder_uri, err); if (folder) { *ret = g_strdup(camel_folder_get_name(folder)); camel_object_unref(folder); } GDK_THREADS_LEAVE(); return folder != NULL; } private gboolean open_message (self, const char *folder_uri (check null), const char *message_uid (check null), GError **err) { CamelFolder *folder; GDK_THREADS_ENTER(); folder = self_lookup_folder(folder_uri, err); if (folder) { GtkWidget *browser; /* modelled after Evolution's handleuri_got_folder() */ browser = em_message_browser_window_new(); em_format_set_session((EMFormat *) ((EMFolderView *) browser)->preview, session); em_folder_view_set_folder((EMFolderView *) browser, folder, folder_uri); em_folder_view_set_message((EMFolderView *) browser, message_uid, FALSE); gtk_widget_show(((EMMessageBrowser *) browser)->window); camel_object_unref(folder); } GDK_THREADS_LEAVE(); return folder != NULL; } private gboolean set_message_flags (self, const char *folder_uri (check null), const char *message_uid (check null), unsigned int flags, GError **err) { CamelFolder *folder; gboolean status = FALSE; GDK_THREADS_ENTER(); folder = self_lookup_folder(folder_uri, err); if (folder) { status = camel_folder_set_message_flags(folder, message_uid, flags, flags); camel_object_unref(folder); if (! status) g_set_error(err, MN_EVOLUTION_SERVER_ERROR, MN_EVOLUTION_SERVER_ERROR_MESSAGE_NOT_FOUND, dgettext(GETTEXT_PACKAGE, "message not found")); } GDK_THREADS_LEAVE(); return status; } private gboolean folder_tree_new (self, guint32 id, GError **err) { MNEvolutionFolderTreeServer *tree; char *service; char *path; GError *tmp_err = NULL; gboolean status; GDK_THREADS_ENTER(); tree = mn_evolution_folder_tree_server_new(id); service = g_strdup_printf(MN_EVOLUTION_FOLDER_TREE_SERVER_SERVICE, id); path = g_strdup_printf(MN_EVOLUTION_FOLDER_TREE_SERVER_PATH, id); status = mn_evolution_plugin_register_server(G_OBJECT(tree), service, path, &tmp_err); g_free(service); g_free(path); if (! status) { /* unlikely to ever happen, not worth a translation */ g_set_error(err, MN_EVOLUTION_SERVER_ERROR, MN_EVOLUTION_SERVER_ERROR_FOLDER_TREE_REGISTRATION_FAILED, "cannot register folder tree server: %s", tmp_err->message); g_error_free(tmp_err); g_object_unref(tree); } GDK_THREADS_LEAVE(); return status; } public MNEvolutionServer * new (void) { return GET_NEW; } } mail-notification-5.4.dfsg.1/src/mn-mozilla-mailbox-backend.gob0000644000175000001440000000455511015312440024230 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-base-mbox-mailbox-backend.h" %} %{ #include #include #include "mn-base-mbox-mailbox-backend-private.h" #include "mn-message-mime.h" #include "mn-util.h" /* taken from base/public/nsMsgMessageFlags.h in the Mozilla Mail&News sources */ /* in X-Mozilla-Status */ #define MOZILLA_MSG_FLAG_READ 0x0001 #define MOZILLA_MSG_FLAG_EXPUNGED 0x0008 /* in X-Mozilla-Status2 */ #define MOZILLA_MSG_FLAG_NEW 0x10000 %} class MN:Mozilla:Mailbox:Backend from MN:Base:Mbox:Mailbox:Backend { class_init (class) { MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Mozilla"; } override (MN:Base:Mbox:Mailbox:Backend) MNMessage * get_new_message (MNBaseMboxMailboxBackend *backend, GMimeMessage *mime_message) { int flags; flags = self_get_status_flags(mime_message, "X-Mozilla-Status"); if ((flags & MOZILLA_MSG_FLAG_READ) == 0 && (flags & MOZILLA_MSG_FLAG_EXPUNGED) == 0) { int mn_flags = 0; if ((self_get_status_flags(mime_message, "X-Mozilla-Status2") & MOZILLA_MSG_FLAG_NEW) != 0) mn_flags |= MN_MESSAGE_NEW; return mn_message_new_from_mime_message(MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), mime_message, NULL, mn_flags, FALSE); } else return NULL; } private int get_status_flags (GMime:Message *mime_message (check null type), const char *header_name (check null)) { const char *header; header = g_mime_message_get_header(mime_message, header_name); if (header && mn_str_ishex(header)) return strtol(header, NULL, 16); else return 0; } } mail-notification-5.4.dfsg.1/src/nautilus-cell-renderer-pixbuf-emblem.h0000644000175000001440000000500011015312437025722 0ustar evilynuxusers/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- * * nautilus-cell-renderer-pixbuf-emblem.h: cell renderer which can render * an emblem on top of a pixbuf (for use in FMListView and FMTreeView) * Copyright (C) 2003 Juerg Billeter * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM_H #define NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM_H #include #define NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM \ (nautilus_cell_renderer_pixbuf_emblem_get_type ()) #define NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM(obj) \ (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM, NautilusCellRendererPixbufEmblem)) #define NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM_CLASS(klass) \ (GTK_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM, NautilusCellRendererPixbufEmblemClass)) #define NAUTILUS_IS_CELL_RENDERER_PIXBUF_EMBLEM(obj) \ (GTK_CHECK_TYPE ((obj), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM)) #define NAUTILUS_IS_CELL_RENDERER_PIXBUF_EMBLEM_CLASS(klass) \ (GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM)) typedef struct _NautilusCellRendererPixbufEmblem NautilusCellRendererPixbufEmblem; typedef struct _NautilusCellRendererPixbufEmblemClass NautilusCellRendererPixbufEmblemClass; struct _NautilusCellRendererPixbufEmblem { GtkCellRenderer parent; /*< private >*/ GdkPixbuf *pixbuf; GdkPixbuf *pixbuf_expander_open; GdkPixbuf *pixbuf_expander_closed; GdkPixbuf *pixbuf_emblem; }; struct _NautilusCellRendererPixbufEmblemClass { GtkCellRendererClass parent_class; }; GType nautilus_cell_renderer_pixbuf_emblem_get_type (void); GtkCellRenderer *nautilus_cell_renderer_pixbuf_emblem_new (void); #endif /* NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM_H */ mail-notification-5.4.dfsg.1/src/mn-ssl.h0000644000175000001440000000206611015312437020025 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_SSL_H #define _MN_SSL_H #include #include G_LOCK_EXTERN(mn_ssl); SSL_CTX *mn_ssl_init (GError **err); const char *mn_ssl_get_error (void); const char *mn_ssl_get_io_error (const SSL *ssl, int ret); #endif /* _MN_SSL_H */ mail-notification-5.4.dfsg.1/src/mn-imap-mailbox.gob0000644000175000001440000014262611015312440022124 0ustar evilynuxusers/* * mn-imap-mailbox.gob - IMAP 4rev1 support for Mail Notification * * Compliance: * * - RFC 3501 * - RFC 2177 * - RFC 2192 (subset) * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-pi-mailbox.h" %} %h{ #define MN_IMAP_MAILBOX_N_USE_IDLE 3 extern int mn_imap_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES]; %} %privateheader{ #include "mn-client-session.h" %} %{ #include #include #include #include #include #include #include "mn-mailbox-private.h" #include "mn-authenticated-mailbox-private.h" #include "mn-pi-mailbox-private.h" #include "mn-util.h" #include "mn-message-mime.h" #define HAS_CURRENT_TAG(response, priv) (! strcmp((response)->tag, (priv)->tag)) #define IS(response, token) (! g_ascii_strcasecmp((response)->response, (token))) #define IS_OK(response) IS(response, "OK") #define IS_NO(response) IS(response, "NO") #define IS_BAD(response) IS(response, "BAD") #define IS_BYE(response) IS(response, "BYE") enum { STATE_GREETING = MN_CLIENT_SESSION_INITIAL_STATE, STATE_CAPABILITY, #if WITH_SSL STATE_STARTTLS, #endif #if WITH_SASL STATE_AUTHENTICATE, #endif STATE_LOGIN, STATE_EXAMINE, STATE_SEARCH_UNSEEN, STATE_SEARCH_RECENT, STATE_FETCH_UID, STATE_FETCH, STATE_IDLE, STATE_LOGOUT }; typedef enum { IDLE_STATE_PRE_IDLE, IDLE_STATE_IDLE, IDLE_STATE_POST_IDLE } IdleState; struct _MNClientSessionPrivate { MN_PI_MAILBOX_SESSION_PRIVATE; MNIMAPMailbox *self; const char *server_software; gboolean server_software_supports_idle; int numeric_tag; char tag[5]; char **capabilities; GSList *auth_mechanisms; gboolean authenticated; /* * RFC 3501 specifies that UIDVALIDITY is a 32-bit number, but we do * not need it to be one. Use a string for interoperability purposes * (in case some server vendors did not read the RFC properly). */ char *uidvalidity; int num_errors; GHashTable *messages; #if WITH_SSL gboolean starttls_completed; #endif #if WITH_SASL GSList *sasl_remaining_mechanisms; const char *sasl_mechanism; #endif IdleState idle_state; unsigned int idle_inactivity_timeout_id; gboolean idle_inactivity; gboolean could_idle; /* could idle at least once */ }; struct _MNClientSessionResponse { char *continuation; char *tag; char *response; char *code; char *arguments; }; typedef struct { MNMessage *message; char *mid; int number; MNMessageFlags flags; } MessageInfo; int mn_imap_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES] = { 143, 143, 993 }; /* variable taken from Evolution (camel-utf8.c) */ static const char *utf7_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,"; %} enum MN_IMAP_MAILBOX_USE_IDLE { NEVER, AUTODETECT, ALWAYS } MN:IMAP:Mailbox:Use:IDLE; class MN:IMAP:Mailbox from MN:PI:Mailbox { private GMutex *mutex = {g_mutex_new()} destroywith g_mutex_free; private MNClientSessionPrivate *idle_session; public char *mailbox destroywith g_free; property STRING mailbox (link, flags = CONSTRUCT | MN_MAILBOX_PARAM_LOAD_SAVE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_IGNORE_CASE, default_value = "INBOX"); public MNIMAPMailboxUseIDLE use_idle_extension; property ENUM use_idle_extension (link, enum_type = MN:IMAP:Mailbox:Use:IDLE, flags = CONSTRUCT | MN_MAILBOX_PARAM_LOAD_SAVE, default_value = MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT); class_init (class) { MN_MAILBOX_CLASS(class)->type = "imap"; MN_PI_MAILBOX_CLASS(class)->default_ports = mn_imap_mailbox_default_ports; } init (self) { mn_mailbox_set_format(MN_MAILBOX(self), "IMAP"); } override (MN:Mailbox) void seal (MNMailbox *mailbox) { MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (! mailbox->runtime_name) mailbox->runtime_name = self_build_name(MN_AUTHENTICATED_MAILBOX(mailbox)->username, MN_PI_MAILBOX(mailbox)->hostname, self->mailbox); #if WITH_SSL if (MN_PI_MAILBOX(self)->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL) auth_mailbox->keyring_protocol = g_strdup("imaps"); else #endif auth_mailbox->keyring_protocol = g_strdup("imap"); } /* * Parses a RFC 2192 IMAP URL. * * Note: we only handle a subset of the RFC 2192 specification, * since mailbox lists, message lists and message parts have no * meaning in Mail Notification. Furthermore, Mail Notification * requires an username. */ override (MN:Mailbox) MNMailbox * parse_uri (MNMailbox *dummy, const char *uri) { int len; int buflen; char *username = NULL; char *authmech = NULL; char *hostname; char *path = NULL; int port; MNMailbox *mailbox; len = strlen(uri); buflen = len + 1; { char scheme_buf[buflen]; char auth_buf[buflen]; char location_buf[buflen]; char hostport_buf[buflen]; char path_buf[buflen]; char username_buf[buflen]; char authmech_buf[buflen]; char hostname_buf[buflen]; gboolean has_path; gboolean has_authmech = FALSE; if (! mn_pi_mailbox_split_uri(uri, len, scheme_buf, auth_buf, location_buf)) return NULL; if (strcmp(scheme_buf, "imap")) return NULL; if (! self_split_uri_location(location_buf, len, hostport_buf, path_buf, &has_path)) return NULL; if (! mn_pi_mailbox_split_uri_auth(auth_buf, len, username_buf, authmech_buf, &has_authmech)) return NULL; if (has_authmech && ! strcmp(authmech_buf, "*")) has_authmech = FALSE; mn_pi_mailbox_split_uri_hostport(hostport_buf, len, hostname_buf, &port); username = gnome_vfs_unescape_string(username_buf, NULL); if (has_authmech) authmech = gnome_vfs_unescape_string(authmech_buf, NULL); hostname = gnome_vfs_unescape_string(hostname_buf, NULL); if (has_path) path = gnome_vfs_unescape_string(path_buf, NULL); } mailbox = mn_mailbox_new("imap", "username", username, "authmech", authmech, "hostname", hostname, "port", port, NULL); if (path) g_object_set(mailbox, MN_IMAP_MAILBOX_PROP_MAILBOX(path), NULL); g_free(username); g_free(authmech); g_free(hostname); g_free(path); return mailbox; } private gboolean split_uri_location (const char *location (check null), int maxlen, char *hostport (check null), char *path (check null), gboolean *has_path (check null)) { char *pat; int n; pat = g_strdup_printf("%%%i[^/]/%%%is", maxlen, maxlen); n = sscanf(location, pat, hostport, path); g_free(pat); g_return_val_if_fail(n >= 1, FALSE); *has_path = n == 2; if (*has_path) { /* we only handle enc_mailbox (see the RFC 2192 ABNF) */ if (strspn(path, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),%&=~:@/") != strlen(path)) return FALSE; /* more than enc_mailbox, unhandled */ } return TRUE; } override (MN:Mailbox) void removed (MNMailbox *mailbox) { Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); self_lock(self); if (selfp->idle_session) { mn_client_session_write(selfp->idle_session->session, "DONE"); selfp->idle_session->idle_state = IDLE_STATE_POST_IDLE; } self_unlock(self); } private int handle_greeting_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { priv->session = session; if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (! response->tag && IS_OK(response)) { self_session_detect_imapd(session, response, priv); return self_session_handle_capability_code(priv, response) ? self_session_after_capability(priv) : STATE_CAPABILITY; } else if (! response->tag && IS(response, "PREAUTH")) { priv->authenticated = TRUE; self_session_detect_imapd(session, response, priv); return self_session_handle_capability_code(priv, response) ? self_session_after_capability(priv) : STATE_CAPABILITY; } else if (! response->tag && IS_BYE(response)) return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } private int enter_capability_cb (MNClientSession *session, MNClientSessionPrivate *priv) { return self_session_write(priv, "CAPABILITY"); } private int handle_capability_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { return priv->capabilities ? self_session_after_capability(priv) : mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send capabilities")); } else if (IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (IS(response, "CAPABILITY")) { self_session_parse_capabilities(priv, response->arguments); return MN_CLIENT_SESSION_RESULT_CONTINUE; } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); } private int enter_starttls_cb (MNClientSession *session, MNClientSessionPrivate *priv) { #if WITH_SSL return self_session_write(priv, "STARTTLS"); #else g_assert_not_reached(); return 0; #endif /* WITH_SSL */ } private int handle_starttls_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { #if WITH_SSL if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { priv->starttls_completed = TRUE; return mn_client_session_enable_ssl(session) ? STATE_CAPABILITY : MN_CLIENT_SESSION_RESULT_DISCONNECT; } else if (IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); #else g_assert_not_reached(); return 0; #endif /* WITH_SSL */ } private int enter_authenticate_cb (MNClientSession *session, MNClientSessionPrivate *priv) { #if WITH_SASL priv->sasl_mechanism = NULL; if (mn_client_session_sasl_authentication_start(priv->session, "imap", priv->sasl_remaining_mechanisms, priv->pi_mailbox->authmech, &priv->sasl_mechanism, NULL, /* [1] */ NULL)) /* [1] */ { g_assert(priv->sasl_mechanism != NULL); return self_session_write(priv, "AUTHENTICATE %s", priv->sasl_mechanism); } else return priv->auth_mailbox->auth_cancelled ? STATE_LOGOUT : self_session_authenticate_fallback(priv, FALSE); /* * [1] RFC 3501 6.2.2 specifies that the IMAP protocol does not * support the initial client response feature of SASL. */ #else g_assert_not_reached(); return 0; #endif /* WITH_SASL */ } private int handle_authenticate_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { #if WITH_SASL if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { if (mn_client_session_sasl_authentication_done(session)) { priv->authenticated = TRUE; /* * RFC 3501 2.2.2: * * A server MAY include a CAPABILITY response code * in the tagged OK response of a successful * AUTHENTICATE command in order to send * capabilities automatically. It is unnecessary * for a client to send a separate CAPABILITY * command if it recognizes these automatic * capabilities. This should only be done if a * security layer was not negotiated by the * AUTHENTICATE command, because the tagged OK * response as part of an AUTHENTICATE command is * not protected by encryption/integrity checking. * [SASL] requires the client to re-issue a * CAPABILITY command in this case. */ return self_session_handle_capability_code(priv, response) && mn_client_session_sasl_get_ssf(session) ? STATE_EXAMINE : STATE_CAPABILITY; } else return MN_CLIENT_SESSION_RESULT_DISCONNECT; } else if (IS_NO(response) || IS_BAD(response)) { return priv->auth_mailbox->auth_cancelled ? STATE_LOGOUT : self_session_authenticate_fallback(priv, FALSE); } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (response->continuation) return mn_client_session_sasl_authentication_step(session, response->continuation); return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); #else g_assert_not_reached(); return 0; #endif /* WITH_SASL */ } private int enter_login_cb (MNClientSession *session, MNClientSessionPrivate *priv) { if (self_session_has_capability(priv, "LOGINDISABLED")) { mn_client_session_notice(session, _("server advertised LOGINDISABLED, not using LOGIN authentication")); mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to login")); return STATE_LOGOUT; } else { char *quoted_username; char *quoted_password; int result; if (! mn_authenticated_mailbox_fill_password(priv->auth_mailbox, TRUE)) return STATE_LOGOUT; quoted_username = self_quote(priv->auth_mailbox->username); quoted_password = self_quote(priv->auth_mailbox->runtime_password); result = self_session_write(priv, "LOGIN %s %s", quoted_username, quoted_password); g_free(quoted_username); g_free(quoted_password); return result; } } private int handle_login_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { priv->authenticated = TRUE; return self_session_handle_capability_code(priv, response) ? STATE_EXAMINE : STATE_CAPABILITY; } else if (IS_NO(response) || IS_BAD(response)) return self_session_authenticate_fallback(priv, TRUE); else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); } private int enter_examine_cb (MNClientSession *session, MNClientSessionPrivate *priv) { char *utf7_mailbox; char *quoted_mailbox; int result; utf7_mailbox = self_utf8_to_imap_utf7(priv->self->mailbox); quoted_mailbox = self_quote(utf7_mailbox); g_free(utf7_mailbox); result = self_session_write(priv, "EXAMINE %s", quoted_mailbox); g_free(quoted_mailbox); return result; } private int handle_examine_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) return STATE_SEARCH_UNSEEN; else if (IS_NO(response) || IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (IS(response, "OK")) { if (response->code) { char **fields; fields = g_strsplit(response->code, " ", 0); if (g_strv_length(fields) == 2 && ! g_ascii_strcasecmp(fields[0], "UIDVALIDITY")) { g_free(priv->uidvalidity); priv->uidvalidity = g_strdup(fields[1]); } g_strfreev(fields); } } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); } private int enter_search_unseen_cb (MNClientSession *session, MNClientSessionPrivate *priv) { priv->num_errors = 0; if (priv->messages) g_hash_table_remove_all(priv->messages); else priv->messages = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) self_message_info_free); return self_session_write(priv, "SEARCH UNSEEN"); } private int handle_search_unseen_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { /* * Some uncompliant IMAP server implementations do not * send an untagged SEARCH response when there are no * search results (#18876). We are tolerant. */ if (g_hash_table_size(priv->messages) != 0) return STATE_SEARCH_RECENT; else return self_session_got_messages(priv); } else if (IS_NO(response) || IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (IS(response, "SEARCH")) { if (response->arguments) { char **strings; int i; strings = g_strsplit(response->arguments, " ", 0); for (i = 0; strings[i]; i++) if (mn_str_isnumeric(strings[i])) { int n = atoi(strings[i]); self_session_ensure_message_info(priv, n); } g_strfreev(strings); } return MN_CLIENT_SESSION_RESULT_CONTINUE; } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); } private int enter_search_recent_cb (MNClientSession *session, MNClientSessionPrivate *priv) { return self_session_write(priv, "SEARCH RECENT"); } private int handle_search_recent_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { if (priv->uidvalidity) return STATE_FETCH_UID; else return STATE_FETCH; } else if (IS_NO(response) || IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (IS(response, "SEARCH")) { if (response->arguments) { char **strings; int i; strings = g_strsplit(response->arguments, " ", 0); for (i = 0; strings[i]; i++) if (mn_str_isnumeric(strings[i])) { int n = atoi(strings[i]); MessageInfo *info; info = self_session_get_message_info(priv, n); if (info) info->flags |= MN_MESSAGE_NEW; /* * Otherwise the message is recent but not unseen, * and we must ignore it (fixes #230425). */ } g_strfreev(strings); } return MN_CLIENT_SESSION_RESULT_CONTINUE; } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); } private int enter_fetch_uid_cb (MNClientSession *session, MNClientSessionPrivate *priv) { GString *set; int result; g_assert(priv->messages != NULL); g_assert(g_hash_table_size(priv->messages) > 0); set = g_string_new(NULL); g_hash_table_foreach(priv->messages, self_build_fetch_uid_set_cb, set); result = self_session_write(priv, "FETCH %s UID", set->str); g_string_free(set, TRUE); return result; } private void build_fetch_uid_set_cb (gpointer key, gpointer value, gpointer user_data) { MessageInfo *info = value; GString *set = user_data; if (*set->str) g_string_append_c(set, ','); g_string_append_printf(set, "%i", info->number); } private char * parse_fetch_uid_response (const char *response (check null)) { char *start; char *end; start = mn_ascii_strcasestr_span(response, "UID "); if (! start) return NULL; /* * The UID should be the only list element, but we are tolerant * and allow a space in case other elements are present, eg: * * * 1 FETCH (UID 17 OTHER_ELEMENT) */ end = strpbrk(start, " )"); if (! end || end == start) return NULL; return g_strndup(start, end - start); } private int handle_fetch_uid_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { /* a failure (NO or BAD) is not fatal */ if (IS_OK(response) || IS_NO(response) || IS_BAD(response)) return STATE_FETCH; else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (mn_str_isnumeric(response->response) && response->arguments && mn_ascii_str_case_has_prefix(response->arguments, "FETCH ")) { char *uid; uid = self_parse_fetch_uid_response(response->arguments); if (uid) { int n; MessageInfo *info; n = atoi(response->response); info = self_session_get_message_info(priv, n); if (info && ! info->mid) { MNMessage *message; g_assert(info->message == NULL); /* * RFC 3501 specifies that UID is a 32-bit number, * but we do not need it to be one. Use a string * for interoperability purposes (in case some * server vendors did not read the RFC properly). */ info->mid = g_strdup_printf("%s:%s", priv->uidvalidity, uid); message = mn_mailbox_get_message_from_mid(priv->mailbox, info->mid); if (message) /* * We create a new instance rather than reusing * the existing one since the flags might be * different and a MNMessage is immutable (so we * cannot change the flags of the existing * message). */ info->message = mn_g_object_clone(message, MN_MESSAGE_PROP_FLAGS(info->flags), NULL); } g_free(uid); } return MN_CLIENT_SESSION_RESULT_CONTINUE; } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); } private int enter_fetch_cb (MNClientSession *session, MNClientSessionPrivate *priv) { GString *set; int result; g_assert(priv->messages != NULL); g_assert(g_hash_table_size(priv->messages) > 0); set = g_string_new(NULL); g_hash_table_foreach(priv->messages, self_build_fetch_set_cb, set); if (*set->str) result = self_session_write(priv, "FETCH %s BODY.PEEK[HEADER]", set->str); else /* all the unseen messages were cached, no message to fetch */ result = self_session_got_messages(priv); g_string_free(set, TRUE); return result; } private void build_fetch_set_cb (gpointer key, gpointer value, gpointer user_data) { MessageInfo *info = value; GString *set = user_data; if (! info->message) { if (*set->str) g_string_append_c(set, ','); g_string_append_printf(set, "%i", info->number); } } private int handle_fetch_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { /* * Note that in previous versions we required the * fetch results to include all the unseen messages, * but it caused problems in some cases (#20132). */ return self_session_got_messages(priv); } else if (IS_NO(response) || IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (mn_str_isnumeric(response->response) && response->arguments && mn_ascii_str_case_has_prefix(response->arguments, "FETCH ") && (mn_ascii_strcasestr(response->arguments, "BODY[HEADER]") || mn_ascii_strcasestr(response->arguments, "BODY[HEADER "))) /* [1] */ /* * [1] Non-compliant response (see RFC 3501 BNF), sent by Binc * IMAP and maybe others. We are tolerant. */ { int n; MessageInfo *info; n = atoi(response->response); info = self_session_get_message_info(priv, n); if (info && ! info->message) { char *p; int len; /* we assume the header string will be in literal form */ p = strrchr(response->arguments, '{'); if (p && sscanf(p, "{%d}", &len) == 1 && len >= 0) { gconstpointer buf; GError *err = NULL; buf = mn_client_session_read(session, len); if (! buf) return MN_CLIENT_SESSION_RESULT_DISCONNECT; info->message = mn_message_new_from_buffer(priv->mailbox, buf, len, info->mid, info->flags, FALSE, &err); if (err) { mn_client_session_warning(session, "cannot read message %i: %s", n, err->message); g_error_free(err); priv->num_errors++; } /* read end of line (after literal) */ if (! mn_client_session_read_line(session)) return MN_CLIENT_SESSION_RESULT_DISCONNECT; } else { mn_client_session_warning(session, "cannot retrieve message %i", n); priv->num_errors++; } return MN_CLIENT_SESSION_RESULT_CONTINUE; } } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); } private int enter_idle_cb (MNClientSession *session, MNClientSessionPrivate *priv) { if (mn_mailbox_get_active(priv->mailbox)) { if (priv->self->use_idle_extension == MN_IMAP_MAILBOX_USE_IDLE_NEVER) mn_client_session_notice(session, _("\"Use the IDLE extension\" set to \"never\" in the mailbox properties, logging out")); else { if (self_session_has_capability(priv, "IDLE")) { switch (priv->self->use_idle_extension) { case MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT: if (priv->server_software_supports_idle) goto idle; else mn_client_session_notice(session, _("the remote server runs %s, not using the IDLE extension"), priv->server_software); break; case MN_IMAP_MAILBOX_USE_IDLE_ALWAYS: if (! priv->server_software_supports_idle) mn_client_session_warning(session, _("the remote server runs %s, the IDLE extension might not function properly"), priv->server_software); goto idle; break; default: g_assert_not_reached(); } } else mn_client_session_notice(session, _("the remote server does not support the IDLE extension, logging out")); } } return STATE_LOGOUT; idle: priv->idle_state = IDLE_STATE_PRE_IDLE; return self_session_write(priv, "IDLE"); } private int handle_idle_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { switch (priv->idle_state) { case IDLE_STATE_PRE_IDLE: if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_NO(response) || IS_BAD(response)) /* * The server advertised IDLE but does not actually * support it. * * Although strictly speaking this can be considered a * compliance fault, we'll be tolerant and just logout * without setting an error. */ return STATE_LOGOUT; else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (response->continuation) { /* we're now in the idle loop */ priv->idle_state = IDLE_STATE_IDLE; priv->idle_inactivity = FALSE; priv->could_idle = TRUE; GDK_THREADS_ENTER(); mn_mailbox_set_poll(priv->mailbox, FALSE); gdk_flush(); GDK_THREADS_LEAVE(); return MN_CLIENT_SESSION_RESULT_CONTINUE; } break; case IDLE_STATE_IDLE: if (response->continuation || response->tag) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; if (IS_BYE(response)) { priv->idle_state = IDLE_STATE_POST_IDLE; return MN_CLIENT_SESSION_RESULT_DISCONNECT; /* we'll reconnect */ } else if (response->arguments && mn_str_isnumeric(response->response) && (! g_ascii_strcasecmp(response->arguments, "EXISTS") || ! g_ascii_strcasecmp(response->arguments, "RECENT") || ! g_ascii_strcasecmp(response->arguments, "EXPUNGE") || mn_ascii_str_case_has_prefix(response->arguments, "FETCH "))) { priv->idle_state = IDLE_STATE_POST_IDLE; return mn_client_session_write(session, "DONE"); /* wake up */ } break; case IDLE_STATE_POST_IDLE: if (response->tag) { if (HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) { if (! mn_mailbox_get_active(priv->mailbox)) return STATE_LOGOUT; else if (priv->idle_inactivity) return STATE_IDLE; /* anti-inactivity, re-enter */ else return STATE_SEARCH_UNSEEN; } else if (IS_NO(response) || IS_BAD(response)) { mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_LOGOUT; } else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } else if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; break; default: g_assert_not_reached(); break; } return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER); } private int enter_logout_cb (MNClientSession *session, MNClientSessionPrivate *priv) { return self_session_write(priv, "LOGOUT"); } private int handle_logout_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { if (response->continuation) return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; else if (response->tag && HAS_CURRENT_TAG(response, priv)) { if (IS_OK(response)) return MN_CLIENT_SESSION_RESULT_DISCONNECT; else if (IS_BAD(response)) return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); else return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } else return MN_CLIENT_SESSION_RESULT_CONTINUE; } override (MN:Authenticated:Mailbox) void authenticated_check (MNAuthenticatedMailbox *mailbox) { Self *self = SELF(mailbox); static const MNClientSessionState states[] = { { STATE_GREETING, NULL, self_handle_greeting_cb }, { STATE_CAPABILITY, self_enter_capability_cb, self_handle_capability_cb }, #if WITH_SSL { STATE_STARTTLS, self_enter_starttls_cb, self_handle_starttls_cb }, #endif #if WITH_SASL { STATE_AUTHENTICATE, self_enter_authenticate_cb, self_handle_authenticate_cb }, #endif { STATE_LOGIN, self_enter_login_cb, self_handle_login_cb }, { STATE_EXAMINE, self_enter_examine_cb, self_handle_examine_cb }, { STATE_SEARCH_UNSEEN, self_enter_search_unseen_cb, self_handle_search_unseen_cb }, { STATE_SEARCH_RECENT, self_enter_search_recent_cb, self_handle_search_recent_cb }, { STATE_FETCH_UID, self_enter_fetch_uid_cb, self_handle_fetch_uid_cb }, { STATE_FETCH, self_enter_fetch_cb, self_handle_fetch_cb }, { STATE_IDLE, self_enter_idle_cb, self_handle_idle_cb }, { STATE_LOGOUT, self_enter_logout_cb, self_handle_logout_cb }, MN_CLIENT_SESSION_STATES_END }; static const MNClientSessionCallbacks callbacks = { mn_pi_mailbox_notice_cb, mn_pi_mailbox_warning_cb, self_response_new_cb, self_response_free_cb, self_pre_read_cb, self_post_read_cb, #if WITH_SASL mn_pi_mailbox_sasl_get_credentials_cb, #endif #if WITH_SSL mn_pi_mailbox_ssl_trust_server_cb, #endif }; MNClientSessionPrivate priv; gboolean status; GError *err = NULL; PARENT_HANDLER(mailbox); /* check if the parent handler has disabled the mailbox */ if (! mn_mailbox_get_poll(MN_MAILBOX(self))) return; again: g_clear_error(&err); memset(&priv, 0, sizeof(priv)); mn_pi_mailbox_session_private_init(MN_PI_MAILBOX(self), &priv); priv.self = self; priv.server_software_supports_idle = TRUE; /* assume it does */ status = mn_client_session_run(states, &callbacks, #if WITH_SSL priv.pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL, #endif priv.pi_mailbox->hostname, priv.pi_mailbox->runtime_port, &priv, &err); g_strfreev(priv.capabilities); mn_g_slist_free_deep(priv.auth_mechanisms); g_free(priv.uidvalidity); if (priv.messages) g_hash_table_destroy(priv.messages); #if WITH_SASL g_slist_free(priv.sasl_remaining_mechanisms); #endif if (priv.could_idle && mn_mailbox_get_active(priv.mailbox)) { if (status) goto again; /* some servers abruptly disconnect for inactivity */ else if (g_error_matches(err, MN_CLIENT_SESSION_ERROR, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST)) { /* g_log() escapes unsafe and non UTF-8 characters, so this is safe */ mn_mailbox_notice(priv.mailbox, "%s", err->message); goto again; } } GDK_THREADS_ENTER(); mn_mailbox_set_poll(MN_MAILBOX(self), TRUE); if (! status) { char *escaped; escaped = mn_utf8_escape(err->message); g_error_free(err); mn_mailbox_set_error(MN_MAILBOX(self), "%s", escaped); g_free(escaped); } gdk_flush(); GDK_THREADS_LEAVE(); } private MNClientSessionResponse * response_new_cb (MNClientSession *session, const char *input, MNClientSessionPrivate *priv) { MNClientSessionResponse *response = NULL; /* * About character set handling: * * RFC 3501 section 1.2 specifies that "characters are 7-bit * US-ASCII unless otherwise specified", and the ABNF formal * syntax found in section 9 confirms it. However, we follow the * RFC 793 robustness principle ("be liberal in what you accept") * and do not require responses to be valid 7-bit US-ASCII. * * Safety: * - we ensure that GTK+ will only receive UTF-8 data by * escaping error messages in authenticated_check() * - responses ending up in mn_mailbox_notice() need not be * valid UTF-8, since g_log() escapes unsafe and non UTF-8 * characters * - messages do not go through this function; they are handled * in handle_fetch_cb() and passed to our mn-message-mime * implementation, which handles character set conversions */ if (! strcmp(input, "+")) { response = g_new0(MNClientSessionResponse, 1); response->continuation = g_strdup(""); } else if (g_str_has_prefix(input, "+ ")) { response = g_new0(MNClientSessionResponse, 1); response->continuation = g_strdup(input + 2); } else { char **tokens; tokens = g_strsplit(input, " ", 3); if (tokens[0] && tokens[1]) { if (tokens[2] && tokens[2][0] == '[') { char *code_start; char *code_end; code_start = tokens[2] + 1; code_end = strchr(code_start, ']'); if (code_end) { response = g_new0(MNClientSessionResponse, 1); response->code = g_strndup(code_start, code_end - code_start); response->arguments = code_end[1] ? g_strdup(code_end + 2) : NULL; } } else { response = g_new0(MNClientSessionResponse, 1); response->arguments = g_strdup(tokens[2]); } if (response) { response->tag = ! strcmp(tokens[0], "*") ? NULL : g_strdup(tokens[0]); response->response = g_strdup(tokens[1]); } } g_strfreev(tokens); } return response; } private void response_free_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { g_free(response->continuation); g_free(response->tag); g_free(response->response); g_free(response->code); g_free(response->arguments); g_free(response); } private int default_handler (MNClientSessionResponse *response (check null), MNClientSessionPrivate *priv (check null), int error_code_when_bye) { if (! response->tag && IS_BYE(response)) return mn_client_session_set_error_from_response(priv->session, error_code_when_bye, response->arguments); else return MN_CLIENT_SESSION_RESULT_CONTINUE; } private void pre_read_cb (MNClientSession *session, MNClientSessionPrivate *priv) { if (priv->idle_state == IDLE_STATE_IDLE) { Self *self = priv->self; self_lock(self); selfp->idle_session = priv; /* cycle IDLE in 29 minutes, as advised by RFC 2177 */ g_assert(priv->idle_inactivity_timeout_id == 0); priv->idle_inactivity_timeout_id = g_timeout_add(60 * 29 * 1000, self_idle_inactivity_timeout_cb, self); self_unlock(self); } } private void post_read_cb (MNClientSession *session, MNClientSessionPrivate *priv) { Self *self = priv->self; self_lock(self); if (priv->idle_state >= IDLE_STATE_IDLE) { selfp->idle_session = NULL; mn_source_clear(&priv->idle_inactivity_timeout_id); } self_unlock(self); } private gboolean idle_inactivity_timeout_cb (gpointer data) { Self *self = data; self_lock(self); if (selfp->idle_session) { mn_client_session_write(selfp->idle_session->session, "DONE"); selfp->idle_session->idle_state = IDLE_STATE_POST_IDLE; selfp->idle_session->idle_inactivity = TRUE; selfp->idle_session->idle_inactivity_timeout_id = 0; } self_unlock(self); return FALSE; } [G_GNUC_PRINTF(2, 3)] private int session_write (MNClientSessionPrivate *priv (check null), const char *format (check null), ...) { char *command; int result; MN_STRDUP_VPRINTF(command, format); if (priv->numeric_tag == 1000) priv->numeric_tag = 0; sprintf(priv->tag, "a%03i", priv->numeric_tag++); result = mn_client_session_write(priv->session, "%s %s", priv->tag, command); g_free(command); return result; } private gboolean session_handle_capability_code (MNClientSessionPrivate *priv (check null), MNClientSessionResponse *response (check null)) { if (response->code) { if (! g_ascii_strcasecmp(response->code, "CAPABILITY")) { self_session_parse_capabilities(priv, NULL); return TRUE; } else if (mn_ascii_str_case_has_prefix(response->code, "CAPABILITY ")) { self_session_parse_capabilities(priv, response->code + 11); return TRUE; } } return FALSE; } private void session_parse_capabilities (MNClientSessionPrivate *priv (check null), const char *capabilities) { g_strfreev(priv->capabilities); priv->capabilities = NULL; mn_g_slist_clear_deep(&priv->auth_mechanisms); #if WITH_SASL mn_g_slist_clear(&priv->sasl_remaining_mechanisms); #endif if (capabilities) { int i; priv->capabilities = g_strsplit(capabilities, " ", 0); for (i = 0; priv->capabilities[i]; i++) if (g_str_has_prefix(priv->capabilities[i], "AUTH=")) priv->auth_mechanisms = g_slist_append(priv->auth_mechanisms, g_strdup(priv->capabilities[i] + 5)); } else priv->capabilities = g_new0(char *, 1); } private gboolean session_has_capability (MNClientSessionPrivate *priv (check null), const char *capability (check null)) { int i; g_return_val_if_fail(priv->capabilities != NULL, FALSE); for (i = 0; priv->capabilities[i]; i++) if (! g_ascii_strcasecmp(priv->capabilities[i], capability)) return TRUE; return FALSE; } private int session_after_capability (MNClientSessionPrivate *priv (check null)) { if (priv->authenticated) return STATE_EXAMINE; else { #if WITH_SSL if (priv->pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL && ! priv->starttls_completed) { if (self_session_has_capability(priv, "STARTTLS")) return STATE_STARTTLS; else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS")); return STATE_LOGOUT; } } #endif /* WITH_SSL */ return self_session_authenticate(priv); } } private int session_authenticate (MNClientSessionPrivate *priv (check null)) { #if WITH_SASL g_slist_free(priv->sasl_remaining_mechanisms); priv->sasl_remaining_mechanisms = g_slist_copy(priv->auth_mechanisms); #endif /* WITH_SASL */ if (priv->pi_mailbox->authmech) { if (*priv->pi_mailbox->authmech != '+') { #if WITH_SASL return STATE_AUTHENTICATE; #else mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in")); return STATE_LOGOUT; #endif /* WITH_SASL */ } else { if (! strcmp(priv->pi_mailbox->authmech, "+LOGIN")) return STATE_LOGIN; else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech); return STATE_LOGOUT; } } } else { #if WITH_SASL if (priv->sasl_remaining_mechanisms) return STATE_AUTHENTICATE; #endif /* WITH_SASL */ return STATE_LOGIN; } } private int session_authenticate_fallback (MNClientSessionPrivate *priv (check null), gboolean tried_login) { if (! priv->pi_mailbox->authmech) { #if WITH_SASL if (priv->sasl_mechanism) { GSList *elem; elem = mn_g_str_slist_find(priv->sasl_remaining_mechanisms, priv->sasl_mechanism); if (elem) { priv->sasl_remaining_mechanisms = g_slist_delete_link(priv->sasl_remaining_mechanisms, elem); if (priv->sasl_remaining_mechanisms) { mn_client_session_notice(priv->session, _("disabling mechanism \"%s\" and retrying SASL authentication"), priv->sasl_mechanism); return STATE_AUTHENTICATE; } } } /* SASL is not needed anymore, save some memory */ mn_client_session_sasl_dispose(priv->session); #endif /* WITH_SASL */ if (! tried_login) { mn_client_session_notice(priv->session, _("falling back to IMAP LOGIN authentication")); return STATE_LOGIN; } } if (priv->auth_mailbox->auth_prompted) { mn_authenticated_mailbox_auth_failed(priv->auth_mailbox); return self_session_authenticate(priv); } else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed")); return STATE_LOGOUT; } } private void session_detect_imapd (MNClientSession *session (check null), MNClientSessionResponse *greeting_response (check null), MNClientSessionPrivate *priv (check null)) { if (greeting_response->arguments) { char *str; /* * Try to detect UW imapd by looking for " IMAP4rev1 YEAR." */ if ((str = mn_strstr_span(greeting_response->arguments, " IMAP4rev1 ")) && strspn(str, "0123456789") == 4 && str[4] == '.') { priv->server_software = "UW imapd"; priv->server_software_supports_idle = FALSE; return; } } } private int session_got_messages (MNClientSessionPrivate *priv (check null)) { GSList *messages = NULL; g_hash_table_foreach(priv->messages, self_get_messages_list_cb, &messages); GDK_THREADS_ENTER(); mn_mailbox_set_messages(priv->mailbox, messages); if (priv->num_errors == 0) mn_mailbox_set_error(priv->mailbox, NULL); else mn_mailbox_set_error(priv->mailbox, ngettext("cannot retrieve %i message", "cannot retrieve %i messages", priv->num_errors), priv->num_errors); /* * In authenticated_check(), we do not hold the GDK lock while * destroying the messages hash table. We have just exposed the * messages to other threads through our mn_mailbox_set_messages() * call, so destroy the hash table here, while we hold the GDK * lock. */ g_hash_table_destroy(priv->messages); priv->messages = NULL; gdk_flush(); GDK_THREADS_LEAVE(); g_slist_free(messages); return STATE_IDLE; } private void get_messages_list_cb (gpointer key, gpointer value, gpointer user_data) { MessageInfo *info = value; GSList **list = user_data; if (info->message) *list = g_slist_prepend(*list, info->message); } private MessageInfo * session_get_message_info (MNClientSessionPrivate *priv (check null), int number) { return g_hash_table_lookup(priv->messages, GINT_TO_POINTER(number)); } private MessageInfo * session_ensure_message_info (MNClientSessionPrivate *priv (check null), int number) { MessageInfo *info; info = self_session_get_message_info(priv, number); if (! info) { info = self_message_info_new(number); g_hash_table_insert(priv->messages, GINT_TO_POINTER(number), info); } return info; } private MessageInfo * message_info_new (int number) { MessageInfo *info; info = g_new0(MessageInfo, 1); info->number = number; return info; } private void message_info_free (MessageInfo *info (check null)) { if (info->message) g_object_unref(info->message); g_free(info->mid); g_free(info); } /** * quote: * @str: the string to quote * * Quotes a string using RFC 3501 BNF rules. * * Return value: the quoted string. **/ private char * quote (const char *str (check null)) { GString *quoted; int i; quoted = g_string_new("\""); for (i = 0; str[i]; i++) if (str[i] == '"' || str[i] == '\\') /* quoted-specials in BNF */ g_string_append_printf(quoted, "\\%c", str[i]); else g_string_append_c(quoted, str[i]); g_string_append_c(quoted, '"'); return g_string_free(quoted, FALSE); } /** * utf8_to_imap_utf7: * @str: the UTF-8 string to convert to modified UTF-7 * * Converts a string from UTF-8 to modified UTF-7 as defined by RFC 3501. * * Return value: the string converted to modified UTF-7. **/ private char * utf8_to_imap_utf7 (const char *str (check null)) { gunichar c; guint32 x, v = 0; int state = 0; GString *out; int i = 0; /* * Taken from the Ximian Evolution sources (camel-utf8.c) and * edited for style. */ out = g_string_new(NULL); while ((c = g_utf8_get_char(str))) { if (c >= 0x20 && c <= 0x7e) { if (state == 1) { self_imap_utf7_closeb64(out, v, i); state = 0; i = 0; } if (c == '&') g_string_append(out, "&-"); else g_string_append_c(out, c); } else { if (state == 0) { g_string_append_c(out, '&'); state = 1; } v = (v << 16) | c; i += 16; while (i >= 6) { x = (v >> (i - 6)) & 0x3f; g_string_append_c(out, utf7_alphabet[x]); i -= 6; } } str = g_utf8_next_char(str); } if (state == 1) self_imap_utf7_closeb64(out, v, i); return g_string_free(out, FALSE); } private void imap_utf7_closeb64 (GString *out (check null), guint32 v, guint32 i) { /* * Taken from the Ximian Evolution sources (camel-utf8.c) and * edited for style. */ if (i > 0) { guint32 x; x = (v << (6 - i)) & 0x3f; g_string_append_c(out, utf7_alphabet[x]); } g_string_append_c(out, '-'); } public char * build_name (const char *username (check null), const char *server (check null), const char *mailbox) { GString *name; name = g_string_new(NULL); g_string_append_printf(name, "%s@%s", username, server); if (mailbox && mn_utf8_strcasecmp(mailbox, "INBOX")) g_string_append_printf(name, "/%s", mailbox); return g_string_free(name, FALSE); } private void lock (self) { g_mutex_lock(selfp->mutex); } private void unlock (self) { g_mutex_unlock(selfp->mutex); } } mail-notification-5.4.dfsg.1/src/mn-pop3-mailbox-properties.gob0000644000175000001440000000437711015312440024251 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-pi-mailbox-properties.h" %} %{ #include #include "mn-mailbox-properties.h" #include "mn-auth-combo-box.h" #include "mn-util.h" #include "mn-authenticated-mailbox-properties-private.h" #include "mn-pi-mailbox-properties-private.h" #include "mn-properties-dialog.h" #include "mn-pop3-mailbox.h" %} class MN:POP3:Mailbox:Properties from MN:PI:Mailbox:Properties { property STRING default_name (override) get { const char *username; const char *server; mn_authenticated_mailbox_properties_get_contents(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self), &username, NULL); mn_pi_mailbox_properties_get_contents(MN_PI_MAILBOX_PROPERTIES(self), NULL, NULL, &server, NULL); g_value_take_string(VAL, mn_pop3_mailbox_build_name(username, server)); }; class_init (class) { MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "pop3"; p_class->combo_label = "POP3"; } init (self) { MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self); int i; mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+APOP", "APOP"); mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+USERPASS", "USER/PASS"); for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++) gtk_spin_button_set_value(GTK_SPIN_BUTTON(pi->port_spin[i]), mn_pop3_mailbox_default_ports[i]); } } mail-notification-5.4.dfsg.1/src/eggtrayicon.c0000644000175000001440000003372511015312437021130 0ustar evilynuxusers/* eggtrayicon.c * Copyright (C) 2002 Anders Carlsson * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include "eggtrayicon.h" #include #if defined (GDK_WINDOWING_X11) #include #include #elif defined (GDK_WINDOWING_WIN32) #include #endif #ifndef EGG_COMPILATION #ifndef _ #define _(x) dgettext (GETTEXT_PACKAGE, x) #define N_(x) x #endif #else #define _(x) x #define N_(x) x #endif #define SYSTEM_TRAY_REQUEST_DOCK 0 #define SYSTEM_TRAY_BEGIN_MESSAGE 1 #define SYSTEM_TRAY_CANCEL_MESSAGE 2 #define SYSTEM_TRAY_ORIENTATION_HORZ 0 #define SYSTEM_TRAY_ORIENTATION_VERT 1 enum { PROP_0, PROP_ORIENTATION }; static GtkPlugClass *parent_class = NULL; static void egg_tray_icon_init (EggTrayIcon *icon); static void egg_tray_icon_class_init (EggTrayIconClass *klass); static void egg_tray_icon_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static void egg_tray_icon_add (GtkContainer *container, GtkWidget *widget); static void egg_tray_icon_realize (GtkWidget *widget); static void egg_tray_icon_unrealize (GtkWidget *widget); #ifdef GDK_WINDOWING_X11 static void egg_tray_icon_update_manager_window (EggTrayIcon *icon, gboolean dock_if_realized); static void egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon); #endif GType egg_tray_icon_get_type (void) { static GType our_type = 0; if (our_type == 0) { static const GTypeInfo our_info = { sizeof (EggTrayIconClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) egg_tray_icon_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof (EggTrayIcon), 0, /* n_preallocs */ (GInstanceInitFunc) egg_tray_icon_init }; our_type = g_type_register_static (GTK_TYPE_PLUG, "EggTrayIcon", &our_info, 0); } return our_type; } static void egg_tray_icon_init (EggTrayIcon *icon) { icon->stamp = 1; icon->orientation = GTK_ORIENTATION_HORIZONTAL; gtk_widget_add_events (GTK_WIDGET (icon), GDK_PROPERTY_CHANGE_MASK); } static void egg_tray_icon_class_init (EggTrayIconClass *klass) { GObjectClass *gobject_class = (GObjectClass *)klass; GtkWidgetClass *widget_class = (GtkWidgetClass *)klass; GtkContainerClass *container_class = (GtkContainerClass *)klass; parent_class = g_type_class_peek_parent (klass); gobject_class->get_property = egg_tray_icon_get_property; widget_class->realize = egg_tray_icon_realize; widget_class->unrealize = egg_tray_icon_unrealize; container_class->add = egg_tray_icon_add; g_object_class_install_property (gobject_class, PROP_ORIENTATION, g_param_spec_enum ("orientation", _("Orientation"), _("The orientation of the tray."), GTK_TYPE_ORIENTATION, GTK_ORIENTATION_HORIZONTAL, G_PARAM_READABLE)); #if defined (GDK_WINDOWING_X11) /* Nothing */ #elif defined (GDK_WINDOWING_WIN32) g_warning ("Port eggtrayicon to Win32"); #else g_warning ("Port eggtrayicon to this GTK+ backend"); #endif } static void egg_tray_icon_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { EggTrayIcon *icon = EGG_TRAY_ICON (object); switch (prop_id) { case PROP_ORIENTATION: g_value_set_enum (value, icon->orientation); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } #ifdef GDK_WINDOWING_X11 static void egg_tray_icon_get_orientation_property (EggTrayIcon *icon) { Display *xdisplay; Atom type; int format; union { gulong *prop; guchar *prop_ch; } prop = { NULL }; gulong nitems; gulong bytes_after; int error, result; g_assert (icon->manager_window != None); xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon))); gdk_error_trap_push (); type = None; result = XGetWindowProperty (xdisplay, icon->manager_window, icon->orientation_atom, 0, G_MAXLONG, FALSE, XA_CARDINAL, &type, &format, &nitems, &bytes_after, &(prop.prop_ch)); error = gdk_error_trap_pop (); if (error || result != Success) return; if (type == XA_CARDINAL) { GtkOrientation orientation; orientation = (prop.prop [0] == SYSTEM_TRAY_ORIENTATION_HORZ) ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL; if (icon->orientation != orientation) { icon->orientation = orientation; g_object_notify (G_OBJECT (icon), "orientation"); } } if (prop.prop) XFree (prop.prop); } static GdkFilterReturn egg_tray_icon_manager_filter (GdkXEvent *xevent, GdkEvent *event, gpointer user_data) { EggTrayIcon *icon = user_data; XEvent *xev = (XEvent *)xevent; if (xev->xany.type == ClientMessage && xev->xclient.message_type == icon->manager_atom && xev->xclient.data.l[1] == icon->selection_atom) { egg_tray_icon_update_manager_window (icon, TRUE); } else if (xev->xany.window == icon->manager_window) { if (xev->xany.type == PropertyNotify && xev->xproperty.atom == icon->orientation_atom) { egg_tray_icon_get_orientation_property (icon); } if (xev->xany.type == DestroyNotify) { egg_tray_icon_manager_window_destroyed (icon); } } return GDK_FILTER_CONTINUE; } #endif static void egg_tray_icon_unrealize (GtkWidget *widget) { #ifdef GDK_WINDOWING_X11 EggTrayIcon *icon = EGG_TRAY_ICON (widget); GdkWindow *root_window; if (icon->manager_window != None) { GdkWindow *gdkwin; gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (widget), icon->manager_window); gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon); } root_window = gdk_screen_get_root_window (gtk_widget_get_screen (widget)); gdk_window_remove_filter (root_window, egg_tray_icon_manager_filter, icon); if (GTK_WIDGET_CLASS (parent_class)->unrealize) (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); #endif } #ifdef GDK_WINDOWING_X11 static void egg_tray_icon_send_manager_message (EggTrayIcon *icon, long message, Window window, long data1, long data2, long data3) { XClientMessageEvent ev; Display *display; ev.type = ClientMessage; ev.window = window; ev.message_type = icon->system_tray_opcode_atom; ev.format = 32; ev.data.l[0] = gdk_x11_get_server_time (GTK_WIDGET (icon)->window); ev.data.l[1] = message; ev.data.l[2] = data1; ev.data.l[3] = data2; ev.data.l[4] = data3; display = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon))); gdk_error_trap_push (); XSendEvent (display, icon->manager_window, False, NoEventMask, (XEvent *)&ev); XSync (display, False); gdk_error_trap_pop (); } static void egg_tray_icon_send_dock_request (EggTrayIcon *icon) { egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_REQUEST_DOCK, icon->manager_window, gtk_plug_get_id (GTK_PLUG (icon)), 0, 0); } static void egg_tray_icon_update_manager_window (EggTrayIcon *icon, gboolean dock_if_realized) { Display *xdisplay; if (icon->manager_window != None) return; xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon))); XGrabServer (xdisplay); icon->manager_window = XGetSelectionOwner (xdisplay, icon->selection_atom); if (icon->manager_window != None) XSelectInput (xdisplay, icon->manager_window, StructureNotifyMask|PropertyChangeMask); XUngrabServer (xdisplay); XFlush (xdisplay); if (icon->manager_window != None) { GdkWindow *gdkwin; gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)), icon->manager_window); gdk_window_add_filter (gdkwin, egg_tray_icon_manager_filter, icon); if (dock_if_realized && GTK_WIDGET_REALIZED (icon)) egg_tray_icon_send_dock_request (icon); egg_tray_icon_get_orientation_property (icon); } } static gboolean transparent_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { gdk_window_clear_area (widget->window, event->area.x, event->area.y, event->area.width, event->area.height); return FALSE; } static void make_transparent_again (GtkWidget *widget, GtkStyle *previous_style, gpointer user_data) { gdk_window_set_back_pixmap (widget->window, NULL, TRUE); } static void make_transparent (GtkWidget *widget, gpointer user_data) { if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget)) return; gtk_widget_set_app_paintable (widget, TRUE); gtk_widget_set_double_buffered (widget, FALSE); gdk_window_set_back_pixmap (widget->window, NULL, TRUE); g_signal_connect (widget, "expose_event", G_CALLBACK (transparent_expose_event), NULL); g_signal_connect_after (widget, "style_set", G_CALLBACK (make_transparent_again), NULL); } static void egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon) { GdkWindow *gdkwin; g_return_if_fail (icon->manager_window != None); gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)), icon->manager_window); gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon); icon->manager_window = None; egg_tray_icon_update_manager_window (icon, TRUE); } #endif static void egg_tray_icon_realize (GtkWidget *widget) { #ifdef GDK_WINDOWING_X11 EggTrayIcon *icon = EGG_TRAY_ICON (widget); GdkScreen *screen; GdkDisplay *display; Display *xdisplay; char buffer[256]; GdkWindow *root_window; if (GTK_WIDGET_CLASS (parent_class)->realize) GTK_WIDGET_CLASS (parent_class)->realize (widget); make_transparent (widget, NULL); screen = gtk_widget_get_screen (widget); display = gdk_screen_get_display (screen); xdisplay = gdk_x11_display_get_xdisplay (display); /* Now see if there's a manager window around */ g_snprintf (buffer, sizeof (buffer), "_NET_SYSTEM_TRAY_S%d", gdk_screen_get_number (screen)); icon->selection_atom = XInternAtom (xdisplay, buffer, False); icon->manager_atom = XInternAtom (xdisplay, "MANAGER", False); icon->system_tray_opcode_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_OPCODE", False); icon->orientation_atom = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_ORIENTATION", False); egg_tray_icon_update_manager_window (icon, FALSE); egg_tray_icon_send_dock_request (icon); root_window = gdk_screen_get_root_window (screen); /* Add a root window filter so that we get changes on MANAGER */ gdk_window_add_filter (root_window, egg_tray_icon_manager_filter, icon); #endif } static void egg_tray_icon_add (GtkContainer *container, GtkWidget *widget) { g_signal_connect (widget, "realize", G_CALLBACK (make_transparent), NULL); GTK_CONTAINER_CLASS (parent_class)->add (container, widget); } EggTrayIcon * egg_tray_icon_new_for_screen (GdkScreen *screen, const char *name) { g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); return g_object_new (EGG_TYPE_TRAY_ICON, "screen", screen, "title", name, NULL); } EggTrayIcon* egg_tray_icon_new (const gchar *name) { return g_object_new (EGG_TYPE_TRAY_ICON, "title", name, NULL); } guint egg_tray_icon_send_message (EggTrayIcon *icon, gint timeout, const gchar *message, gint len) { guint stamp; g_return_val_if_fail (EGG_IS_TRAY_ICON (icon), 0); g_return_val_if_fail (timeout >= 0, 0); g_return_val_if_fail (message != NULL, 0); #ifdef GDK_WINDOWING_X11 if (icon->manager_window == None) return 0; #endif if (len < 0) len = strlen (message); stamp = icon->stamp++; #ifdef GDK_WINDOWING_X11 /* Get ready to send the message */ egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_BEGIN_MESSAGE, (Window)gtk_plug_get_id (GTK_PLUG (icon)), timeout, len, stamp); /* Now to send the actual message */ gdk_error_trap_push (); while (len > 0) { XClientMessageEvent ev; Display *xdisplay; xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon))); ev.type = ClientMessage; ev.window = (Window)gtk_plug_get_id (GTK_PLUG (icon)); ev.format = 8; ev.message_type = XInternAtom (xdisplay, "_NET_SYSTEM_TRAY_MESSAGE_DATA", False); if (len > 20) { memcpy (&ev.data, message, 20); len -= 20; message += 20; } else { memcpy (&ev.data, message, len); len = 0; } XSendEvent (xdisplay, icon->manager_window, False, StructureNotifyMask, (XEvent *)&ev); XSync (xdisplay, False); } gdk_error_trap_pop (); #endif return stamp; } void egg_tray_icon_cancel_message (EggTrayIcon *icon, guint id) { g_return_if_fail (EGG_IS_TRAY_ICON (icon)); g_return_if_fail (id > 0); #ifdef GDK_WINDOWING_X11 egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_CANCEL_MESSAGE, (Window)gtk_plug_get_id (GTK_PLUG (icon)), id, 0, 0); #endif } GtkOrientation egg_tray_icon_get_orientation (EggTrayIcon *icon) { g_return_val_if_fail (EGG_IS_TRAY_ICON (icon), GTK_ORIENTATION_HORIZONTAL); return icon->orientation; } mail-notification-5.4.dfsg.1/src/mn-locked-callback.h0000644000175000001440000000311211015312437022210 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_LOCKED_CALLBACK_H #define _MN_LOCKED_CALLBACK_H #include #include #include #include #include void mn_g_object_gconf_notification_add_gdk_locked (gpointer object, const char *key, GConfClientNotifyFunc function, gpointer user_data); void mn_g_object_gconf_notifications_add_gdk_locked (gpointer object, ...) G_GNUC_NULL_TERMINATED; GnomeVFSResult mn_gnome_vfs_monitor_add_locked (GnomeVFSMonitorHandle **handle, const char *text_uri, GnomeVFSMonitorType monitor_type, GnomeVFSMonitorCallback callback, gpointer user_data); GnomeVFSResult mn_gnome_vfs_monitor_cancel_locked (GnomeVFSMonitorHandle *handle); #endif /* _MN_LOCKED_CALLBACK_H */ mail-notification-5.4.dfsg.1/src/mn-vfs-mailbox-backend.gob0000644000175000001440000001005111015312440023343 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-vfs-mailbox.h" %} %{ #include #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #include "mn-vfs-mailbox-private.h" #include "mn-conf.h" #include "mn-util.h" %} class MN:VFS:Mailbox:Backend (abstract) { classwide const char *format; /* * In order to not create reference cycles, we do not hold a * reference to the mailbox. The code is arranged so that a VFS * backend cannot survive its containing mailbox (no reference to * the backend is held outside of the mailbox code). */ protected MNVFSMailbox *mailbox; property POINTER mailbox (link, flags = CONSTRUCT_ONLY, type = MNVFSMailbox *); private unsigned int queue_check_id; /* * The amount of time to wait between a queue_check() call and the * actual mailbox check, in milliseconds. If 0, the check is * performed immediately. Used to avoid race conditions with mailbox * formats which do not support locking. */ protected int check_latency; finalize (self) { if (selfp->queue_check_id) g_source_remove(selfp->queue_check_id); /* * If the calling mailbox is being finalized, there is no need to * hold its lock. Otherwise, it holds its lock while finalizing us * (see reentrant_check() in mn-vfs-mailbox.gob). */ mn_vfs_mailbox_remove_monitors_by_owner(self->mailbox, self); } protected void monitor (self, int check_id, const char *uri (check null), GnomeVFSMonitorType type) { mn_vfs_mailbox_lock(self->mailbox); mn_vfs_mailbox_monitor(self->mailbox, uri, self, type, self_real_monitor_cb, self); mn_vfs_mailbox_unlock(self->mailbox); } private void real_monitor_cb (GnomeVFSMonitorHandle *handle, const char *monitor_uri, const char *info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data) { self_monitor_cb(user_data, info_uri, event_type); } virtual private void monitor_cb (self, const char *info_uri, GnomeVFSMonitorEventType event_type) { if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED || event_type == GNOME_VFS_MONITOR_EVENT_DELETED || event_type == GNOME_VFS_MONITOR_EVENT_CREATED) self_queue_check(self); } /** * queue_check(): * @self: a backend * * Queues a mail check on the mailbox of @self or replaces an * already queued check. The check_latency member is respected. * * This function is not thread-safe. It is only called from main * loop callbacks (hence always from the same thread). **/ protected void queue_check (self) { if (selfp->queue_check_id) mn_source_clear(&selfp->queue_check_id); if (self->check_latency) selfp->queue_check_id = gdk_threads_add_timeout(self->check_latency, self_queue_check_cb, self); else mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self->mailbox)); } private gboolean queue_check_cb (gpointer data) { Self *self = data; mn_mailbox_check(MN_MAILBOX(self->mailbox)); selfp->queue_check_id = 0; return FALSE; /* remove source */ } virtual public gboolean is (self, MNVFSMailboxBackendClass *class, MN:VFS:Mailbox *mailbox); virtual public void check (self, int check_id (check != 0)); } mail-notification-5.4.dfsg.1/src/mn-text-table.gob0000644000175000001440000001727611015312440021620 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %h{ typedef struct _MNTextTableCell MNTextTableCell; %} %privateheader{ typedef struct { GPtrArray *cells; int height; } Row; %} %{ #include "mn-util.h" #define HORIZONTAL_SPACING 12 #define VERTICAL_SPACING 0 #define COLUMN_SIZE(self, column) \ g_array_index((self)->_priv->column_sizes, int, (column)) struct _MNTextTableCell { PangoLayout *layout; /* NULL for a blank cell */ gboolean dirty; int width; int height; }; %} /* * This widget is used to display the mail summaries. * * We do not use a GtkBox (or GtkTable) containing labels because it * is extremely slow when we add a few hundred labels. * * A possible alternative would be to use a GtkTextView, which * provides acceptable performance. However, creating a table using a * GtkTextView is extremely cumbersome. */ class MN:Text:Table from Gtk:Widget { private GPtrArray *rows = {g_ptr_array_new()} destroy { mn_g_ptr_array_free_deep_custom(VAR, (GFunc) self_row_free, NULL); }; private GArray *column_sizes = {g_array_new(FALSE, TRUE, sizeof(int))} destroy { g_array_free(VAR, TRUE); }; private Row *row; private gboolean dirty = TRUE; private int width; private int height; init (self) { GTK_WIDGET_SET_FLAGS(self, GTK_NO_WINDOW); g_object_connect(self, "swapped-signal::style-set", self_context_changed, self, "swapped-signal::direction-changed", self_context_changed, self, NULL); } private void row_free (Row *row (check null)) { mn_g_ptr_array_free_deep_custom(row->cells, (GFunc) self_cell_free, NULL); g_free(row); } private void cell_free (MNTextTableCell *cell (check null)) { if (cell->layout) g_object_unref(cell->layout); g_free(cell); } override (Gtk:Widget) void size_request (GtkWidget *widget, GtkRequisition *requisition) { Self *self = SELF(widget); self_relayout(self); requisition->width = selfp->width; requisition->height = selfp->height; } override (Gtk:Widget) gboolean expose_event (GtkWidget *widget, GdkEventExpose *event) { Self *self = SELF(widget); int i; int y = widget->allocation.y; if (! GTK_WIDGET_DRAWABLE(widget)) return FALSE; self_relayout(self); MN_ARRAY_FOREACH(i, selfp->rows) { Row *row = g_ptr_array_index(selfp->rows, i); int j; int x = widget->allocation.x; int column = 0; MN_ARRAY_FOREACH(j, row->cells) { MNTextTableCell *cell = g_ptr_array_index(row->cells, j); if (cell->layout) gtk_paint_layout(widget->style, widget->window, GTK_WIDGET_STATE(widget), FALSE, &event->area, widget, NULL, x, y + row->height - cell->height, cell->layout); x += COLUMN_SIZE(self, column); if (j < row->cells->len - 1) x += HORIZONTAL_SPACING; column++; } y += row->height; if (i < selfp->rows->len - 1) y += VERTICAL_SPACING; } return FALSE; } private void set_dirty (self) { if (! selfp->dirty) { selfp->dirty = TRUE; gtk_widget_queue_resize(GTK_WIDGET(self)); } } private void context_changed (self) { int i; MN_ARRAY_FOREACH(i, selfp->rows) { Row *row = g_ptr_array_index(selfp->rows, i); int j; MN_ARRAY_FOREACH(j, row->cells) { MNTextTableCell *cell = g_ptr_array_index(row->cells, j); if (cell->layout) { pango_layout_context_changed(cell->layout); cell->dirty = TRUE; } } } self_set_dirty(self); } private void relayout (self) { int i; if (! selfp->dirty) return; selfp->width = 0; selfp->height = 0; MN_ARRAY_FOREACH(i, selfp->column_sizes) COLUMN_SIZE(self, i) = 0; MN_ARRAY_FOREACH(i, selfp->rows) { Row *row = g_ptr_array_index(selfp->rows, i); int j; row->height = 0; MN_ARRAY_FOREACH(j, row->cells) { MNTextTableCell *cell = g_ptr_array_index(row->cells, j); int n_columns = j + 1; if (cell->dirty) { g_assert(cell->layout != NULL); pango_layout_get_pixel_size(cell->layout, &cell->width, &cell->height); cell->dirty = FALSE; } if (n_columns > selfp->column_sizes->len) g_array_set_size(selfp->column_sizes, n_columns); if (cell->width > COLUMN_SIZE(self, j)) COLUMN_SIZE(self, j) = cell->width; if (cell->height > row->height) row->height = cell->height; } selfp->height += row->height; } MN_ARRAY_FOREACH(i, selfp->column_sizes) selfp->width += COLUMN_SIZE(self, i); if (selfp->column_sizes->len > 1) selfp->width += HORIZONTAL_SPACING * (selfp->column_sizes->len - 1); if (selfp->rows->len > 1) selfp->height += VERTICAL_SPACING * (selfp->rows->len - 1); selfp->dirty = FALSE; } virtual public void clear (self) { mn_g_ptr_array_free_deep_custom(selfp->rows, (GFunc) self_row_free, NULL); selfp->rows = g_ptr_array_new(); g_array_set_size(selfp->column_sizes, 0); selfp->row = NULL; self_set_dirty(self); } public MNTextTableCell * append_text_cell (self, const char *text) { return self_append_text_cell_from_layout(self, gtk_widget_create_pango_layout(GTK_WIDGET(self), text)); } public MNTextTableCell * append_text_cell_from_markup (self, const char *markup (check null)) { PangoLayout *layout; layout = gtk_widget_create_pango_layout(GTK_WIDGET(self), NULL); pango_layout_set_markup(layout, markup, -1); return self_append_text_cell_from_layout(self, layout); } public MNTextTableCell * append_text_cell_from_layout (self, Pango:Layout *layout (check null)) { MNTextTableCell *cell; cell = g_new(MNTextTableCell, 1); cell->layout = layout; cell->dirty = TRUE; self_append_cell_real(self, cell); return cell; } public MNTextTableCell * append_blank_cell (self, int width, int height) { MNTextTableCell *cell; cell = g_new(MNTextTableCell, 1); cell->layout = NULL; cell->dirty = FALSE; cell->width = width; cell->height = height; self_append_cell_real(self, cell); return cell; } private void append_cell_real (self, MNTextTableCell *cell) { if (! selfp->row) { selfp->row = g_new(Row, 1); selfp->row->cells = g_ptr_array_new(); g_ptr_array_add(selfp->rows, selfp->row); } g_ptr_array_add(selfp->row->cells, cell); self_set_dirty(self); } public void cell_set_text (self, MNTextTableCell *cell (check null), const char *text (check null)) { const char *current_text; g_return_if_fail(cell->layout != NULL); current_text = pango_layout_get_text(cell->layout); if (! current_text || strcmp(current_text, text)) { pango_layout_set_text(cell->layout, text, -1); cell->dirty = TRUE; self_set_dirty(self); } } public void line_break (self) { selfp->row = NULL; } } mail-notification-5.4.dfsg.1/src/org-gnome-MailNotification.xml0000644000175000001440000000100010742272655024306 0ustar evilynuxusers mail-notification-5.4.dfsg.1/src/mn-properties-dialog.gob0000644000175000001440000002664011015312440023173 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-dialog.h" %} %privateheader{ #include "mn-mailbox.h" %} %{ #include #include #include "mn-conf.h" #include "mn-util.h" #include "mn-mailbox-view.h" #include "mn-shell.h" #include "mn-file-chooser-button.h" #include "mn-sound-file-chooser-dialog.h" #include "mn-test-mailbox.h" #include "mn-non-linear-range.h" static const MNNonLinearRangeBlock expiration_blocks[] = { { MN_SECS(1), MN_SECS(10), MN_SECS(1) }, { MN_SECS(15), MN_SECS(60), MN_SECS(5) }, { MN_MINS(2), MN_MINS(10), MN_MINS(1) }, { MN_MINS(15), MN_MINS(60), MN_MINS(5) } }; %} class MN:Properties:Dialog from MN:Dialog { private GtkWidget *notebook; /* general tab */ private GtkWidget *play_sound_hbox; private GtkWidget *play_sound_check; private GtkWidget *play_sound_file_chooser_button; private GtkWidget *scrolled; private GtkWidget *list; private GtkWidget *selected_label; private GtkWidget *add; private GtkWidget *remove; private GtkWidget *properties; /* status icon tab */ private GtkWidget *icon_action_mail_reader_radio; private GtkWidget *icon_action_open_latest_message_radio; private GtkWidget *icon_action_consider_new_mail_as_read_radio; private GtkWidget *icon_action_update_radio; /* message popups tab */ private GtkWidget *popups_enable_check; private GtkWidget *popups_position_section_label; private GtkWidget *popups_position_attached_radio; private GtkWidget *popups_position_free_radio; private GtkWidget *popups_expiration_section_label; private GtkWidget *popups_expiration_default_radio; private GtkWidget *popups_expiration_never_radio; private GtkWidget *popups_expiration_after_radio; private GtkWidget *popups_expiration_scale; private MNMailbox *test_mailbox destroy { self_remove_test_mailbox(self); }; init (self) { GtkTreeSelection *selection; mn_container_create_interface(GTK_CONTAINER(self), PKGDATADIR G_DIR_SEPARATOR_S "properties-dialog.glade", "main_vbox", "mn_properties_dialog_", "notebook", &selfp->notebook, "play_sound_hbox", &selfp->play_sound_hbox, "play_sound_check", &selfp->play_sound_check, "scrolled", &selfp->scrolled, "selected_label", &selfp->selected_label, "add", &selfp->add, "remove", &selfp->remove, "properties", &selfp->properties, "icon_action_mail_reader_radio", &selfp->icon_action_mail_reader_radio, "icon_action_open_latest_message_radio", &selfp->icon_action_open_latest_message_radio, "icon_action_consider_new_mail_as_read_radio", &selfp->icon_action_consider_new_mail_as_read_radio, "icon_action_update_radio", &selfp->icon_action_update_radio, "popups_enable_check", &selfp->popups_enable_check, "popups_position_section_label", &selfp->popups_position_section_label, "popups_position_attached_radio", &selfp->popups_position_attached_radio, "popups_position_free_radio", &selfp->popups_position_free_radio, "popups_expiration_section_label", &selfp->popups_expiration_section_label, "popups_expiration_default_radio", &selfp->popups_expiration_default_radio, "popups_expiration_never_radio", &selfp->popups_expiration_never_radio, "popups_expiration_after_radio", &selfp->popups_expiration_after_radio, "popups_expiration_scale", &selfp->popups_expiration_scale, NULL); /* translators: header capitalization */ gtk_window_set_title(GTK_WINDOW(self), _("Mail Notification Properties")); gtk_dialog_add_buttons(GTK_DIALOG(self), GTK_STOCK_HELP, GTK_RESPONSE_HELP, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); selfp->play_sound_file_chooser_button = mn_file_chooser_button_new(self_play_sound_file_chooser_create_dialog_cb, NULL); gtk_box_pack_start(GTK_BOX(selfp->play_sound_hbox), selfp->play_sound_file_chooser_button, TRUE, TRUE, 0); gtk_widget_show(selfp->play_sound_file_chooser_button); selfp->list = mn_mailbox_view_new(); gtk_container_add(GTK_CONTAINER(selfp->scrolled), selfp->list); gtk_widget_show(selfp->list); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(selfp->list)); g_object_connect(selection, "swapped-signal::changed", self_update_selected_label, self, "swapped-signal::changed", self_update_sensitivity, self, NULL); mn_setup_dnd(selfp->scrolled); mn_non_linear_range_setup_static(GTK_RANGE(selfp->popups_expiration_scale), expiration_blocks, G_N_ELEMENTS(expiration_blocks)); mn_conf_link_window(GTK_WINDOW(self), MN_CONF_PROPERTIES_DIALOG); mn_conf_link_object(selfp->play_sound_check, MN_CONF_SOUNDS_NEW_MAIL_ENABLED, "active"); mn_conf_link_object(selfp->play_sound_file_chooser_button, MN_CONF_SOUNDS_NEW_MAIL_FILE, "filename"); mn_conf_link_object(selfp->popups_enable_check, MN_CONF_POPUPS_ENABLED, "active"); mn_conf_link_non_linear_range(GTK_RANGE(selfp->popups_expiration_scale), MN_CONF_POPUPS_EXPIRATION_DELAY); mn_conf_link_radio_group_to_enum(MN_TYPE_ACTION, MN_CONF_CLICK_ACTION, selfp->icon_action_mail_reader_radio, MN_ACTION_LAUNCH_MAIL_READER, selfp->icon_action_open_latest_message_radio, MN_ACTION_OPEN_LATEST_MESSAGE, selfp->icon_action_consider_new_mail_as_read_radio, MN_ACTION_CONSIDER_NEW_MAIL_AS_READ, selfp->icon_action_update_radio, MN_ACTION_UPDATE_MAIL_STATUS, NULL); mn_conf_link_radio_group_to_enum(MN_TYPE_POPUP_POSITION, MN_CONF_POPUPS_POSITION, selfp->popups_position_attached_radio, MN_POPUP_POSITION_ATTACHED, selfp->popups_position_free_radio, MN_POPUP_POSITION_FREE, NULL); mn_conf_link_radio_group_to_enum(MN_TYPE_EXPIRATION_ENABLED, MN_CONF_POPUPS_EXPIRATION_ENABLED, selfp->popups_expiration_default_radio, MN_EXPIRATION_ENABLED_DEFAULT, selfp->popups_expiration_never_radio, MN_EXPIRATION_ENABLED_FALSE, selfp->popups_expiration_after_radio, MN_EXPIRATION_ENABLED_TRUE, NULL); self_update_selected_label(self); self_update_sensitivity(self); /* * HIG chapter 3: * "When opening a dialog, provide initial keyboard focus to the * component that you expect users to operate first. This focus is * especially important for users who must use a keyboard to * navigate your application." */ gtk_widget_grab_focus(selfp->add); g_signal_connect(self, "response", G_CALLBACK(self_response_h), NULL); } private GtkFileChooserDialog * play_sound_file_chooser_create_dialog_cb (gpointer data) { return GTK_FILE_CHOOSER_DIALOG(mn_sound_file_chooser_dialog_new()); } private void remove_test_mailbox (self) { if (selfp->test_mailbox) { mn_mailboxes_remove(mn_shell->mailboxes, selfp->test_mailbox); g_object_unref(selfp->test_mailbox); selfp->test_mailbox = NULL; } } private void response_h (self, int response, gpointer user_data) { switch (response) { case GTK_RESPONSE_HELP: { int current_page; static const char *sections[] = { "properties-general", "properties-status-icon", "properties-message-popups" }; current_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(selfp->notebook)); g_assert(current_page >= 0 && current_page < G_N_ELEMENTS(sections)); mn_show_help(GTK_WINDOW(self), sections[current_page]); break; } case GTK_RESPONSE_CLOSE: gtk_widget_destroy(GTK_WIDGET(self)); break; } } private void update_selected_label (self) { GtkTreeSelection *selection; int n_rows; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(selfp->list)); n_rows = gtk_tree_selection_count_selected_rows(selection); if (n_rows == 0) gtk_label_set_text(GTK_LABEL(selfp->selected_label), _("No mailbox selected.")); else { char *str; str = g_strdup_printf(ngettext("%i mailbox selected.", "%i mailboxes selected.", n_rows), n_rows); gtk_label_set_text(GTK_LABEL(selfp->selected_label), str); g_free(str); } } private void update_sensitivity (self) { gboolean play_sound_enabled; GtkTreeSelection *selection; gboolean has_selection; gboolean popups_enabled; gboolean popups_expiration_after_enabled; play_sound_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->play_sound_check)); gtk_widget_set_sensitive(selfp->play_sound_file_chooser_button, play_sound_enabled); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(selfp->list)); has_selection = gtk_tree_selection_count_selected_rows(selection) > 0; gtk_widget_set_sensitive(selfp->remove, has_selection); gtk_widget_set_sensitive(selfp->properties, has_selection); popups_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->popups_enable_check)); popups_expiration_after_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->popups_expiration_after_radio)); gtk_widget_set_sensitive(selfp->popups_position_section_label, popups_enabled); gtk_widget_set_sensitive(selfp->popups_position_attached_radio, popups_enabled); gtk_widget_set_sensitive(selfp->popups_position_free_radio, popups_enabled); gtk_widget_set_sensitive(selfp->popups_expiration_section_label, popups_enabled); gtk_widget_set_sensitive(selfp->popups_expiration_default_radio, popups_enabled); gtk_widget_set_sensitive(selfp->popups_expiration_never_radio, popups_enabled); gtk_widget_set_sensitive(selfp->popups_expiration_after_radio, popups_enabled); gtk_widget_set_sensitive(selfp->popups_expiration_scale, popups_enabled && popups_expiration_after_enabled); } /* libglade callbacks */ protected void toggled_h (self, GtkToggleButton *button) { self_update_sensitivity(self); } protected void add_clicked_h (self, GtkButton *button) { mn_mailbox_view_activate_add(MN_MAILBOX_VIEW(selfp->list)); } protected void remove_clicked_h (self, GtkButton *button) { mn_mailbox_view_activate_remove(MN_MAILBOX_VIEW(selfp->list)); } protected void properties_clicked_h (self, GtkButton *button) { mn_mailbox_view_activate_properties(MN_MAILBOX_VIEW(selfp->list)); } protected char * popups_expiration_format_value_h (self, double arg, GtkScale *scale) { return mn_format_seconds(mn_non_linear_range_get_value(GTK_RANGE(scale))); } protected void test_messages_toggled_h (self, GtkToggleButton *button) { if (gtk_toggle_button_get_active(button)) { if (! selfp->test_mailbox) { selfp->test_mailbox = mn_test_mailbox_new(); mn_mailbox_seal(selfp->test_mailbox); mn_mailboxes_add(mn_shell->mailboxes, selfp->test_mailbox); } } else self_remove_test_mailbox(self); } } mail-notification-5.4.dfsg.1/src/mn-evolution-message.gob0000644000175000001440000000727211015312440023210 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-message.h" %} %{ #include #include #include "mn-evolution-mailbox.h" #include "mn-message-private.h" #include "mn-evolution-client.h" #include "mn-evolution-client-dbus.h" #include "mn-util.h" #define CLIENT_METHOD(invocation) \ { \ MNEvolutionMailbox *mailbox = MN_EVOLUTION_MAILBOX(message->mailbox); \ MNEvolutionClient *client; \ GError *tmp_err = NULL; \ GError *err = NULL; \ \ client = mn_evolution_client_get(); \ \ if (! client->proxy) \ { \ g_set_error(&err, 0, 0, _("Unable to contact Evolution.")); \ goto end; \ } \ \ if (! invocation) \ { \ g_set_error(&err, 0, 0, _("An Evolution error has occurred: %s."), tmp_err->message); \ g_error_free(tmp_err); \ } \ \ end: \ mn_message_action_done(request, err); \ } %} class MN:Evolution:Message from MN:Message { private char *uid destroywith g_free; property STRING uid (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT); public MNMessage * new (MNMailbox *mailbox, time_t sent_time, const char *id, const char *from, const char *subject, MNMessageFlags flags, const char *uid (check null)) { return MN_MESSAGE(GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX(mailbox), MN_MESSAGE_PROP_SENT_TIME(sent_time), MN_MESSAGE_PROP_ID((char *) id), MN_MESSAGE_PROP_FROM((char *) from), MN_MESSAGE_PROP_SUBJECT((char *) subject), MN_MESSAGE_PROP_FLAGS(flags), MN_EVOLUTION_MESSAGE_PROP_UID((char *) uid), NULL)); } override (MN:Message) gboolean builtin_can_open (MNMessage *message) { return TRUE; } override (MN:Message) void builtin_open (MNMessage *message, MNMessageActionRequest *request) { Self *self = SELF(message); CLIENT_METHOD(org_gnome_MailNotification_Evolution_open_message(client->proxy, mailbox->uri, selfp->uid, &tmp_err)); } private void set_flags (self, guint32 flags, MNMessageActionRequest *request) { MNMessage *message = MN_MESSAGE(self); CLIENT_METHOD(org_gnome_MailNotification_Evolution_set_message_flags(client->proxy, mailbox->uri, selfp->uid, flags, &tmp_err)); } override (MN:Message) void builtin_mark_as_read (MNMessage *message, MNMessageActionRequest *request) { self_set_flags(SELF(message), CAMEL_MESSAGE_SEEN, request); } override (MN:Message) void builtin_mark_as_spam (MNMessage *message, MNMessageActionRequest *request) { self_set_flags(SELF(message), CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_JUNK | CAMEL_MESSAGE_JUNK_LEARN, request); } override (MN:Message) void builtin_delete (MNMessage *message, MNMessageActionRequest *request) { self_set_flags(SELF(message), CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_DELETED, request); } } mail-notification-5.4.dfsg.1/src/mn-non-linear-range.c0000644000175000001440000000765311015312437022362 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include "mn-non-linear-range.h" #include "mn-util.h" typedef struct { const MNNonLinearRangeBlock *blocks; int num_blocks; } RangeInfo; static GQuark info_quark = 0; static void global_init (void) { if (! info_quark) info_quark = g_quark_from_static_string("mn-non-linear-range-info"); } static RangeInfo * get_info (GtkRange *range) { RangeInfo *info; g_return_val_if_fail(GTK_IS_RANGE(range), NULL); g_return_val_if_fail(info_quark != 0, NULL); info = g_object_get_qdata(G_OBJECT(range), info_quark); g_return_val_if_fail(info != NULL, NULL); return info; } static int get_block_len (const MNNonLinearRangeBlock *block) { g_return_val_if_fail(block != NULL, -1); return ((block->max - block->min) / block->step) + 1; } void mn_non_linear_range_setup_static (GtkRange *range, const MNNonLinearRangeBlock *blocks, int num_blocks) { RangeInfo *info; int i; int num_values = 0; g_return_if_fail(GTK_IS_RANGE(range)); g_return_if_fail(blocks != NULL); g_return_if_fail(num_blocks > 0); global_init(); info = g_new0(RangeInfo, 1); info->blocks = blocks; info->num_blocks = num_blocks; g_object_set_qdata_full(G_OBJECT(range), info_quark, info, g_free); for (i = 0; i < num_blocks; i++) num_values += get_block_len(&blocks[i]); gtk_range_set_range(range, 0, num_values - 1); } gboolean mn_is_non_linear_range (gpointer object) { return object != NULL && info_quark != 0 && g_object_get_qdata(object, info_quark) != NULL; } int mn_non_linear_range_get_value (GtkRange *range) { RangeInfo *info; int raw; int offset = 0; int i; g_return_val_if_fail(GTK_IS_RANGE(range), -1); info = get_info(range); raw = (int) gtk_range_get_value(range); for (i = 0; i < info->num_blocks; i++) { const MNNonLinearRangeBlock *block = &info->blocks[i]; int next_offset; next_offset = offset + get_block_len(block); if (raw >= offset && raw < next_offset) return block->min + (raw - offset) * block->step; offset = next_offset; } g_assert_not_reached(); return -1; } static int value_to_index (RangeInfo *info, int value) { int offset = 0; int i; /* if smaller than the first value, use the first value */ if (value < info->blocks[0].min) return 0; for (i = 0; i < info->num_blocks; i++) { const MNNonLinearRangeBlock *block = &info->blocks[i]; if (value >= block->min && value <= block->max) { int rounded; int index; int j; /* round the value to the nearest step */ rounded = lround((double) value / block->step) * block->step; for (j = block->min, index = 0; j <= block->max; j += block->step, index++) if (j == rounded) return offset + index; g_assert_not_reached(); } offset += get_block_len(block); } /* block not found: fallback to the maximum value */ return offset - 1; } /* * If the value is not found in the blocks, the nearest existing value * will be used. */ void mn_non_linear_range_set_value (GtkRange *range, int value) { g_return_if_fail(GTK_IS_RANGE(range)); gtk_range_set_value(range, value_to_index(get_info(range), value)); } mail-notification-5.4.dfsg.1/src/mn-locked-callback.c0000644000175000001440000002076011015312437022213 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include "mn-locked-callback.h" #include "mn-conf.h" #include "mn-util.h" /* * About MNLockedCallback: * * Consider the following code: * * static gboolean idle_cb (gpointer data) * { * MyObject *object = data; * * GDK_THREADS_ENTER(); * ...do something with object * GDK_THREADS_LEAVE(); * * return TRUE; * } * * static void my_object_init (MyObject *object) * { * object->idle_id = g_idle_add(idle_cb, object); * } * * static void my_object_finalize (GObject *object) * { * g_source_remove(MY_OBJECT(object)->idle_id); * G_OBJECT_CLASS(parent_class)->finalize(object); * } * * Timeline of events: * * 1) in thread x: we grab the GDK lock * 2) in the main_thread: idle_cb() is executed and waits to acquire * the lock * 3) in thread x: we do something which causes the object instance * to be finalized, and we release the lock * 4) in the main thread: idle_cb() acquires the lock and crashes * because the object instance has been destroyed while it was * waiting for the lock * * This code is therefore unsafe if MyObject can be destroyed from * another thread than the thread running the GLib main loop. * * This observation can be generalized as follows: holding a lock in a * callback and unregistering the callback from another thread with * the same lock held is not thread-safe. * * As of version 2.12, GTK+ is no longer affected by this problem * since the gdk_threads_add_*() family of functions has been added * (see http://bugzilla.gnome.org/show_bug.cgi?id=321886). * * However, most GTK+-based libraries (libgnomeui, libeel, ...) are * still affected. MNLockedCallback provides solutions for the * components used by MN (GConf, GnomeVFS). * * Note that throughout Mail Notification, we always use our * MNLockedCallback variants (except of course for callbacks which do * not need to hold a lock), even in objects which cannot be destroyed * from a thread and are therefore not affected by the problem. It is * safer and more maintainable than having to follow the code path to * decide whether the stock library functions can safely be used or * not, and the MNLockedCallback overhead is neglectible. */ typedef struct { gboolean removed; gpointer function; gpointer data; gpointer handle; } LockedCallback; static GHashTable *vfs_monitors = NULL; G_LOCK_DEFINE_STATIC(vfs_monitors); static void gconf_notification_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { LockedCallback *callback = user_data; GDK_THREADS_ENTER(); if (! callback->removed) ((GConfClientNotifyFunc) callback->function)(client, cnxn_id, entry, callback->data); GDK_THREADS_LEAVE(); } static void gconf_notification_weak_notify_cb (gpointer data, GObject *former_object) { LockedCallback *callback = data; callback->removed = TRUE; mn_conf_notification_remove(GPOINTER_TO_UINT(callback->handle)); } static void locked_callback_free (LockedCallback *callback) { g_return_if_fail(callback != NULL); g_free(callback); } /** * mn_g_object_gconf_notification_add_gdk_locked: * @object: a GObject-derived instance * @key: a GConf key or namespace section * @function: function to call when changes occur * @user_data: data to pass to @function * * Monitors the GConf key or namespace @key for changes. The @function * invocation will be wrapped with GDK_THREADS_ENTER() and * GDK_THREADS_LEAVE(). The notification will be removed when @object * is finalized. If after acquiring the GDK lock, the object has been * removed, @function will not be executed. **/ void mn_g_object_gconf_notification_add_gdk_locked (gpointer object, const char *key, GConfClientNotifyFunc function, gpointer user_data) { LockedCallback *callback; g_return_if_fail(G_IS_OBJECT(object)); g_return_if_fail(key != NULL); g_return_if_fail(function != NULL); callback = g_new0(LockedCallback, 1); callback->function = function; callback->data = user_data; callback->handle = GUINT_TO_POINTER(mn_conf_notification_add(key, gconf_notification_cb, callback, (GDestroyNotify) locked_callback_free)); g_object_weak_ref(G_OBJECT(object), gconf_notification_weak_notify_cb, callback); } /** * mn_g_object_gconf_notifications_add_gdk_locked: * @object: a GObject-derived instance * @...: a %NULL-terminated list of key/function/user_data tuples * * Adds multiple GConf notifications with * mn_g_object_gconf_notification_add_gdk_locked(). **/ void mn_g_object_gconf_notifications_add_gdk_locked (gpointer object, ...) { va_list args; const char *key; g_return_if_fail(G_IS_OBJECT(object)); va_start(args, object); while ((key = va_arg(args, const char *))) { GConfClientNotifyFunc function; gpointer user_data; function = va_arg(args, GConfClientNotifyFunc); g_return_if_fail(function != NULL); user_data = va_arg(args, gpointer); mn_g_object_gconf_notification_add_gdk_locked(object, key, function, user_data); } va_end(args); } static void vfs_monitor_cb (GnomeVFSMonitorHandle *handle, const char *monitor_uri, const char *info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data) { GnomeVFSMonitorCallback callback; G_LOCK(vfs_monitors); callback = g_hash_table_lookup(vfs_monitors, handle); if (callback) callback(handle, monitor_uri, info_uri, event_type, user_data); G_UNLOCK(vfs_monitors); } /** * mn_gnome_vfs_monitor_add_locked: * @handle: a location to return the monitor handle on success * @text_uri: URI to monitor * @monitor_type: monitor type * @callback: function to call * @user_data: data to pass to @function * * Monitors @text_uri and invokes @callback when a change occurs. * Callback invocations will be protected by an internal global lock, * and will not occur if the monitor has been removed. * * Return value: the status of the operation **/ GnomeVFSResult mn_gnome_vfs_monitor_add_locked (GnomeVFSMonitorHandle **handle, const char *text_uri, GnomeVFSMonitorType monitor_type, GnomeVFSMonitorCallback callback, gpointer user_data) { GnomeVFSMonitorHandle *_handle; GnomeVFSResult result; g_return_val_if_fail(handle != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS); g_return_val_if_fail(text_uri != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS); g_return_val_if_fail(callback != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS); /* * We need a global monitor hash table because * gnome_vfs_monitor_add() has no destroy_data parameter. */ G_LOCK(vfs_monitors); result = gnome_vfs_monitor_add(&_handle, text_uri, monitor_type, vfs_monitor_cb, user_data); if (result == GNOME_VFS_OK) { *handle = _handle; if (! vfs_monitors) vfs_monitors = g_hash_table_new(g_direct_hash, g_direct_equal); g_hash_table_insert(vfs_monitors, _handle, callback); } G_UNLOCK(vfs_monitors); return result; } /** * mn_gnome_vfs_monitor_cancel_locked: * @handle: handle of the monitor to cancel * * Cancels the monitor pointed to by @handle (which must have been * returned by a call to mn_gnome_vfs_monitor_add_locked()), using a * global lock to make sure that its callback function will no longer * be executed. * * Return value: the status of the operation **/ GnomeVFSResult mn_gnome_vfs_monitor_cancel_locked (GnomeVFSMonitorHandle *handle) { GnomeVFSResult result; g_return_val_if_fail(handle != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS); G_LOCK(vfs_monitors); g_assert(g_hash_table_lookup(vfs_monitors, handle) != NULL); g_hash_table_remove(vfs_monitors, handle); result = gnome_vfs_monitor_cancel(handle); G_UNLOCK(vfs_monitors); return result; } mail-notification-5.4.dfsg.1/src/mn-client-session.c0000644000175000001440000012136611015312437022163 0ustar evilynuxusers/* * mn-client-session.c - a state machine for handling POP3 and IMAP * client sessions. * * The MNClientSession interface provides an abstract POP3 and IMAP * protocol client. The module handles the low-level client * functionality, such as connecting to a server, setting up SSL/TLS, * reading and writing data, and conducting a SASL authentication * exchange. * * MNClientSession contains no code which is specific to either POP3 * or IMAP. It is the responsability of the caller to manage the POP3 * or IMAP session, by parsing responses and switching to the * appropriate state depending on the context. * * * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include /* required by stdlib.h on Darwin */ #include /* required by sys/socket.h on Darwin */ #include #include #include #include #include #include #include #include #include #include #include #include #if WITH_SSL #include #include #include "mn-ssl.h" #endif /* WITH_SSL */ #if WITH_SASL #include #include #include "mn-sasl.h" #endif /* WITH_SASL */ #include "mn-util.h" #include "mn-client-session.h" #define READ_BUFSIZE 2048 struct _MNClientSession { const MNClientSessionState *states; const MNClientSessionCallbacks *callbacks; const char *server; int port; int s; const MNClientSessionState *state; GError *error; MNClientSessionPrivate *private; GByteArray *input_buffer; unsigned int bytes_to_remove; #if WITH_SSL SSL *ssl; #endif #if WITH_SASL sasl_conn_t *sasl_conn; sasl_ssf_t sasl_ssf; unsigned int sasl_maxoutbuf; #endif /* WITH_SASL */ }; #if WITH_SASL static sasl_callback_t sasl_callbacks[] = { { SASL_CB_USER, NULL, NULL }, { SASL_CB_AUTHNAME, NULL, NULL }, { SASL_CB_PASS, NULL, NULL }, { SASL_CB_LIST_END, NULL, NULL } }; #endif /* WITH_SASL */ #ifndef HAVE_REENTRANT_RESOLVER G_LOCK_DEFINE_STATIC(resolver); #endif static int mn_connect (int fd, const struct sockaddr *addr, socklen_t addrlen) { int status; again: status = connect(fd, addr, addrlen); if (status < 0) switch (errno) { case EINTR: goto again; case EISCONN: return 0; } return status; } static ssize_t mn_read (int fd, void *buf, size_t count) { ssize_t bytes_read; do bytes_read = read(fd, buf, count); while (bytes_read < 0 && errno == EINTR); return bytes_read; } static ssize_t mn_write (int fd, const void *buf, size_t count) { ssize_t bytes_written; do bytes_written = write(fd, buf, count); while (bytes_written < 0 && errno == EINTR); return bytes_written; } static int mn_close (int fd) { int status; do status = close(fd); while (status < 0 && errno == EINTR); return status; } static struct addrinfo * resolve (MNClientSession *session) { char *servname; struct addrinfo hints; struct addrinfo *addrinfo; int status; g_return_val_if_fail(session != NULL, NULL); memset(&hints, 0, sizeof(hints)); #if WITH_IPV6 hints.ai_family = PF_UNSPEC; #else hints.ai_family = PF_INET; #endif /* WITH_IPV6 */ hints.ai_socktype = SOCK_STREAM; mn_client_session_notice(session, _("resolving %s"), session->server); servname = g_strdup_printf("%i", session->port); #ifndef HAVE_REENTRANT_RESOLVER G_LOCK(resolver); #endif status = getaddrinfo(session->server, servname, &hints, &addrinfo); #ifndef HAVE_REENTRANT_RESOLVER G_UNLOCK(resolver); #endif g_free(servname); if (status == 0) return addrinfo; else { mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to resolve %s: %s"), session->server, gai_strerror(status)); return NULL; } } static int client_session_connect (MNClientSession *session, struct addrinfo *addrinfo) { struct addrinfo *a; int n; g_return_val_if_fail(session != NULL, -1); g_return_val_if_fail(addrinfo != NULL, -1); /* iterate over addrinfo to find a working address (RFC 3484) */ for (a = addrinfo, n = 1; a; a = a->ai_next, n++) { int status; int s; char buf[NI_MAXHOST]; char *fail_str = NULL; const char *ip; #ifndef HAVE_REENTRANT_RESOLVER G_LOCK(resolver); #endif status = getnameinfo(a->ai_addr, a->ai_addrlen, buf, sizeof(buf), NULL, 0, NI_NUMERICHOST); #ifndef HAVE_REENTRANT_RESOLVER G_UNLOCK(resolver); #endif if (status == 0) ip = buf; else { fail_str = g_strdup_printf(_("network address #%i"), n); ip = fail_str; mn_client_session_warning(session, _("unable to convert network address #%i into textual form: %s"), n, gai_strerror(status)); } if (a->ai_family == AF_INET) ((struct sockaddr_in *) a->ai_addr)->sin_port = g_htons(session->port); #if WITH_IPV6 else if (a->ai_family == AF_INET6) ((struct sockaddr_in6 *) a->ai_addr)->sin6_port = g_htons(session->port); #endif /* WITH_IPV6 */ else { mn_client_session_notice(session, _("%s: unsupported address family"), ip); goto failure; } s = socket(a->ai_family, SOCK_STREAM, 0); if (s < 0) { mn_client_session_notice(session, _("%s: unable to create socket: %s"), ip, g_strerror(errno)); goto failure; } mn_client_session_notice(session, _("connecting to %s (%s) port %i"), session->server, ip, session->port); if (mn_connect(s, a->ai_addr, a->ai_addrlen) < 0) { mn_client_session_notice(session, _("unable to connect: %s"), g_strerror(errno)); mn_close(s); } else { mn_client_session_notice(session, _("connected successfully")); goto success; } failure: g_free(fail_str); continue; success: g_free(fail_str); return s; } /* if reached, we couldn't find a working address */ mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to connect to %s"), session->server); return -1; } static int enter_state (MNClientSession *session, int id) { int i; g_return_val_if_fail(session != NULL, 0); for (i = 0; session->states[i].id; i++) if (session->states[i].id == id) { session->state = &session->states[i]; return session->state->enter_cb ? session->state->enter_cb(session, session->private) : MN_CLIENT_SESSION_RESULT_CONTINUE; } g_assert_not_reached(); return 0; } static gboolean handle_input (MNClientSession *session, const char *input) { MNClientSessionResponse *response; gboolean cont = TRUE; g_return_val_if_fail(session != NULL, FALSE); g_return_val_if_fail(input != NULL, FALSE); response = session->callbacks->response_new(session, input, session->private); if (response) { int result; g_assert(session->state->handle_cb != NULL); result = session->state->handle_cb(session, response, session->private); loop: switch (result) { case MN_CLIENT_SESSION_RESULT_CONTINUE: break; case MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT: { char *escaped; escaped = mn_utf8_escape(input); mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("response \"%s\" is not valid in current context"), escaped); g_free(escaped); cont = FALSE; } break; case MN_CLIENT_SESSION_RESULT_DISCONNECT: cont = FALSE; break; case 0: /* assertion failed somewhere */ g_assert_not_reached(); break; default: g_assert(result > 0); result = enter_state(session, result); goto loop; } if (session->callbacks->response_free) session->callbacks->response_free(session, response, session->private); } else { char *escaped; escaped = mn_utf8_escape(input); mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to parse response \"%s\""), escaped); g_free(escaped); cont = FALSE; } return cont; } /** * mn_client_session_run: * @states: a %MN_CLIENT_SESSION_STATES_END-terminated array of * %MNClientSessionState structures. One of the states must * have the %MN_CLIENT_SESSION_INITIAL_STATE id. * @callbacks: a pointer to a %MNClientSessionCallbacks structure * @use_ssl: whether to establish a SSL/TLS connection or not * @server: the hostname, IPv4 address or IPv6 address to connect to * @port: the port to connect to * @private: an opaque pointer which will be passed to callbacks, or %NULL * @err: a location to report errors, or %NULL * * Runs the client session. After connecting to the server, the * %MN_CLIENT_SESSION_INITIAL_STATE state is entered. * * Return value: %TRUE on success, or %FALSE on failure (in such case * @err is set) **/ gboolean mn_client_session_run (const MNClientSessionState *states, const MNClientSessionCallbacks *callbacks, #if WITH_SSL gboolean use_ssl, #endif const char *server, int port, MNClientSessionPrivate *private, GError **err) { MNClientSession session; struct addrinfo *addrinfo; const char *line; g_return_val_if_fail(states != NULL, FALSE); g_return_val_if_fail(callbacks != NULL, FALSE); g_return_val_if_fail(callbacks->response_new != NULL, FALSE); #if WITH_SSL g_return_val_if_fail(callbacks->ssl_trust_server != NULL, FALSE); #endif g_return_val_if_fail(server != NULL, FALSE); memset(&session, 0, sizeof(session)); session.states = states; session.callbacks = callbacks; session.server = server; session.port = port; session.private = private; addrinfo = resolve(&session); if (! addrinfo) goto end; session.s = client_session_connect(&session, addrinfo); freeaddrinfo(addrinfo); if (session.s < 0) goto end; #if WITH_SSL if (use_ssl) { if (! mn_client_session_enable_ssl(&session)) goto end; } #endif /* WITH_SSL */ enter_state(&session, MN_CLIENT_SESSION_INITIAL_STATE); session.input_buffer = g_byte_array_new(); while ((line = mn_client_session_read_line(&session))) if (! handle_input(&session, line)) break; g_byte_array_free(session.input_buffer, TRUE); end: if (session.s >= 0) mn_close(session.s); #if WITH_SSL if (session.ssl) SSL_free(session.ssl); #endif /* WITH_SSL */ #if WITH_SASL if (session.sasl_conn) sasl_dispose(&session.sasl_conn); #endif /* WITH_SASL */ if (session.error) { g_propagate_error(err, session.error); return FALSE; } else return TRUE; } #if WITH_SSL /** * mn_client_session_ssl_get_certificate_servers(): * @cert: the server certificate * * Returns the list of server names (commonName and subjectAltName) * contained in @cert. * * Return value: a newly-allocated list of UTF-8 server names. When no * longer used, the list must be freed with mn_g_slist_free_deep(). **/ static GSList * get_ssl_certificate_servers (X509 *cert) { GSList *servers = NULL; X509_NAME *subject; void *ext; g_return_val_if_fail(cert != NULL, NULL); /* append the commonName entries */ subject = X509_get_subject_name(cert); if (subject) { int pos = -1; while (TRUE) { X509_NAME_ENTRY *entry; ASN1_STRING *data; int len; unsigned char *str; pos = X509_NAME_get_index_by_NID(subject, NID_commonName, pos); if (pos == -1) break; entry = X509_NAME_get_entry(subject, pos); if (! entry) continue; data = X509_NAME_ENTRY_get_data(entry); if (! data) continue; len = ASN1_STRING_to_UTF8(&str, data); if (len < 0) continue; g_assert(g_utf8_validate(str, len, NULL)); servers = g_slist_append(servers, g_strndup(str, len)); OPENSSL_free(str); } } /* * RFC 3501 11.1: "If a subjectAltName extension of type dNSName is * present in the certificate, it SHOULD be used as the source of * the server's identity." */ ext = X509_get_ext_d2i(cert, NID_subject_alt_name, NULL, NULL); if (ext) { int count; int i; count = sk_GENERAL_NAME_num(ext); for (i = 0; i < count; i++) { GENERAL_NAME *name; name = sk_GENERAL_NAME_value(ext, i); if (name && name->type == GEN_DNS && name->d.ia5->data && g_utf8_validate(name->d.ia5->data, -1, NULL)) servers = g_slist_append(servers, g_strdup(name->d.ia5->data)); } } return servers; } static gboolean check_ssl_server_name (const char *user_name, const char *cert_name) { g_return_val_if_fail(user_name != NULL, FALSE); g_return_val_if_fail(cert_name != NULL, FALSE); /* * RFC 3501 11.1: "A "*" wildcard character MAY be used as the * left-most name component in the certificate. For example, * *.example.com would match a.example.com, foo.example.com, * etc. but would not match example.com." */ if (g_str_has_prefix(cert_name, "*.")) { const char *domain = cert_name + 1; return mn_utf8_str_case_has_suffix(user_name, domain) && strlen(user_name) > strlen(domain); } else return ! mn_utf8_strcasecmp(user_name, cert_name); } static gboolean check_ssl_server_name_from_list (const char *user_name, GSList *cert_names) { GSList *l; g_return_val_if_fail(user_name != NULL, FALSE); MN_LIST_FOREACH(l, cert_names) { const char *cert_name = l->data; if (check_ssl_server_name(user_name, cert_name)) return TRUE; } return FALSE; } static char * get_ssl_verify_error (MNClientSession *session, X509 *cert) { long verify_result; GSList *servers; char *error = NULL; g_return_val_if_fail(session != NULL, NULL); g_return_val_if_fail(session->ssl != NULL, NULL); g_return_val_if_fail(cert != NULL, NULL); /* check the result of the OpenSSL verification */ verify_result = SSL_get_verify_result(session->ssl); if (verify_result != X509_V_OK) { /* * X509_verify_cert_error_string() is thread-unsafe (it can * return a pointer to a temporary static buffer). */ G_LOCK(mn_ssl); error = g_strdup(X509_verify_cert_error_string(verify_result)); G_UNLOCK(mn_ssl); return error; } /* * Check if the user-provided server name matches one of the * certificate-provided server names. This is required for IMAP (RFC * 3501 11.1) and cannot hurt for POP3. */ servers = get_ssl_certificate_servers(cert); if (! servers) return g_strdup(_("server name not found in certificate")); if (! check_ssl_server_name_from_list(session->server, servers)) { if (g_slist_length(servers) == 1) error = g_strdup_printf(_("user-provided server name \"%s\" does not match certificate-provided server name \"%s\""), session->server, (char *) servers->data); else { GString *servers_comma_list; GSList *l; servers_comma_list = g_string_new(NULL); MN_LIST_FOREACH(l, servers) { char *server = l->data; if (l->next) g_string_append_printf(servers_comma_list, _("\"%s\", "), server); else g_string_append_printf(servers_comma_list, _("\"%s\""), server); } error = g_strdup_printf(_("user-provided server name \"%s\" matches none of the certificate-provided server names %s"), session->server, servers_comma_list->str); g_string_free(servers_comma_list, TRUE); } } mn_g_slist_free_deep(servers); return error; } static gboolean verify_ssl_certificate (MNClientSession *session) { X509 *cert; g_return_val_if_fail(session != NULL, FALSE); g_return_val_if_fail(session->ssl != NULL, FALSE); cert = SSL_get_peer_certificate(session->ssl); if (cert) { char *error; gboolean status = FALSE; error = get_ssl_verify_error(session, cert); if (! error) status = TRUE; else { unsigned char md5sum[16]; unsigned char fingerprint[40]; int md5len; int i; unsigned char *f; /* calculate the MD5 hash of the raw certificate */ md5len = sizeof(md5sum); X509_digest(cert, EVP_md5(), md5sum, &md5len); for (i = 0, f = fingerprint; i < 16; i++, f += 3) sprintf(f, "%.2x%c", md5sum[i], i != 15 ? ':' : '\0'); if (session->callbacks->ssl_trust_server(session, session->server, session->port, fingerprint, error, session->private)) status = TRUE; g_free(error); } X509_free(cert); return status; } else return session->callbacks->ssl_trust_server(session, session->server, session->port, NULL, NULL, session->private); } /** * mn_client_session_enable_ssl: * @session: a #MNClientSession * * Enables in-band SSL/TLS. Must not be used if the @use_ssl * mn_client_session_run() argument was %TRUE. If an error occurs, * mn_client_session_set_error() will be called on @session. * * Return value: %TRUE on success **/ gboolean mn_client_session_enable_ssl (MNClientSession *session) { SSL_CTX *ctx; GError *err = NULL; int ret; g_return_val_if_fail(session != NULL, FALSE); g_return_val_if_fail(session->ssl == NULL, FALSE); ctx = mn_ssl_init(&err); if (! ctx) { mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to initialize the OpenSSL library: %s"), err->message); g_error_free(err); return FALSE; } session->ssl = SSL_new(ctx); if (! session->ssl) { mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to create a SSL/TLS object: %s"), mn_ssl_get_error()); return FALSE; } if (! SSL_set_fd(session->ssl, session->s)) { mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to set the SSL/TLS file descriptor: %s"), mn_ssl_get_error()); return FALSE; } ret = SSL_connect(session->ssl); if (ret != 1) { mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to perform the SSL/TLS handshake: %s"), mn_ssl_get_io_error(session->ssl, ret)); return FALSE; } if (! verify_ssl_certificate(session)) { mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("untrusted server")); return FALSE; } mn_client_session_notice(session, _("a SSL/TLS layer is now active (%s, %s %i-bit)"), SSL_get_version(session->ssl), SSL_get_cipher(session->ssl), SSL_get_cipher_bits(session->ssl, NULL)); return TRUE; } #endif /* WITH_SSL */ static void prepare_input_buffer (MNClientSession *session) { g_return_if_fail(session != NULL); if (session->bytes_to_remove) { g_byte_array_remove_range(session->input_buffer, 0, session->bytes_to_remove); session->bytes_to_remove = 0; } } static gboolean mn_client_session_fill_input_buffer (MNClientSession *session) { char buf[READ_BUFSIZE]; ssize_t bytes_read; const char *in = NULL; unsigned int inlen; g_return_val_if_fail(session != NULL, FALSE); if (session->callbacks->pre_read) session->callbacks->pre_read(session, session->private); #if WITH_SSL if (session->ssl) bytes_read = SSL_read(session->ssl, buf, sizeof(buf)); else #endif /* WITH_SSL */ bytes_read = mn_read(session->s, buf, sizeof(buf)); if (session->callbacks->post_read) session->callbacks->post_read(session, session->private); if (bytes_read <= 0) { #if WITH_SSL if (session->ssl) mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to read from server: %s"), mn_ssl_get_io_error(session->ssl, bytes_read)); else #endif /* WITH_SSL */ { if (bytes_read == 0) mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to read from server: EOF")); else mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to read from server: %s"), g_strerror(errno)); } return FALSE; } #if WITH_SASL if (session->sasl_ssf) { if (sasl_decode(session->sasl_conn, buf, bytes_read, &in, &inlen) != SASL_OK) { mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to decode data using SASL: %s"), sasl_errdetail(session->sasl_conn)); return FALSE; } } #endif /* WITH_SASL */ if (! in) { in = buf; inlen = bytes_read; } g_byte_array_append(session->input_buffer, in, inlen); return TRUE; } /** * mn_client_session_read: * @session: a #MNClientSession object to read from * @nbytes: the number of bytes to read * * Reads exactly @nbytes from @session. If an error occurs, * mn_client_session_set_error() will be called on @session. * * Return value: a pointer to a buffer containing @nbytes on success, * %NULL on failure. The pointer will be valid until the next call to * mn_client_session_read() or mn_client_session_read_line(). **/ gconstpointer mn_client_session_read (MNClientSession *session, unsigned int nbytes) { char *str; g_return_val_if_fail(session != NULL, FALSE); g_return_val_if_fail(session->input_buffer != NULL, FALSE); g_return_val_if_fail(nbytes >= 0, FALSE); prepare_input_buffer(session); while (session->input_buffer->len < nbytes) if (! mn_client_session_fill_input_buffer(session)) return FALSE; session->bytes_to_remove = nbytes; str = g_strndup(session->input_buffer->data, nbytes); /* g_log() escapes unsafe and non UTF-8 characters, so this is safe */ mn_client_session_notice(session, "< %s", str); g_free(str); return session->input_buffer->data; } /** * mn_client_session_read_line: * @session: a #MNClientSession object to read from * * Reads a crlf-terminated line from @session. If an error occurs, * mn_client_session_set_error() will be called on @session. * * Return value: the line read on success, %NULL on failure. The * pointer will be valid until the next call to * mn_client_session_read() or mn_client_session_read_line(). **/ const char * mn_client_session_read_line (MNClientSession *session) { char *terminator; const char *line; g_return_val_if_fail(session != NULL, NULL); g_return_val_if_fail(session->input_buffer != NULL, NULL); prepare_input_buffer(session); while (! (session->input_buffer->data && (terminator = g_strstr_len(session->input_buffer->data, session->input_buffer->len, "\r\n")))) if (! mn_client_session_fill_input_buffer(session)) return NULL; *terminator = 0; session->bytes_to_remove = terminator - (char *) session->input_buffer->data + 2; line = session->input_buffer->data; /* g_log() escapes unsafe and non UTF-8 characters, so this is safe */ mn_client_session_notice(session, "< %s", line); return line; } /** * mn_client_session_write: * @session: a #MNClientSession object to write to * @format: a printf() format string * @...: the arguments to the format string * * Writes a formatted crlf-terminated line to @session. If an error * occurs, mn_client_session_set_error() will be called on @session. * * Return value: %MN_CLIENT_SESSION_RESULT_CONTINUE on success, or the * return value of mn_client_session_set_error() on failure **/ int mn_client_session_write (MNClientSession *session, const char *format, ...) { char *str; char *full; unsigned int len; GByteArray *array = NULL; ssize_t bytes_written; int result = MN_CLIENT_SESSION_RESULT_CONTINUE; g_return_val_if_fail(session != NULL, 0); g_return_val_if_fail(format != NULL, 0); MN_STRDUP_VPRINTF(str, format); mn_client_session_notice(session, "> %s", str); full = g_strconcat(str, "\r\n", NULL); g_free(str); len = strlen(full); #if WITH_SASL if (session->sasl_ssf) { unsigned int start = 0; array = g_byte_array_new(); while (len > 0) { unsigned int chunk_len; const char *out; unsigned int outlen; chunk_len = MIN(len, session->sasl_maxoutbuf); if (sasl_encode(session->sasl_conn, full + start, chunk_len, &out, &outlen) != SASL_OK) { result = mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode data using SASL: %s"), sasl_errdetail(session->sasl_conn)); goto end; } g_byte_array_append(array, out, outlen); start += chunk_len; len -= chunk_len; } } #endif /* WITH_SASL */ if (! array) { array = g_byte_array_sized_new(len); g_byte_array_append(array, full, len); } #if WITH_SSL if (session->ssl) bytes_written = SSL_write(session->ssl, array->data, array->len); else #endif /* WITH_SSL */ bytes_written = mn_write(session->s, array->data, array->len); if (bytes_written <= 0) { #if WITH_SSL if (session->ssl) result = mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to write to server: %s"), mn_ssl_get_io_error(session->ssl, bytes_written)); else #endif /* WITH_SSL */ { if (bytes_written == 0) result = mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to write to server: EOF")); else result = mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to write to server: %s"), g_strerror(errno)); } } #if WITH_SASL end: #endif g_free(full); g_byte_array_free(array, TRUE); return result; } #if WITH_SASL static int write_base64 (MNClientSession *session, const char *buf, unsigned int len) { char buf64[len * 2]; /* Base64 is 33% larger than the data it encodes */ unsigned int outlen; int result; char *str; g_return_val_if_fail(session != NULL, 0); g_return_val_if_fail(buf != NULL, 0); result = sasl_encode64(buf, len, buf64, sizeof(buf64), &outlen); if (result != SASL_OK) return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode Base64: %s"), sasl_errstring(result, NULL, NULL)); str = g_strndup(buf64, outlen); result = mn_client_session_write(session, "%s", str); g_free(str); return result; } static gboolean fill_sasl_interact (MNClientSession *session, sasl_interact_t *interact, const char *unknown_warning) { sasl_interact_t *i; gboolean need_username = FALSE; gboolean need_password = FALSE; const char *username = NULL; const char *password = NULL; g_return_val_if_fail(session != NULL, FALSE); g_return_val_if_fail(interact != NULL, FALSE); for (i = interact; i->id; i++) switch (i->id) { case SASL_CB_USER: case SASL_CB_AUTHNAME: need_username = TRUE; break; case SASL_CB_PASS: need_password = TRUE; break; default: mn_client_session_warning(session, "%s", unknown_warning); return FALSE; }; if (need_username || need_password) { if (! session->callbacks->sasl_get_credentials(session, session->private, need_username ? &username : NULL, need_password ? &password : NULL)) return FALSE; } for (i = interact; i->id; i++) { const char *data; switch (i->id) { case SASL_CB_USER: case SASL_CB_AUTHNAME: data = username; break; case SASL_CB_PASS: data = password; break; default: g_assert_not_reached(); break; }; g_assert(data != NULL); i->result = data; i->len = strlen(data); } return TRUE; } static char * get_sasl_ip_port (const struct sockaddr *addr) { #if WITH_IPV6 char buf[INET6_ADDRSTRLEN]; #else char buf[INET_ADDRSTRLEN]; #endif /* WITH_IPV6 */ int port; g_return_val_if_fail(addr != NULL, NULL); if (addr->sa_family == AF_INET) { struct sockaddr_in *in = (struct sockaddr_in *) addr; if (! inet_ntop(addr->sa_family, &in->sin_addr, buf, sizeof(buf))) return NULL; port = g_ntohs(in->sin_port); } #if WITH_IPV6 else if (addr->sa_family == AF_INET6) { struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) addr; if (! inet_ntop(addr->sa_family, &in6->sin6_addr, buf, sizeof(buf))) return NULL; port = g_ntohs(in6->sin6_port); } #endif else return NULL; return g_strdup_printf("%s;%i", buf, port); } /** * mn_client_session_sasl_authentication_start: * @session: a #MNClientSession * @service: the SASL service identifier (normally "pop" or "imap") * @mechanisms: the list of available mechanisms, or %NULL * @forced_mechanism: a mechanism to force usage of, or %NULL * @used_mechanism: a location to store the name of the mechanism that was * selected by the SASL library * @initial_clientout: a location to store the initial client response, * or %NULL * @initial_clientoutlen: a location to store the length of the initial * client response, or %NULL * * Starts a SASL authentication exchange. @initial_clientout and * @initial_clientoutlen must be both set or both %NULL. * * If @forced_mechanism is provided, authentication is attempted using * that mechanism only. Otherwise, @mechanisms must point to a * non-empty list of available mechanism names, and the SASL library * will select an appropriate mechanism automatically. * * On success, the selected mechanism is stored at @used_mechanism. * * On failure, if a mechanism could be selected, it is stored at * @used_mechanism (the caller might want to remove that mechanism * from the list and try again). Otherwise, %NULL is stored at * @used_mechanism. * * On success, if @initial_clientout and @initial_clientoutlen were * set, they point to the initial client response (which is not * necessarily NUL-terminated) and its length, respectively. If there * is no initial client response, they point to %NULL and 0, * respectively. * * The function may be called multiple times. * * Return value: %TRUE on success **/ gboolean mn_client_session_sasl_authentication_start (MNClientSession *session, const char *service, GSList *mechanisms, const char *forced_mechanism, const char **used_mechanism, const char **initial_clientout, unsigned int *initial_clientoutlen) { GError *err = NULL; int result; struct sockaddr name; socklen_t namelen; char *local_ip_port = NULL; char *remote_ip_port = NULL; g_return_val_if_fail(session != NULL, FALSE); g_return_val_if_fail(session->callbacks->sasl_get_credentials != NULL, FALSE); g_return_val_if_fail(service != NULL, FALSE); g_return_val_if_fail(mechanisms != NULL || forced_mechanism != NULL, FALSE); g_return_val_if_fail((initial_clientout == NULL && initial_clientoutlen == NULL) || (initial_clientout != NULL && initial_clientoutlen != NULL), FALSE); if (! mn_sasl_init(&err)) { mn_client_session_warning(session, _("unable to initialize the SASL library: %s"), err->message); g_error_free(err); return FALSE; } /* make sure we do not leak the previous sasl_conn if any */ mn_client_session_sasl_dispose(session); namelen = sizeof(name); if (getsockname(session->s, &name, &namelen) >= 0) local_ip_port = get_sasl_ip_port(&name); else mn_client_session_warning(session, _("unable to retrieve local address of socket: %s"), g_strerror(errno)); namelen = sizeof(name); if (getpeername(session->s, &name, &namelen) >= 0) remote_ip_port = get_sasl_ip_port(&name); else mn_client_session_warning(session, _("unable to retrieve remote address of socket: %s"), g_strerror(errno)); result = sasl_client_new(service, session->server, local_ip_port, remote_ip_port, sasl_callbacks, 0, &session->sasl_conn); g_free(local_ip_port); g_free(remote_ip_port); if (result == SASL_OK) { sasl_security_properties_t security; sasl_interact_t *interact = NULL; GString *mechanisms_string; GSList *l; security.min_ssf = 0; security.max_ssf = 256; security.maxbufsize = READ_BUFSIZE; /* only permit plaintext mechanisms if SSL is in use */ #if WITH_SSL if (session->ssl) security.security_flags = 0; else #endif /* WITH_SSL */ security.security_flags = SASL_SEC_NOPLAINTEXT; security.property_names = NULL; security.property_values = NULL; if (sasl_setprop(session->sasl_conn, SASL_SEC_PROPS, &security) != SASL_OK) mn_client_session_warning(session, _("unable to set SASL security properties: %s"), sasl_errdetail(session->sasl_conn)); mechanisms_string = g_string_new(NULL); if (forced_mechanism) g_string_append(mechanisms_string, forced_mechanism); else MN_LIST_FOREACH(l, mechanisms) { if (*mechanisms_string->str) g_string_append_c(mechanisms_string, ' '); g_string_append(mechanisms_string, l->data); } do { result = sasl_client_start(session->sasl_conn, mechanisms_string->str, &interact, initial_clientout, initial_clientoutlen, used_mechanism); if (result == SASL_INTERACT) { if (! fill_sasl_interact(session, interact, _("unable to start SASL authentication: SASL asked for something we did not know"))) break; } } while (result == SASL_INTERACT); g_string_free(mechanisms_string, TRUE); switch (result) { case SASL_OK: case SASL_CONTINUE: return TRUE; case SASL_INTERACT: /* could not fill interaction, nop */ break; default: mn_client_session_warning(session, _("unable to start SASL authentication: %s"), sasl_errdetail(session->sasl_conn)); } } else mn_client_session_warning(session, _("unable to create a SASL connection: %s"), sasl_errdetail(session->sasl_conn)); return FALSE; } /** * mn_client_session_sasl_authentication_step: * @session: a #MNClientSession * @input: the last server challenge received * * Continues a SASL authentication exchange successfully initiated * with mn_client_session_sasl_authentication_start(). * * Return value: the state to switch to **/ int mn_client_session_sasl_authentication_step (MNClientSession *session, const char *input) { g_return_val_if_fail(session != NULL, 0); g_return_val_if_fail(session->sasl_conn != NULL, 0); g_return_val_if_fail(input != NULL, 0); { unsigned int inlen = strlen(input); char buf[inlen]; unsigned int outlen; int result; result = sasl_decode64(input, inlen, buf, inlen, &outlen); if (result == SASL_OK) { sasl_interact_t *interact = NULL; const char *clientout; unsigned int clientoutlen; do { result = sasl_client_step(session->sasl_conn, buf, outlen, &interact, &clientout, &clientoutlen); if (result == SASL_INTERACT) { if (! fill_sasl_interact(session, interact, _("SASL asked for something we did not know, aborting SASL authentication"))) break; } } while (result == SASL_INTERACT); switch (result) { case SASL_OK: case SASL_CONTINUE: return write_base64(session, clientout, clientoutlen); case SASL_INTERACT: /* could not fill interaction, abort */ return mn_client_session_write(session, "*"); default: mn_client_session_warning(session, _("%s, aborting SASL authentication"), sasl_errdetail(session->sasl_conn)); return mn_client_session_write(session, "*"); } } else /* compliance error */ return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to decode Base64 input from server: %s"), sasl_errstring(result, NULL, NULL)); } } /** * mn_client_session_sasl_authentication_done: * @session: a #MNClientSession * * Completes a successful SASL authentication exchange. Must only be * used if the server has terminated the exchange with a positive * response. * * Return value: %TRUE on success **/ gboolean mn_client_session_sasl_authentication_done (MNClientSession *session) { gconstpointer ptr; g_return_val_if_fail(session != NULL, FALSE); g_return_val_if_fail(session->sasl_conn != NULL, 0); if (sasl_getprop(session->sasl_conn, SASL_SSF, &ptr) == SASL_OK) { const sasl_ssf_t *ssf = ptr; if (*ssf) { if (sasl_getprop(session->sasl_conn, SASL_MAXOUTBUF, &ptr) == SASL_OK) { const unsigned int *maxoutbuf = ptr; session->sasl_ssf = *ssf; session->sasl_maxoutbuf = *maxoutbuf; if (session->sasl_ssf) mn_client_session_notice(session, _("a SASL security layer of strength factor %i is now active"), session->sasl_ssf); } else { /* a security layer is active but we can't retrieve maxoutbuf -> fatal */ mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to get SASL_MAXOUTBUF property: %s"), sasl_errdetail(session->sasl_conn)); return FALSE; } } } else mn_client_session_warning(session, _("warning: unable to get SASL_SSF property: %s"), sasl_errdetail(session->sasl_conn)); return TRUE; } /** * mn_client_session_sasl_dispose: * @session: a #MNClientSession * * Destroys the SASL connection of @session, or, if no SASL connection * is active, does nothing. * * Since the SASL connection is always destroyed before * mn_client_session_run() returns, omitting to call this function * will not leak the object away. However, in some situations (eg. if * SASL authentication fails but the session continues nevertheless) * it might be desirable to get rid of the object, in order to free * resources that would otherwise remain in use for the rest of the * session. **/ void mn_client_session_sasl_dispose (MNClientSession *session) { g_return_if_fail(session != NULL); if (session->sasl_conn) { sasl_dispose(&session->sasl_conn); session->sasl_conn = NULL; } } /** * mn_client_session_sasl_get_ssf: * @session: a #MNClientSession * * Gets the SASL security strength factor. Must not be used unless * mn_client_session_sasl_authentication_done() has returned %TRUE. * * Return value: 0 if no security layer is active, or an approximation * of the encryption key length otherwise **/ sasl_ssf_t mn_client_session_sasl_get_ssf (MNClientSession *session) { g_return_val_if_fail(session != NULL, 0); g_return_val_if_fail(session->sasl_conn != NULL, 0); return session->sasl_ssf; } #endif /* WITH_SASL */ /** * mn_client_session_notice: * @session: a #MNClientSession * @format: a printf() format string * @...: the arguments to the format string * * If the notice callback of @session is defined, calls it with the * given message as argument. Otherwise, does nothing. **/ void mn_client_session_notice (MNClientSession *session, const char *format, ...) { g_return_if_fail(session != NULL); g_return_if_fail(format != NULL); if (session->callbacks->notice) { char *message; MN_STRDUP_VPRINTF(message, format); session->callbacks->notice(session, message, session->private); g_free(message); } } /** * mn_client_session_warning: * @session: a #MNClientSession * @format: a printf() format string * @...: the arguments to the format string * * If the warning callback of @session is defined, calls it with the * given message as argument. Otherwise, does nothing. **/ void mn_client_session_warning (MNClientSession *session, const char *format, ...) { g_return_if_fail(session != NULL); g_return_if_fail(format != NULL); if (session->callbacks->warning) { char *message; MN_STRDUP_VPRINTF(message, format); session->callbacks->warning(session, message, session->private); g_free(message); } } /** * mn_client_session_set_error: * @session: a #MNClientSession * @code: a #MNClientSessionError code * @format: a printf() format string * @...: the arguments to the format string * * If @session has no error yet, sets the given error. Otherwise, does * nothing. * * Return value: %MN_CLIENT_SESSION_RESULT_DISCONNECT **/ int mn_client_session_set_error (MNClientSession *session, int code, const char *format, ...) { g_return_val_if_fail(session != NULL, 0); g_return_val_if_fail(format != NULL, 0); if (! session->error) { char *message; MN_STRDUP_VPRINTF(message, format); session->error = g_error_new_literal(MN_CLIENT_SESSION_ERROR, code, message); g_free(message); } return MN_CLIENT_SESSION_RESULT_DISCONNECT; } int mn_client_session_set_error_from_response (MNClientSession *session, int code, const char *response) { g_return_val_if_fail(session != NULL, 0); return response ? mn_client_session_set_error(session, code, _("\"%s\""), response) : mn_client_session_set_error(session, code, _("unknown server error")); } GQuark mn_client_session_error_quark (void) { return g_quark_from_static_string("mn-client-session-error"); } mail-notification-5.4.dfsg.1/src/mn-authenticated-mailbox.gob0000644000175000001440000003325211015312437024020 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-mailbox.h" %} %privateheader{ #include %} %{ #include #include #include "mn-mailbox-private.h" #include "mn-shell.h" #include "mn-util.h" #include "mn-keyring.h" %} class MN:Authenticated:Mailbox from MN:Mailbox (abstract) { public char *username destroywith g_free; property STRING username (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE | MN_MAILBOX_PARAM_REQUIRED); /* * Set when: * * - the password is loaded from a mailboxes.xml file produced by * an older version of MN * - a mailbox has just been created by the properties dialog * (where the user has entered a password) * * When the password is set here, it is automatically saved to the * keyring in added(). Is is otherwise unused (when getting the * password, this field is not consulted, the keyring is used * instead). */ public char *password destroywith g_free; property STRING password (link, flags = MN_MAILBOX_PARAM_LOAD); /* last moment for subclasses to set these attributes is during seal() */ protected char *keyring_username destroywith g_free; protected char *keyring_domain destroywith g_free; protected char *keyring_server destroywith g_free; protected char *keyring_protocol destroywith g_free; protected char *keyring_authtype destroywith g_free; protected int keyring_port; private gpointer get_password_request; private gpointer set_password_request; property BOOLEAN setting_password (export) get { g_value_set_boolean(VAL, selfp->set_password_request != NULL); }; private gboolean checking; public char *runtime_password destroywith g_free; private GtkWidget *auth_dialog; protected gboolean auth_prompted; protected gboolean auth_cancelled; /* user pressed Cancel or mailbox removed */ protected gboolean auth_failed; private char *prompted_password_keyring destroywith g_free; private guint32 prompted_password_item_id; class_init (class) { /* * We might need to save the password to the keyring before the * first check, so we will call mn_mailbox_enable_checking() * ourselves. */ MN_MAILBOX_CLASS(class)->enable_checking_when_added = FALSE; } override (MN:Mailbox) void seal (MNMailbox *mailbox) { Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (self->password) mn_shell->mailboxes->must_save_after_load = TRUE; self_parse_username(self, &self->keyring_username, &self->keyring_domain); } override (MN:Mailbox) void added (MNMailbox *mailbox) { Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); /* * If self->password is set, the password must be saved to the * keyring (either because the user has just added the mailbox or * because a mailboxes.xml produced by an older version of MN was * loaded). Checking will be enabled after the password has been * saved. Otherwise we must enable checking immediately. */ if (self->password) self_set_password(self); else mn_mailbox_enable_checking(mailbox); } override (MN:Mailbox) void removed (MNMailbox *mailbox) { Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (selfp->auth_dialog) gtk_dialog_response(GTK_DIALOG(selfp->auth_dialog), GTK_RESPONSE_CANCEL); if (selfp->get_password_request) gnome_keyring_cancel_request(selfp->get_password_request); if (selfp->set_password_request) gnome_keyring_cancel_request(selfp->set_password_request); /* * We do not remove the password from the keyring, since it is * meant to be shared with other applications */ } private void set_password (self) { g_assert(self->password != NULL); g_assert(selfp->set_password_request == NULL); g_object_ref(self); self_set_set_password_request(self, gnome_keyring_set_network_password(NULL, self->keyring_username, self->keyring_domain, self->keyring_server, NULL, self->keyring_protocol, self->keyring_authtype, self->keyring_port, self->password, self_set_password_cb, self, g_object_unref)); } private void set_password_cb (GnomeKeyringResult result, guint32 item_id, gpointer data) { Self *self = data; GDK_THREADS_ENTER(); self_set_set_password_request(self, NULL); /* * If the mailbox has not been removed, display an error dialog if * the password could not be saved and enable checking. */ if (mn_mailbox_get_active(MN_MAILBOX(self))) { self_handle_set_password_result(self, result); mn_mailbox_enable_checking(MN_MAILBOX(self)); } /* do not call gdk_flush(), we're normally in the main thread */ GDK_THREADS_LEAVE(); } private void set_set_password_request (self, gpointer request) { selfp->set_password_request = request; g_object_notify(G_OBJECT(self), "setting-password"); } override (MN:Mailbox) void check (MNMailbox *mailbox) { Self *self = SELF(mailbox); if (selfp->checking) return; PARENT_HANDLER(mailbox); selfp->checking = TRUE; mn_mailbox_set_error(mailbox, NULL); g_object_ref(self); mn_thread_create((GThreadFunc) self_check_thread_cb, self); } private void check_thread_cb (self) { self_authenticated_check(self); GDK_THREADS_ENTER(); selfp->checking = FALSE; g_object_unref(self); gdk_flush(); GDK_THREADS_LEAVE(); } virtual private void authenticated_check (self) { self->auth_prompted = FALSE; self->auth_cancelled = FALSE; self->auth_failed = FALSE; g_free(selfp->prompted_password_keyring); selfp->prompted_password_keyring = NULL; selfp->prompted_password_item_id = 0; } protected void parse_username (self, char **username, char **domain) { char *at; at = strrchr(self->username, '@'); if (at) { if (username) *username = g_strndup(self->username, at - self->username); if (domain) *domain = g_strdup(at + 1); } else { if (username) *username = g_strdup(self->username); if (domain) *domain = NULL; } } /* * Returns FALSE if the authentication was cancelled (either because * the user pressed Cancel in the password prompt dialog or because * the mailbox was removed). */ protected gboolean fill_password (self, gboolean may_prompt) { self->auth_cancelled = FALSE; g_free(self->runtime_password); self->runtime_password = self_get_password_sync(self); /* * Check if the user removed the mailbox while we were waiting for * the keyring password. */ if (! mn_mailbox_get_active(MN_MAILBOX(self))) { self->auth_cancelled = TRUE; return FALSE; } if (! self->runtime_password && may_prompt) { GDK_THREADS_ENTER(); self->auth_prompted = TRUE; if (! self_prompt_for_password(self, &self->runtime_password, self->auth_failed /* translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) */ ? _("Mail Notification was unable to log into %s mailbox %s, possibly because the password you have entered is invalid.\n\nPlease re-enter your password.") /* translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) */ : _("Enter your password for %s mailbox %s."), MN_MAILBOX(self)->format, MN_MAILBOX(self)->runtime_name)) self->auth_cancelled = TRUE; gdk_flush(); GDK_THREADS_LEAVE(); } return ! self->auth_cancelled; } private char * get_password_sync (self) { return mn_keyring_get_password_sync(self->keyring_username, self->keyring_domain, self->keyring_server, self->keyring_protocol, self->keyring_authtype, self->keyring_port, self_get_password_sync_request_cb, self); } private void get_password_sync_request_cb (gpointer request, gpointer data) { Self *self = data; selfp->get_password_request = request; } protected void auth_failed (self) { /* * If the password had been entered at the password prompt, we * must remove it from the keyring since the authentication has * failed. */ if (self->auth_prompted && selfp->prompted_password_item_id) { self_delete_password(self, selfp->prompted_password_keyring, selfp->prompted_password_item_id); g_free(selfp->prompted_password_keyring); selfp->prompted_password_keyring = NULL; selfp->prompted_password_item_id = 0; } self->auth_failed = TRUE; } [G_GNUC_PRINTF(3, 4)] private gboolean prompt_for_password (self, char **password (check null), const char *format (check null), ...) { char *message; gboolean ok; g_return_val_if_fail(selfp->auth_dialog == NULL, FALSE); MN_STRDUP_VPRINTF(message, format); /* keep the title in sync with gnome-authentication-manager */ /* translators: header capitalization */ selfp->auth_dialog = gnome_password_dialog_new(_("Authentication Required"), message, self->username, NULL, FALSE); g_free(message); mn_add_weak_pointer(&selfp->auth_dialog); gnome_password_dialog_set_show_userpass_buttons(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), FALSE); gnome_password_dialog_set_readonly_username(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), TRUE); gnome_password_dialog_set_show_remember(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), TRUE); gnome_password_dialog_set_remember(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), GNOME_PASSWORD_DIALOG_REMEMBER_SESSION); ok = gnome_password_dialog_run_and_block(GNOME_PASSWORD_DIALOG(selfp->auth_dialog)); if (ok) { GnomePasswordDialogRemember remember; *password = gnome_password_dialog_get_password(GNOME_PASSWORD_DIALOG(selfp->auth_dialog)); remember = gnome_password_dialog_get_remember(GNOME_PASSWORD_DIALOG(selfp->auth_dialog)); if (remember == GNOME_PASSWORD_DIALOG_REMEMBER_SESSION) self_set_prompted_password(self, "session", *password); else if (remember == GNOME_PASSWORD_DIALOG_REMEMBER_FOREVER) self_set_prompted_password(self, NULL, *password); } gtk_widget_destroy(selfp->auth_dialog); return ok; } private void set_prompted_password (self, const char *keyring, const char *password (check null)) { GnomeKeyringResult result; /* do not block the main loop */ gdk_flush(); GDK_THREADS_LEAVE(); g_free(selfp->prompted_password_keyring); selfp->prompted_password_keyring = g_strdup(keyring); result = mn_keyring_set_password_sync(keyring, self->keyring_username, self->keyring_domain, self->keyring_server, self->keyring_protocol, self->keyring_authtype, self->keyring_port, password, &selfp->prompted_password_item_id, self_set_prompted_password_request_cb, self); GDK_THREADS_ENTER(); self_handle_set_password_result(self, result); } private void set_prompted_password_request_cb (gpointer request, gpointer data) { Self *self = data; GDK_THREADS_ENTER(); self_set_set_password_request(self, request); /* do not call gdk_flush(), we're normally in the main thread */ GDK_THREADS_LEAVE(); } private void handle_set_password_result (self, GnomeKeyringResult result) { if (result != GNOME_KEYRING_RESULT_OK && result != GNOME_KEYRING_RESULT_CANCELLED) mn_show_error_dialog(NULL, _("Unable to save the mailbox password"), /* translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org) */ _("The password of %s mailbox %s could not be saved to the keyring."), MN_MAILBOX(self)->format, MN_MAILBOX(self)->runtime_name); } public gpointer get_password (self, GnomeKeyringOperationGetListCallback cb, gpointer data) { return gnome_keyring_find_network_password(self->keyring_username, self->keyring_domain, self->keyring_server, NULL, self->keyring_protocol, self->keyring_authtype, self->keyring_port, cb, data, NULL); } private void delete_password (self, const char *keyring, guint32 item_id (check != 0)) { char *default_keyring = NULL; if (! keyring) { /* * gnome_keyring_item_delete_sync() does not work if the * passed keyring is NULL, so we must get the default keyring. */ if (gnome_keyring_get_default_keyring_sync(&default_keyring) != GNOME_KEYRING_RESULT_OK) return; keyring = default_keyring; } gnome_keyring_item_delete_sync(keyring, item_id); g_free(default_keyring); } } mail-notification-5.4.dfsg.1/src/mn-decls.h0000644000175000001440000000225211015312437020313 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_DECLS_H #define _MN_DECLS_H /* forward declarations to avoid circular includes */ #ifndef __TYPEDEF_MN_MESSAGE__ #define __TYPEDEF_MN_MESSAGE__ typedef struct _MNMessage MNMessage; #endif #ifndef __TYPEDEF_MN_VFS_MAILBOX_BACKEND__ #define __TYPEDEF_MN_VFS_MAILBOX_BACKEND__ typedef struct _MNVFSMailboxBackend MNVFSMailboxBackend; #endif #endif /* _MN_DECLS_H */ mail-notification-5.4.dfsg.1/src/org-gnome-MailNotification-Evolution.xml0000644000175000001440000000205610742041023026263 0ustar evilynuxusers mail-notification-5.4.dfsg.1/src/mn-about-dialog.gob0000644000175000001440000000501711015312437022112 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %{ #include #include "mn-util.h" %} class MN:About:Dialog from Gtk:About:Dialog { class_init (class) { gtk_about_dialog_set_email_hook(self_activate_link_cb, "mailto:", NULL); gtk_about_dialog_set_url_hook(self_activate_link_cb, NULL, NULL); } init (self) { GtkAboutDialog *about = GTK_ABOUT_DIALOG(self); static const char *authors[] = { "Jean-Yves Lefort ", NULL }; static const char *documenters[] = { "Jean-Yves Lefort ", NULL }; GdkPixbuf *logo; gtk_about_dialog_set_version(about, VERSION); gtk_about_dialog_set_copyright(about, "Copyright \302\251 2003-2008 Jean-Yves Lefort"); /* translators: header capitalization */ gtk_about_dialog_set_comments(about, _("A Mail Notification Icon")); gtk_about_dialog_set_website(about, "http://www.nongnu.org/mailnotify"); gtk_about_dialog_set_authors(about, authors); gtk_about_dialog_set_documenters(about, documenters); /* * translators: Your Name * optionally followed by one or more: \nOther Contributor's Name */ gtk_about_dialog_set_translator_credits(about, _("translator-credits")); logo = mn_pixbuf_new(PKGDATADIR G_DIR_SEPARATOR_S "logo.png"); gtk_about_dialog_set_logo(about, logo); g_object_unref(logo); g_signal_connect(self, "response", G_CALLBACK(gtk_widget_destroy), NULL); } private void activate_link_cb (GtkAboutDialog *about, const char *link, gpointer data) { const char *prefix = data; char *url; url = prefix ? g_strconcat(prefix, link, NULL) : g_strdup(link); mn_open_link(GTK_WINDOW(about), url); g_free(url); } } mail-notification-5.4.dfsg.1/src/mn-gmail-mailbox-properties.gob0000644000175000001440000001363511015312440024456 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-authenticated-mailbox-properties.h" %} %{ #include #include "mn-mailbox-properties.h" #include "mn-mailbox-properties-private.h" #include "mn-authenticated-mailbox-properties-private.h" #include "mn-util.h" #include "mn-properties-dialog.h" #include "mn-authenticated-mailbox.h" #include "mn-gmail-mailbox.h" #include "mn-stock.h" %} class MN:Gmail:Mailbox:Properties from MN:Authenticated:Mailbox:Properties { private GtkWidget *label_check; private GtkWidget *label_entry; /* * We do not provide a control for the atom feed location, because * modifying it is probably unnecessary. */ private char *location destroywith g_free; property BOOLEAN complete (override) get { gboolean complete; complete = mn_authenticated_mailbox_properties_is_complete(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self)); if (complete) { gboolean label_enabled; const char *label; label_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->label_check)); label = gtk_entry_get_text(GTK_ENTRY(selfp->label_entry)); if (label_enabled && ! *label) complete = FALSE; } g_value_set_boolean(VAL, complete); }; property STRING default_name (override) get { const char *username; gboolean label_enabled; const char *label; username = gtk_entry_get_text(GTK_ENTRY(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self)->username_entry)); g_assert(*username != 0); label_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->label_check)); label = gtk_entry_get_text(GTK_ENTRY(selfp->label_entry)); g_value_take_string(VAL, mn_gmail_mailbox_build_name(username, label_enabled ? label : NULL)); }; class_init (class) { MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "gmail"; p_class->stock_id = MN_STOCK_GMAIL; p_class->combo_label = "Gmail"; } init (self) { MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); MNAuthenticatedMailboxProperties *auth = MN_AUTHENTICATED_MAILBOX_PROPERTIES(self); GtkWidget *label_vbox; GtkWidget *hbox; gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->username_vbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->password_vbox, FALSE, FALSE, 0); /* translators: header capitalization */ label_vbox = mn_mailbox_properties_add_general_section(properties, _("Gmail Label")); selfp->label_check = gtk_check_button_new_with_mnemonic(_("_Restrict to this label:")); gtk_size_group_add_widget(properties->label_size_group, selfp->label_check); selfp->label_entry = gtk_entry_new(); gtk_widget_set_sensitive(selfp->label_entry, FALSE); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), selfp->label_check, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), selfp->label_entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(label_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show_all(label_vbox); properties->entries = mn_g_slist_append_elements(properties->entries, auth->username_entry, auth->password_entry, selfp->label_entry, NULL); g_signal_connect(selfp->label_check, "toggled", G_CALLBACK(self_check_toggled_h), self); g_object_connect(auth->username_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); g_object_connect(selfp->label_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); } private void check_toggled_h (GtkToggleButton *togglebutton, gpointer user_data) { Self *self = user_data; gtk_widget_set_sensitive(selfp->label_entry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->label_check))); g_object_notify(G_OBJECT(self), "complete"); g_object_notify(G_OBJECT(self), "default-name"); } override (MN:Mailbox:Properties) void set_mailbox (MNMailboxProperties *properties, MN:Mailbox *mailbox) { Self *self = SELF(properties); MNGmailMailbox *gmail_mailbox = MN_GMAIL_MAILBOX(mailbox); PARENT_HANDLER(properties, mailbox); selfp->location = g_strdup(gmail_mailbox->location); if (gmail_mailbox->label) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->label_check), TRUE); gtk_entry_set_text(GTK_ENTRY(selfp->label_entry), gmail_mailbox->label); } } override (MN:Mailbox:Properties) MNMailbox * get_mailbox (MNMailboxProperties *properties) { Self *self = SELF(properties); MNMailbox *mailbox; mailbox = PARENT_HANDLER(properties); if (selfp->location) g_object_set(mailbox, MN_GMAIL_MAILBOX_PROP_LOCATION(selfp->location), NULL); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->label_check))) g_object_set(mailbox, MN_GMAIL_MAILBOX_PROP_LABEL((char *) gtk_entry_get_text(GTK_ENTRY(selfp->label_entry))), NULL); return mailbox; } } mail-notification-5.4.dfsg.1/src/mn-mailbox-properties.gob0000644000175000001440000000670711015312440023371 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-mailbox.h" %} %{ #include "mn-util.h" #include "mn-mailbox-properties-dialog.h" %} class MN:Mailbox:Properties (abstract) { classwide const char *type; classwide const char *stock_id; classwide const char *combo_label; classwide gboolean enable_check_delay = TRUE; protected GtkWidget *dialog; property POINTER dialog (flags = CONSTRUCT_ONLY, link, type = GtkWidget *); protected GtkSizeGroup *label_size_group = {gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL)} unrefwith g_object_unref; protected GSList *entries destroywith g_slist_free; private GSList *general_sections destroywith mn_g_object_slist_free; property BOOLEAN complete get { g_value_set_boolean(VAL, TRUE); }; property STRING default_name get { g_value_set_string(VAL, NULL); }; property INT default_check_delay get { MNMailboxClass *class; class = mn_mailbox_get_class_from_name(SELF_GET_CLASS(self)->type); g_value_set_int(VAL, class->default_check_delay); g_type_class_unref(class); }; virtual public void activate (self); virtual public void deactivate (self); virtual public void set_mailbox (self, MN:Mailbox *mailbox (check null type)); virtual public MNMailbox * get_mailbox (self) { return mn_mailbox_new(SELF_GET_CLASS(self)->type, NULL); } protected GtkWidget * add_general_section (self, const char *title (check null)) { GtkWidget *section; GtkWidget *vbox; section = mn_hig_section_new_with_box(title, NULL, &vbox); g_object_ref_sink(section); gtk_widget_show(section); selfp->general_sections = g_slist_append(selfp->general_sections, section); return vbox; } override (MN:Mailbox:Properties) void activate (MNMailboxProperties *properties) { Self *self = SELF(properties); GSList *l; MN_LIST_FOREACH(l, selfp->general_sections) gtk_box_pack_start(GTK_BOX(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->general_vbox), l->data, FALSE, FALSE, 0); } override (MN:Mailbox:Properties) void deactivate (MNMailboxProperties *properties) { Self *self = SELF(properties); GSList *l; MN_LIST_FOREACH(l, selfp->general_sections) gtk_container_remove(GTK_CONTAINER(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->general_vbox), l->data); } protected void notify_complete (self) { g_object_notify(G_OBJECT(self), "complete"); } protected void notify_default_name (self) { g_object_notify(G_OBJECT(self), "default-name"); } protected void notify_default_check_delay (self) { g_object_notify(G_OBJECT(self), "default-check-delay"); } } mail-notification-5.4.dfsg.1/src/mn-gmail-mailbox.gob0000644000175000001440000002237111015312440022261 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-authenticated-mailbox.h" %} %privateheader{ #include %} %{ #include #include #include #include #include #include #include "mn-mailbox-private.h" #include "mn-authenticated-mailbox-private.h" #include "mn-vfs.h" #include "mn-stock.h" #include "mn-message.h" #include "mn-util.h" %} class MN:Gmail:Mailbox from MN:Authenticated:Mailbox { public char *location destroywith g_free; property STRING location (link, flags = CONSTRUCT | MN_MAILBOX_PARAM_LOAD_SAVE | MN_MAILBOX_PARAM_REQUIRED, default_value = "https://mail.google.com/mail/feed/atom"); public char *label destroywith g_free; property STRING label (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE); private GnomeVFSURI *uri unrefwith gnome_vfs_uri_unref; class_init (class) { MN_MAILBOX_CLASS(class)->type = "gmail"; /* 5 minutes is a good default */ MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5; } init (self) { mn_mailbox_set_format(MN_MAILBOX(self), "Gmail"); mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_GMAIL); } override (MN:Mailbox) void seal (MNMailbox *mailbox) { MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); Self *self = SELF(mailbox); GnomeVFSURI *uri; PARENT_HANDLER(mailbox); if (! mailbox->runtime_name) mailbox->runtime_name = self_build_name(auth_mailbox->username, self->label); uri = self_build_uri(self); if (uri) { /* * Use keyring attributes that are compatible with what * GnomeVFS uses. This allows the password entered by the user * at the GnomeVFS password prompt to be recognized by Mail * Notification and displayed in the mailbox properties * dialog. */ auth_mailbox->keyring_server = g_strdup(gnome_vfs_uri_get_host_name(uri)); auth_mailbox->keyring_protocol = g_strdup("http"); auth_mailbox->keyring_authtype = g_strdup("basic"); auth_mailbox->keyring_port = gnome_vfs_uri_get_host_port(uri); if (auth_mailbox->keyring_port == 0) { const char *scheme; scheme = gnome_vfs_uri_get_scheme(uri); if (! strcmp(scheme, "http")) auth_mailbox->keyring_port = 80; else if (! strcmp(scheme, "https")) auth_mailbox->keyring_port = 443; } gnome_vfs_uri_unref(uri); } else /* fallback */ auth_mailbox->keyring_domain = g_strdup("gmail.com"); } private GnomeVFSURI * build_uri (self) { GnomeVFSURI *uri; uri = gnome_vfs_uri_new(self->location); if (uri) { GnomeVFSURI *new_uri; if (self->label) { new_uri = gnome_vfs_uri_append_file_name(uri, self->label); gnome_vfs_uri_unref(uri); uri = new_uri; } } return uri; } override (MN:Authenticated:Mailbox) void authenticated_check (MNAuthenticatedMailbox *mailbox) { Self *self = SELF(mailbox); GnomeVFSResult result; char *atom; int atom_size; xmlDoc *doc; xmlNode *node; PARENT_HANDLER(mailbox); if (! selfp->uri) { selfp->uri = self_build_uri(self); if (! selfp->uri) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), _("invalid feed location")); /* error is not recoverable, disable the mailbox */ mn_mailbox_set_poll(MN_MAILBOX(self), FALSE); gdk_flush(); GDK_THREADS_LEAVE(); return; } /* * Obtain the password from the keyring but do not prompt * (GnomeVFS will prompt on our behalf if the password is * missing). */ mn_authenticated_mailbox_fill_password(mailbox, FALSE); gnome_vfs_uri_set_user_name(selfp->uri, mailbox->username); gnome_vfs_uri_set_password(selfp->uri, mailbox->runtime_password); } mn_mailbox_notice(MN_MAILBOX(self), _("retrieving feed from %s"), self->location); result = mn_vfs_read_entire_file_uri(selfp->uri, &atom_size, &atom); if (result != GNOME_VFS_OK) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), _("unable to retrieve feed: %s"), gnome_vfs_result_to_string(result)); gdk_flush(); GDK_THREADS_LEAVE(); return; } mn_mailbox_notice(MN_MAILBOX(self), ngettext("feed retrieved successfully (%i byte)", "feed retrieved successfully (%i bytes)", atom_size), atom_size); doc = xmlParseMemory(atom, atom_size); g_free(atom); if (! doc) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), _("unable to parse feed")); gdk_flush(); GDK_THREADS_LEAVE(); return; } node = xmlDocGetRootElement(doc); if (node && ! strcmp(node->name, "feed")) { GSList *messages = NULL; for (node = node->children; node; node = node->next) if (node->type == XML_ELEMENT_NODE && ! strcmp(node->name, "entry")) { time_t sent_time; char *id; char *from; char *subject; char *url; self_parse_entry(node, &sent_time, &id, &from, &subject, &url); messages = g_slist_prepend(messages, mn_message_new(MN_MAILBOX(self), sent_time, id, NULL, from, subject, url, MN_MESSAGE_NEW)); g_free(id); g_free(from); g_free(subject); g_free(url); } GDK_THREADS_ENTER(); mn_mailbox_set_messages(MN_MAILBOX(self), messages); mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); } else { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), _("unable to parse feed")); gdk_flush(); GDK_THREADS_LEAVE(); } xmlFreeDoc(doc); } private void parse_entry (xmlNode *node (check null), time_t *sent_time (check null), char **id (check null), char **from (check null), char **subject (check null), char **url (check null)) { *sent_time = 0; *id = NULL; *from = NULL; *subject = NULL; *url = NULL; for (node = node->children; node; node = node->next) if (node->type == XML_ELEMENT_NODE) { if (! strcmp(node->name, "title")) { g_free(*subject); *subject = xmlNodeGetContent(node); } else if (! strcmp(node->name, "id")) { g_free(*id); *id = xmlNodeGetContent(node); } else if (! strcmp(node->name, "author")) { g_free(*from); *from = self_parse_author(node); } else if (! strcmp(node->name, "link")) { g_free(*url); *url = xmlGetProp(node, "href"); } else if (! strcmp(node->name, "issued")) { char *w3c_datetime; w3c_datetime = xmlNodeGetContent(node); if (w3c_datetime) { *sent_time = self_parse_date(w3c_datetime); g_free(w3c_datetime); } } } } private char * parse_author (xmlNode *node (check null)) { char *from; char *name = NULL; char *email = NULL; for (node = node->children; node; node = node->next) if (node->type == XML_ELEMENT_NODE) { if (! strcmp(node->name, "name")) { g_free(name); name = xmlNodeGetContent(node); } else if (! strcmp(node->name, "email")) { g_free(email); email = xmlNodeGetContent(node); } } from = name && email ? g_strdup_printf("%s <%s>", name, email) : g_strdup(name ? name : email); g_free(name); g_free(email); return from; } private time_t parse_date (const char *w3c_datetime (check null)) { #ifdef HAVE_TIMEGM time_t t = 0; char year[5]; char month[3]; char day[3]; char hour[3]; char minute[3]; char second[3]; if (sscanf(w3c_datetime, "%4s-%2s-%2sT%2s:%2s:%2sZ", year, month, day, hour, minute, second) == 6 && mn_str_isnumeric(year) && mn_str_isnumeric(month) && mn_str_isnumeric(day) && mn_str_isnumeric(hour) && mn_str_isnumeric(minute) && mn_str_isnumeric(second)) { struct tm tm = { 0 }; tm.tm_sec = atoi(second); tm.tm_min = atoi(minute); tm.tm_hour = atoi(hour); tm.tm_mday = atoi(day); tm.tm_mon = atoi(month) - 1; tm.tm_year = atoi(year) - 1900; t = timegm(&tm); if (t == -1) t = 0; } return t; #else return 0; #endif } public char * build_name (const char *username (check null), const char *label) { GString *name; name = g_string_new(NULL); if (g_str_has_suffix(username, "@gmail.com")) g_string_append(name, username); else g_string_append_printf(name, "%s@gmail.com", username); if (label) g_string_append_printf(name, "/%s", label); return g_string_free(name, FALSE); } } mail-notification-5.4.dfsg.1/src/mn-pop3-mailbox.gob0000644000175000001440000010021111015312440022037 0ustar evilynuxusers/* * mn-pop3-mailbox.gob - POP3 support for Mail Notification * * Compliance: * * - RFC 1939 * - RFC 2449 * - RFC 1734 * - RFC 2595 * - RFC 2384 * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-pi-mailbox.h" %} %h{ extern int mn_pop3_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES]; %} %{ #include #include #include #include #include #include #include #if WITH_SASL #include #endif /* WITH_SASL */ #include "mn-mailbox-private.h" #include "mn-authenticated-mailbox-private.h" #include "mn-pi-mailbox-private.h" #include "mn-client-session.h" #include "mn-util.h" #include "mn-md5.h" #include "mn-message-mime.h" enum { STATE_GREETING = MN_CLIENT_SESSION_INITIAL_STATE, STATE_CAPA, #if WITH_SSL STATE_STLS, #endif #if WITH_SASL STATE_AUTH, #endif STATE_APOP, STATE_USER, STATE_PASS, STATE_LIST, STATE_UIDL, STATE_RETR_TOP, STATE_QUIT }; struct _MNClientSessionPrivate { MN_PI_MAILBOX_SESSION_PRIVATE; MNPOP3Mailbox *self; gboolean in_list; gboolean in_retr_top; char *apop_timestamp; GSList *auth_mechanisms; gboolean top_supported; gboolean uidl_supported; #if WITH_SSL gboolean stls_supported; gboolean stls_completed; #endif #if WITH_SASL GSList *sasl_remaining_mechanisms; const char *sasl_mechanism; gboolean sasl_had_clientout; #endif gboolean authenticated; gboolean login_delay_user; int num_errors; GSList *messages; GSList *message_iter; GString *message_buffer; }; typedef enum { RESPONSE_OK, RESPONSE_ERR, RESPONSE_LIST_ITEM, RESPONSE_LIST_END, RESPONSE_CONTINUATION } ResponseType; struct _MNClientSessionResponse { ResponseType type; char *arguments; }; typedef struct { MNMessage *message; char *mid; int number; } MessageInfo; int mn_pop3_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES] = { 110, 110, 995 }; %} class MN:POP3:Mailbox from MN:PI:Mailbox { private int login_delay; private GTimer *authentication_timer destroywith g_timer_destroy; class_init (class) { MN_MAILBOX_CLASS(class)->type = "pop3"; MN_PI_MAILBOX_CLASS(class)->default_ports = mn_pop3_mailbox_default_ports; } init (self) { mn_mailbox_set_format(MN_MAILBOX(self), "POP3"); } override (MN:Mailbox) void seal (MNMailbox *mailbox) { MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); PARENT_HANDLER(mailbox); if (! mailbox->runtime_name) mailbox->runtime_name = self_build_name(MN_AUTHENTICATED_MAILBOX(mailbox)->username, MN_PI_MAILBOX(mailbox)->hostname); #if WITH_SSL if (MN_PI_MAILBOX(mailbox)->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL) auth_mailbox->keyring_protocol = g_strdup("pop3s"); else #endif auth_mailbox->keyring_protocol = g_strdup("pop3"); } /* * Parses a RFC 2384 POP URL. */ override (MN:Mailbox) MNMailbox * parse_uri (MNMailbox *dummy, const char *uri) { int len; int buflen; char *username = NULL; char *authmech = NULL; char *hostname; int port; MNMailbox *mailbox; len = strlen(uri); buflen = len + 1; { char scheme_buf[buflen]; char auth_buf[buflen]; char location_buf[buflen]; char username_buf[buflen]; char authmech_buf[buflen]; char hostname_buf[buflen]; gboolean has_authmech = FALSE; if (! mn_pi_mailbox_split_uri(uri, len, scheme_buf, auth_buf, location_buf)) return NULL; if (strcmp(scheme_buf, "pop")) return NULL; if (! mn_pi_mailbox_split_uri_auth(auth_buf, len, username_buf, authmech_buf, &has_authmech)) return NULL; if (has_authmech && ! strcmp(authmech_buf, "*")) has_authmech = FALSE; mn_pi_mailbox_split_uri_hostport(location_buf, len, hostname_buf, &port); username = gnome_vfs_unescape_string(username_buf, NULL); if (has_authmech) authmech = gnome_vfs_unescape_string(authmech_buf, NULL); hostname = gnome_vfs_unescape_string(hostname_buf, NULL); } mailbox = mn_mailbox_new("pop3", "username", username, "authmech", authmech, "hostname", hostname, "port", port, NULL); g_free(username); g_free(authmech); g_free(hostname); return mailbox; } private int handle_greeting_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { priv->session = session; switch (response->type) { case RESPONSE_OK: if (response->arguments) { char *timestamp; timestamp = strchr(response->arguments, '<'); if (timestamp) { char *timestamp_end; timestamp_end = strchr(timestamp, '>'); if (timestamp_end) priv->apop_timestamp = g_strndup(timestamp, timestamp_end - timestamp + 1); } } return STATE_CAPA; case RESPONSE_ERR: return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } private int enter_capa_cb (MNClientSession *session, MNClientSessionPrivate *priv) { return mn_client_session_write(session, "CAPA"); } private int handle_capa_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { self_session_handle_list_response(priv, response, FALSE); switch (response->type) { case RESPONSE_OK: mn_g_slist_clear_deep(&priv->auth_mechanisms); #if WITH_SASL mn_g_slist_clear(&priv->sasl_remaining_mechanisms); #endif priv->top_supported = FALSE; priv->uidl_supported = FALSE; priv->self->_priv->login_delay = 0; priv->login_delay_user = FALSE; #if WITH_SSL priv->stls_supported = FALSE; #endif return MN_CLIENT_SESSION_RESULT_CONTINUE; case RESPONSE_ERR: case RESPONSE_LIST_END: if (priv->authenticated) return self_session_enter_list_or_uidl(priv); #if WITH_SSL if (priv->pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL && ! priv->stls_completed) { if (priv->stls_supported) return STATE_STLS; else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS")); return STATE_QUIT; } } else #endif /* WITH_SSL */ return self_session_authenticate(priv); case RESPONSE_LIST_ITEM: { char **tokens; gboolean login_delay_error = FALSE; tokens = g_strsplit(response->arguments, " ", 0); if (tokens[0]) { if (! strcmp(tokens[0], "SASL")) { int i; for (i = 1; tokens[i]; i++) priv->auth_mechanisms = g_slist_append(priv->auth_mechanisms, g_strdup(tokens[i])); } else if (! strcmp(tokens[0], "TOP")) priv->top_supported = TRUE; else if (! strcmp(tokens[0], "UIDL")) priv->uidl_supported = TRUE; #if WITH_SSL else if (! strcmp(tokens[0], "STLS")) priv->stls_supported = TRUE; #endif /* WITH_SSL */ else if (! strcmp(tokens[0], "LOGIN-DELAY")) { if (tokens[1] && mn_str_isnumeric(tokens[1]) && (! tokens[2] || (! tokens[3] && ! priv->authenticated && ! strcmp(tokens[2], "USER")))) { priv->self->_priv->login_delay = atoi(tokens[1]); if (tokens[2]) priv->login_delay_user = TRUE; } else login_delay_error = TRUE; } } g_strfreev(tokens); if (login_delay_error) return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("invalid arguments for the LOGIN-DELAY capability")); } return MN_CLIENT_SESSION_RESULT_CONTINUE; default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } private int enter_stls_cb (MNClientSession *session, MNClientSessionPrivate *priv) { #if WITH_SSL return mn_client_session_write(session, "STLS"); #else g_assert_not_reached(); return 0; #endif /* WITH_SSL */ } private int handle_stls_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { #if WITH_SSL switch (response->type) { case RESPONSE_OK: priv->stls_completed = TRUE; return mn_client_session_enable_ssl(session) ? STATE_CAPA /* [1] */ : MN_CLIENT_SESSION_RESULT_DISCONNECT; /* * [1] RFC 2595 4: * * "Once TLS has been started, the client MUST discard cached * information about server capabilities and SHOULD re-issue * the CAPA command." */ case RESPONSE_ERR: mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_QUIT; default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } #else g_assert_not_reached(); return 0; #endif /* WITH_SSL */ } private int enter_auth_cb (MNClientSession *session, MNClientSessionPrivate *priv) { #if WITH_SASL /* * RFC 2449 6.3 specifies that POP3 supports the initial client * response feature of SASL. */ const char *initial_clientout = NULL; unsigned int initial_clientoutlen = 0; priv->sasl_mechanism = NULL; if (mn_client_session_sasl_authentication_start(priv->session, "pop", priv->sasl_remaining_mechanisms, priv->pi_mailbox->authmech, &priv->sasl_mechanism, priv->sasl_had_clientout ? NULL : &initial_clientout, priv->sasl_had_clientout ? NULL : &initial_clientoutlen)) { g_assert(priv->sasl_mechanism != NULL); if (initial_clientoutlen > 0) { char buf64[initial_clientoutlen * 2]; /* Base64 is 33% larger than the data it encodes */ unsigned int outlen; int result; char *str; result = sasl_encode64(initial_clientout, initial_clientoutlen, buf64, sizeof(buf64), &outlen); if (result != SASL_OK) return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode Base64: %s"), sasl_errstring(result, NULL, NULL)); str = g_strndup(buf64, outlen); result = mn_client_session_write(session, "AUTH %s %s", priv->sasl_mechanism, str); g_free(str); priv->sasl_had_clientout = TRUE; return result; } else { priv->sasl_had_clientout = FALSE; return mn_client_session_write(session, "AUTH %s", priv->sasl_mechanism); } } else return priv->auth_mailbox->auth_cancelled ? STATE_QUIT : self_session_authenticate_fallback(priv, FALSE, FALSE); #else g_assert_not_reached(); return 0; #endif /* WITH_SASL */ } private int handle_auth_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { #if WITH_SASL switch (response->type) { case RESPONSE_OK: return mn_client_session_sasl_authentication_done(session) ? self_session_authenticated(priv) : MN_CLIENT_SESSION_RESULT_DISCONNECT; case RESPONSE_ERR: if (priv->auth_mailbox->auth_cancelled) return STATE_QUIT; else { if (priv->sasl_had_clientout) { /* * Some servers violate RFC 2449 by not supporting a * second argument to the AUTH command. Support these * servers nevertheless, by retrying without the SASL * initial client response. */ mn_client_session_notice(session, _("SASL authentication with initial client response failed, retrying without initial client response")); return STATE_AUTH; } else return self_session_authenticate_fallback(priv, FALSE, FALSE); } case RESPONSE_CONTINUATION: return mn_client_session_sasl_authentication_step(session, response->arguments); default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } #else g_assert_not_reached(); return 0; #endif /* WITH_SASL */ } private int enter_apop_cb (MNClientSession *session, MNClientSessionPrivate *priv) { MNMD5Context context; char buf[16]; char hexbuf[33]; g_assert(priv->apop_timestamp != NULL); if (! mn_authenticated_mailbox_fill_password(priv->auth_mailbox, TRUE)) return STATE_QUIT; mn_md5_init_ctx(&context); mn_md5_process_bytes(&context, priv->apop_timestamp, strlen(priv->apop_timestamp)); mn_md5_process_bytes(&context, priv->auth_mailbox->runtime_password, strlen(priv->auth_mailbox->runtime_password)); mn_md5_finish_ctx(&context, buf); mn_md5_to_hex(buf, hexbuf); return mn_client_session_write(session, "APOP %s %s", priv->auth_mailbox->username, hexbuf); } private int handle_apop_cb (MNClientSession *session (check null), MNClientSessionResponse *response (check null), MNClientSessionPrivate *priv (check null)) { switch (response->type) { case RESPONSE_OK: return self_session_authenticated(priv); case RESPONSE_ERR: return self_session_authenticate_fallback(priv, TRUE, FALSE); default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } private int enter_user_cb (MNClientSession *session (check null), MNClientSessionPrivate *priv (check null)) { return mn_client_session_write(session, "USER %s", priv->auth_mailbox->username); } private int handle_user_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { switch (response->type) { case RESPONSE_OK: return STATE_PASS; case RESPONSE_ERR: mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); return STATE_QUIT; default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } private int enter_pass_cb (MNClientSession *session, MNClientSessionPrivate *priv) { if (! mn_authenticated_mailbox_fill_password(priv->auth_mailbox, TRUE)) return STATE_QUIT; return mn_client_session_write(session, "PASS %s", priv->auth_mailbox->runtime_password); } private int handle_pass_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { switch (response->type) { case RESPONSE_OK: return self_session_authenticated(priv); case RESPONSE_ERR: return self_session_authenticate_fallback(priv, TRUE, TRUE); default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } private int enter_list_cb (MNClientSession *session, MNClientSessionPrivate *priv) { return mn_client_session_write(session, "LIST"); } private int handle_list_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { self_session_handle_list_response(priv, response, FALSE); switch (response->type) { case RESPONSE_OK: return MN_CLIENT_SESSION_RESULT_CONTINUE; case RESPONSE_LIST_END: return self_session_enter_retr_top(priv); case RESPONSE_ERR: return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); case RESPONSE_LIST_ITEM: { int num; int size; if (sscanf(response->arguments, "%d %d", &num, &size) == 2) priv->messages = g_slist_prepend(priv->messages, self_message_info_new(num)); else /* compliance error */ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } return MN_CLIENT_SESSION_RESULT_CONTINUE; default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } private int enter_uidl_cb (MNClientSession *session, MNClientSessionPrivate *priv) { return mn_client_session_write(session, "UIDL"); } private int handle_uidl_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { self_session_handle_list_response(priv, response, FALSE); switch (response->type) { case RESPONSE_OK: return MN_CLIENT_SESSION_RESULT_CONTINUE; case RESPONSE_LIST_END: return self_session_enter_retr_top(priv); case RESPONSE_ERR: /* * The server advertised UIDL but does not support it, * fallback to LIST. */ return STATE_LIST; case RESPONSE_LIST_ITEM: { int num; char *uid; if (self_parse_uidl_list_item(response->arguments, &num, &uid)) { MessageInfo *info; MNMessage *message; info = self_message_info_new(num); info->mid = uid; message = mn_mailbox_get_message_from_mid(priv->mailbox, info->mid); if (message) info->message = g_object_ref(message); priv->messages = g_slist_prepend(priv->messages, info); return MN_CLIENT_SESSION_RESULT_CONTINUE; } else /* compliance error */ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } private int enter_retr_top_cb (MNClientSession *session, MNClientSessionPrivate *priv) { MessageInfo *info; info = self_session_message_iter_get_message_info(priv); if (info) return mn_client_session_write(session, priv->top_supported ? "TOP %i 0" : "RETR %i", info->number); else { GSList *messages = NULL; GSList *l; MN_LIST_FOREACH(l, priv->messages) { info = l->data; if (info->message) messages = g_slist_prepend(messages, info->message); } GDK_THREADS_ENTER(); mn_mailbox_set_messages(priv->mailbox, messages); if (priv->num_errors != 0) mn_mailbox_set_error(priv->mailbox, ngettext("cannot retrieve %i message", "cannot retrieve %i messages", priv->num_errors), priv->num_errors); /* * In authenticated_check(), we do not hold the GDK lock while * unreffing the messages. We have just exposed the messages * to other threads through our mn_mailbox_set_messages() * call, so unref them here, while we hold the GDK lock. */ mn_g_slist_clear_deep_custom(&priv->messages, (GFunc) self_message_info_free, NULL); gdk_flush(); GDK_THREADS_LEAVE(); g_slist_free(messages); return STATE_QUIT; } } private int handle_retr_top_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { self_session_handle_list_response(priv, response, TRUE); switch (response->type) { case RESPONSE_OK: if (priv->message_buffer) g_string_free(priv->message_buffer, TRUE); priv->message_buffer = g_string_new(NULL); return MN_CLIENT_SESSION_RESULT_CONTINUE; case RESPONSE_LIST_END: { MessageInfo *info = priv->message_iter->data; GError *err = NULL; g_assert(info->message == NULL); info->message = mn_message_new_from_buffer(priv->mailbox, priv->message_buffer->str, priv->message_buffer->len, info->mid, 0, TRUE, &err); if (err) { mn_client_session_warning(session, "cannot read message %i: %s", info->number, err->message); g_error_free(err); priv->num_errors++; } priv->message_iter = priv->message_iter->next; return STATE_RETR_TOP; } case RESPONSE_ERR: { MessageInfo *info = priv->message_iter->data; g_assert(info->message == NULL); mn_client_session_warning(session, "cannot retrieve message %i: %s", info->number, response->arguments ? response->arguments : "unknown error"); priv->num_errors++; priv->message_iter = priv->message_iter->next; return STATE_RETR_TOP; } case RESPONSE_LIST_ITEM: g_string_append_printf(priv->message_buffer, "%s\n", response->arguments); return MN_CLIENT_SESSION_RESULT_CONTINUE; default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } private int enter_quit_cb (MNClientSession *session, MNClientSessionPrivate *priv) { return mn_client_session_write(session, "QUIT"); } private int handle_quit_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { switch (response->type) { case RESPONSE_OK: return MN_CLIENT_SESSION_RESULT_DISCONNECT; case RESPONSE_ERR: return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments); default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT; } } override (MN:Authenticated:Mailbox) void authenticated_check (MNAuthenticatedMailbox *mailbox) { Self *self = SELF(mailbox); static const MNClientSessionState states[] = { { STATE_GREETING, NULL, self_handle_greeting_cb }, { STATE_CAPA, self_enter_capa_cb, self_handle_capa_cb }, #if WITH_SSL { STATE_STLS, self_enter_stls_cb, self_handle_stls_cb }, #endif #if WITH_SASL { STATE_AUTH, self_enter_auth_cb, self_handle_auth_cb }, #endif { STATE_APOP, self_enter_apop_cb, self_handle_apop_cb }, { STATE_USER, self_enter_user_cb, self_handle_user_cb }, { STATE_PASS, self_enter_pass_cb, self_handle_pass_cb }, { STATE_LIST, self_enter_list_cb, self_handle_list_cb }, { STATE_UIDL, self_enter_uidl_cb, self_handle_uidl_cb }, { STATE_RETR_TOP, self_enter_retr_top_cb, self_handle_retr_top_cb }, { STATE_QUIT, self_enter_quit_cb, self_handle_quit_cb }, MN_CLIENT_SESSION_STATES_END }; static const MNClientSessionCallbacks callbacks = { mn_pi_mailbox_notice_cb, mn_pi_mailbox_warning_cb, self_response_new_cb, self_response_free_cb, NULL, /* pre_read */ NULL, /* post_read */ #if WITH_SASL mn_pi_mailbox_sasl_get_credentials_cb, #endif #if WITH_SSL mn_pi_mailbox_ssl_trust_server_cb, #endif }; MNClientSessionPrivate priv; gboolean status; GError *err = NULL; PARENT_HANDLER(mailbox); /* check if the parent handler has disabled the mailbox */ if (! mn_mailbox_get_poll(MN_MAILBOX(self))) return; if (selfp->login_delay && selfp->authentication_timer) { double elapsed; g_timer_stop(selfp->authentication_timer); elapsed = g_timer_elapsed(selfp->authentication_timer, NULL); if (elapsed < selfp->login_delay) { int sleeptime; sleeptime = selfp->login_delay - elapsed; mn_mailbox_notice(MN_MAILBOX(self), ngettext("honouring LOGIN-DELAY, sleeping for %i second", "honouring LOGIN-DELAY, sleeping for %i seconds", sleeptime), sleeptime); sleep(sleeptime); } } memset(&priv, 0, sizeof(priv)); mn_pi_mailbox_session_private_init(MN_PI_MAILBOX(self), &priv); priv.self = self; status = mn_client_session_run(states, &callbacks, #if WITH_SSL priv.pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL, #endif priv.pi_mailbox->hostname, priv.pi_mailbox->runtime_port, &priv, &err); if (! status) { char *escaped; escaped = mn_utf8_escape(err->message); g_error_free(err); GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), "%s", escaped); gdk_flush(); GDK_THREADS_LEAVE(); g_free(escaped); } g_free(priv.apop_timestamp); mn_g_slist_free_deep(priv.auth_mechanisms); #if WITH_SASL g_slist_free(priv.sasl_remaining_mechanisms); #endif mn_g_slist_free_deep_custom(priv.messages, (GFunc) self_message_info_free, NULL); if (priv.message_buffer) g_string_free(priv.message_buffer, TRUE); } private MNClientSessionResponse * response_new_cb (MNClientSession *session, const char *input, MNClientSessionPrivate *priv) { MNClientSessionResponse *response = NULL; /* * About character set handling: * * RFC 1939 3 specifies that "keywords and arguments consist of * printable ASCII characters", however that refers to * commands. Nothing is said about responses. We therefore do not * check the encoding of responses. * * Safety: * - we ensure that GTK+ will only receive UTF-8 data by * escaping error messages in authenticated_check() * - responses ending up in mn_mailbox_notice() need not be * valid UTF-8, since g_log() escapes unsafe and non UTF-8 * characters * - RETR/TOP multiline responses are passed to our * mn-message-mime implementation, which handles character set * conversions */ if (priv->in_list) { response = g_new0(MNClientSessionResponse, 1); if (! strcmp(input, ".")) response->type = RESPONSE_LIST_END; else if (g_str_has_prefix(input, "..")) { response->type = RESPONSE_LIST_ITEM; response->arguments = g_strdup(input + 1); /* skip the initial dot */ } else { response->type = RESPONSE_LIST_ITEM; response->arguments = g_strdup(input); } } else { if (g_str_has_prefix(input, "+ ")) { response = g_new0(MNClientSessionResponse, 1); response->type = RESPONSE_CONTINUATION; response->arguments = g_strdup(input + 2); } else { ResponseType type; int after_status = 0; if (g_str_has_prefix(input, "+OK")) { type = RESPONSE_OK; after_status = 3; } else if (g_str_has_prefix(input, "-ERR")) { type = RESPONSE_ERR; after_status = 4; } if (after_status) { char c = input[after_status]; if (c == ' ' || c == ',') /* skip commonly used separators */ after_status++; response = g_new0(MNClientSessionResponse, 1); response->type = type; if (input[after_status] != 0) response->arguments = g_strdup(input + after_status); } } } return response; } private void response_free_cb (MNClientSession *session, MNClientSessionResponse *response, MNClientSessionPrivate *priv) { g_free(response->arguments); g_free(response); } private int session_authenticate (MNClientSessionPrivate *priv (check null)) { #if WITH_SASL g_slist_free(priv->sasl_remaining_mechanisms); priv->sasl_remaining_mechanisms = g_slist_copy(priv->auth_mechanisms); #endif /* WITH_SASL */ if (priv->pi_mailbox->authmech) { if (*priv->pi_mailbox->authmech != '+') { #if WITH_SASL return STATE_AUTH; #else mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in")); return STATE_QUIT; #endif /* WITH_SASL */ } else { if (! strcmp(priv->pi_mailbox->authmech, "+APOP")) { if (priv->apop_timestamp) return STATE_APOP; else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support APOP authentication")); return STATE_QUIT; } } else if (! strcmp(priv->pi_mailbox->authmech, "+USERPASS")) return STATE_USER; else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech); return STATE_QUIT; } } } else { #if WITH_SASL if (priv->sasl_remaining_mechanisms) return STATE_AUTH; #endif /* WITH_SASL */ if (priv->apop_timestamp) return STATE_APOP; else return STATE_USER; } } private int session_authenticate_fallback (MNClientSessionPrivate *priv (check null), gboolean tried_apop, gboolean tried_pass) { if (! priv->pi_mailbox->authmech) { #if WITH_SASL if (priv->sasl_mechanism) { GSList *elem; elem = mn_g_str_slist_find(priv->sasl_remaining_mechanisms, priv->sasl_mechanism); if (elem) { priv->sasl_remaining_mechanisms = g_slist_delete_link(priv->sasl_remaining_mechanisms, elem); if (priv->sasl_remaining_mechanisms) { mn_client_session_notice(priv->session, _("disabling mechanism \"%s\" and retrying SASL authentication"), priv->sasl_mechanism); return STATE_AUTH; } } } /* SASL is not needed anymore, save some memory */ mn_client_session_sasl_dispose(priv->session); #endif /* WITH_SASL */ if (! tried_apop && priv->apop_timestamp) { mn_client_session_notice(priv->session, _("falling back to APOP authentication")); return STATE_APOP; } else if (! tried_pass) { mn_client_session_notice(priv->session, _("falling back to USER/PASS authentication")); return STATE_USER; } } if (priv->auth_mailbox->auth_prompted) { mn_authenticated_mailbox_auth_failed(priv->auth_mailbox); return self_session_authenticate(priv); } else { mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed")); return STATE_QUIT; } } private int session_authenticated (MNClientSessionPrivate *priv (check null)) { priv->authenticated = TRUE; if (priv->self->_priv->login_delay) { if (priv->self->_priv->authentication_timer) g_timer_start(priv->self->_priv->authentication_timer); else priv->self->_priv->authentication_timer = g_timer_new(); } /* * We are now in transaction state. We must re-issue CAPA if: * * - the LOGIN-DELAY capability announced in the authorization * state contained the USER argument (priv->login_delay_user is * true) * - the TOP capability was not announced in the authorization * state: although RFC 2449 states that "capabilities available * in the AUTHORIZATION state MUST be announced in both states", * some servers (for instance, pop.gmail.com) violate the RFC * and only announce TOP in the transaction state. */ return priv->login_delay_user || ! priv->top_supported ? STATE_CAPA : self_session_enter_list_or_uidl(priv); } private void session_handle_list_response (MNClientSessionPrivate *priv (check null), MNClientSessionResponse *response (check null), gboolean in_retr_top) { switch (response->type) { case RESPONSE_OK: priv->in_list = TRUE; priv->in_retr_top = in_retr_top; break; case RESPONSE_LIST_ITEM: /* nop */ break; default: priv->in_list = FALSE; priv->in_retr_top = FALSE; break; } } private int session_enter_list_or_uidl (MNClientSessionPrivate *priv (check null)) { if (priv->uidl_supported) return STATE_UIDL; else return STATE_LIST; } private int session_enter_retr_top (MNClientSessionPrivate *priv (check null)) { priv->message_iter = priv->messages; return STATE_RETR_TOP; } private MessageInfo * session_message_iter_get_message_info (MNClientSessionPrivate *priv (check null)) { for (; priv->message_iter; priv->message_iter = priv->message_iter->next) { MessageInfo *info = priv->message_iter->data; if (! info->message) return info; } return NULL; } private gboolean parse_uidl_list_item (const char *item (check null), int *number (check null), char **uid (check null)) { char **fields; gboolean status = FALSE; fields = g_strsplit(item, " ", 2); if (g_strv_length(fields) == 2 && mn_str_isnumeric(fields[0])) { *number = atoi(fields[0]); *uid = g_strdup(fields[1]); status = TRUE; } g_strfreev(fields); return status; } private MessageInfo * message_info_new (int number) { MessageInfo *info; info = g_new0(MessageInfo, 1); info->number = number; return info; } private void message_info_free (MessageInfo *info (check null)) { if (info->message) g_object_unref(info->message); g_free(info->mid); g_free(info); } public char * build_name (const char *username (check null), const char *server (check null)) { return g_strdup_printf("%s@%s", username, server); } } mail-notification-5.4.dfsg.1/src/mn-reentrant-mailbox.gob0000644000175000001440000000612411015312440023170 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-mailbox.h" %} %{ #include #include "mn-mailbox-private.h" #include "mn-util.h" typedef struct { MNReentrantMailbox *self; int check_id; } CheckInfo; %} class MN:Reentrant:Mailbox from MN:Mailbox (abstract) { private unsigned int queue_check_id; private int check_id; private int check_unique_id; override (MN:Mailbox) void removed (MNMailbox *mailbox) { Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); /* abort the current check */ g_atomic_int_set(&selfp->check_id, 0); } finalize (self) { if (selfp->queue_check_id) g_source_remove(selfp->queue_check_id); } /** * queue_check(): * @self: a mailbox * * Queues a mail check on @self, or replaces an already queued check. * * This function is not thread-safe. It is only called from main * loop callbacks (hence always from the same thread). **/ protected void queue_check (self) { if (! selfp->queue_check_id) selfp->queue_check_id = gdk_threads_add_idle(self_queue_check_cb, self); } private gboolean queue_check_cb (gpointer data) { Self *self = data; mn_mailbox_check(MN_MAILBOX(self)); selfp->queue_check_id = 0; return FALSE; /* remove source */ } override (MN:Mailbox) void check (MNMailbox *mailbox) { Self *self = SELF(mailbox); CheckInfo *info; PARENT_HANDLER(mailbox); mn_mailbox_set_error(mailbox, NULL); if (++selfp->check_unique_id == 0) ++selfp->check_unique_id; info = g_new(CheckInfo, 1); info->self = g_object_ref(self); info->check_id = selfp->check_unique_id; g_atomic_int_set(&selfp->check_id, info->check_id); mn_thread_create((GThreadFunc) self_check_thread_cb, info); } private void check_thread_cb (CheckInfo *info) { Self *self = info->self; self_reentrant_check(self, info->check_id); g_atomic_int_compare_and_exchange(&selfp->check_id, info->check_id, 0); GDK_THREADS_ENTER(); g_object_unref(self); gdk_flush(); GDK_THREADS_LEAVE(); g_free(info); } virtual private void reentrant_check (self, int check_id (check != 0)); protected gboolean check_aborted (self, int check_id (check != 0)) { return g_atomic_int_get(&selfp->check_id) != check_id; } } mail-notification-5.4.dfsg.1/src/mn-imap-mailbox-properties.gob0000644000175000001440000001732311015312440024311 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-pi-mailbox-properties.h" %} %privateheader{ #include "mn-imap-mailbox.h" %} %{ #include #include "mn-mailbox-properties.h" #include "mn-mailbox-properties-private.h" #include "mn-authenticated-mailbox-properties-private.h" #include "mn-pi-mailbox-properties-private.h" #include "mn-auth-combo-box.h" #include "mn-util.h" #include "mn-properties-dialog.h" %} class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties { private GtkWidget *inbox_radio; private GtkWidget *other_radio; private GtkWidget *mailbox_entry; private GtkWidget *use_idle_radio[MN_IMAP_MAILBOX_N_USE_IDLE]; property BOOLEAN complete (override) get { gboolean complete; complete = mn_pi_mailbox_properties_is_complete(MN_PI_MAILBOX_PROPERTIES(self)); if (complete) { gboolean other_active; const char *mailbox; other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)); mailbox = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry)); if (other_active && ! *mailbox) complete = FALSE; } g_value_set_boolean(VAL, complete); }; property STRING default_name (override) get { const char *username; const char *server; gboolean other_active; const char *mailbox; mn_authenticated_mailbox_properties_get_contents(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self), &username, NULL); mn_pi_mailbox_properties_get_contents(MN_PI_MAILBOX_PROPERTIES(self), NULL, NULL, &server, NULL); other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)); mailbox = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry)); g_value_take_string(VAL, mn_imap_mailbox_build_name(username, server, other_active ? mailbox : NULL)); }; class_init (class) { MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "imap"; p_class->combo_label = "IMAP"; } init (self) { MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self); GtkWidget *hbox; GtkWidget *folder_vbox; GtkWidget *idle_section; GtkWidget *idle_vbox; int i; /* translators: header capitalization */ folder_vbox = mn_mailbox_properties_add_general_section(properties, _("IMAP Mailbox")); selfp->inbox_radio = gtk_radio_button_new_with_mnemonic(NULL, _("In_box")); gtk_size_group_add_widget(properties->label_size_group, selfp->inbox_radio); gtk_box_pack_start(GTK_BOX(folder_vbox), selfp->inbox_radio, FALSE, FALSE, 0); selfp->other_radio = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->inbox_radio), _("_Other:")); gtk_size_group_add_widget(properties->label_size_group, selfp->other_radio); selfp->mailbox_entry = gtk_entry_new(); gtk_widget_set_sensitive(selfp->mailbox_entry, FALSE); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), selfp->other_radio, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), selfp->mailbox_entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(folder_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show_all(folder_vbox); /* translators: header capitalization */ idle_section = mn_hig_section_new_with_box(_("Use the IDLE Extension"), NULL, &idle_vbox); gtk_box_pack_start(GTK_BOX(pi->connection_page), idle_section, FALSE, FALSE, 0); gtk_widget_show(idle_section); self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_NEVER, Q_("IMAP connection tab|_Never")); self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT, _("A_utodetect")); self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_ALWAYS, _("Al_ways")); /* by default, autodetect is enabled */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT]), TRUE); mn_auth_combo_box_append(MN_AUTH_COMBO_BOX(pi->auth_combo), "+LOGIN", "IMAP LOGIN"); for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++) gtk_spin_button_set_value(GTK_SPIN_BUTTON(pi->port_spin[i]), mn_imap_mailbox_default_ports[i]); properties->entries = g_slist_append(properties->entries, selfp->mailbox_entry); g_signal_connect(selfp->inbox_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self); g_signal_connect(selfp->other_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self); g_object_connect(selfp->mailbox_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, NULL); } private void add_idle_usage (self, Gtk:Box *idle_vbox (check null), MNIMAPMailboxUseIDLE usage, const char *mnemonic (check null)) { selfp->use_idle_radio[usage] = usage == 0 ? gtk_radio_button_new_with_mnemonic(NULL, mnemonic) : gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->use_idle_radio[0]), mnemonic); gtk_box_pack_start(idle_vbox, selfp->use_idle_radio[usage], TRUE, TRUE, 0); gtk_widget_show(selfp->use_idle_radio[usage]); } private void radio_toggled_h (GtkToggleButton *togglebutton, gpointer user_data) { Self *self = user_data; gtk_widget_set_sensitive(selfp->mailbox_entry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio))); g_object_notify(G_OBJECT(self), "complete"); g_object_notify(G_OBJECT(self), "default-name"); } override (MN:Mailbox:Properties) void set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox) { Self *self = SELF(properties); MNIMAPMailbox *imap_mailbox = MN_IMAP_MAILBOX(mailbox); PARENT_HANDLER(properties, mailbox); if (! mn_utf8_strcasecmp(imap_mailbox->mailbox, "INBOX")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->inbox_radio), TRUE); else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->other_radio), TRUE); gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_entry), imap_mailbox->mailbox); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[imap_mailbox->use_idle_extension]), TRUE); } override (MN:Mailbox:Properties) MNMailbox * get_mailbox (MNMailboxProperties *properties) { Self *self = SELF(properties); MNIMAPMailboxUseIDLE use_idle; MNMailbox *mailbox; mailbox = PARENT_HANDLER(properties); for (use_idle = 0; use_idle < MN_IMAP_MAILBOX_N_USE_IDLE; use_idle++) if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[use_idle]))) break; g_object_set(mailbox, MN_IMAP_MAILBOX_PROP_USE_IDLE_EXTENSION(use_idle), NULL); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio))) g_object_set(mailbox, MN_IMAP_MAILBOX_PROP_MAILBOX((char *) gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry))), NULL); return mailbox; } } mail-notification-5.4.dfsg.1/src/mn-system-vfs-mailbox.gob0000644000175000001440000000555411015312440023314 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-vfs-mailbox.h" %} %{ #include #include "mn-stock.h" #include "mn-mailbox-private.h" %} class MN:System:VFS:Mailbox from MN:VFS:Mailbox { class_init (class) { MN_MAILBOX_CLASS(class)->type = "system-vfs"; } override (MN:Mailbox) void seal (MNMailbox *mailbox) { mn_mailbox_set_stock_id(mailbox, MN_STOCK_SYSTEM_MAILBOX); MN_VFS_MAILBOX(mailbox)->uri = g_strdup(self_get_uri()); mailbox->runtime_name = g_strdup(_("System mailbox")); PARENT_HANDLER(mailbox); } override (MN:Mailbox) MNMailbox * parse_uri (MNMailbox *dummy, const char *uri) { const char *system_uri; MNMailbox *mailbox = NULL; system_uri = self_get_uri(); if (system_uri && gnome_vfs_uris_match(uri, system_uri)) mailbox = mn_mailbox_new("system-vfs", NULL); return mailbox; } override (MN:Mailbox) void check (MNMailbox *mailbox) { if (MN_VFS_MAILBOX(mailbox)->uri) { PARENT_HANDLER(mailbox); } else { mn_mailbox_set_error(mailbox, _("system mailbox not found")); mn_mailbox_set_poll(mailbox, FALSE); /* disable the mailbox */ } } public const char * get_uri (void) { static char *global_uri = NULL; G_LOCK_DEFINE_STATIC(global_uri); const char *uri; G_LOCK(global_uri); if (! global_uri) { const char *mail = g_getenv("MAIL"); if (mail && g_path_is_absolute(mail) && g_file_test(mail, G_FILE_TEST_EXISTS)) global_uri = gnome_vfs_get_uri_from_local_path(mail); if (! global_uri) /* no MAIL or invalid contents */ { const char *username = g_get_user_name(); static const char *spool_paths[] = { "/var/spool/mail", "/var/mail" }; int i; for (i = 0; i < G_N_ELEMENTS(spool_paths); i++) { char *path; path = g_build_filename(spool_paths[i], username, NULL); if (g_file_test(path, G_FILE_TEST_EXISTS)) global_uri = gnome_vfs_get_uri_from_local_path(path); g_free(path); if (global_uri) break; } } } uri = global_uri; G_UNLOCK(global_uri); return uri; } } mail-notification-5.4.dfsg.1/src/mn-server.gob0000644000175000001440000000647311015312440021052 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %h{ #define MN_SERVER_SERVICE "org.gnome.MailNotification" #define MN_SERVER_PATH "/org/gnome/MailNotification" #define MN_SERVER_INTERFACE "org.gnome.MailNotification" %} %{ #include #include #include "mn-shell.h" #include "mn-util.h" %} %afterdecls{ #include "mn-server-dbus.h" %} /* * We hold the GDK lock because D-Bus interface methods are run from a * main loop callback. */ class MN:Server { class_init (class) { dbus_g_object_type_install_info(TYPE_SELF, &dbus_glib_mn_server_object_info); } private gboolean has_mailboxes (self, gboolean *ret (check null), GError **err) { *ret = mn_shell->mailboxes->list != NULL; return TRUE; } private gboolean get_summary (self, char **ret (check null), GError **err) { *ret = mn_shell_get_summary(mn_shell); return TRUE; } private gboolean consider_new_mail_as_read (self, GError **err) { GDK_THREADS_ENTER(); mn_shell_consider_new_mail_as_read(mn_shell); GDK_THREADS_LEAVE(); return TRUE; } private gboolean update (self, GError **err) { GDK_THREADS_ENTER(); mn_shell_update(mn_shell); GDK_THREADS_LEAVE(); return TRUE; } private gboolean display_properties (self, GError **err) { GDK_THREADS_ENTER(); mn_shell_show_properties_dialog(mn_shell, 0); GDK_THREADS_LEAVE(); return TRUE; } private gboolean display_about (self, GError **err) { GDK_THREADS_ENTER(); mn_shell_show_about_dialog(mn_shell, 0); GDK_THREADS_LEAVE(); return TRUE; } private gboolean quit (self, GError **err) { GDK_THREADS_ENTER(); mn_shell_quit(mn_shell); GDK_THREADS_LEAVE(); return TRUE; } /* returns NULL if already registered */ public gboolean start (DBusGConnection *bus (check null), DBus:G:Proxy *bus_proxy (check null type)) { Self *self; GError *err = NULL; unsigned int name_reply; self = GET_NEW; dbus_g_connection_register_g_object(bus, MN_SERVER_PATH, G_OBJECT(self)); if (! org_freedesktop_DBus_request_name(bus_proxy, MN_SERVER_SERVICE, DBUS_NAME_FLAG_DO_NOT_QUEUE, &name_reply, &err)) { mn_show_fatal_error_dialog(NULL, _("Unable to register the Mail Notification D-Bus server: %s."), err->message); g_error_free(err); } if (name_reply != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { g_object_unref(self); return FALSE; } return TRUE; } } mail-notification-5.4.dfsg.1/src/mn-stock.c0000644000175000001440000000611011015312437020334 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include "mn-stock.h" #include "mn-util.h" void mn_stock_init (void) { static const struct { const char *stock_id; const char *filename; const char *icon_name; const char *source_stock_id; } icons[] = { { MN_STOCK_MAIL, NULL, "stock_mail" }, { MN_STOCK_NO_MAIL, NULL, "stock_inbox" }, { MN_STOCK_LOCAL, NULL, "stock_folder" }, { MN_STOCK_REMOTE, NULL, "stock_internet" }, { MN_STOCK_UNKNOWN, NULL, "stock_unknown" }, { MN_STOCK_ERROR, NULL, NULL, GTK_STOCK_DIALOG_ERROR }, #if WITH_GMAIL { MN_STOCK_GMAIL, PKGDATADIR G_DIR_SEPARATOR_S "gmail.png" }, #endif #if WITH_YAHOO { MN_STOCK_YAHOO, PKGDATADIR G_DIR_SEPARATOR_S "yahoo.png" }, #endif #if WITH_HOTMAIL { MN_STOCK_HOTMAIL, PKGDATADIR G_DIR_SEPARATOR_S "hotmail.png" }, #endif #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED { MN_STOCK_SYSTEM_MAILBOX, NULL, "system" }, #endif #if WITH_EVOLUTION { MN_STOCK_EVOLUTION_MAILBOX, NULL, "evolution" }, #endif { MN_STOCK_MAIL_READER, NULL, "stock_mail-handling" }, { MN_STOCK_OPEN_MESSAGE, NULL, "stock_mail-open" }, { MN_STOCK_CONSIDER_NEW_MAIL_AS_READ, NULL, "stock_mark" } }; GtkIconFactory *factory; GtkIconTheme *icon_theme; int i; factory = gtk_icon_factory_new(); gtk_icon_factory_add_default(factory); icon_theme = gtk_icon_theme_get_default(); for (i = 0; i < G_N_ELEMENTS(icons); i++) { GtkIconSet *icon_set; if (icons[i].filename) { GdkPixbuf *pixbuf; pixbuf = mn_pixbuf_new(icons[i].filename); icon_set = gtk_icon_set_new_from_pixbuf(pixbuf); g_object_unref(pixbuf); } else if (icons[i].icon_name) { GtkIconSource *icon_source; icon_set = gtk_icon_set_new(); icon_source = gtk_icon_source_new(); gtk_icon_source_set_icon_name(icon_source, icons[i].icon_name); gtk_icon_set_add_source(icon_set, icon_source); gtk_icon_source_free(icon_source); } else if (icons[i].source_stock_id) { icon_set = gtk_icon_factory_lookup_default(icons[i].source_stock_id); gtk_icon_set_ref(icon_set); } else g_assert_not_reached(); gtk_icon_factory_add(factory, icons[i].stock_id, icon_set); gtk_icon_set_unref(icon_set); } g_object_unref(factory); } mail-notification-5.4.dfsg.1/src/mn-non-linear-range.h0000644000175000001440000000251111015312437022353 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_NON_LINEAR_RANGE_H #define _MN_NON_LINEAR_RANGE_H #include typedef struct { int min; /* inclusive */ int max; /* inclusive */ int step; } MNNonLinearRangeBlock; void mn_non_linear_range_setup_static (GtkRange *range, const MNNonLinearRangeBlock *blocks, int num_blocks); gboolean mn_is_non_linear_range (gpointer object); int mn_non_linear_range_get_value (GtkRange *range); void mn_non_linear_range_set_value (GtkRange *range, int value); #endif /* _MN_NON_LINEAR_RANGE_H */ mail-notification-5.4.dfsg.1/src/mn-mbox-mailbox-backend.gob0000644000175000001440000000255511015312440023524 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-base-mbox-mailbox-backend.h" %} %{ #include "mn-base-mbox-mailbox-backend-private.h" #include "mn-message-mime.h" %} class MN:Mbox:Mailbox:Backend from MN:Base:Mbox:Mailbox:Backend { class_init (class) { MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "mbox"; } override (MN:Base:Mbox:Mailbox:Backend) MNMessage * get_new_message (MNBaseMboxMailboxBackend *backend, GMimeMessage *mime_message) { return mn_message_new_from_mime_message(MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), mime_message, NULL, 0, TRUE); } } mail-notification-5.4.dfsg.1/src/mn-sylpheed-mailbox-backend.gob0000644000175000001440000003421211015312440024367 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-vfs-mailbox-backend.h" %} %privateheader{ #include "mn-locked-callback.h" /* taken from procmsg.h in the Sylpheed sources */ #define SYLPHEED_MSG_NEW (1U << 0) #define SYLPHEED_MSG_UNREAD (1U << 1) /* taken from defs.h in the Sylpheed sources */ #define SYLPHEED_MARK_FILE ".sylpheed_mark" typedef struct { char *position; gsize bytes_left; } ByteStream; %} %{ #include #include #include #include #include #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #include "mn-vfs-mailbox-private.h" #include "mn-vfs-mailbox-backend-private.h" #include "mn-vfs.h" #include "mn-util.h" #include "mn-message-mime.h" #include "mn-sylpheed-message.h" /* taken from defs.h in the Sylpheed sources */ #define SYLPHEED_MARK_VERSION 2 /* taken from defs.h in the Claws Mail sources */ #define CLAWS_MAIL_CACHE_FILE ".sylpheed_claws_cache" %} class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend { class_init (class) { MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Sylpheed"; } override (MN:VFS:Mailbox:Backend) void monitor_cb (MNVFSMailboxBackend *backend, const char *info_uri, GnomeVFSMonitorEventType event_type) { if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED || event_type == GNOME_VFS_MONITOR_EVENT_DELETED || event_type == GNOME_VFS_MONITOR_EVENT_CREATED) { char *filename; filename = mn_vfs_uri_extract_short_name(info_uri); if (filename) { /* * The status of the mailbox can only have changed if the * subject of the event is the mark file or a message file * (having a numbered filename). */ if (! strcmp(filename, SYLPHEED_MARK_FILE) || mn_str_isnumeric(filename)) mn_vfs_mailbox_backend_queue_check(backend); g_free(filename); } } } override (MN:VFS:Mailbox:Backend) gboolean is (MNVFSMailboxBackend *dummy, MNVFSMailboxBackendClass *class, MNVFSMailbox *mailbox) { gboolean is; GnomeVFSURI *uri; uri = gnome_vfs_uri_append_file_name(mailbox->vfs_uri, SYLPHEED_MARK_FILE); is = mn_vfs_test(uri, G_FILE_TEST_IS_REGULAR); gnome_vfs_uri_unref(uri); return is; } private gboolean is_claws_mail_mailbox (self) { gboolean is; GnomeVFSURI *uri; uri = gnome_vfs_uri_append_file_name(MN_VFS_MAILBOX_BACKEND(self)->mailbox->vfs_uri, CLAWS_MAIL_CACHE_FILE); is = mn_vfs_test(uri, G_FILE_TEST_IS_REGULAR); gnome_vfs_uri_unref(uri); return is; } /* non-reentrant, must be called with a lock held */ private gboolean has_sylpheed_locking (void) { static gboolean checked = FALSE; static gboolean has = FALSE; if (! checked) { char *output; if (g_spawn_command_line_sync("sylpheed --version", &output, NULL, NULL, NULL)) { if (strstr(output, "+locking")) has = TRUE; g_free(output); } checked = TRUE; } return has; } private void update_check_latency (self) { MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self); mn_vfs_mailbox_lock(backend->mailbox); /* * If it is a Claws Mail mailbox, the check_latency can be set to * 0, since Claws Mail does not write the mark file in place but * uses an atomic rename() to move the new mark file over the * previous one. */ if (self_is_claws_mail_mailbox(self)) backend->check_latency = 0; else { /* * If Sylpheed was compiled with the locking patch and the * mailbox is local, check_latency can be set to 0, since we * lock the mark file while reading it. */ if (self_has_sylpheed_locking() && gnome_vfs_uri_is_local(backend->mailbox->vfs_uri)) backend->check_latency = 0; else /* * Otherwise, set check_latency to 3 seconds to avoid race * conditions that can occur when Sylpheed writes the mark * file while we read it. */ backend->check_latency = 3000; } mn_vfs_mailbox_unlock(backend->mailbox); } override (MN:VFS:Mailbox:Backend) void check (MNVFSMailboxBackend *backend, int check_id) { GError *err = NULL; GnomeVFSResult result; GnomeVFSResult close_result; GnomeVFSDirectoryHandle *handle; GnomeVFSFileInfo *file_info; GHashTable *marks; GSList *messages = NULL; int num_errors = 0; self_update_check_latency(SELF(backend)); mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_DIRECTORY); marks = self_read_marks(backend->mailbox->vfs_uri, &err); if (! marks) { if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to read %s: %s"), SYLPHEED_MARK_FILE, err->message); gdk_flush(); GDK_THREADS_LEAVE(); } g_error_free(err); return; } if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) goto finish; result = gnome_vfs_directory_open_from_uri(&handle, backend->mailbox->vfs_uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS); if (result != GNOME_VFS_OK) { if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to open folder: %s"), gnome_vfs_result_to_string(result)); gdk_flush(); GDK_THREADS_LEAVE(); } goto end; } file_info = gnome_vfs_file_info_new(); while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK) if (mn_str_isnumeric(file_info->name)) { guint32 num = atoi(file_info->name); guint32 sflags; gboolean has_mark; gpointer value; has_mark = g_hash_table_lookup_extended(marks, GUINT_TO_POINTER(num), NULL, &value); if (has_mark) sflags = GPOINTER_TO_UINT(value); if (! has_mark || (sflags & (SYLPHEED_MSG_NEW | SYLPHEED_MSG_UNREAD)) != 0) { MNMessageFlags flags = 0; MNVFSMessage *message; if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) break; if (! has_mark || (sflags & SYLPHEED_MSG_NEW) != 0) flags |= MN_MESSAGE_NEW; /* * We set handle_status to FALSE, since Sylpheed has its * own way (mark file) of differencing seen/unseen * messages. */ message = mn_vfs_message_new(MN_TYPE_SYLPHEED_MESSAGE, backend, NULL, backend->mailbox->vfs_uri, file_info->name, flags, FALSE, &err); if (message) messages = g_slist_prepend(messages, message); else if (err) { GnomeVFSURI *message_uri; char *message_text_uri; message_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, file_info->name); message_text_uri = gnome_vfs_uri_to_string(message_uri, GNOME_VFS_URI_HIDE_PASSWORD); gnome_vfs_uri_unref(message_uri); mn_mailbox_warning(MN_MAILBOX(backend->mailbox), "cannot read message \"%s\": %s", message_text_uri, err->message); g_free(message_text_uri); g_clear_error(&err); num_errors++; } } } gnome_vfs_file_info_unref(file_info); close_result = gnome_vfs_directory_close(handle); finish: GDK_THREADS_ENTER(); if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK) { if (close_result == GNOME_VFS_OK) { mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages); if (num_errors != 0) mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), ngettext("cannot read %i message", "cannot read %i messages", num_errors), num_errors); } else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to close folder: %s"), gnome_vfs_result_to_string(close_result)); } else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("error while reading folder: %s"), gnome_vfs_result_to_string(result)); } mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); end: g_hash_table_destroy(marks); } private gboolean read_local_mark_file (const char *filename (check null), gsize *size (check null), char **contents (check null), GError **err) { int fd; struct flock lock; GIOChannel *channel; GError *tmp_err = NULL; gboolean status = FALSE; fd = open(filename, O_RDONLY); if (fd < 0) { g_set_error(err, 0, 0, "%s", g_strerror(errno)); return FALSE; } memset(&lock, 0, sizeof(lock)); lock.l_start = 0; /* from l_whence */ lock.l_len = 0; /* to end of file */ lock.l_type = F_RDLCK; /* read lock */ lock.l_whence = SEEK_SET; /* from start of file */ /* ignore lock failures */ fcntl(fd, F_SETLKW, &lock); channel = g_io_channel_unix_new(fd); if (g_io_channel_set_encoding(channel, NULL, &tmp_err) == G_IO_STATUS_NORMAL) { if (g_io_channel_read_to_end(channel, contents, size, err) == G_IO_STATUS_NORMAL) status = TRUE; } else { g_set_error(err, 0, 0, _("unable to set encoding: %s"), tmp_err->message); g_error_free(tmp_err); } g_io_channel_shutdown(channel, FALSE, NULL); g_io_channel_unref(channel); return status; } private gboolean read_remote_mark_file (GnomeVFSURI *uri (check null), gsize *size (check null), char **contents (check null), GError **err) { GnomeVFSResult result; int _size; result = mn_vfs_read_entire_file_uri(uri, &_size, contents); if (result == GNOME_VFS_OK) { *size = _size; return TRUE; } else { g_set_error(err, 0, 0, "%s", gnome_vfs_result_to_string(result)); return FALSE; } } private gboolean read_mark_file (GnomeVFSURI *mailbox_uri (check null), gsize *size (check null), char **contents (check null), GError **err) { GnomeVFSURI *markfile_uri; char *filename; gboolean status; markfile_uri = gnome_vfs_uri_append_file_name(mailbox_uri, SYLPHEED_MARK_FILE); filename = mn_vfs_get_local_path(markfile_uri); if (filename) { status = self_read_local_mark_file(filename, size, contents, err); g_free(filename); } else status = self_read_remote_mark_file(markfile_uri, size, contents, err); gnome_vfs_uri_unref(markfile_uri); return status; } private gboolean byte_stream_read (ByteStream *stream (check null), gpointer buf (check null), int size, GError **err) { if (stream->bytes_left >= size) { memcpy(buf, stream->position, size); stream->position += size; stream->bytes_left -= size; return TRUE; } else { g_set_error(err, 0, 0, _("unexpected end of file")); return FALSE; } } protected GHashTable * read_marks (GnomeVFSURI *mailbox_uri (check null), GError **err) { GHashTable *marks = NULL; gsize bytes_left; char *buf; if (self_read_mark_file(mailbox_uri, &bytes_left, &buf, err)) { ByteStream stream = { buf, bytes_left }; guint32 version; if (self_byte_stream_read(&stream, &version, sizeof(version), err)) { if (version == SYLPHEED_MARK_VERSION) { guint32 num; marks = g_hash_table_new(g_direct_hash, g_direct_equal); while (self_byte_stream_read(&stream, &num, sizeof(num), NULL)) { guint32 flags; if (! self_byte_stream_read(&stream, &flags, sizeof(flags), err)) { g_hash_table_destroy(marks); marks = NULL; break; } g_hash_table_insert(marks, GUINT_TO_POINTER(num), GUINT_TO_POINTER(flags)); } } else g_set_error(err, 0, 0, _("incompatible file version \"%i\""), version); } g_free(buf); } return marks; } private void write_marks_foreach_cb (gpointer key, gpointer value, gpointer data) { GByteArray *array = data; guint32 num; guint32 flags; num = GPOINTER_TO_UINT(key); flags = GPOINTER_TO_UINT(value); g_byte_array_append(array, (const guint8 *) &num, sizeof(num)); g_byte_array_append(array, (const guint8 *) &flags, sizeof(flags)); } /* writes to the same mark file must be serialized (see below) */ protected gboolean write_marks (GnomeVFSURI *mailbox_uri (check null), GHashTable *marks (check null), GError **err) { GByteArray *data; guint32 version; GnomeVFSURI *markfile_uri; gboolean status; /* * We do not need to lock the mark file: races with Sylpheed are * avoided since mn_vfs_write_entire_file_uri_safe() writes the * file atomically (with a move). * * However, only one thread at once can write a given mark file, * since mn_vfs_write_entire_file_uri_safe() is not thread-safe * (it uses fixed temporary file names, foo.tmp and foo.old). */ data = g_byte_array_new(); version = SYLPHEED_MARK_VERSION; g_byte_array_append(data, (const guint8 *) &version, sizeof(version)); g_hash_table_foreach(marks, self_write_marks_foreach_cb, data); markfile_uri = gnome_vfs_uri_append_file_name(mailbox_uri, SYLPHEED_MARK_FILE); /* Sylpheed uses S_IRUSR | S_IWUSR for data files */ status = mn_vfs_write_entire_file_uri_safe(markfile_uri, data->len, data->data, S_IRUSR | S_IWUSR, err); gnome_vfs_uri_unref(markfile_uri); g_byte_array_free(data, TRUE); return status; } } mail-notification-5.4.dfsg.1/src/mn-util.h0000644000175000001440000001656211015312437020207 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_UTIL_H #define _MN_UTIL_H #include #include #include void mn_info (const char *format, ...) G_GNUC_PRINTF(1, 2); #define MN_LIST_FOREACH(var, head) \ for ((var) = (head); \ (var); \ (var) = (var)->next) void mn_g_list_free_deep_custom (GList *list, GFunc element_free_func, gpointer user_data); GSList *mn_g_slist_append_elements (GSList *list, gpointer data, ...) G_GNUC_NULL_TERMINATED; void mn_g_slist_free_deep (GSList *list); void mn_g_slist_free_deep_custom (GSList *list, GFunc element_free_func, gpointer user_data); void mn_g_slist_clear (GSList **list); void mn_g_slist_clear_deep (GSList **list); void mn_g_slist_clear_deep_custom (GSList **list, GFunc element_free_func, gpointer user_data); GSList *mn_g_slist_delete_link_deep_custom (GSList *list, GSList *link_, GFunc element_free_func, gpointer user_data); GSList *mn_g_str_slist_find (GSList *list, const char *str); void mn_g_object_list_free (GList *list); GSList *mn_g_object_slist_ref (GSList *list); GSList *mn_g_object_slist_copy (GSList *list); void mn_g_object_slist_free (GSList *list); void mn_g_object_slist_clear (GSList **list); #define MN_QUEUE_FOREACH(var, queue) \ for ((var) = (queue)->head; \ (var); \ (var) = (var)->next) gboolean mn_str_isnumeric (const char *str); gboolean mn_str_ishex (const char *str); char *mn_strstr_span (const char *big, const char *little); GdkPixbuf *mn_pixbuf_new (const char *filename); void mn_container_create_interface (GtkContainer *container, const char *filename, const char *child_name, const char *callback_prefix, ...) G_GNUC_NULL_TERMINATED; GtkWindow *mn_widget_get_parent_window (GtkWidget *widget); void mn_file_chooser_dialog_allow_select_folder (GtkFileChooserDialog *dialog, int accept_id); void mn_setup_dnd (GtkWidget *widget); typedef enum { MN_GNOME_COPIED_FILES_CUT, MN_GNOME_COPIED_FILES_COPY } MNGnomeCopiedFilesType; gboolean mn_parse_gnome_copied_files (const char *gnome_copied_files, MNGnomeCopiedFilesType *type, GSList **uri_list); void mn_show_help (GtkWindow *parent, const char *link_id); void mn_open_link (GtkWindow *parent, const char *url); void mn_thread_create (GThreadFunc func, gpointer data); GtkWidget *mn_menu_shell_append (GtkMenuShell *shell, const char *stock_id, const char *mnemonic); GtkWidget *mn_menu_shell_prepend (GtkMenuShell *shell, const char *stock_id, const char *mnemonic); void mn_show_error_dialog (GtkWindow *parent, const char *primary, const char *format, ...) G_GNUC_PRINTF(3, 4); void mn_show_error_dialog_with_markup (GtkWindow *parent, const char *primary, const char *format, ...) G_GNUC_PRINTF(3, 4); void mn_show_invalid_uri_dialog (GtkWindow *parent, const char *primary, const char *invalid_uri); void mn_show_invalid_uri_list_dialog (GtkWindow *parent, const char *primary, GSList *invalid_uri_list); void mn_show_fatal_error_dialog (GtkWindow *parent, const char *format, ...) G_GNUC_PRINTF(2, 3) G_GNUC_NORETURN; typedef enum { MN_DIALOG_BLOCKING = 1 << 0, MN_DIALOG_MARKUP = 1 << 1 } MNDialogFlags; GtkWidget *mn_alert_dialog_new (GtkWindow *parent, GtkMessageType type, MNDialogFlags flags, const char *primary, const char *secondary); #define MN_SECS(n) (n) #define MN_MINS(n) ((n) * 60) #define MN_HOURS(n) ((n) * 3600) #define MN_DAYS(n) ((n) * 86400) time_t mn_time (void); char *mn_strftime (const char *format, const struct tm *timeptr); char *mn_format_past_time (time_t past_time, time_t now); char *mn_format_seconds (int seconds); void mn_g_object_null_unref (gpointer object); gpointer mn_g_object_connect (gpointer object, gpointer instance, const char *signal_spec, ...) G_GNUC_NULL_TERMINATED; gpointer mn_g_object_clone (gpointer object, const char *property_name, ...) G_GNUC_NULL_TERMINATED; #define MN_STRDUP_VPRINTF(result, format) \ G_STMT_START{ \ va_list _mn_strdup_vprintf_args; \ \ va_start(_mn_strdup_vprintf_args, format); \ result = g_strdup_vprintf(format, _mn_strdup_vprintf_args); \ va_end(_mn_strdup_vprintf_args); \ }G_STMT_END int mn_utf8_strcasecmp (const char *s1, const char *s2); gboolean mn_utf8_str_case_has_suffix (const char *str, const char *suffix); char *mn_utf8_escape (const char *str); int mn_dialog_run_nonmodal (GtkDialog *dialog); void mn_source_clear (unsigned int *tag); gboolean mn_ascii_str_case_has_prefix (const char *str, const char *prefix); char *mn_ascii_strcasestr (const char *big, const char *little); char *mn_ascii_strcasestr_span (const char *big, const char *little); typedef gboolean (*MNSubstCommandFunction) (const char *name, char **value, gpointer data); char *mn_subst_command (const char *command, MNSubstCommandFunction subst, gpointer data, GError **err); void mn_execute_command (const char *command); void mn_execute_command_in_terminal (const char *command); char *mn_shell_quote_safe (const char *unquoted_string); GtkWidget *mn_hig_section_new (const char *title, GtkWidget **label, GtkWidget **alignment); GtkWidget *mn_hig_section_new_with_box (const char *title, GtkWidget **label, GtkWidget **vbox); char *mn_g_value_to_string (const GValue *value); gboolean mn_g_value_from_string (GValue *value, const char *str); void mn_window_present_from_event (GtkWindow *window); void mn_add_weak_pointer (gpointer object_location); void mn_remove_weak_pointer (gpointer object_location); int mn_strv_find (char **strv, const char *elem); #define MN_ARRAY_FOREACH(var, array) \ for ((var) = 0; (var) < (array)->len; (var)++) GSList *mn_g_ptr_array_to_slist (GPtrArray *array); void mn_g_ptr_array_free_deep_custom (GPtrArray *array, GFunc element_free_func, gpointer user_data); void mn_g_object_ptr_array_free (GPtrArray *array); #define MN_TREE_MODEL_FOREACH(valid, iter, model) \ for ((valid) = gtk_tree_model_get_iter_first((model), (iter)); \ (valid); \ (valid) = gtk_tree_model_iter_next((model), (iter))) const char *mn_enum_get_value_nick (GType type, int value); #endif /* _MN_UTIL_H */ mail-notification-5.4.dfsg.1/src/mn-popups.gob0000644000175000001440000001557311015312440021073 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %{ #include #include "mn-message.h" #include "mn-shell.h" #include "mn-util.h" #include "mn-conf.h" #include "mn-locked-callback.h" #include "mn-popup.h" #include "mn-properties-dialog.h" %} class MN:Popups { /* * Maps message IDs to popups. If a message is known but has no * popup (because popups were disabled when that message was first * encountered), the value is NULL. */ private GHashTable *popups = {g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) mn_g_object_null_unref)} destroywith g_hash_table_destroy; init (self) { if (! notify_is_initted()) return; /* libnotify init failed */ mn_g_object_gconf_notifications_add_gdk_locked(self, MN_CONF_POPUPS_NAMESPACE, self_notify_cb, self, NULL); g_signal_connect(mn_shell->mailboxes, "messages-changed", G_CALLBACK(self_messages_changed_h), self); } private void close_cb (const char *id, MNPopup *popup, gpointer user_data) { if (popup) mn_popup_close(popup); } private void close_popups (self) { g_hash_table_foreach(selfp->popups, (GHFunc) self_close_cb, NULL); } finalize (self) { /* close popups on exit */ self_close_popups(self); } private void messages_changed_h (MNMailboxes *mailboxes, gboolean has_new, gpointer user_data) { Self *self = user_data; self_update(self, FALSE); } private void notify_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { Self *self = user_data; self_update(self, TRUE); } private int popups_show_timestamp_compare_cb (MNPopup *a, MNPopup *b) { int cmp; cmp = a->show_timestamp.tv_sec - b->show_timestamp.tv_sec; if (cmp != 0) return cmp; return a->show_timestamp.tv_usec - b->show_timestamp.tv_usec; } private void get_visible_popups_cb (const char *id, MNPopup *popup, GSList **list) { if (popup && popup->visible) *list = g_slist_insert_sorted(*list, popup, (GCompareFunc) self_popups_show_timestamp_compare_cb); } /* returns the visible popups sorted by show timestamp, oldest first */ private GSList * get_visible_popups (self) { GSList *popups = NULL; g_hash_table_foreach(selfp->popups, (GHFunc) self_get_visible_popups_cb, &popups); return popups; } private gboolean close_and_remove_stale_cb (const char *id, MNPopup *popup, GHashTable *messages) { if (! g_hash_table_lookup(mn_shell->mailboxes->messages_hash_table, id)) { if (popup) mn_popup_close(popup); return TRUE; /* remove */ } else return FALSE; /* keep */ } private gboolean close_and_remove_visible_cb (const char *id, MNPopup *popup, gpointer user_data) { if (popup && popup->visible) { mn_popup_close(popup); return TRUE; /* remove */ } else return FALSE; /* keep */ } private void update (self, gboolean reshow_current_popups) { int i; /* close and remove stale popups */ g_hash_table_foreach_remove(selfp->popups, (GHRFunc) self_close_and_remove_stale_cb, NULL); if (reshow_current_popups) /* * We have to reshow the currently visible popups, so close and * remove them. */ g_hash_table_foreach_remove(selfp->popups, (GHRFunc) self_close_and_remove_visible_cb, NULL); if (mn_conf_get_bool(MN_CONF_POPUPS_ENABLED)) { GPtrArray *messages; /* for O(1) length retrieval and indexing */ GSList *visible_popups; int num_visible_popups; int popup_limit; int new_popup_count; int messages_to_popup; /* the number of messages to popup */ if (mn_conf_get_enum_value(MN_TYPE_POPUP_POSITION, MN_CONF_POPUPS_POSITION) == MN_POPUP_POSITION_ATTACHED) /* the popup is attached to the icon: allow at most one popup */ popup_limit = 1; else popup_limit = mn_conf_get_int(MN_CONF_POPUPS_LIMIT); /* build a list of messages which are not already known */ messages = g_ptr_array_new(); MN_ARRAY_FOREACH(i, mn_shell->mailboxes->messages) { MNMessage *message = g_ptr_array_index(mn_shell->mailboxes->messages, i); gpointer ptr; if (! g_hash_table_lookup_extended(selfp->popups, message->id, NULL, &ptr)) g_ptr_array_add(messages, message); } visible_popups = self_get_visible_popups(self); num_visible_popups = g_slist_length(visible_popups); new_popup_count = num_visible_popups + messages->len; if (new_popup_count > popup_limit) { int to_remove; /* make room for n new popups by closing the n oldest popups */ to_remove = new_popup_count - popup_limit; to_remove = MIN(num_visible_popups, to_remove); while (to_remove > 0) { MNPopup *oldest; g_assert(visible_popups != NULL); oldest = visible_popups->data; mn_popup_close(oldest); visible_popups = g_slist_delete_link(visible_popups, visible_popups); to_remove--; } } g_slist_free(visible_popups); messages_to_popup = MIN(messages->len, popup_limit); /* * Below we iterate over the messages array backwards because * it is sorted by sent time most recent first, while we want * to popup the oldest messages first. */ /* register the messages which we will not popup */ for (i = messages->len - 1; i >= messages_to_popup; i--) { MNMessage *message = g_ptr_array_index(messages, i); g_hash_table_replace(selfp->popups, g_strdup(message->id), NULL); } /* popup the first messages_to_popup messages */ for (i = messages_to_popup - 1; i >= 0; i--) { MNMessage *message = g_ptr_array_index(messages, i); MNPopup *popup; popup = mn_popup_new(message); mn_popup_show(popup); g_hash_table_replace(selfp->popups, g_strdup(message->id), popup); } g_ptr_array_free(messages, TRUE); } else { /* register the new messages */ MN_ARRAY_FOREACH(i, mn_shell->mailboxes->messages) { MNMessage *message = g_ptr_array_index(mn_shell->mailboxes->messages, i); g_hash_table_replace(selfp->popups, g_strdup(message->id), NULL); } } } public MNPopups * new (void) { return GET_NEW; } } mail-notification-5.4.dfsg.1/src/mn-auth-combo-box.gob0000644000175000001440000001051511015312437022366 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %{ #include #if WITH_SASL #include #include "mn-sasl.h" #endif /* WITH_SASL */ #include "mn-util.h" enum { COLUMN_MECHANISM, COLUMN_LABEL, N_COLUMNS }; %} class MN:Auth:Combo:Box from Gtk:Combo:Box { property STRING active_mechanism (export) set { const char *mechanism = g_value_get_string(VAL); GtkTreeModel *model; GtkTreeIter iter; gboolean valid; model = gtk_combo_box_get_model(GTK_COMBO_BOX(self)); MN_TREE_MODEL_FOREACH(valid, &iter, model) { char *this_mech; gboolean found; gtk_tree_model_get(model, &iter, COLUMN_MECHANISM, &this_mech, -1); found = (! this_mech && ! mechanism) || (this_mech && mechanism && ! strcmp(this_mech, mechanism)); g_free(this_mech); if (found) { gtk_combo_box_set_active_iter(GTK_COMBO_BOX(self), &iter); break; } } } get { char *mechanism = NULL; GtkTreeIter iter; if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(self), &iter)) { GtkTreeModel *model = gtk_combo_box_get_model(GTK_COMBO_BOX(self)); gtk_tree_model_get(model, &iter, COLUMN_MECHANISM, &mechanism, -1); } g_value_take_string(VAL, mechanism); }; init (self) { GtkListStore *store; GtkCellRenderer *renderer; store = gtk_list_store_new(N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING); gtk_combo_box_set_model(GTK_COMBO_BOX(self), GTK_TREE_MODEL(store)); g_object_unref(store); renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(self), renderer, TRUE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(self), renderer, "text", COLUMN_LABEL, NULL); self_append(self, NULL, _("Autodetect")); #if WITH_SASL if (mn_sasl_init(NULL)) { const char **mechanisms; mechanisms = sasl_global_listmech(); if (mechanisms) { int i; for (i = 0; mechanisms[i]; i++) self_append(self, mechanisms[i], mechanisms[i]); } } #endif /* WITH_SASL */ gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(store), self_sort_cb, NULL, NULL); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); self_set_active_mechanism(self, NULL); } private int sort_cb (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data) { char *mechanism_a; char *label_a; char *mechanism_b; char *label_b; int coll; gtk_tree_model_get(model, a, COLUMN_MECHANISM, &mechanism_a, COLUMN_LABEL, &label_a, -1); gtk_tree_model_get(model, b, COLUMN_MECHANISM, &mechanism_b, COLUMN_LABEL, &label_b, -1); /* put "autodetect" (NULL mechanism) on top of the list */ if (mechanism_a && mechanism_b) coll = g_utf8_collate(label_a, label_b); else if (mechanism_a || mechanism_b) coll = mechanism_a ? 1 : -1; else coll = 0; g_free(mechanism_a); g_free(mechanism_b); return coll; } public void append (self, const char *mechanism, const char *label (check null)) { GtkTreeModel *model; GtkTreeIter iter; model = gtk_combo_box_get_model(GTK_COMBO_BOX(self)); gtk_list_store_append(GTK_LIST_STORE(model), &iter); gtk_list_store_set(GTK_LIST_STORE(model), &iter, COLUMN_MECHANISM, mechanism, COLUMN_LABEL, label, -1); } public GtkWidget * new (void) { return GTK_WIDGET(GET_NEW); } } mail-notification-5.4.dfsg.1/src/mn-mailboxes.gob0000644000175000001440000004262611015312440021527 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-mailbox.h" %} %{ #include #include #include #include #include #include #include #include #include #include "mn-conf.h" #include "mn-message.h" #include "mn-mailbox-private.h" #include "mn-test-mailbox.h" #include "mn-shell.h" #include "mn-util.h" %} class MN:Mailboxes { public GList *list; /* freed in finalize */ /* sorted by sent time, most recent first */ public GPtrArray *messages = {g_ptr_array_new()} destroywith mn_g_object_ptr_array_free; /* the references to the messages are held by the GPtrArray */ public GHashTable *messages_hash_table = {g_hash_table_new(g_str_hash, g_str_equal)} destroywith g_hash_table_destroy; private GSList *add_queue destroywith mn_g_object_slist_free; private GSList *remove_queue destroywith mn_g_object_slist_free; private unsigned int queue_idle_id; /* * Can be set by mailboxes to indicate that mailboxes.xml must be * saved after having been loaded. Used by MNAuthenticatedMailbox to * remove the plain text passwords saved by older versions of MN. */ public gboolean must_save_after_load; /** * mailbox-added: * @self: the object which received the signal * @mailbox: the mailbox which was added * * This signal gets emitted after a mailbox is added to the list. **/ signal first private NONE (OBJECT) void mailbox_added (self, MN:Mailbox *mailbox (check null type)) { self_connect_mailbox_signals(self, mailbox); /* emit the "added" signal on the mailbox */ mn_mailbox_added(mailbox); } /** * mailbox-removed: * @self: the object which received the signal * @mailbox: the mailbox which was removed * * This signal gets emitted after a mailbox is removed from the * list. **/ signal first private NONE (OBJECT) void mailbox_removed (self, MN:Mailbox *mailbox (check null type)) { self_disconnect_mailbox_signals(self, mailbox); /* emit the "removed" signal on the mailbox */ mn_mailbox_removed(mailbox); /* messages and error have possibly changed */ self_messages_changed(self, FALSE); self_error_changed(self); } [G_GNUC_UNUSED] /* we use g_signal_emit_by_name(), for passing a detail */ signal (DETAILED) private NONE (OBJECT, POINTER) void mailbox_notify (self, MN:Mailbox *mailbox (check null type), GParamSpec *pspec (check null)); /** * list-changed: * @self: the object which received the signal * * This signal gets emitted after the mailbox list changes (but more * than one mailbox may have been added, removed or have changed * between two emissions of this signal). **/ signal first private NONE (NONE) void list_changed (self) { /* manually-checkable has possibly changed */ g_object_notify(G_OBJECT(self), "manually-checkable"); } /** * messages-changed: * @self: the object which received the signal * @has_new: whether a new message has been received or not * * This signal gets emitted whenever the messages member has * potentially changed, either because one of the mailboxes messages * property has changed, or because a mailbox has been removed from * the list. * * Note: messages are only compared by id (in * mn_mailbox_filter_messages()), therefore two messages having the * same id and different data are not considered different. **/ signal first private NONE (BOOLEAN) void messages_changed (self, gboolean has_new) { GList *l; mn_g_object_ptr_array_free(self->messages); self->messages = g_ptr_array_new(); g_hash_table_remove_all(self->messages_hash_table); MN_LIST_FOREACH(l, self->list) { MNMailbox *mailbox = l->data; g_hash_table_foreach(mailbox->messages, (GHFunc) self_messages_changed_cb, self); } g_ptr_array_sort(self->messages, (GCompareFunc) self_messages_sort_cb); } private void messages_changed_cb (const char *id, MNMessage *message, Self *self) { g_ptr_array_add(self->messages, g_object_ref(message)); g_hash_table_insert(self->messages_hash_table, message->id, message); } private int messages_sort_cb (MNMessage **a, MNMessage **b) { /* sort by sent time in descending order */ return (*b)->sent_time - (*a)->sent_time; } /** * error-changed: * @self: the object which received the signal * * This signal gets emitted whenever the global error state has * possibly changed, either because one of the mailboxes error * property has changed, or because a mailbox has been removed from * the list. **/ signal private NONE (NONE) void error_changed (self); property BOOLEAN manually_checkable (export) get { GList *l; gboolean value = FALSE; MN_LIST_FOREACH(l, self->list) { MNMailbox *mailbox = l->data; if (mn_mailbox_get_manually_checkable(mailbox)) { value = TRUE; break; } } g_value_set_boolean(VAL, value); }; init (self) { char *filename; gboolean exists; mn_shell->mailboxes = self; filename = g_build_filename(mn_conf_dot_dir, "mailboxes.xml", NULL); exists = g_file_test(filename, G_FILE_TEST_EXISTS); g_free(filename); if (exists) self_load(self); else if (mn_conf_is_set(MN_CONF_OBSOLETE_MAILBOXES)) { GSList *gconf_mailboxes; GSList *l; GSList *invalid_uri_list = NULL; gboolean list_changed = FALSE; gconf_mailboxes = mn_conf_get_string_list(MN_CONF_OBSOLETE_MAILBOXES); MN_LIST_FOREACH(l, gconf_mailboxes) { const char *uri = l->data; MNMailbox *mailbox; mailbox = mn_mailbox_new_from_obsolete_uri(uri); if (mailbox) { mn_mailbox_seal(mailbox); self_add_real(self, mailbox); g_object_unref(mailbox); list_changed = TRUE; } else invalid_uri_list = g_slist_append(invalid_uri_list, (gpointer) uri); } if (list_changed) { self_list_changed(self); self_save(self); /* save the imported mailboxes */ } if (invalid_uri_list) { mn_show_invalid_uri_list_dialog(NULL, _("An error has occurred while importing old mailboxes"), invalid_uri_list); g_slist_free(invalid_uri_list); } mn_g_slist_free_deep(gconf_mailboxes); } } finalize (self) { GList *l; /* * We need to disconnect the mailbox signals because on exit, a * mailbox can survive the MNMailboxes object (if a check thread * is running). */ MN_LIST_FOREACH(l, self->list) self_disconnect_mailbox_signals(self, l->data); mn_g_object_list_free(self->list); if (selfp->queue_idle_id) g_source_remove(selfp->queue_idle_id); } private void connect_mailbox_signals (self, MN:Mailbox *mailbox (check null type)) { g_object_connect(mailbox, "signal::messages-changed", self_mailbox_messages_changed_h, self, "signal::notify", self_mailbox_notify_h, self, "signal::notify::error", self_mailbox_notify_error_h, self, "signal::notify::manually-checkable", self_mailbox_notify_manually_checkable_h, self, NULL); } private void disconnect_mailbox_signals (self, MN:Mailbox *mailbox (check null type)) { g_object_disconnect(mailbox, "any-signal", self_mailbox_messages_changed_h, self, "any-signal", self_mailbox_notify_h, self, "any-signal", self_mailbox_notify_error_h, self, "any-signal", self_mailbox_notify_manually_checkable_h, self, NULL); } private void load (self) { GError *err = NULL; if (! self_load_real(self, &err)) { mn_show_error_dialog(NULL, _("Unable to load the mailboxes configuration"), "%s", err->message); g_error_free(err); } if (self->must_save_after_load) self_save(self); } [G_GNUC_PRINTF(3, 4)] private void add_error (GString **errors (check null), int *n_errors (check null), const char *format, ...) { char *message; if (*errors) g_string_append_c(*errors, '\n'); else *errors = g_string_new(NULL); MN_STRDUP_VPRINTF(message, format); g_string_append(*errors, message); g_free(message); (*n_errors)++; } private gboolean load_real (self, GError **err) { char *filename; xmlDoc *doc; xmlNode *root; xmlNode *node; gboolean list_changed = FALSE; gboolean status = TRUE; GString *errors = NULL; int n_errors = 0; filename = g_build_filename(mn_conf_dot_dir, "mailboxes.xml", NULL); doc = xmlParseFile(filename); g_free(filename); if (! doc) { g_set_error(err, 0, 0, _("Unable to parse the XML document.")); return FALSE; } root = xmlDocGetRootElement(doc); if (! root) { g_set_error(err, 0, 0, _("The root element is missing.")); goto error; } if (strcmp(root->name, "mailboxes")) { g_set_error(err, 0, 0, _("The root element \"%s\" is invalid."), root->name); goto error; } for (node = root->children; node; node = node->next) if (node->type == XML_ELEMENT_NODE) { if (! strcmp(node->name, "mailbox")) { MNMailbox *mailbox; GError *tmp_err = NULL; mailbox = mn_mailbox_new_from_xml_node(node, &tmp_err); if (mailbox) { mn_mailbox_seal(mailbox); self_add_real(self, mailbox); g_object_unref(mailbox); list_changed = TRUE; } else { self_add_error(&errors, &n_errors, _("On line %i: %s."), node->line, tmp_err->message); g_error_free(tmp_err); } } else self_add_error(&errors, &n_errors, _("On line %i: unknown element \"%s\"."), node->line, node->name); } if (list_changed) self_list_changed(self); if (errors) { mn_show_error_dialog(NULL, ngettext("An error has occurred while loading the mailboxes configuration", "Errors have occurred while loading the mailboxes configuration", n_errors), "%s", errors->str); g_string_free(errors, TRUE); } goto end; error: status = FALSE; end: xmlFreeDoc(doc); return status; } private void save (self) { GError *err = NULL; if (! self_save_real(self, &err)) { mn_show_error_dialog(NULL, _("Unable to save the mailboxes configuration"), "%s", err->message); g_error_free(err); } } private gboolean save_real (self, GError **err) { int indent; xmlDoc *doc; xmlNode *root; GList *l; char *filename; char *tmp_filename; char *old_filename; int fd = -1; FILE *f = NULL; gboolean old_exists; gboolean status = TRUE; indent = xmlIndentTreeOutput; xmlIndentTreeOutput = 1; doc = xmlNewDoc("1.0"); root = xmlNewNode(NULL, "mailboxes"); xmlDocSetRootElement(doc, root); MN_LIST_FOREACH(l, self->list) { MNMailbox *mailbox = l->data; xmlNode *node; if (! MN_IS_TEST_MAILBOX(mailbox)) { node = mn_mailbox_xml_node_new(mailbox); xmlAddChild(root, node); /* owns node */ } } filename = g_build_filename(mn_conf_dot_dir, "mailboxes.xml", NULL); tmp_filename = g_strconcat(filename, ".tmp", NULL); old_filename = g_strconcat(filename, ".old", NULL); if (g_file_test(tmp_filename, G_FILE_TEST_EXISTS) && unlink(tmp_filename) < 0) { g_set_error(err, 0, 0, _("Unable to remove %s: %s."), tmp_filename, g_strerror(errno)); goto error; } /* the file may contain passwords; restrict permissions (600) */ fd = open(tmp_filename, O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); if (fd < 0) { g_set_error(err, 0, 0, _("Unable to create %s: %s."), tmp_filename, g_strerror(errno)); goto error; } f = fdopen(fd, "w"); if (! f) { g_set_error(err, 0, 0, _("Unable to open %s for writing: %s."), tmp_filename, g_strerror(errno)); goto error; } fd = -1; /* now owned by f */ if (xmlDocFormatDump(f, doc, 1) < 0) { g_set_error(err, 0, 0, _("Unable to write the XML document.")); goto error; } if (fclose(f) != 0) { g_set_error(err, 0, 0, _("Unable to close %s: %s."), tmp_filename, g_strerror(errno)); goto error; } f = NULL; old_exists = g_file_test(filename, G_FILE_TEST_EXISTS); if (old_exists) { if (rename(filename, old_filename) < 0) { g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), filename, old_filename, g_strerror(errno)); goto error; } } if (rename(tmp_filename, filename) < 0) { g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), tmp_filename, filename, g_strerror(errno)); goto error; } if (old_exists) if (unlink(old_filename) < 0) /* non fatal */ g_warning(_("unable to delete %s: %s"), old_filename, g_strerror(errno)); goto end; /* success */ error: status = FALSE; end: xmlFreeDoc(doc); xmlIndentTreeOutput = indent; g_free(filename); g_free(tmp_filename); g_free(old_filename); if (fd >= 0) close(fd); if (f) fclose(f); return status; } private void mailbox_messages_changed_h (MNMailbox *mailbox, gboolean has_new, gpointer user_data) { Self *self = user_data; int num_messages; num_messages = g_hash_table_size(mailbox->messages); mn_info(ngettext("%s has %i new message", "%s has %i new messages", num_messages), mailbox->runtime_name, num_messages); self_messages_changed(self, has_new); } private void mailbox_notify_h (GObject *object, GParamSpec *pspec, gpointer user_data) { Self *self = user_data; char *detailed_signal; detailed_signal = g_strconcat("mailbox-notify::", g_param_spec_get_name(pspec), NULL); g_signal_emit_by_name(self, detailed_signal, object, pspec); g_free(detailed_signal); } private void mailbox_notify_error_h (GObject *object, GParamSpec *pspec, gpointer user_data) { Self *self = user_data; MNMailbox *mailbox = MN_MAILBOX(object); if (mailbox->error) mn_info(_("%s reported an error: %s"), mailbox->runtime_name, mailbox->error); self_error_changed(self); } private void mailbox_notify_manually_checkable_h (GObject *object, GParamSpec *pspec, gpointer user_data) { Self *self = user_data; /* manually-checkable has possibly changed */ g_object_notify(G_OBJECT(self), "manually-checkable"); } public void check (self) { GList *l; MN_LIST_FOREACH(l, self->list) { MNMailbox *mailbox = l->data; if (mn_mailbox_get_manually_checkable(mailbox)) mn_mailbox_check(mailbox); } } private void add_real (self, MN:Mailbox *mailbox (check null type)) { g_object_ref(mailbox); self->list = g_list_insert_sorted(self->list, mailbox, self_compare_by_name_func); self_mailbox_added(self, mailbox); } public void add (self, MN:Mailbox *mailbox (check null type)) { self_add_real(self, mailbox); self_list_changed(self); if (! MN_IS_TEST_MAILBOX(mailbox)) self_save(self); } public void queue_add (self, MN:Mailbox *mailbox (check null type)) { g_object_ref(mailbox); selfp->add_queue = g_slist_append(selfp->add_queue, mailbox); if (! selfp->queue_idle_id) selfp->queue_idle_id = gdk_threads_add_idle(self_queue_idle_cb, self); } private void remove_real (self, MN:Mailbox *mailbox (check null type)) { self->list = g_list_remove(self->list, mailbox); self_mailbox_removed(self, mailbox); g_object_unref(mailbox); } public void remove (self, MN:Mailbox *mailbox (check null type)) { self_remove_real(self, mailbox); self_list_changed(self); if (! MN_IS_TEST_MAILBOX(mailbox)) self_save(self); } public void queue_remove (self, MN:Mailbox *mailbox (check null type)) { g_object_ref(mailbox); selfp->remove_queue = g_slist_append(selfp->remove_queue, mailbox); if (! selfp->queue_idle_id) selfp->queue_idle_id = gdk_threads_add_idle(self_queue_idle_cb, self); } private gboolean queue_idle_cb (gpointer data) { Self *self = data; GSList *l; MN_LIST_FOREACH(l, selfp->add_queue) self_add_real(self, l->data); mn_g_object_slist_clear(&selfp->add_queue); MN_LIST_FOREACH(l, selfp->remove_queue) self_remove_real(self, l->data); mn_g_object_slist_clear(&selfp->remove_queue); self_list_changed(self); self_save(self); selfp->queue_idle_id = 0; return FALSE; /* remove */ } public int compare_by_name_func (gconstpointer a, gconstpointer b) { MNMailbox *mailbox_a = (MNMailbox *) a; MNMailbox *mailbox_b = (MNMailbox *) b; return g_utf8_collate(mailbox_a->runtime_name, mailbox_b->runtime_name); } public MNMailboxes * new (void) { return GET_NEW; } } mail-notification-5.4.dfsg.1/src/mn-gmime-stream-vfs.gob0000644000175000001440000001715611015312440022727 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include %} %{ #include #include "mn-vfs.h" #define VFS_CALL(stream, expr, fail_format, fail_retval) \ { \ GnomeVFSResult result; \ \ result = expr; \ if (result != GNOME_VFS_OK) \ { \ (stream)->_priv->eof = TRUE; \ if (result != GNOME_VFS_ERROR_EOF) \ { \ g_warning((fail_format), \ (stream)->_priv->uri, \ gnome_vfs_result_to_string(result)); \ return (fail_retval); \ } \ } \ } #define VFS_READ(stream, buffer, bytes, bytes_read, fail_retval) \ VFS_CALL((stream), gnome_vfs_read((stream)->_priv->handle, (buffer), (bytes), (bytes_read)), _("unable to read %s: %s"), (fail_retval)) #define VFS_WRITE(stream, buffer, bytes, bytes_written, fail_retval) \ VFS_CALL((stream), gnome_vfs_write((stream)->_priv->handle, (buffer), (bytes), (bytes_written)), _("unable to write to %s: %s"), (fail_retval)) #define VFS_SEEK(stream, whence, offset, fail_retval) \ VFS_CALL((stream), gnome_vfs_seek((stream)->_priv->handle, (whence), (offset)), _("unable to seek in %s: %s"), (fail_retval)) #define VFS_TELL(stream, offset_return, fail_retval) \ VFS_CALL((stream), gnome_vfs_tell((stream)->_priv->handle, (offset_return)), _("unable to tell position of %s: %s"), (fail_retval)) #define VFS_CLOSE(stream, fail_retval) \ VFS_CALL((stream), gnome_vfs_close((stream)->_priv->handle), _("unable to close %s: %s"), (fail_retval)) %} class MN:GMime:Stream:VFS from GMime:Stream { private GnomeVFSHandle *handle; private gboolean handle_owned; private char *uri destroywith g_free; /* used in error messages only */ private gboolean eof; finalize (self) { if (selfp->handle_owned) g_mime_stream_close(GMIME_STREAM(self)); } override (GMime:Stream) ssize_t read (GMimeStream *stream, char *buf, size_t len) { Self *self = SELF(stream); GnomeVFSFileSize bytes_read; if (stream->bound_end != -1 && stream->position >= stream->bound_end) return -1; if (stream->bound_end != -1) len = MIN(stream->bound_end - stream->position, (off_t) len); /* make sure we are at the right position */ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1); VFS_READ(self, buf, len, &bytes_read, -1); stream->position += bytes_read; return bytes_read; } override (GMime:Stream) ssize_t write (GMimeStream *stream, const char *buf, size_t len) { Self *self = SELF(stream); GnomeVFSFileSize bytes_written; if (stream->bound_end != -1 && stream->position >= stream->bound_end) return -1; if (stream->bound_end != -1) len = MIN(stream->bound_end - stream->position, (off_t) len); /* make sure we are at the right position */ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1); VFS_WRITE(self, buf, len, &bytes_written, -1); stream->position += bytes_written; return bytes_written; } override (GMime:Stream) int flush (GMimeStream *stream) { /* nop */ return 0; /* success */ } override (GMime:Stream) int close (GMimeStream *stream) { Self *self = SELF(stream); VFS_CLOSE(self, -1); return 0; /* success */ } override (GMime:Stream) gboolean eos (GMimeStream *stream) { Self *self = SELF(stream); if (stream->bound_end == -1) return selfp->eof; else return stream->position >= stream->bound_end; } override (GMime:Stream) int reset (GMimeStream *stream) { Self *self = SELF(stream); if (stream->position == stream->bound_start) return 0; VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->bound_start, -1); stream->position = stream->bound_start; return 0; } override (GMime:Stream) off_t seek (GMimeStream *stream, off_t offset, GMimeSeekWhence whence) { Self *self = SELF(stream); off_t real = stream->position; switch (whence) { case GMIME_STREAM_SEEK_SET: real = offset; break; case GMIME_STREAM_SEEK_CUR: real = stream->position + offset; break; case GMIME_STREAM_SEEK_END: if (stream->bound_end == -1) { GnomeVFSFileSize current_position; VFS_SEEK(self, GNOME_VFS_SEEK_END, offset, -1); VFS_TELL(self, ¤t_position, -1); real = current_position; if (real < stream->bound_start) real = stream->bound_start; stream->position = real; return real; } real = stream->bound_end + offset; break; } if (stream->bound_end != -1) real = MIN(real, stream->bound_end); real = MAX(real, stream->bound_start); VFS_SEEK(self, GNOME_VFS_SEEK_START, real, -1); stream->position = real; return real; } override (GMime:Stream) off_t tell (GMimeStream *stream) { return stream->position; } override (GMime:Stream) ssize_t length (GMimeStream *stream) { Self *self = SELF(stream); GnomeVFSFileSize bound_end; if (stream->bound_start != -1 && stream->bound_end != -1) return stream->bound_end - stream->bound_start; VFS_SEEK(self, GNOME_VFS_SEEK_END, 0, -1); VFS_TELL(self, &bound_end, -1); VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1); if (bound_end < stream->bound_start) return -1; return bound_end - stream->bound_start; } override (GMime:Stream) GMimeStream * substream (GMimeStream *stream, off_t start, off_t end) { Self *self; self = GET_NEW; selfp->handle = SELF(stream)->_priv->handle; /* handle of the substream is not owned */ g_mime_stream_construct(GMIME_STREAM(self), start, end); return GMIME_STREAM(self); } /* * Follows the GMime convention of owning the handle (even on error). */ public GMimeStream * new (GnomeVFSHandle *handle (check null), GnomeVFSURI *uri (check null), GnomeVFSResult *result) { GMimeStream *stream; GnomeVFSResult _result; GnomeVFSFileSize current_position; if (gnome_vfs_seek(handle, GNOME_VFS_SEEK_CURRENT, 0) != GNOME_VFS_OK || gnome_vfs_tell(handle, ¤t_position) != GNOME_VFS_OK) { char *buf; int size; /* unseekable or untellable file, use a GMimeStreamMem */ _result = mn_vfs_read_entire_file_uri(uri, &size, &buf); if (_result == GNOME_VFS_OK) { stream = g_mime_stream_mem_new_with_buffer(buf, size); g_free(buf); } else stream = NULL; gnome_vfs_close(handle); } else { Self *self; _result = GNOME_VFS_OK; self = GET_NEW; selfp->handle = handle; selfp->handle_owned = TRUE; selfp->uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE); stream = GMIME_STREAM(self); g_mime_stream_construct(stream, current_position, -1); /* check for EOF */ if (g_mime_stream_length(stream) <= 0) selfp->eof = TRUE; } if (result) *result = _result; return stream; } } mail-notification-5.4.dfsg.1/src/mn-evolution-folder-tree-server.gob0000644000175000001440000000672311015312440025300 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %privateheader{ #include %} %{ #include #include #include #include "mn-evolution-plugin.h" #include "mn-evolution.h" #include "mn-evolution-folder-tree-server-dbus.h" %} class MN:Evolution:Folder:Tree:Server { /* the GdkNativeWindow, which we also use as our ID */ private guint32 id; property UINT id (flags = CONSTRUCT_ONLY, link); private GtkWidget *plug; private GtkWidget *tree; /* plug's child, destroyed with it */ property STRING uri set { em_folder_tree_set_selected(EM_FOLDER_TREE(selfp->tree), g_value_get_string(VAL), FALSE); }; signal private NONE (STRING) void folder_selected (self, const char *uri); signal private NONE (NONE) void folder_activated (self); class_init (class) { dbus_g_object_type_install_info(TYPE_SELF, &dbus_glib_mn_evolution_folder_tree_server_object_info); } constructor (self) { EMFolderTreeModel *model; model = mail_component_peek_tree_model(mail_component_peek()); selfp->tree = em_folder_tree_new_with_model(model); selfp->plug = gtk_plug_new((GdkNativeWindow) selfp->id); gtk_container_add(GTK_CONTAINER(selfp->plug), selfp->tree); gtk_widget_show_all(selfp->plug); g_signal_connect(selfp->plug, "destroy", G_CALLBACK(self_plug_destroy_h), self); g_object_connect(selfp->tree, "signal::folder-selected", self_selected_h, self, "signal::folder-activated", self_activated_h, self, NULL); } finalize (self) { g_signal_handlers_disconnect_by_func(selfp->plug, self_plug_destroy_h, self); } private void plug_destroy_h (GtkObject *object, gpointer user_data) { Self *self = user_data; char *service; GError *err = NULL; /* the MN side is gone: unregister and unreference the server */ service = g_strdup_printf(MN_EVOLUTION_FOLDER_TREE_SERVER_SERVICE, selfp->id); if (! mn_evolution_plugin_unregister_server(service, &err)) { g_warning("unable to unregister D-Bus service \"%s\": %s", service, err->message); g_error_free(err); } g_free(service); g_object_unref(self); } private void selected_h (EMFolderTree *tree, const char *full_name, const char *uri, guint32 flags, gpointer user_data) { Self *self = user_data; self_folder_selected(self, uri); } private void activated_h (EMFolderTree *tree, const char *full_name, const char *uri, gpointer user_data) { Self *self = user_data; self_folder_activated(self); } public MNEvolutionFolderTreeServer * new (guint32 id) { return GET_NEW_VARG(MN_EVOLUTION_FOLDER_TREE_SERVER_PROP_ID(id), NULL); } } mail-notification-5.4.dfsg.1/src/mn-main.c0000644000175000001440000003544511015312437020152 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include #include #include #include #if WITH_GMIME #include #include "mn-gmime-stream-vfs.h" #endif #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED #include "mn-vfs-mailbox.h" #endif #if WITH_MAILDIR #include "mn-maildir-message.h" #endif #if WITH_SYLPHEED #include "mn-sylpheed-message.h" #endif #if WITH_EVOLUTION #include "mn-evolution-message.h" #endif #include "mn-conf.h" #include "mn-util.h" #include "mn-stock.h" #include "mn-shell.h" #include "mn-message.h" #include "mn-client-dbus.h" #include "mn-server.h" #define CALL_SERVER(call) \ { \ if (! (call)) \ handle_server_call_error(err); \ } typedef struct { const char *name; gboolean enabled; } Component; static gboolean arg_enable_info = FALSE; static unsigned int bus_disconnected_timeout_id = 0; static gboolean bus_disconnected_cb (gpointer data) G_GNUC_NORETURN; static void print_components (const Component *components, int n_components) { int i; for (i = 0; i < n_components; i++) g_print(" %-30s %s\n", components[i].name, components[i].enabled ? _("yes") : _("no")); } static void print_version (void) { /* * Here and everywhere else, backends and features are sorted * alphabetically. */ static const Component mailbox_backends[] = { { "Evolution", WITH_EVOLUTION }, { "Gmail", WITH_GMAIL }, { "IMAP", WITH_IMAP }, { "Maildir", WITH_MAILDIR }, { "mbox", WITH_MBOX }, { "MH", WITH_MH }, { "Mozilla products", WITH_MOZILLA }, { "POP3", WITH_POP3 }, { "Sylpheed", WITH_SYLPHEED }, { "Windows Live Hotmail", WITH_HOTMAIL }, { "Yahoo! Mail", WITH_YAHOO } }; static const Component pi_features[] = { { "IPv6", WITH_IPV6 }, { "SASL", WITH_SASL }, { "SSL/TLS", WITH_SSL } }; g_print(_("%s version %s\n"), _("Mail Notification"), VERSION); g_print("Copyright (C) 2003-2008 Jean-Yves Lefort.\n"); g_print("\n"); g_print(_("Mailbox backends:\n")); print_components(mailbox_backends, G_N_ELEMENTS(mailbox_backends)); g_print("\n"); g_print(_("IMAP and POP3 features:\n")); print_components(pi_features, G_N_ELEMENTS(pi_features)); } static void info_log_cb (const char *log_domain, GLogLevelFlags log_level, const char *message, gpointer user_data) { if (arg_enable_info) g_log_default_handler(log_domain, log_level, message, user_data); } static void init_classes (void) { int i; #if WITH_GMIME g_type_class_ref(MN_TYPE_GMIME_STREAM_VFS); g_type_class_ref(GMIME_TYPE_PARSER); g_type_class_ref(GMIME_TYPE_STREAM_MEM); g_type_class_ref(GMIME_TYPE_MESSAGE); #endif /* WITH_GMIME */ #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED for (i = 0; mn_vfs_mailbox_backend_types[i]; i++) g_type_class_ref(mn_vfs_mailbox_backend_types[i]); #endif #if WITH_MAILDIR g_type_class_ref(MN_TYPE_MAILDIR_MESSAGE); #endif #if WITH_SYLPHEED g_type_class_ref(MN_TYPE_SYLPHEED_MESSAGE); #endif g_type_class_ref(MN_TYPE_MESSAGE); } #if WITH_GMIME static void init_gmime (void) { GPtrArray *array; GSList *fallback_charsets; GSList *l; g_mime_init(0); array = g_ptr_array_new(); fallback_charsets = mn_conf_get_string_list(MN_CONF_FALLBACK_CHARSETS); MN_LIST_FOREACH(l, fallback_charsets) { const char *charset = l->data; if (! strcmp(charset, "user")) { const char *user_charset; g_get_charset(&user_charset); g_ptr_array_add(array, g_strdup(user_charset)); } else g_ptr_array_add(array, g_strdup(charset)); } mn_g_slist_free_deep(fallback_charsets); g_ptr_array_add(array, NULL); /* canary */ g_mime_set_user_charsets((const char **) array->pdata); /* * Note that because of * http://bugzilla.gnome.org/show_bug.cgi?id=509434, we do not free * the strings of the array (since GMime does not copy them). */ g_ptr_array_free(array, TRUE); } #endif /* WITH_GMIME */ static void handle_server_call_error (GError *err) { g_return_if_fail(err != NULL); mn_show_fatal_error_dialog(NULL, _("Unable to contact the running Mail Notification instance: %s."), err->message); } static gboolean has_icon_path (const char *path) { char **paths; int i; gboolean has = FALSE; gtk_icon_theme_get_search_path(gtk_icon_theme_get_default(), &paths, NULL); for (i = 0; paths[i]; i++) if (! strcmp(paths[i], path)) { has = TRUE; break; } g_strfreev(paths); return has; } /* * This is needed when MN is not installed in the standard prefix (as * is the case for my test builds). */ static void ensure_icon_path (void) { static const char *icon_path = DATADIR G_DIR_SEPARATOR_S "icons"; if (! has_icon_path(icon_path)) gtk_icon_theme_prepend_search_path(gtk_icon_theme_get_default(), icon_path); } static void report_option_ignored (const char *option_name) { g_return_if_fail(option_name != NULL); g_message(_("%s option ignored since Mail Notification is not already running"), option_name); } static gboolean bus_disconnected_cb (gpointer data) { mn_show_fatal_error_dialog(NULL, _("The connection to the D-Bus session bus was lost.")); } static DBusHandlerResult session_bus_filter_cb (DBusConnection *conn, DBusMessage *message, void *user_data) { if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL, "Disconnected")) { /* * If the user is logging out there is no reason to display the * error dialog, so wait a bit, hoping that we will be killed * before the timeout triggers. */ if (bus_disconnected_timeout_id == 0) bus_disconnected_timeout_id = gdk_threads_add_timeout(5000, bus_disconnected_cb, NULL); return DBUS_HANDLER_RESULT_HANDLED; } return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } static DBusGConnection * connect_to_session_bus (void) { GError *err = NULL; DBusGConnection *bus; DBusConnection *raw_bus; bus = dbus_g_bus_get(DBUS_BUS_SESSION, &err); if (! bus) { mn_show_fatal_error_dialog(NULL, _("Unable to connect to the D-Bus session bus: %s."), err->message); g_error_free(err); } raw_bus = dbus_g_connection_get_connection(bus); dbus_connection_set_exit_on_disconnect(raw_bus, FALSE); if (! dbus_connection_add_filter(raw_bus, session_bus_filter_cb, NULL, NULL)) /* too unlikely to be worth a translation */ mn_show_fatal_error_dialog(NULL, "Unable to add a D-Bus filter: not enough memory."); return bus; } /* * A memory management bug in DBusGProxy * (https://bugs.freedesktop.org/show_bug.cgi?id=14030) prevents us * from unreferencing the proxy, so provide an eternal singleton * proxy. */ static DBusGProxy * get_bus_proxy (DBusGConnection *bus) { DBusGProxy *proxy; g_return_val_if_fail(bus != NULL, NULL); proxy = dbus_g_proxy_new_for_name(bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); #if WITH_EVOLUTION /* needed by MNEvolutionClient */ dbus_g_proxy_add_signal(proxy, "NameOwnerChanged", G_TYPE_STRING, /* service_name */ G_TYPE_STRING, /* old_owner */ G_TYPE_STRING, /* new_owner */ G_TYPE_INVALID); #endif return proxy; } int main (int argc, char **argv) { gboolean arg_version = FALSE; gboolean arg_display_properties = FALSE; gboolean arg_display_about = FALSE; gboolean arg_consider_new_mail_as_read = FALSE; gboolean arg_update = FALSE; gboolean arg_print_summary = FALSE; gboolean arg_unset_obsolete_configuration = FALSE; gboolean arg_quit = FALSE; const GOptionEntry options[] = { { "version", 'v', 0, G_OPTION_ARG_NONE, &arg_version, N_("Show version information"), NULL }, { "enable-info", 'i', 0, G_OPTION_ARG_NONE, &arg_enable_info, N_("Enable informational output"), NULL }, { "display-properties", 'p', 0, G_OPTION_ARG_NONE, &arg_display_properties, N_("Display the properties dialog"), NULL }, { "display-about", 'a', 0, G_OPTION_ARG_NONE, &arg_display_about, N_("Display the about dialog"), NULL }, { "consider-new-mail-as-read", 'r', 0, G_OPTION_ARG_NONE, &arg_consider_new_mail_as_read, N_("Consider new mail as read"), NULL }, { "update", 'u', 0, G_OPTION_ARG_NONE, &arg_update, N_("Update the mail status"), NULL }, { "print-summary", 's', 0, G_OPTION_ARG_NONE, &arg_print_summary, N_("Print a XML mail summary"), NULL }, { "unset-obsolete-configuration", '\0', 0, G_OPTION_ARG_NONE, &arg_unset_obsolete_configuration, N_("Unset obsolete GConf configuration"), NULL }, { "quit", 'q', 0, G_OPTION_ARG_NONE, &arg_quit, N_("Quit Mail Notification"), NULL }, { NULL } }; GOptionContext *option_context; DBusGConnection *bus; DBusGProxy *bus_proxy; g_log_set_fatal_mask(NULL, G_LOG_LEVEL_CRITICAL); g_log_set_handler(NULL, G_LOG_LEVEL_INFO, info_log_cb, NULL); #ifdef ENABLE_NLS bindtextdomain(GETTEXT_PACKAGE, GNOMELOCALEDIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif g_set_application_name(_("Mail Notification")); g_thread_init(NULL); if (! g_thread_supported()) /* * We cannot use mn_fatal_error_dialog() because gtk_init() has * not been called yet. */ g_critical(_("multi-threading is not available")); gdk_threads_init(); GDK_THREADS_ENTER(); option_context = g_option_context_new(NULL); g_option_context_add_main_entries(option_context, options, GETTEXT_PACKAGE); gnome_program_init(PACKAGE, VERSION, LIBGNOMEUI_MODULE, argc, argv, GNOME_PARAM_HUMAN_READABLE_NAME, _("Mail Notification"), GNOME_PROGRAM_STANDARD_PROPERTIES, GNOME_PARAM_GOPTION_CONTEXT, option_context, NULL); if (arg_version) { print_version(); goto end; } if (arg_unset_obsolete_configuration) { mn_conf_unset_obsolete(); goto end; } ensure_icon_path(); gtk_window_set_default_icon_name("mail-notification"); mn_stock_init(); bus = connect_to_session_bus(); bus_proxy = get_bus_proxy(bus); if (mn_server_start(bus, bus_proxy)) /* not already running */ { if (arg_quit) g_message(_("Mail Notification is not running")); else { mn_mailbox_init_types(); #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED mn_vfs_mailbox_init_types(); #endif /* mn-client-session uses sockets, we don't want to die on SIGPIPE */ signal(SIGPIPE, SIG_IGN); if (! gnome_vfs_init()) mn_show_fatal_error_dialog(NULL, _("Unable to initialize the GnomeVFS library.")); gnome_authentication_manager_init(); /* must be called before init_gmime() */ mn_conf_init(); #if WITH_GMIME init_gmime(); #endif if (! notify_init(_("Mail Notification"))) mn_show_error_dialog(NULL, _("An initialization error has occurred in Mail Notification"), _("Unable to initialize the notification library. Message popups will not be displayed.")); /* * Work around * http://bugzilla.gnome.org/show_bug.cgi?id=64764: * initialize the classes we will be using concurrently * before any thread is created. */ init_classes(); mn_shell_new(bus, bus_proxy); /* also display the properties dialog if there are no mailboxes */ if (! mn_shell->mailboxes->list) arg_display_properties = TRUE; if (arg_display_properties) mn_shell_show_properties_dialog(mn_shell, 0); if (arg_display_about) mn_shell_show_about_dialog(mn_shell, 0); if (arg_consider_new_mail_as_read) report_option_ignored("--consider-new-mail-as-read"); if (arg_update) report_option_ignored("--update"); if (arg_print_summary) report_option_ignored("--print-summary"); /* in case no window has been displayed */ gdk_notify_startup_complete(); gtk_main(); } } else /* already running */ { DBusGProxy *proxy; GError *err = NULL; proxy = dbus_g_proxy_new_for_name(bus, MN_SERVER_SERVICE, MN_SERVER_PATH, MN_SERVER_INTERFACE); if (arg_quit) { g_message(_("quitting Mail Notification")); CALL_SERVER(org_gnome_MailNotification_quit(proxy, &err)); } else { /* also display the properties dialog if there are no mailboxes */ if (! arg_display_properties) { gboolean has; CALL_SERVER(org_gnome_MailNotification_has_mailboxes(proxy, &has, &err)); arg_display_properties = ! has; } if (arg_display_properties) CALL_SERVER(org_gnome_MailNotification_display_properties(proxy, &err)); if (arg_display_about) CALL_SERVER(org_gnome_MailNotification_display_about(proxy, &err)); if (arg_consider_new_mail_as_read) { g_message(_("considering new mail as read")); CALL_SERVER(org_gnome_MailNotification_consider_new_mail_as_read(proxy, &err)); } if (arg_update) { g_message(_("updating the mail status")); CALL_SERVER(org_gnome_MailNotification_update(proxy, &err)); } if (arg_print_summary) { char *summary; CALL_SERVER(org_gnome_MailNotification_get_summary(proxy, &summary, &err)); g_print("%s", summary); g_free(summary); } if (! (arg_display_properties || arg_display_about || arg_consider_new_mail_as_read || arg_update || arg_print_summary)) g_message(_("Mail Notification is already running")); } /* * Do not unref the proxy, since it might break when the * DBusGProxy memory management issue is fixed * (https://bugs.freedesktop.org/show_bug.cgi?id=14030). */ /* no window has been displayed by this process */ gdk_notify_startup_complete(); } end: GDK_THREADS_LEAVE(); return 0; } mail-notification-5.4.dfsg.1/src/org-jylefort-mail-notification.eplug.in0000644000175000001440000000137111005104151026122 0ustar evilynuxusers Provides Evolution mailbox support for Mail Notification. mail-notification-5.4.dfsg.1/src/mn-message-mime.h0000644000175000001440000000530211015312437021571 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_MESSAGE_MIME_H #define _MN_MESSAGE_MIME_H #include #include #include "mn-message.h" /* * The following functions return a NULL message but do not set @err * if one of the following conditions is true: * * - handle_status is TRUE and the message is marked as read * - the message is marked as spam */ MNMessage *mn_message_new_from_mime_message (MNMailbox *mailbox, GMimeMessage *mime_message, const char *uri, MNMessageFlags flags, gboolean handle_status); MNMessage *mn_message_new_from_mime_message_full (GType type, MNMailbox *mailbox, GMimeMessage *mime_message, const char *mid, const char *uri, MNMessageFlags flags, gboolean handle_status); MNMessage *mn_message_new_from_mime_stream (MNMailbox *mailbox, GMimeStream *mime_stream, const char *mid, const char *uri, MNMessageFlags flags, gboolean handle_status, GError **err); MNMessage *mn_message_new_from_mime_stream_full (GType type, MNMailbox *mailbox, GMimeStream *mime_stream, const char *mid, const char *uri, MNMessageFlags flags, gboolean handle_status, GError **err); MNMessage *mn_message_new_from_uri (MNMailbox *mailbox, GnomeVFSURI *uri, MNMessageFlags flags, gboolean handle_status, GError **err); MNMessage *mn_message_new_from_uri_full (GType type, MNMailbox *mailbox, const char *mid, GnomeVFSURI *uri, MNMessageFlags flags, gboolean handle_status, GError **err); MNMessage *mn_message_new_from_buffer (MNMailbox *mailbox, const char *buffer, unsigned int len, const char *mid, MNMessageFlags flags, gboolean handle_status, GError **err); #endif /* _MN_MESSAGE_MIME_H */ mail-notification-5.4.dfsg.1/src/mn-xml.c0000644000175000001440000000642011015312437020015 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include "mn-xml.h" #include "mn-util.h" void mn_xml_import_properties (GObject *object, xmlNode *node) { GParamSpec **properties; unsigned int n_properties; int i; g_return_if_fail(G_IS_OBJECT(object)); g_return_if_fail(node != NULL); properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(object), &n_properties); for (i = 0; i < n_properties; i++) if ((properties[i]->flags & MN_XML_PARAM_IMPORT) != 0) { char *content; content = xmlGetProp(node, g_param_spec_get_name(properties[i])); if (content) { GValue value = { 0, }; g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(properties[i])); if (mn_g_value_from_string(&value, content)) g_object_set_property(object, g_param_spec_get_name(properties[i]), &value); else g_warning(_("property \"%s\": unable to transform string \"%s\" into a value of type \"%s\""), g_param_spec_get_name(properties[i]), content, G_VALUE_TYPE_NAME(&value)); g_value_unset(&value); g_free(content); } } g_free(properties); } void mn_xml_export_properties (GObject *object, xmlNode *node) { GParamSpec **properties; unsigned int n_properties; int i; g_return_if_fail(G_IS_OBJECT(object)); g_return_if_fail(node != NULL); properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(object), &n_properties); for (i = 0; i < n_properties; i++) if ((properties[i]->flags & MN_XML_PARAM_EXPORT) != 0) { GValue value = { 0, }; gboolean is_default; g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(properties[i])); g_object_get_property(object, g_param_spec_get_name(properties[i]), &value); if ((properties[i]->flags & MN_XML_PARAM_IGNORE_CASE) != 0) { GValue default_value = { 0, }; const char *str; const char *default_str; g_assert(G_IS_PARAM_SPEC_STRING(properties[i])); g_value_init(&default_value, G_TYPE_STRING); g_param_value_set_default(properties[i], &default_value); str = g_value_get_string(&value); default_str = g_value_get_string(&default_value); is_default = str && default_str && ! mn_utf8_strcasecmp(str, default_str); g_value_unset(&default_value); } else is_default = g_param_value_defaults(properties[i], &value); if (! is_default) { char *str; str = mn_g_value_to_string(&value); xmlSetProp(node, g_param_spec_get_name(properties[i]), str); g_free(str); } g_value_unset(&value); } g_free(properties); } mail-notification-5.4.dfsg.1/src/mn-tooltips.gob0000644000175000001440000004036711015312440021421 0ustar evilynuxusers/* * MNTooltips - a tooltips implementation allowing to use an arbitrary * widget as tooltip. Update: this functionality is now supported by * GTK+ (as of version 2.12), but unfortunately it is broken * (http://bugzilla.gnome.org/show_bug.cgi?id=504087). * * Heavily based on GtkTooltips, * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %privateheader{ typedef struct { MNTooltips *self; GtkWidget *widget; GtkWidget *tip_widget; } TooltipsData; %} %{ #include "mn-util.h" #define TOOLTIPS_DATA "mn-tooltips-data" #define TOOLTIPS_INFO "mn-tooltips-info" #define TOOLTIPS_KEYBOARD_MODE "gtk-tooltips-keyboard-mode" /* compatible with GtkTooltips */ #define DELAY 500 /* Default delay in ms */ #define STICKY_DELAY 0 /* Delay before popping up next tip * if we're sticky */ #define STICKY_REVERT_DELAY 1000 /* Delay before sticky tooltips revert * to normal */ /* The private flags that are used in the private_flags member of GtkWidget. */ typedef enum { PRIVATE_GTK_LEAVE_PENDING = 1 << 4 } GtkPrivateFlags; /* Macros for extracting a widgets private_flags from GtkWidget. */ #define GTK_PRIVATE_FLAGS(wid) (GTK_WIDGET (wid)->private_flags) /* Macros for setting and clearing private widget flags. * we use a preprocessor string concatenation here for a clear * flags/private_flags distinction at the cost of single flag operations. */ #define GTK_PRIVATE_SET_FLAG(wid,flag) G_STMT_START{ (GTK_PRIVATE_FLAGS (wid) |= (PRIVATE_ ## flag)); }G_STMT_END %} class MN:Tooltips { private GtkWidget *window; private TooltipsData *active_data; private GSList *data_list; private gboolean use_sticky_delay; private GTimeVal last_popdown; private unsigned int timeout_id; private int border_width = 4; finalize (self) { GSList *l; if (selfp->timeout_id) g_source_remove(selfp->timeout_id); MN_LIST_FOREACH(l, selfp->data_list) { TooltipsData *data = l->data; self_widget_remove(data->widget, data); } self_unset_window(self); } private void destroy_data (TooltipsData *data) { g_object_disconnect(data->widget, "any-signal", self_event_after_h, data, "any-signal", self_widget_unmap, data, "any-signal", self_widget_remove, data, NULL); g_object_set_data(G_OBJECT(data->widget), TOOLTIPS_DATA, NULL); g_object_unref(data->widget); g_object_unref(data->tip_widget); g_free(data); } private void display_closed_h (GdkDisplay *display, gboolean is_error, gpointer user_data) { Self *self = SELF(user_data); self_unset_window(self); } private void disconnect_display_closed (self) { g_signal_handlers_disconnect_by_func(gtk_widget_get_display(selfp->window), self_display_closed_h, self); } private void unset_window (self) { if (selfp->window) { self_disconnect_display_closed(self); gtk_widget_destroy(selfp->window); } } private void update_screen (self, gboolean new_window) { gboolean screen_changed = FALSE; if (selfp->active_data && selfp->active_data->widget) { GdkScreen *screen = gtk_widget_get_screen(selfp->active_data->widget); screen_changed = (screen != gtk_widget_get_screen(selfp->window)); if (screen_changed) { if (! new_window) self_disconnect_display_closed(self); gtk_window_set_screen(GTK_WINDOW(selfp->window), screen); } } if (screen_changed || new_window) g_signal_connect(gtk_widget_get_display(selfp->window), "closed", G_CALLBACK(self_display_closed_h), self); } private void force_window (self) { if (! selfp->window) { selfp->window = gtk_window_new(GTK_WINDOW_POPUP); self_update_screen(self, TRUE); gtk_widget_set_app_paintable(selfp->window, TRUE); gtk_window_set_resizable(GTK_WINDOW(selfp->window), FALSE); gtk_widget_set_name(selfp->window, "gtk-tooltips"); gtk_container_set_border_width(GTK_CONTAINER(selfp->window), selfp->border_width); g_signal_connect_swapped(selfp->window, "expose-event", G_CALLBACK(self_paint_window), self); mn_add_weak_pointer(&selfp->window); } } private TooltipsData * get_data (Gtk:Widget *widget (check null type)) { return g_object_get_data(G_OBJECT(widget), TOOLTIPS_DATA); } private void set_tip_widget_real (self, Gtk:Widget *widget (check null type), Gtk:Widget *tip_widget, int border_width) { TooltipsData *data; data = self_get_data(widget); if (! tip_widget) { if (data) self_widget_remove(data->widget, data); return; } if (selfp->active_data && selfp->active_data->widget == widget && GTK_WIDGET_DRAWABLE(selfp->active_data->widget)) { if (data->tip_widget) g_object_unref(data->tip_widget); data->tip_widget = tip_widget; if (data->tip_widget) g_object_ref_sink(data->tip_widget); self_draw_tips(self); } else { g_object_ref(widget); if (data) self_widget_remove(data->widget, data); data = g_new0(TooltipsData, 1); data->self = self; data->widget = widget; data->tip_widget = tip_widget; if (data->tip_widget) g_object_ref_sink(data->tip_widget); selfp->data_list = g_slist_append(selfp->data_list, data); g_signal_connect_after(widget, "event-after", G_CALLBACK(self_event_after_h), data); g_object_set_data(G_OBJECT(widget), TOOLTIPS_DATA, data); g_object_connect(widget, "signal::unmap", self_widget_unmap, data, "signal::unrealize", self_widget_unmap, data, "signal::destroy", self_widget_remove, data, NULL); } selfp->border_width = border_width; if (selfp->window) gtk_container_set_border_width(GTK_CONTAINER(selfp->window), border_width); } public void set_tip (self, Gtk:Widget *widget (check null type), const char *tip_text) { GtkWidget *label = NULL; if (tip_text) { label = gtk_label_new(tip_text); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5); gtk_widget_show(label); } self_set_tip_widget_real(self, widget, label, 4); } public void set_tip_widget (self, Gtk:Widget *widget (check null type), Gtk:Widget *tip_widget) { self_set_tip_widget_real(self, widget, tip_widget, 12); } private gboolean paint_window (self) { GtkRequisition req; gtk_widget_size_request(selfp->window, &req); gtk_paint_flat_box(selfp->window->style, selfp->window->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, NULL, selfp->window, "tooltip", 0, 0, req.width, req.height); return FALSE; } private void draw_tips (self) { GtkRequisition requisition; GtkWidget *widget; gint x, y, w, h; TooltipsData *data; GtkWidget *child; gboolean keyboard_mode; GdkScreen *screen; GdkScreen *pointer_screen; gint monitor_num, px, py; GdkRectangle monitor; int screen_width; if (! selfp->window) self_force_window(self); else if (GTK_WIDGET_VISIBLE(selfp->window)) g_get_current_time(&selfp->last_popdown); gtk_widget_ensure_style(selfp->window); widget = selfp->active_data->widget; g_object_set_data(G_OBJECT(selfp->window), TOOLTIPS_INFO, self); keyboard_mode = self_get_keyboard_mode(widget); self_update_screen(self, FALSE); screen = gtk_widget_get_screen(widget); data = selfp->active_data; child = GTK_BIN(selfp->window)->child; if (child) gtk_container_remove(GTK_CONTAINER(selfp->window), child); if (data->tip_widget) { gtk_container_add(GTK_CONTAINER(selfp->window), data->tip_widget); gtk_widget_show(data->tip_widget); } gtk_widget_size_request(selfp->window, &requisition); w = requisition.width; h = requisition.height; gdk_window_get_origin(widget->window, &x, &y); if (GTK_WIDGET_NO_WINDOW(widget)) { x += widget->allocation.x; y += widget->allocation.y; } x += widget->allocation.width / 2; if (! keyboard_mode) gdk_window_get_pointer(gdk_screen_get_root_window(screen), &x, NULL, NULL); x -= (w / 2 + 4); gdk_display_get_pointer(gdk_screen_get_display(screen), &pointer_screen, &px, &py, NULL); if (pointer_screen != screen) { px = x; py = y; } monitor_num = gdk_screen_get_monitor_at_point(screen, px, py); gdk_screen_get_monitor_geometry(screen, monitor_num, &monitor); if ((x + w) > monitor.x + monitor.width) x -= (x + w) - (monitor.x + monitor.width); else if (x < monitor.x) x = monitor.x; if ((y + h + widget->allocation.height + 4) > monitor.y + monitor.height && (y - 4) > monitor.y) y = y - h - 4; else y = y + widget->allocation.height + 4; /* * The following block is not part of GTK+ and has been added to * make sure that the tooltip will not go beyond the screen edges * (horizontally). */ screen_width = gdk_screen_get_width(screen); if (x < 0 || x + w > screen_width) { x = 0; gtk_widget_set_size_request(selfp->window, MIN(w, screen_width), -1); } /* * The following block ensures that the top of the tooltip is * visible, but it corrupts the tip widget (the mail summary is * not properly positioned). A fix is welcome. */ /* if (y < 0) { gtk_widget_set_size_request(selfp->window, -1, y + h); y = 0; } */ gtk_window_move(GTK_WINDOW(selfp->window), x, y); gtk_widget_show(selfp->window); } private gboolean timeout_cb (gpointer data) { Self *self = SELF(data); if (selfp->active_data && GTK_WIDGET_DRAWABLE(selfp->active_data->widget)) self_draw_tips(self); selfp->timeout_id = 0; return FALSE; /* remove timeout */ } private void set_active_widget (self, Gtk:Widget *widget) { if (selfp->window) { if (GTK_WIDGET_VISIBLE(selfp->window)) g_get_current_time(&selfp->last_popdown); gtk_widget_hide(selfp->window); } mn_source_clear(&selfp->timeout_id); selfp->active_data = NULL; if (widget) { GSList *l; MN_LIST_FOREACH(l, selfp->data_list) { TooltipsData *data = l->data; if (data->widget == widget && GTK_WIDGET_DRAWABLE(widget)) { selfp->active_data = data; break; } } } else selfp->use_sticky_delay = FALSE; } private void show_tip (Gtk:Widget *widget (check null type)) { TooltipsData *data; data = self_get_data(widget); if (data && (! data->self->_priv->active_data || data->self->_priv->active_data->widget != widget)) { self_set_active_widget(data->self, widget); self_draw_tips(data->self); } } private void hide_tip (Gtk:Widget *widget (check null type)) { TooltipsData *data; data = self_get_data(widget); if (data && (data->self->_priv->active_data && data->self->_priv->active_data->widget == widget)) self_set_active_widget(data->self, NULL); } private gboolean recently_shown (self) { GTimeVal now; glong msec; g_get_current_time (&now); msec = (now.tv_sec - selfp->last_popdown.tv_sec) * 1000 + (now.tv_usec - selfp->last_popdown.tv_usec) / 1000; return (msec < STICKY_REVERT_DELAY); } private gboolean get_keyboard_mode (Gtk:Widget *widget (check null type)) { GtkWidget *toplevel = gtk_widget_get_toplevel(widget); if (GTK_IS_WINDOW(toplevel)) return GPOINTER_TO_INT(g_object_get_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE)); else return FALSE; } private void start_keyboard_mode (Gtk:Widget *widget (check null type)) { GtkWidget *toplevel = gtk_widget_get_toplevel(widget); if (GTK_IS_WINDOW(toplevel)) { GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget; g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(TRUE)); if (focus) self_show_tip(focus); } } private void stop_keyboard_mode (Gtk:Widget *widget (check null type)) { GtkWidget *toplevel = gtk_widget_get_toplevel(widget); if (GTK_IS_WINDOW(toplevel)) { GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget; if (focus) self_hide_tip(focus); g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(FALSE)); } } private void start_delay (self, Gtk:Widget *widget) { TooltipsData *old_data; old_data = selfp->active_data; if (! old_data || old_data->widget != widget) { self_set_active_widget(self, widget); selfp->timeout_id = gdk_threads_add_timeout((selfp->use_sticky_delay && self_recently_shown(self)) ? STICKY_DELAY : DELAY, self_timeout_cb, self); } } private void event_after_h (GtkWidget *widget, GdkEvent *event, gpointer user_data) { Self *self; TooltipsData *old_data; GtkWidget *event_widget; gboolean keyboard_mode = self_get_keyboard_mode(widget); if ((event->type == GDK_LEAVE_NOTIFY || event->type == GDK_ENTER_NOTIFY) && event->crossing.detail == GDK_NOTIFY_INFERIOR) return; old_data = self_get_data(widget); self = old_data->self; if (keyboard_mode) { switch (event->type) { case GDK_FOCUS_CHANGE: if (event->focus_change.in) self_show_tip(widget); else self_hide_tip(widget); break; default: break; } } else { if (event->type != GDK_KEY_PRESS && event->type != GDK_KEY_RELEASE) { event_widget = gtk_get_event_widget(event); if (event_widget != widget) return; } switch (event->type) { case GDK_EXPOSE: /* do nothing */ break; case GDK_ENTER_NOTIFY: if (! (GTK_IS_MENU_ITEM(widget) && GTK_MENU_ITEM(widget)->submenu)) self_start_delay(self, widget); break; case GDK_LEAVE_NOTIFY: self_set_active_widget(self, NULL); selfp->use_sticky_delay = selfp->window && GTK_WIDGET_VISIBLE(selfp->window); break; case GDK_MOTION_NOTIFY: /* Handle menu items specially ... pend popup for each motion * on other widgets, we ignore motion. */ if (GTK_IS_MENU_ITEM(widget) && ! GTK_MENU_ITEM(widget)->submenu) { /* Completely evil hack to make sure we get the LEAVE_NOTIFY */ GTK_PRIVATE_SET_FLAG(widget, GTK_LEAVE_PENDING); self_set_active_widget(self, NULL); self_start_delay(self, widget); break; } break; /* ignore */ case GDK_BUTTON_PRESS: case GDK_BUTTON_RELEASE: case GDK_KEY_PRESS: case GDK_KEY_RELEASE: case GDK_PROXIMITY_IN: case GDK_SCROLL: self_set_active_widget(self, NULL); break; default: break; } } } private void widget_unmap (Gtk:Widget *widget (check null type), gpointer user_data) { TooltipsData *data = user_data; Self *self = data->self; if (selfp->active_data && (selfp->active_data->widget == widget)) self_set_active_widget(self, NULL); } private void widget_remove (Gtk:Widget *widget (check null type), gpointer user_data) { TooltipsData *data = user_data; Self *self = data->self; self_widget_unmap(widget, user_data); selfp->data_list = g_slist_remove(selfp->data_list, data); self_destroy_data(data); } public void toggle_keyboard_mode (Gtk:Widget *widget (check null type)) { if (self_get_keyboard_mode(widget)) self_stop_keyboard_mode(widget); else self_start_keyboard_mode(widget); } public MNTooltips * new (void) { return GET_NEW; } } mail-notification-5.4.dfsg.1/src/mn-message-mime.c0000644000175000001440000001545711015312437021600 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include "mn-message-mime.h" #include "mn-gmime-stream-vfs.h" #include "mn-util.h" #include "mn-vfs.h" static gboolean is_spam (GMimeMessage *mime_message) { const char *spam; g_return_val_if_fail(GMIME_IS_MESSAGE(mime_message), FALSE); /* SpamAssassin */ spam = g_mime_message_get_header(mime_message, "X-Spam-Status"); if (spam && mn_ascii_str_case_has_prefix(spam, "yes")) return TRUE; /* bogofilter */ spam = g_mime_message_get_header(mime_message, "X-Bogosity"); if (spam && mn_ascii_str_case_has_prefix(spam, "yes")) return TRUE; return FALSE; } MNMessage * mn_message_new_from_mime_message (MNMailbox *mailbox, GMimeMessage *mime_message, const char *uri, MNMessageFlags flags, gboolean handle_status) { return mn_message_new_from_mime_message_full(MN_TYPE_MESSAGE, mailbox, mime_message, NULL, uri, flags, handle_status); } MNMessage * mn_message_new_from_mime_message_full (GType type, MNMailbox *mailbox, GMimeMessage *mime_message, const char *mid, const char *uri, MNMessageFlags flags, gboolean handle_status) { MNMessage *message; const char *id; time_t sent_time; const char *from; const char *subject; char *decoded_from; char *decoded_subject; g_return_val_if_fail(type != 0, NULL); g_return_val_if_fail(MN_IS_MAILBOX(mailbox), NULL); g_return_val_if_fail(GMIME_IS_MESSAGE(mime_message), NULL); if (is_spam(mime_message)) return NULL; if (handle_status) { const char *status; status = g_mime_message_get_header(mime_message, "Status"); if (status && strchr(status, 'R')) return NULL; /* the message was read */ else if (status && strchr(status, 'O')) flags &= ~MN_MESSAGE_NEW; else flags |= MN_MESSAGE_NEW; } id = g_mime_message_get_message_id(mime_message); g_mime_message_get_date(mime_message, &sent_time, NULL); from = g_mime_message_get_sender(mime_message); subject = g_mime_message_get_subject(mime_message); decoded_from = from ? g_mime_utils_header_decode_text(from) : NULL; decoded_subject = subject ? g_mime_utils_header_decode_text(subject) : NULL; message = g_object_new(type, MN_MESSAGE_PROP_MAILBOX(mailbox), MN_MESSAGE_PROP_SENT_TIME(sent_time), MN_MESSAGE_PROP_ID((char *) id), MN_MESSAGE_PROP_MID((char *) mid), MN_MESSAGE_PROP_FROM(decoded_from), MN_MESSAGE_PROP_SUBJECT(decoded_subject), MN_MESSAGE_PROP_URI((char *) uri), MN_MESSAGE_PROP_FLAGS(flags), NULL); g_free(decoded_from); g_free(decoded_subject); return message; } MNMessage * mn_message_new_from_mime_stream (MNMailbox *mailbox, GMimeStream *mime_stream, const char *mid, const char *uri, MNMessageFlags flags, gboolean handle_status, GError **err) { return mn_message_new_from_mime_stream_full(MN_TYPE_MESSAGE, mailbox, mime_stream, mid, uri, flags, handle_status, err); } MNMessage * mn_message_new_from_mime_stream_full (GType type, MNMailbox *mailbox, GMimeStream *mime_stream, const char *mid, const char *uri, MNMessageFlags flags, gboolean handle_status, GError **err) { GMimeParser *parser; GMimeMessage *mime_message; MNMessage *message = NULL; g_return_val_if_fail(type != 0, NULL); g_return_val_if_fail(MN_IS_MAILBOX(mailbox), NULL); g_return_val_if_fail(GMIME_IS_STREAM(mime_stream), NULL); parser = g_mime_parser_new_with_stream(mime_stream); mime_message = g_mime_parser_construct_message(parser); g_object_unref(parser); if (mime_message) { message = mn_message_new_from_mime_message_full(type, mailbox, mime_message, mid, uri, flags, handle_status); g_object_unref(mime_message); } else g_set_error(err, 0, 0, _("unable to parse MIME message")); return message; } MNMessage * mn_message_new_from_uri (MNMailbox *mailbox, GnomeVFSURI *uri, MNMessageFlags flags, gboolean handle_status, GError **err) { return mn_message_new_from_uri_full(MN_TYPE_MESSAGE, mailbox, NULL, uri, flags, handle_status, err); } MNMessage * mn_message_new_from_uri_full (GType type, MNMailbox *mailbox, const char *mid, GnomeVFSURI *uri, MNMessageFlags flags, gboolean handle_status, GError **err) { GnomeVFSResult result; GnomeVFSHandle *handle; g_return_val_if_fail(type != 0, NULL); g_return_val_if_fail(MN_IS_MAILBOX(mailbox), NULL); g_return_val_if_fail(uri != NULL, NULL); result = gnome_vfs_open_uri(&handle, uri, GNOME_VFS_OPEN_READ | GNOME_VFS_OPEN_RANDOM); if (result == GNOME_VFS_OK) { GMimeStream *stream; stream = mn_gmime_stream_vfs_new(handle, uri, &result); if (stream) { MNMessage *message; char *text_uri; text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE); message = mn_message_new_from_mime_stream_full(type, mailbox, stream, mid, text_uri, flags, handle_status, err); g_free(text_uri); g_object_unref(stream); return message; } } mn_vfs_result_to_g_error(result, err); return NULL; } MNMessage * mn_message_new_from_buffer (MNMailbox *mailbox, const char *buffer, unsigned int len, const char *mid, MNMessageFlags flags, gboolean handle_status, GError **err) { GMimeStream *stream; MNMessage *message; g_return_val_if_fail(MN_IS_MAILBOX(mailbox), NULL); g_return_val_if_fail(buffer != NULL, NULL); stream = g_mime_stream_mem_new_with_buffer(buffer, len); message = mn_message_new_from_mime_stream(mailbox, stream, mid, NULL, flags, handle_status, err); g_object_unref(stream); return message; } mail-notification-5.4.dfsg.1/src/mn-evolution-folder-tree-client.gob0000644000175000001440000002153611015312440025247 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %privateheader{ #include "mn-evolution-client.h" %} %{ #include #include "mn-evolution-client-dbus.h" #include "mn-dbus-properties-client-dbus.h" #include "mn-evolution.h" #include "mn-shell.h" #include "mn-util.h" %} class MN:Evolution:Folder:Tree:Client from Gtk:HBox { private DBusGProxy *proxy; private DBusGProxy *properties_proxy; property BOOLEAN connected (export) get { g_value_set_boolean(VAL, selfp->proxy != NULL); }; public char *selected_uri destroywith g_free; property STRING selected_uri (export) set { g_free(self->selected_uri); self->selected_uri = g_value_dup_string(VAL); if (selfp->proxy) self_sync_selected_uri(self); } get { g_value_set_string(VAL, self->selected_uri); }; private MNEvolutionClient *client; private unsigned int contact_error_idle_id; signal private NONE (NONE) void folder_activated (self); init (self) { selfp->client = mn_evolution_client_get(); g_signal_connect_swapped(selfp->client, "notify::proxy", G_CALLBACK(self_update), self); self_update(self); } dispose (self) { self_clear_proxy(self); mn_source_clear(&selfp->contact_error_idle_id); if (selfp->client) { g_signal_handlers_disconnect_by_func(selfp->client, self_update, self); selfp->client = NULL; } } private void clear_proxy (self) { if (selfp->proxy) { /* * We cannot unreference the proxy because of a memory * management bug in DBusGProxy * (https://bugs.freedesktop.org/show_bug.cgi?id=14030), so * simply disconnect the signals and nullify the proxy. */ dbus_g_proxy_disconnect_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_SELECTED, G_CALLBACK(self_folder_selected_h), self); dbus_g_proxy_disconnect_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_ACTIVATED, G_CALLBACK(self_folder_activated_h), self); mn_remove_weak_pointer(&selfp->proxy); /* also sets it to NULL */ } } private void update (self) { MNEvolutionClient *client; /* * We do not unconditionally create the GtkSocket to avoid the * widget change flicker that would occur if Evolution cannot be * contacted. */ client = mn_evolution_client_get(); if (client->proxy) { GtkWidget *sock; sock = gtk_socket_new(); g_signal_connect(sock, "plug-removed", G_CALLBACK(self_plug_removed_h), NULL); /* * In order to be able to call gtk_socket_get_id(), the socket * must be added to a toplevel window. */ g_signal_connect(sock, "realize", G_CALLBACK(self_realize_h), self); self_set_widget(self, sock); } else self_handle_contact_error(self); } private gboolean plug_removed_h (GtkSocket *sock, gpointer user_data) { /* * Do not destroy the socket, it will be destroyed when removed * from the vbox in set_widget(). */ return TRUE; } private void realize_h (GtkWidget *widget, gpointer user_data) { Self *self = user_data; MNEvolutionClient *client; client = mn_evolution_client_get(); if (client->proxy) { guint32 id; GError *err = NULL; id = (guint32) gtk_socket_get_id(GTK_SOCKET(widget)); if (org_gnome_MailNotification_Evolution_folder_tree_new(client->proxy, id, &err)) { char *service; char *path; self_clear_proxy(self); service = g_strdup_printf(MN_EVOLUTION_FOLDER_TREE_SERVER_SERVICE, id); path = g_strdup_printf(MN_EVOLUTION_FOLDER_TREE_SERVER_PATH, id); selfp->proxy = dbus_g_proxy_new_for_name_owner(mn_shell->session_bus, service, path, MN_EVOLUTION_FOLDER_TREE_SERVER_INTERFACE, NULL); g_free(service); g_free(path); if (selfp->proxy) { /* * We must add a weak pointer, so that if the proxy is * destroyed after Evolution exits we won't try to * clear an invalid proxy in clear_proxy(). */ mn_add_weak_pointer(&selfp->proxy); selfp->properties_proxy = dbus_g_proxy_new_from_proxy(selfp->proxy, DBUS_INTERFACE_PROPERTIES, NULL); dbus_g_proxy_add_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_SELECTED, G_TYPE_STRING, /* uri */ G_TYPE_INVALID); dbus_g_proxy_add_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_ACTIVATED, G_TYPE_INVALID); dbus_g_proxy_connect_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_SELECTED, G_CALLBACK(self_folder_selected_h), self, NULL); dbus_g_proxy_connect_signal(selfp->proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_ACTIVATED, G_CALLBACK(self_folder_activated_h), self, NULL); /* give the folder tree a decent height */ gtk_widget_set_size_request(widget, -1, 150); self_sync_selected_uri(self); g_object_notify(G_OBJECT(self), "connected"); return; /* success */ } } else { /* unlikely to ever happen, not worth a translation */ g_warning("cannot create folder tree: %s", err->message); g_error_free(err); } } /* * Failure. We cannot call handle_contact_error() from here since * it would destroy the GtkSocket that is currently being * realized. Use an idle callback. */ if (! selfp->contact_error_idle_id) selfp->contact_error_idle_id = gdk_threads_add_idle(self_contact_error_cb, self); } private gboolean contact_error_cb (gpointer data) { Self *self = data; self_handle_contact_error(self); selfp->contact_error_idle_id = 0; return FALSE; /* remove source */ } private void handle_contact_error (self) { GtkWidget *label; if (selfp->proxy) { self_clear_proxy(self); g_object_notify(G_OBJECT(self), "connected"); } label = gtk_label_new(_("Mail Notification can not contact Evolution. Make sure that Evolution is running and that the Evolution Jean-Yves Lefort's Mail Notification plugin is loaded.")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_label_set_selectable(GTK_LABEL(label), TRUE); self_set_widget(self, label); } private void sync_selected_uri (self) { GValue value = { 0, }; GError *err = NULL; g_return_if_fail(selfp->proxy != NULL); if (! self->selected_uri) return; g_value_init(&value, G_TYPE_STRING); g_value_set_string(&value, self->selected_uri); if (! org_freedesktop_DBus_Properties_set(selfp->properties_proxy, MN_EVOLUTION_FOLDER_TREE_SERVER_INTERFACE, MN_EVOLUTION_FOLDER_TREE_SERVER_PROPERTY_URI, &value, &err)) { g_warning("cannot set D-Bus property %s of interface %s: %s", MN_EVOLUTION_FOLDER_TREE_SERVER_PROPERTY_URI, MN_EVOLUTION_FOLDER_TREE_SERVER_INTERFACE, err->message); g_error_free(err); } g_value_unset(&value); } private void set_widget (self, Gtk:Widget *widget (check null type)) { GList *children; children = gtk_container_get_children(GTK_CONTAINER(self)); if (children) { g_assert(g_list_length(children) == 1); gtk_container_remove(GTK_CONTAINER(self), children->data); g_list_free(children); } gtk_box_pack_start(GTK_BOX(self), widget, TRUE, TRUE, 0); gtk_widget_show(widget); } private void folder_selected_h (DBusGProxy *proxy, const char *uri, gpointer user_data) { Self *self = user_data; /* this is a main loop callback */ GDK_THREADS_ENTER(); g_free(self->selected_uri); self->selected_uri = g_strdup(uri); g_object_notify(G_OBJECT(self), "selected-uri"); GDK_THREADS_LEAVE(); } private void folder_activated_h (DBusGProxy *proxy, gpointer user_data) { Self *self = user_data; /* this is a main loop callback */ GDK_THREADS_ENTER(); self_folder_activated(self); GDK_THREADS_LEAVE(); } public GtkWidget * new (void) { return GTK_WIDGET(GET_NEW); } } mail-notification-5.4.dfsg.1/src/mn-autodetect-mailbox-properties.gob0000644000175000001440000001607511015312437025535 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-mailbox-properties.h" %} %{ #include #include "mn-mailbox-properties.h" #include "mn-mailbox-properties-private.h" #include "mn-util.h" #include "mn-properties-dialog.h" #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED #include "mn-custom-vfs-mailbox.h" #endif #include "mn-stock.h" static char *current_folder_uri = NULL; %} class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties { private GtkWidget *location_entry; private GtkWidget *chooser; property BOOLEAN complete (override) get { const char *location; gboolean complete = FALSE; location = gtk_entry_get_text(GTK_ENTRY(SELF(self)->_priv->location_entry)); if (*location) { MNMailbox *mailbox; mailbox = mn_mailbox_new_from_uri(location); if (mailbox) { complete = TRUE; g_object_unref(mailbox); } } g_value_set_boolean(VAL, complete); }; property STRING default_name (override) get { char *name = NULL; MNMailbox *mailbox; mailbox = mn_mailbox_new_from_uri(gtk_entry_get_text(GTK_ENTRY(selfp->location_entry))); if (mailbox) { mn_mailbox_seal(mailbox); name = g_strdup(mailbox->runtime_name); g_object_unref(mailbox); } g_value_take_string(VAL, name); }; property INT default_check_delay (override) get { int check_delay = -1; MNMailbox *mailbox; mailbox = mn_mailbox_new_from_uri(gtk_entry_get_text(GTK_ENTRY(selfp->location_entry))); if (mailbox) { mn_mailbox_seal(mailbox); check_delay = mailbox->runtime_check_delay; g_object_unref(mailbox); } g_value_set_int(VAL, check_delay); }; class_init (class) { MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "custom-vfs"; p_class->stock_id = MN_STOCK_UNKNOWN; p_class->combo_label = _("Autodetect"); } init (self) { MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); GtkWidget *location_vbox; GtkWidget *outer_hbox; GtkWidget *hbox; GtkWidget *label; GtkWidget *button; /* translators: header capitalization */ location_vbox = mn_mailbox_properties_add_general_section(properties, _("Location")); label = gtk_label_new_with_mnemonic(_("_Location:")); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); outer_hbox = gtk_hbox_new(FALSE, 12); hbox = gtk_hbox_new(FALSE, 6); selfp->location_entry = gtk_entry_new(); /* translators: header capitalization */ button = gtk_button_new_with_mnemonic(_("_Browse...")); gtk_label_set_mnemonic_widget(GTK_LABEL(label), selfp->location_entry); properties->entries = g_slist_append(properties->entries, selfp->location_entry); gtk_box_pack_start(GTK_BOX(hbox), selfp->location_entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(outer_hbox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(outer_hbox), hbox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(location_vbox), outer_hbox, FALSE, FALSE, 0); gtk_widget_show_all(outer_hbox); gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->label_size_group, label); g_object_connect(selfp->location_entry, "swapped-signal::changed", mn_mailbox_properties_notify_complete, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self, "swapped-signal::changed", mn_mailbox_properties_notify_default_check_delay, self, NULL); g_signal_connect(button, "clicked", G_CALLBACK(self_browse_clicked_h), self); } private void browse_clicked_h (GtkButton *button, gpointer user_data) { Self *self = user_data; GtkWidget *toplevel; const char *location; if (selfp->chooser) { mn_window_present_from_event(GTK_WINDOW(selfp->chooser)); return; } toplevel = gtk_widget_get_toplevel(GTK_WIDGET(button)); /* translators: header capitalization */ selfp->chooser = gtk_file_chooser_dialog_new_with_backend(_("Select a File or Folder"), GTK_WINDOW(toplevel), GTK_FILE_CHOOSER_ACTION_OPEN, "gnome-vfs", GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, 1, NULL); mn_add_weak_pointer(&selfp->chooser); gtk_window_set_destroy_with_parent(GTK_WINDOW(selfp->chooser), TRUE); gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(selfp->chooser), FALSE); mn_file_chooser_dialog_allow_select_folder(GTK_FILE_CHOOSER_DIALOG(selfp->chooser), 1); location = gtk_entry_get_text(GTK_ENTRY(selfp->location_entry)); if (*location) gtk_file_chooser_set_uri(GTK_FILE_CHOOSER(selfp->chooser), location); else if (current_folder_uri) gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(selfp->chooser), current_folder_uri); g_object_connect(selfp->chooser, "signal::current-folder-changed", self_current_folder_changed_h, self, "signal::response", self_chooser_response_h, self, NULL); gtk_widget_show(selfp->chooser); } private void current_folder_changed_h (GtkFileChooser *chooser, gpointer user_data) { g_free(current_folder_uri); current_folder_uri = gtk_file_chooser_get_current_folder_uri(chooser); } private void chooser_response_h (GtkDialog *dialog, int response, gpointer user_data) { if (response == 1) { Self *self = user_data; char *uri; uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); gtk_entry_set_text(GTK_ENTRY(selfp->location_entry), uri); g_free(uri); } gtk_widget_destroy(GTK_WIDGET(dialog)); } override (MN:Mailbox:Properties) void set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox) { #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED g_return_if_fail(MN_IS_CUSTOM_VFS_MAILBOX(mailbox)); gtk_entry_set_text(GTK_ENTRY(SELF(properties)->_priv->location_entry), MN_CUSTOM_VFS_MAILBOX(mailbox)->uri); #else g_assert_not_reached(); #endif } override (MN:Mailbox:Properties) MNMailbox * get_mailbox (MNMailboxProperties *properties) { const char *uri; uri = gtk_entry_get_text(GTK_ENTRY(SELF(properties)->_priv->location_entry)); return mn_mailbox_new_from_uri(uri); } } mail-notification-5.4.dfsg.1/src/mn-vfs-mailbox.gob0000644000175000001440000002736611015312440021777 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-reentrant-mailbox.h" %} %h{ #define MN_VFS_MAILBOX_MAX_BACKEND_TYPES 5 extern GType mn_vfs_mailbox_backend_types[MN_VFS_MAILBOX_MAX_BACKEND_TYPES + 1]; %} %privateheader{ #include "mn-vfs-mailbox-backend.h" %} %{ #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #if WITH_MBOX #include "mn-mbox-mailbox-backend.h" #endif #if WITH_MOZILLA #include "mn-mozilla-mailbox-backend.h" #endif #if WITH_MH #include "mn-mh-mailbox-backend.h" #endif #if WITH_MAILDIR #include "mn-maildir-mailbox-backend.h" #endif #if WITH_SYLPHEED #include "mn-sylpheed-mailbox-backend.h" #endif #include "mn-vfs-mailbox-backend-private.h" #include "mn-vfs.h" #include "mn-stock.h" #include "mn-conf.h" #include "mn-util.h" #include "mn-locked-callback.h" GType mn_vfs_mailbox_backend_types[MN_VFS_MAILBOX_MAX_BACKEND_TYPES + 1]; typedef struct { char *uri; MNVFSMailboxBackend *owner; GnomeVFSMonitorType type; GnomeVFSMonitorCallback callback; gpointer user_data; GnomeVFSResult result; GnomeVFSMonitorHandle *handle; } Monitor; %} class MN:VFS:Mailbox from MN:Reentrant:Mailbox (abstract) { public char *uri destroywith g_free; public GnomeVFSURI *vfs_uri unrefwith gnome_vfs_uri_unref; private GSList *monitors; private MNVFSMailboxBackend *backend unrefwith g_object_unref; private unsigned int update_poll_id; private GMutex *mutex = {g_mutex_new()} destroywith g_mutex_free; public void init_types (void) { int i = 0; #if WITH_MBOX mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MBOX_MAILBOX_BACKEND; #endif #if WITH_MOZILLA mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MOZILLA_MAILBOX_BACKEND; #endif /* * Claws Mail mailboxes contain both a .sylpheed_mark and a * .mh_sequences file. List the Sylpheed backend first, in order * to treat them as Sylpheed mailboxes. This way, the need to use * rcvstore from procmail is removed. */ #if WITH_SYLPHEED mn_vfs_mailbox_backend_types[i++] = MN_TYPE_SYLPHEED_MAILBOX_BACKEND; #endif #if WITH_MH mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MH_MAILBOX_BACKEND; #endif #if WITH_MAILDIR mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MAILDIR_MAILBOX_BACKEND; #endif mn_vfs_mailbox_backend_types[i] = 0; } class_init (class) { /* * Most VFS mailboxes will probably be local files, or remote * files located in the same LAN. We therefore choose a small * default check delay (1 minute). */ MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 1; } constructor (self) { /* set default poll to the most likely value */ mn_mailbox_set_poll(MN_MAILBOX(self), FALSE); } dispose (self) { /* * We are no longer operational after dispose (see unrefwith * above), so we must remove our monitors. */ mn_source_clear(&selfp->update_poll_id); mn_g_slist_clear_deep_custom(&selfp->monitors, (GFunc) self_monitor_free, NULL); } override (MN:Mailbox) void seal (MNMailbox *mailbox) { Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (self->uri) { self->vfs_uri = gnome_vfs_uri_new(self->uri); if (! mailbox->stock_id && self->vfs_uri && ! gnome_vfs_uri_is_local(self->vfs_uri)) mn_mailbox_set_stock_id(mailbox, MN_STOCK_REMOTE); if (! mailbox->runtime_name) { char *path; path = gnome_vfs_get_local_path_from_uri(self->uri); if (path) { mailbox->runtime_name = g_filename_display_name(path); g_free(path); } else mailbox->runtime_name = self->vfs_uri ? gnome_vfs_uri_to_string(self->vfs_uri, GNOME_VFS_URI_HIDE_PASSWORD) : g_strdup(self->uri); } } if (! mailbox->stock_id) mn_mailbox_set_stock_id(mailbox, MN_STOCK_LOCAL); } private Monitor * find_monitor (self, const char *uri (check null), MNVFSMailboxBackend *owner, GnomeVFSMonitorType type, GnomeVFSMonitorCallback callback, gpointer user_data) { GSList *l; MN_LIST_FOREACH(l, selfp->monitors) { Monitor *monitor = l->data; if (monitor->owner == owner && monitor->type == type && monitor->callback == callback && monitor->user_data == user_data && ! strcmp(monitor->uri, uri)) return monitor; } return NULL; } protected void monitor (self, const char *uri (check null), MNVFSMailboxBackend *owner, GnomeVFSMonitorType type, GnomeVFSMonitorCallback callback, gpointer user_data) { Monitor *monitor; g_return_if_fail(owner == NULL || MN_IS_VFS_MAILBOX_BACKEND(owner)); monitor = self_find_monitor(self, uri, owner, type, callback, user_data); if (! monitor) { monitor = g_new0(Monitor, 1); monitor->uri = g_strdup(uri); monitor->owner = owner; monitor->type = type; monitor->callback = callback; monitor->user_data = user_data; monitor->result = -1; selfp->monitors = g_slist_append(selfp->monitors, monitor); } if (monitor->result != GNOME_VFS_OK) { GnomeVFSResult result; result = mn_gnome_vfs_monitor_add_locked(&monitor->handle, uri, type, callback, user_data); if (result != monitor->result) { monitor->result = result; if (result != GNOME_VFS_OK) mn_mailbox_warning(MN_MAILBOX(self), _("unable to monitor %s (%s), poll mode activated"), uri, gnome_vfs_result_to_string(result)); self_queue_update_poll(self); } } } private void monitor_free (Monitor *monitor (check null)) { g_free(monitor->uri); if (monitor->result == GNOME_VFS_OK) mn_gnome_vfs_monitor_cancel_locked(monitor->handle); g_free(monitor); } private void monitor_cb (GnomeVFSMonitorHandle *handle, const char *monitor_uri, const char *info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data) { if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED || event_type == GNOME_VFS_MONITOR_EVENT_DELETED || event_type == GNOME_VFS_MONITOR_EVENT_CREATED) { Self *self = user_data; MNVFSMailboxBackend *backend; /* * Queue a check to detect if the mailbox type has changed. If * the mailbox has a backend, we must use * mn_vfs_mailbox_backend_queue_check() (which respects the * check_latency member of MNVFSMailboxBackend) in order to * avoid race conditions. */ self_lock(self); backend = selfp->backend; if (backend) mn_vfs_mailbox_backend_queue_check(backend); self_unlock(self); /* * Note that at this point, we have released the lock and the * backend might have been finalized by another thread: we can * only test the nullity of the pointer. */ if (! backend) mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self)); } } protected void remove_monitors_by_owner (self, MNVFSMailboxBackend *owner) { GSList *l; g_return_if_fail(owner == NULL || MN_IS_VFS_MAILBOX_BACKEND(owner)); start: MN_LIST_FOREACH(l, selfp->monitors) { Monitor *monitor = l->data; if (monitor->owner == owner) { selfp->monitors = mn_g_slist_delete_link_deep_custom(selfp->monitors, l, (GFunc) self_monitor_free, NULL); self_queue_update_poll(self); goto start; } } } private void queue_update_poll (self) { if (! selfp->update_poll_id) selfp->update_poll_id = gdk_threads_add_idle(self_update_poll_cb, self); } private gboolean update_poll_cb (gpointer data) { Self *self = data; gboolean polled = FALSE; GSList *l; self_lock(self); MN_LIST_FOREACH(l, selfp->monitors) { Monitor *monitor = l->data; if (monitor->result != GNOME_VFS_OK) { polled = TRUE; break; } } selfp->update_poll_id = 0; self_unlock(self); if (mn_mailbox_get_poll(MN_MAILBOX(self)) != polled) mn_mailbox_set_poll(MN_MAILBOX(self), polled); return FALSE; /* remove source */ } override (MN:Reentrant:Mailbox) void reentrant_check (MNReentrantMailbox *mailbox, int check_id) { Self *self = SELF(mailbox); MNVFSMailboxBackend *backend; MNVFSMailboxBackendClass *class; GType backend_type = 0; gboolean exists; self_lock(self); /* * Install the monitors that detect a mailbox type change. These * monitors are not meant to detect if the mail status of a * mailbox changes (it is the responsability of the backend), * although they will do so with some mailbox formats. * * For properly detecting the new mailbox type when the file or * directory changes we need install both a file and a directory * monitor, since depending on the underlying implementation we * might not get file events if the URI is a directory, etc. */ self_monitor(self, self->uri, NULL, GNOME_VFS_MONITOR_FILE, self_monitor_cb, self); self_monitor(self, self->uri, NULL, GNOME_VFS_MONITOR_DIRECTORY, self_monitor_cb, self); backend = selfp->backend; if (backend) g_object_ref(backend); self_unlock(self); class = backend ? MN_VFS_MAILBOX_BACKEND_GET_CLASS(backend) : NULL; if (class && class->is(NULL, class, self)) backend_type = G_OBJECT_TYPE(backend); else { exists = mn_vfs_test(self->vfs_uri, G_FILE_TEST_EXISTS); if (exists) { int i; for (i = 0; mn_vfs_mailbox_backend_types[i]; i++) { class = g_type_class_peek(mn_vfs_mailbox_backend_types[i]); g_assert(class != NULL); if (class->is(NULL, class, self)) { backend_type = mn_vfs_mailbox_backend_types[i]; break; } if (mn_reentrant_mailbox_check_aborted(mailbox, check_id)) goto end; } } } if (! backend || backend_type != G_OBJECT_TYPE(backend)) { MNVFSMailboxBackend *new_backend = NULL; if (! mn_reentrant_mailbox_check_aborted(mailbox, check_id)) { GDK_THREADS_ENTER(); if (backend_type) { new_backend = g_object_new(backend_type, MN_VFS_MAILBOX_BACKEND_PROP_MAILBOX(self), NULL); mn_mailbox_set_format(MN_MAILBOX(self), (char *) MN_VFS_MAILBOX_BACKEND_GET_CLASS(new_backend)->format); } else { mn_mailbox_set_format(MN_MAILBOX(self), NULL); mn_mailbox_set_error(MN_MAILBOX(self), exists ? _("unknown mailbox format") : _("does not exist")); } gdk_flush(); GDK_THREADS_LEAVE(); } self_lock(self); if (backend) { g_object_unref(backend); backend = NULL; } if (! mn_reentrant_mailbox_check_aborted(mailbox, check_id)) { if (selfp->backend) { g_object_unref(selfp->backend); selfp->backend = NULL; } if (new_backend) { selfp->backend = backend = new_backend; new_backend = NULL; g_object_ref(backend); } } self_unlock(self); if (new_backend) g_object_unref(new_backend); } if (backend) mn_vfs_mailbox_backend_check(backend, check_id); end: if (backend) { self_lock(self); g_object_unref(backend); self_unlock(self); } } public void lock (self) { g_mutex_lock(selfp->mutex); } public void unlock (self) { g_mutex_unlock(selfp->mutex); } } mail-notification-5.4.dfsg.1/src/mn-keyring.h0000644000175000001440000000376311015312437020701 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_KEYRING_H #define _MN_KEYRING_H #include /* * These functions augment the gnome-keyring sync API by taking a * callback parameter which is invoked when the request is started and * completed. This allows another thread to call * gnome_keyring_cancel_request() while the calling thread performs * the request. The provided callback is executed in the thread that * runs the GLib main loop, with the GDK lock not held. */ typedef void (*MNKeyringRequestCallback) (gpointer request, gpointer data); /* returns NULL if not found */ char *mn_keyring_get_password_sync (const char *username, const char *domain, const char *server, const char *protocol, const char *authtype, int port, MNKeyringRequestCallback request_callback, gpointer data); GnomeKeyringResult mn_keyring_set_password_sync (const char *keyring, const char *username, const char *domain, const char *server, const char *protocol, const char *authtype, int port, const char *password, guint32 *item_id, MNKeyringRequestCallback request_callback, gpointer data); #endif /* _MN_KEYRING_H */ mail-notification-5.4.dfsg.1/src/mn-file-chooser-button.gob0000644000175000001440000001622111015312440023424 0ustar evilynuxusers/* * MNFileChooserButton - a non-broken partial reimplementation of * GtkFileChooserButton (GtkFileChooserButton is unusable, see * http://bugzilla.gnome.org/show_bug.cgi?id=327243) * * Based on GtkFileChooserButton, * Copyright (c) 2004 James M. Cape * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %h{ typedef GtkFileChooserDialog *(*MNFileChooserButtonCreateDialogFunction) (gpointer data); %} %privateheader{ #include %} %{ #include #include #include "mn-util.h" %} class MN:File:Chooser:Button from Gtk:HBox { private char *filename destroywith g_free; property STRING filename (export) get { g_value_set_string(VAL, selfp->filename); } set { g_free(selfp->filename); selfp->filename = g_value_dup_string(VAL); self_update(self); if (selfp->dialog) gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(selfp->dialog), selfp->filename); }; private MNFileChooserButtonCreateDialogFunction create_dialog; private gpointer create_dialog_data; private GtkWidget *image; private GtkWidget *label; private GtkWidget *dialog unrefwith gtk_widget_destroy; private GnomeVFSAsyncHandle *async_handle unrefwith gnome_vfs_async_cancel; init (self) { GtkWidget *button; GtkWidget *box; GtkWidget *separator; GtkWidget *image; button = gtk_button_new(); gtk_container_add(GTK_CONTAINER(self), button); gtk_widget_show(button); box = gtk_hbox_new(FALSE, 4); gtk_container_add(GTK_CONTAINER(button), box); gtk_widget_show(box); selfp->image = gtk_image_new(); gtk_box_pack_start(GTK_BOX(box), selfp->image, FALSE, FALSE, 0); gtk_widget_show(selfp->image); selfp->label = gtk_label_new(NULL); gtk_label_set_ellipsize(GTK_LABEL(selfp->label), PANGO_ELLIPSIZE_END); gtk_misc_set_alignment(GTK_MISC(selfp->label), 0.0, 0.5); gtk_container_add(GTK_CONTAINER(box), selfp->label); gtk_widget_show(selfp->label); separator = gtk_vseparator_new(); gtk_box_pack_start(GTK_BOX(box), separator, FALSE, FALSE, 0); gtk_widget_show(separator); image = gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU); gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); gtk_widget_show(image); g_signal_connect(button, "clicked", G_CALLBACK(self_clicked_h), self); self_update(self); } private void clicked_h (GtkButton *button, gpointer data) { Self *self = data; if (! selfp->dialog) { /* translators: header capitalization */ selfp->dialog = GTK_WIDGET(selfp->create_dialog(selfp->create_dialog_data)); g_assert(GTK_IS_FILE_CHOOSER_DIALOG(selfp->dialog)); mn_add_weak_pointer(&selfp->dialog); if (selfp->filename) gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(selfp->dialog), selfp->filename); g_signal_connect(selfp->dialog, "response", G_CALLBACK(self_response_h), self); } if (! GTK_WIDGET_VISIBLE(selfp->dialog)) { GtkWindow *parent; parent = mn_widget_get_parent_window(GTK_WIDGET(self)); if (parent) { if (parent != gtk_window_get_transient_for(GTK_WINDOW(selfp->dialog))) gtk_window_set_transient_for(GTK_WINDOW(selfp->dialog), parent); gtk_window_set_modal(GTK_WINDOW(selfp->dialog), gtk_window_get_modal(parent)); } } mn_window_present_from_event(GTK_WINDOW(selfp->dialog)); } private void update (self) { GnomeVFSURI *uri = NULL; if (selfp->async_handle) { gnome_vfs_async_cancel(selfp->async_handle); selfp->async_handle = NULL; } if (selfp->filename && *selfp->filename) { char *text_uri; char *base; base = g_path_get_basename(selfp->filename); gtk_label_set_text(GTK_LABEL(selfp->label), base); g_free(base); text_uri = gnome_vfs_get_uri_from_local_path(selfp->filename); if (text_uri) { uri = gnome_vfs_uri_new(text_uri); g_free(text_uri); } } else /* * translators: GTK+ has the same message used in the same * context; please use the GTK+ translation for consistency */ gtk_label_set_text(GTK_LABEL(selfp->label), _("(None)")); /* * Do not use MN_STOCK_UNKNOWN: we want to appear exactly as a * GtkFileChooserButton. */ gtk_image_set_from_icon_name(GTK_IMAGE(selfp->image), "stock_unknown", GTK_ICON_SIZE_MENU); if (uri) { GList *uri_list = NULL; uri_list = g_list_append(uri_list, uri); g_object_ref(self); gnome_vfs_async_get_file_info(&selfp->async_handle, uri_list, GNOME_VFS_FILE_INFO_GET_MIME_TYPE | GNOME_VFS_FILE_INFO_FOLLOW_LINKS, GNOME_VFS_PRIORITY_DEFAULT, self_get_file_info_cb, self); gnome_vfs_uri_unref(uri); g_list_free(uri_list); } } private void get_file_info_cb (GnomeVFSAsyncHandle *handle, GList *results, gpointer data) { Self *self = data; GDK_THREADS_ENTER(); if (results) { GnomeVFSGetFileInfoResult *result = results->data; if (result->result == GNOME_VFS_OK && (result->file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE) != 0) { char *uri; char *icon_name; uri = gnome_vfs_get_uri_from_local_path(selfp->filename); g_assert(uri != NULL); icon_name = gnome_icon_lookup(gtk_icon_theme_get_default(), NULL, uri, NULL, result->file_info, result->file_info->mime_type, GNOME_ICON_LOOKUP_FLAGS_NONE, NULL); g_free(uri); if (icon_name) { gtk_image_set_from_icon_name(GTK_IMAGE(selfp->image), icon_name, GTK_ICON_SIZE_MENU); g_free(icon_name); } } } selfp->async_handle = NULL; g_object_unref(self); /* do not call gdk_flush(), we're normally in the main thread */ GDK_THREADS_LEAVE(); } private void response_h (GtkDialog *dialog, int response, gpointer user_data) { Self *self = user_data; if (response == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); self_set_filename(self, filename); g_free(filename); } gtk_widget_destroy(GTK_WIDGET(dialog)); } public GtkWidget * new (MNFileChooserButtonCreateDialogFunction create_dialog (check null), gpointer data) { Self *self = GET_NEW; selfp->create_dialog = create_dialog; selfp->create_dialog_data = data; return GTK_WIDGET(self); } } mail-notification-5.4.dfsg.1/src/mn-shell.gob0000644000175000001440000006163211015312440020651 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include #include "mn-mailboxes.h" #include "mn-mailbox-properties-dialog.h" #include "mn-mail-icon.h" #include "mn-popups.h" %} %privateheader{ #include "mn-sound-player.h" %} %{ #include #include #include #include #include #include "mn-properties-dialog.h" #include "mn-util.h" #include "mn-conf.h" #include "mn-mailboxes.h" #include "mn-about-dialog.h" #include "mn-standard-message-view.h" #include "mn-compact-message-view.h" #include "mn-message.h" #include "mn-stock.h" #include "mn-locked-callback.h" MNShell *mn_shell = NULL; typedef struct { int num; const char *name; } UnixSignalInfo; #define SIGNAL_INFO(name) { name, #name } static const UnixSignalInfo unix_quit_signals[] = { SIGNAL_INFO(SIGHUP), SIGNAL_INFO(SIGINT), SIGNAL_INFO(SIGTERM), SIGNAL_INFO(SIGUSR1), SIGNAL_INFO(SIGUSR2) }; %} enum MN_SHELL_TOOLTIP_MAIL_SUMMARY { STANDARD, COMPACT, NONE } MN:Shell:Tooltip:Mail:Summary; class MN:Shell { public MNMailboxes *mailboxes; public MNMailIcon *icon; public MNPopups *popups; public DBusGConnection *session_bus; property POINTER session_bus (flags = CONSTRUCT_ONLY, link, type = DBusGConnection *); public DBusGProxy *session_bus_proxy; property POINTER session_bus_proxy (flags = CONSTRUCT_ONLY, link, type = DBusGProxy *); private int unix_signal_pipe_write_end; private MNSoundPlayer *sound_player; private gboolean has_new; private GtkWidget *properties_dialog; private GSList *mailbox_properties_dialogs; private GtkWidget *about_dialog; constructor (self) { g_assert(mn_shell == NULL); mn_shell = self; g_object_weak_ref(G_OBJECT(self), self_weak_notify_cb, NULL); selfp->sound_player = mn_sound_player_new(); mn_add_weak_pointer(&selfp->sound_player); /* * self->mailboxes is assigned in MNMailboxes itself, so that * mailboxes can access it even during construction of * MNMailboxes. */ mn_mailboxes_new(); mn_add_weak_pointer(&self->mailboxes); self_init_icon(self); mn_g_object_gconf_notifications_add_gdk_locked(self, MN_CONF_BLINK_ON_ERRORS, self_notify_icon_cb, self, MN_CONF_ALWAYS_DISPLAY_ICON, self_notify_icon_cb, self, MN_CONF_DISPLAY_MESSAGE_COUNT, self_notify_icon_cb, self, MN_CONF_GNOME_MAIL_READER_NAMESPACE, self_notify_mail_reader_cb, self, MN_CONF_TOOLTIP_MAIL_SUMMARY, self_notify_tooltip_cb, self, MN_CONF_TOOLTIP_MAIL_SUMMARY_LIMIT, self_notify_tooltip_cb, self, NULL); g_object_connect(self->mailboxes, "signal::messages-changed", self_messages_changed_h, self, "signal::mailbox-removed", self_mailbox_removed_h, self, "swapped-signal::notify::manually-checkable", self_update_sensitivity, self, "swapped-signal::list-changed", self_update_tooltip, self, "swapped-signal::list-changed", self_update_icon, self, "swapped-signal::error-changed", self_update_tooltip, self, "swapped-signal::error-changed", self_update_icon, self, NULL); self->popups = mn_popups_new(); mn_add_weak_pointer(&self->popups); /* * Exit gracefully (unreferencing our components) when receiving a * UNIX signal. */ if (! self_install_unix_quit_signal_handlers(self)) /* unlikely and unimportant, not worth a translation */ g_warning("unable to install UNIX quit signal handlers"); } finalize (self) { /* * We explicitly unreference or destroy each component, even * though MN will exit after the shell is finalized. This is done * for the sake of respecting encapsulation: we should not know * whether a particular component has something to do on exit or * not (for instance, MNSoundPlayer must kill the play process). * * Of course, the order in which we get rid of the components * matters: for instance, when destroyed, MNPropertiesDialog might * remove the test mailbox and thus requires a valid MNMailboxes * object. We destroy the components in the inverse order of their * creation. * * Also note that we do not need to nullify the pointers after * destruction since we use mn_add_weak_pointer() at creation * time. */ g_slist_foreach(selfp->mailbox_properties_dialogs, (GFunc) gtk_widget_destroy, NULL); /* the list is freed in mailbox_properties_dialog_weak_notify_cb() */ if (selfp->properties_dialog) gtk_widget_destroy(selfp->properties_dialog); if (selfp->about_dialog) gtk_widget_destroy(selfp->about_dialog); mn_g_object_null_unref(self->popups); if (self->icon) { /* do not recreate the icon after we destroy it */ g_signal_handlers_disconnect_by_func(self->icon, self_icon_destroy_h, self); gtk_widget_destroy(GTK_WIDGET(self->icon)); } mn_g_object_null_unref(self->mailboxes); mn_g_object_null_unref(selfp->sound_player); } private gboolean install_unix_quit_signal_handlers (self) { int sigpipe[2]; int flags; GIOChannel *read_channel = NULL; int i; if (pipe(sigpipe) < 0) return FALSE; /* * Enable non-blocking mode for the write end, so that if another * signal occurs while the main thread is busy processing the * first signal, the signal handler will not block in write(). */ flags = fcntl(sigpipe[1], F_GETFL); if (flags < 0) goto error; if (fcntl(sigpipe[1], F_SETFL, flags | O_NONBLOCK) < 0) goto error; selfp->unix_signal_pipe_write_end = sigpipe[1]; read_channel = g_io_channel_unix_new(sigpipe[0]); if (g_io_channel_set_encoding(read_channel, NULL, NULL) != G_IO_STATUS_NORMAL) goto error; for (i = 0; i < G_N_ELEMENTS(unix_quit_signals); i++) { struct sigaction sa; sa.sa_handler = self_unix_quit_signal_handler; sa.sa_flags = 0; sigemptyset(&sa.sa_mask); if (sigaction(unix_quit_signals[i].num, &sa, NULL) < 0) goto error; } g_io_add_watch(read_channel, G_IO_IN | G_IO_PRI, self_unix_quit_signal_watch_cb, self); return TRUE; /* ok */ error: if (read_channel) { g_io_channel_shutdown(read_channel, FALSE, NULL); g_io_channel_unref(read_channel); } else close(sigpipe[0]); close(sigpipe[1]); return FALSE; } private void unix_quit_signal_handler (int signum) { write(mn_shell->_priv->unix_signal_pipe_write_end, &signum, sizeof(signum)); } private const UnixSignalInfo * lookup_unix_quit_signal (int signum) { int i; for (i = 0; i < G_N_ELEMENTS(unix_quit_signals); i++) if (unix_quit_signals[i].num == signum) return &unix_quit_signals[i]; g_assert_not_reached(); return NULL; } private gboolean unix_quit_signal_watch_cb (GIOChannel *source, GIOCondition condition, gpointer data) { Self *self = data; GIOStatus status; int signum; gsize bytes_read; const UnixSignalInfo *info; status = g_io_channel_read_chars(source, (char *) &signum, sizeof(signum), &bytes_read, NULL); g_assert(status == G_IO_STATUS_NORMAL); g_assert(bytes_read == sizeof(signum)); info = self_lookup_unix_quit_signal(signum); g_message(_("received %s signal, exiting"), info->name); GDK_THREADS_ENTER(); self_quit(self); GDK_THREADS_LEAVE(); return FALSE; /* remove source */ } private void weak_notify_cb (gpointer data, GObject *former_object) { gtk_main_quit(); } private void messages_changed_h (MNMailboxes *mailboxes, gboolean has_new, gpointer user_data) { Self *self = user_data; if (mn_conf_has_command(MN_CONF_COMMANDS_MAIL_CHANGED_NAMESPACE)) mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_CHANGED_COMMAND); if (has_new) { self_play_new_mail_sound(self); if (mn_conf_has_command(MN_CONF_COMMANDS_NEW_MAIL_NAMESPACE)) mn_conf_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND); } self_update_sensitivity(self); self_update_tooltip(self); self_update_icon(self); } private void play_new_mail_sound (self) { char *file; if (! mn_conf_get_bool(MN_CONF_SOUNDS_NEW_MAIL_ENABLED)) return; file = mn_conf_get_string(MN_CONF_SOUNDS_NEW_MAIL_FILE); if (file && *file) mn_sound_player_play(selfp->sound_player, file, NULL); g_free(file); } private void mailbox_removed_h (MNMailboxes *mailboxes, MNMailbox *mailbox, gpointer user_data) { Self *self = user_data; MNMailboxPropertiesDialog *dialog; /* destroy the associated properties dialog, if any */ dialog = self_get_mailbox_properties_dialog(self, mailbox); if (dialog) gtk_widget_destroy(GTK_WIDGET(dialog)); } private void init_icon (self) { self->icon = MN_MAIL_ICON(mn_mail_icon_new()); mn_add_weak_pointer(&self->icon); g_object_connect(self->icon, "signal::activate", self_icon_activate_h, self, "signal::activate-mail-reader", self_icon_activate_mail_reader_h, self, "signal::activate-open-latest-message", self_icon_activate_open_latest_message_h, self, "swapped-signal::activate-consider-new-mail-as-read", self_consider_new_mail_as_read, self, "swapped-signal::activate-update", self_update, self, "signal::activate-properties", self_icon_activate_properties_h, self, "signal::activate-help", self_icon_activate_help_h, self, "signal::activate-about", self_icon_activate_about_h, self, "swapped-signal::activate-remove", self_quit, self, "signal::destroy", self_icon_destroy_h, self, NULL); self_update_sensitivity(self); self_update_tooltip(self); self_update_icon(self); } private void notify_icon_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { Self *self = user_data; self_update_icon(self); } private void notify_tooltip_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { Self *self = user_data; self_update_tooltip(self); } private void notify_mail_reader_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { Self *self = user_data; self_update_sensitivity(self); } private void icon_activate_h (MNMailIcon *icon, gpointer user_data) { MNShell *self = user_data; MNAction action; action = mn_conf_get_enum_value(MN_TYPE_ACTION, MN_CONF_CLICK_ACTION); switch (action) { case MN_ACTION_LAUNCH_MAIL_READER: if (mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE)) mn_conf_execute_mail_reader(); else mn_show_error_dialog_with_markup(NULL, _("No mail reader is configured"), _("You can configure a mail reader by choosing System → Preferences → Preferred Applications.")); break; case MN_ACTION_OPEN_LATEST_MESSAGE: if (self->mailboxes->messages->len != 0) { MNMessage *message = g_ptr_array_index(self->mailboxes->messages, 0); if (mn_message_can_perform_action(message, mn_message_get_action("open"))) self_open_latest_message(self); else mn_show_error_dialog(NULL, _("Unable to open the latest message"), _("Messages of mailbox \"%s\" cannot be opened."), message->mailbox->runtime_name); } else mn_show_error_dialog(NULL, _("Unable to open the latest message"), _("You have no new mail.")); break; case MN_ACTION_CONSIDER_NEW_MAIL_AS_READ: self_consider_new_mail_as_read(self); break; case MN_ACTION_UPDATE_MAIL_STATUS: mn_mailboxes_check(self->mailboxes); break; default: g_assert_not_reached(); } } private void icon_activate_mail_reader_h (MNMailIcon *icon, gpointer user_data) { mn_conf_execute_mail_reader(); } private void icon_activate_open_latest_message_h (MNMailIcon *icon, gpointer user_data) { Self *self = user_data; self_open_latest_message(self); } private void icon_activate_properties_h (MNMailIcon *icon, gpointer user_data) { Self *self = user_data; self_show_properties_dialog(self, gtk_get_current_event_time()); } private void icon_activate_help_h (MNMailIcon *icon, gpointer user_data) { mn_show_help(NULL, NULL); } private void icon_activate_about_h (MNMailIcon *icon, gpointer user_data) { Self *self = user_data; self_show_about_dialog(self, gtk_get_current_event_time()); } private void icon_destroy_h (GtkObject *object, gpointer user_data) { Self *self = user_data; /* The Notification Area applet has been terminated. Recreate the icon. */ self_init_icon(self); } private void update_sensitivity (self) { gtk_widget_set_sensitive(self->icon->mail_reader_item, mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE)); gtk_widget_set_sensitive(self->icon->open_latest_message_item, self->mailboxes->messages->len != 0 && mn_message_can_perform_action(g_ptr_array_index(self->mailboxes->messages, 0), mn_message_get_action("open"))); gtk_widget_set_sensitive(self->icon->consider_new_mail_as_read_item, self->mailboxes->messages->len != 0); gtk_widget_set_sensitive(self->icon->update_item, mn_mailboxes_get_manually_checkable(self->mailboxes)); } private void update_icon (self) { GList *l; gboolean has_new = FALSE; gboolean blink = FALSE; gboolean always = mn_conf_get_bool(MN_CONF_ALWAYS_DISPLAY_ICON); MN_LIST_FOREACH(l, self->mailboxes->list) { MNMailbox *mailbox = l->data; if (g_hash_table_size(mailbox->messages) != 0) has_new = TRUE; if (mailbox->error) blink = TRUE; } if (selfp->has_new && ! has_new && mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READ_NAMESPACE)) mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND); selfp->has_new = has_new; if (blink && ! mn_conf_get_bool(MN_CONF_BLINK_ON_ERRORS)) blink = FALSE; if (has_new || blink || always) { int count; if (mn_conf_get_bool(MN_CONF_DISPLAY_MESSAGE_COUNT)) count = self->mailboxes->messages->len; else count = 0; mn_mail_icon_set_from_stock(self->icon, has_new ? MN_STOCK_MAIL : MN_STOCK_NO_MAIL); mn_mail_icon_set_blinking(self->icon, blink); mn_mail_icon_set_count(self->icon, count); gtk_widget_show(GTK_WIDGET(self->icon)); } else { gtk_widget_hide(GTK_WIDGET(self->icon)); mn_mail_icon_set_blinking(self->icon, FALSE); } } private void update_tooltip (self) { GtkVBox *vbox = NULL; if (self->mailboxes->list) { GList *la; GSList *lb; GSList *new_mailboxes = NULL; GSList *error_mailboxes = NULL; MN_LIST_FOREACH(la, self->mailboxes->list) { MNMailbox *mailbox = la->data; if (g_hash_table_size(mailbox->messages) != 0) new_mailboxes = g_slist_insert_sorted(new_mailboxes, mailbox, (GCompareFunc) self_new_mailboxes_compare_cb); if (mailbox->error) error_mailboxes = g_slist_insert_sorted(error_mailboxes, mailbox, mn_mailboxes_compare_by_name_func); } if (new_mailboxes) { GString *string = g_string_new(NULL); MN_LIST_FOREACH(lb, new_mailboxes) { MNMailbox *mailbox = lb->data; g_assert(g_hash_table_size(mailbox->messages) != 0); if (*string->str) g_string_append_c(string, '\n'); g_string_append_printf(string, _("%s (%i)"), mailbox->runtime_name, (int) g_hash_table_size(mailbox->messages)); } g_slist_free(new_mailboxes); /* translators: header capitalization */ self_tooltip_text_section_new(&vbox, _("Mailboxes Having New Mail"), string->str); g_string_free(string, TRUE); } if (error_mailboxes) { GString *string = g_string_new(NULL); MN_LIST_FOREACH(lb, error_mailboxes) { MNMailbox *mailbox = lb->data; if (*string->str) g_string_append_c(string, '\n'); g_string_append_printf(string, _("%s: %s"), mailbox->runtime_name, mailbox->error); } g_slist_free(error_mailboxes); /* translators: header capitalization */ self_tooltip_text_section_new(&vbox, _("Errors"), string->str); g_string_free(string, TRUE); } } if (self->mailboxes->messages->len != 0) { MNShellTooltipMailSummary mail_summary; mail_summary = mn_conf_get_enum_value(MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY, MN_CONF_TOOLTIP_MAIL_SUMMARY); if (mail_summary != MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE) { GtkWidget *alignment; GtkWidget *message_view; int limit; GSList *messages = NULL; int num_messages; int i; /* translators: header capitalization */ alignment = self_tooltip_section_new(&vbox, _("Mail Summary")); switch (mail_summary) { case MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD: message_view = mn_standard_message_view_new(); break; case MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT: message_view = mn_compact_message_view_new(); break; default: g_assert_not_reached(); break; } gtk_widget_set_name(message_view, "mn-message-view"); limit = mn_conf_get_int(MN_CONF_TOOLTIP_MAIL_SUMMARY_LIMIT); num_messages = MIN(self->mailboxes->messages->len, limit); for (i = num_messages - 1; i >= 0; i--) messages = g_slist_prepend(messages, g_ptr_array_index(self->mailboxes->messages, i)); mn_message_view_set_messages(MN_MESSAGE_VIEW(message_view), messages); g_slist_free(messages); if (self->mailboxes->messages->len <= limit) gtk_container_add(GTK_CONTAINER(alignment), message_view); else { int remaining; char *markup; GtkWidget *label; GtkWidget *summary_vbox; remaining = self->mailboxes->messages->len - limit; label = gtk_label_new(NULL); markup = g_strdup_printf(ngettext("%i message is not displayed", "%i messages are not displayed", remaining), remaining); gtk_label_set_markup(GTK_LABEL(label), markup); g_free(markup); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); summary_vbox = gtk_vbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(summary_vbox), message_view, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(summary_vbox), label, FALSE, FALSE, 0); gtk_container_add(GTK_CONTAINER(alignment), summary_vbox); } } } if (vbox) { gtk_widget_show_all(GTK_WIDGET(vbox)); mn_mail_icon_set_tip_widget(self->icon, GTK_WIDGET(vbox)); } else mn_mail_icon_set_tip(self->icon, _("You have no new mail.")); } private int new_mailboxes_compare_cb (MNMailbox *a, MNMailbox *b) { int cmp; /* sort by timestamp (descending order) */ cmp = b->timestamp - a->timestamp; if (cmp != 0) return cmp; /* sort by number of messages (descending order) */ cmp = (int) g_hash_table_size(b->messages) - g_hash_table_size(a->messages); if (cmp != 0) return cmp; /* sort by name (ascending order) */ return mn_mailboxes_compare_by_name_func(a, b); } private GtkWidget * tooltip_section_new (GtkVBox **vbox (check null), const char *title (check null)) { GtkWidget *section; GtkWidget *label; GtkWidget *alignment; if (! *vbox) *vbox = GTK_VBOX(gtk_vbox_new(FALSE, 18)); section = mn_hig_section_new(title, &label, &alignment); gtk_widget_set_name(label, "mn-tooltip-section-title"); gtk_box_pack_start(GTK_BOX(*vbox), section, TRUE, TRUE, 0); return alignment; } private void tooltip_text_section_new (GtkVBox **vbox (check null), const char *title (check null), const char *text (check null)) { GtkWidget *alignment; GtkWidget *label; alignment = self_tooltip_section_new(vbox, title); label = gtk_label_new(text); gtk_widget_set_name(label, "mn-tooltip-section-body"); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_container_add(GTK_CONTAINER(alignment), label); } private void open_latest_message (self) { MNMessage *message; MNMessageAction *action; g_return_if_fail(self->mailboxes->messages->len != 0); message = g_ptr_array_index(self->mailboxes->messages, 0); action = mn_message_get_action("open"); g_return_if_fail(action != NULL); g_return_if_fail(mn_message_can_perform_action(message, action)); mn_message_perform_action(message, action, self_open_latest_message_done_cb, NULL); } private void open_latest_message_done_cb (MNMessageAction *action, GError *err, gpointer data) { if (err && ! g_error_matches(err, MN_MESSAGE_ACTION_ERROR, MN_MESSAGE_ACTION_ERROR_CANCELLED)) mn_show_error_dialog(NULL, _("Unable to open the latest message"), "%s", err->message); } public MNShell * new (DBusGConnection *session_bus (check null), DBus:G:Proxy *session_bus_proxy (check null)) { return GET_NEW_VARG(MN_SHELL_PROP_SESSION_BUS(session_bus), MN_SHELL_PROP_SESSION_BUS_PROXY(session_bus_proxy), NULL); } public void consider_new_mail_as_read (self) { GList *l; MN_LIST_FOREACH(l, self->mailboxes->list) { MNMailbox *mailbox = l->data; GList *list; list = g_hash_table_get_values(mailbox->messages); mn_message_consider_as_read_list(list); g_list_free(list); } } public void update (self) { mn_mailboxes_check(self->mailboxes); } public void quit (self) { g_object_unref(self); } public void show_properties_dialog (self, guint32 timestamp) { self_show_window(self, MN_TYPE_PROPERTIES_DIALOG, &selfp->properties_dialog, timestamp); } public void show_about_dialog (self, guint32 timestamp) { self_show_window(self, MN_TYPE_ABOUT_DIALOG, &selfp->about_dialog, timestamp); } private void show_window (self, GType type (check != 0), GtkWidget **ptr (check null), guint32 timestamp) { if (*ptr) { if (timestamp) gtk_window_present_with_time(GTK_WINDOW(*ptr), timestamp); else gtk_window_present(GTK_WINDOW(*ptr)); return; } *ptr = g_object_new(type, NULL); mn_add_weak_pointer(ptr); gtk_widget_show(*ptr); } public void add_mailbox_properties_dialog (self, MN:Mailbox:Properties:Dialog *dialog (check null type)) { selfp->mailbox_properties_dialogs = g_slist_append(selfp->mailbox_properties_dialogs, dialog); g_object_weak_ref(G_OBJECT(dialog), self_mailbox_properties_dialog_weak_notify_cb, self); } private void mailbox_properties_dialog_weak_notify_cb (gpointer data, GObject *former_object) { Self *self = data; selfp->mailbox_properties_dialogs = g_slist_remove(selfp->mailbox_properties_dialogs, former_object); } public MNMailboxPropertiesDialog * get_mailbox_properties_dialog (self, MN:Mailbox *mailbox (check null type)) { GSList *l; MN_LIST_FOREACH(l, selfp->mailbox_properties_dialogs) { MNMailboxPropertiesDialog *dialog = l->data; MNMailbox *this_mailbox; gboolean found; this_mailbox = mn_mailbox_properties_dialog_get_mailbox(dialog); found = this_mailbox == mailbox; g_object_unref(this_mailbox); if (found) return dialog; } return NULL; } public char * get_summary (self) { int indent; xmlDoc *doc; xmlNode *root; int i; xmlChar *summary; indent = xmlIndentTreeOutput; xmlIndentTreeOutput = 1; doc = xmlNewDoc("1.0"); root = xmlNewNode(NULL, "messages"); xmlDocSetRootElement(doc, root); MN_ARRAY_FOREACH(i, self->mailboxes->messages) { MNMessage *message = g_ptr_array_index(self->mailboxes->messages, i); xmlNode *node; node = mn_message_xml_node_new(message); xmlAddChild(root, node); /* owns node */ } xmlDocDumpFormatMemory(doc, &summary, NULL, 1); xmlFreeDoc(doc); xmlIndentTreeOutput = indent; return summary; } } %h{ extern MNShell *mn_shell; %} /* * These enumerations really belong to mn-enums.gob, but gob does not * allow a class-less input file. */ enum MN_ACTION { LAUNCH_MAIL_READER, OPEN_LATEST_MESSAGE, CONSIDER_NEW_MAIL_AS_READ, UPDATE_MAIL_STATUS } MN:Action; enum MN_EXPIRATION_ENABLED { DEFAULT, FALSE, TRUE } MN:Expiration:Enabled; enum MN_POPUP_POSITION { ATTACHED, FREE } MN:Popup:Position; mail-notification-5.4.dfsg.1/src/mn-sound-player.gob0000644000175000001440000001342411015312440022160 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %h{ #include %} %{ #include #include #include #include #include "mn-conf.h" #include "mn-locked-callback.h" #include "mn-util.h" %} class MN:Sound:Player { private gboolean can_play; property BOOLEAN can_play (export) get { g_value_set_boolean(VAL, selfp->can_play); }; property BOOLEAN can_stop (export) get { g_value_set_boolean(VAL, selfp->pid != 0); }; private GPid pid; private GSource *watch_source; init (self) { selfp->can_play = self_can_play(self); mn_g_object_gconf_notification_add_gdk_locked(self, MN_CONF_SOUNDS_PLAY_COMMAND, self_notify_play_command_cb, self); } dispose (self) { /* do not emit notify::can-stop at finalization time (pass FALSE) */ self_stop_real(self, FALSE); } private void notify_play_command_cb (GConfClient *client, unsigned int cnxn_id, GConfEntry *entry, gpointer user_data) { Self *self = user_data; gboolean can_play; can_play = self_can_play(self); if (can_play != selfp->can_play) { selfp->can_play = can_play; g_object_notify(G_OBJECT(self), "can-play"); } } private gboolean can_play (self) { char *command; gboolean can; command = mn_conf_get_string(MN_CONF_SOUNDS_PLAY_COMMAND); can = command && *command; g_free(command); return can; } public void play (self, const char *filename (check null), GtkWindow *parent) { const char *error_message; char *command = NULL; char *subst_command; char *shell; char *argv[4]; GError *err = NULL; g_return_if_fail(parent == NULL || GTK_IS_WINDOW(parent)); g_return_if_fail(selfp->can_play); self_stop(self); /* * If a parent window is provided, we are normally called because * the user interacted with the UI. Otherwise, we are called because * a background event has occurred, and for clarity we should * mention the originating application in the error message. */ if (parent) error_message = N_("Unable to play sound"); else error_message = N_("A command error has occurred in Mail Notification"); command = mn_conf_get_string(MN_CONF_SOUNDS_PLAY_COMMAND); if (! command || ! *command) goto end; subst_command = mn_subst_command(command, self_subst_cb, (gpointer) filename, &err); if (! subst_command) { mn_show_error_dialog(parent, _(error_message), _("Unable to execute \"%s\": %s."), command, err->message); g_error_free(err); goto end; } /* * We cannot use gnome_execute_child() because it does not reap the * child, which is needed for GChildWatch. */ shell = gnome_util_user_shell(); argv[0] = shell; argv[1] = "-c"; argv[2] = subst_command; argv[3] = NULL; if (g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &selfp->pid, &err)) { GSource *source; g_object_notify(G_OBJECT(self), "can-stop"); g_assert(selfp->watch_source == NULL); source = g_child_watch_source_new(selfp->pid); g_source_set_callback(source, (GSourceFunc) self_watch_cb, self, NULL); g_source_attach(source, NULL); selfp->watch_source = source; } else { mn_show_error_dialog(parent, _(error_message), _("Unable to execute \"%s\": %s."), command, err->message); g_error_free(err); } g_free(subst_command); g_free(shell); end: g_free(command); } private gboolean subst_cb (const char *name, char **value, gpointer data) { const char *filename = data; if (! strcmp(name, "file")) { *value = g_strdup(filename); return TRUE; } return FALSE; } public void stop (self) { self_stop_real(self, TRUE); } private void stop_real (self, gboolean notify_can_stop) { /* * If we remove the watch, a zombie will be left since GLib will * not have waited for the process, so we just abandon the watch. */ if (selfp->watch_source) { g_source_set_callback(selfp->watch_source, (GSourceFunc) self_watch_abandoned_cb, NULL, NULL); g_source_unref(selfp->watch_source); selfp->watch_source = NULL; } if (selfp->pid) { kill(selfp->pid, SIGTERM); selfp->pid = 0; if (notify_can_stop) g_object_notify(G_OBJECT(self), "can-stop"); } } private void watch_abandoned_cb (GPid pid, int status, gpointer data) { /* no op */ } private void watch_cb (GPid pid, int status, gpointer data) { Self *self = data; GDK_THREADS_ENTER(); g_assert(selfp->watch_source != NULL); g_source_unref(selfp->watch_source); selfp->watch_source = NULL; selfp->pid = 0; g_object_notify(G_OBJECT(self), "can-stop"); /* do not call gdk_flush(), we're normally in the main thread */ GDK_THREADS_LEAVE(); } public MNSoundPlayer * new (void) { return GET_NEW; } } mail-notification-5.4.dfsg.1/src/mn-md5.h0000644000175000001440000000523511015312437017712 0ustar evilynuxusers/* * MD5 message digest implementation, taken from glibc and edited for * style. * * The GNU C Library, * Copyright (C) 1995,1996,1997,1999,2000,2001,2005 * Free Software Foundation, Inc. * * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_MD5_H #define _MN_MD5_H #include typedef struct { uint32_t A; uint32_t B; uint32_t C; uint32_t D; uint32_t total[2]; uint32_t buflen; char buffer[128] #ifdef __GNUC__ __attribute__ ((__aligned__ (__alignof__ (uint32_t)))) #endif ; } MNMD5Context; /* Initialize structure containing state of computation. (RFC 1321, 3.3: Step 3) */ void mn_md5_init_ctx (MNMD5Context *ctx); /* Starting with the result of former calls of this function (or the initialization function update the context for the next LEN bytes starting at BUFFER. It is necessary that LEN is a multiple of 64!!! */ void mn_md5_process_block (MNMD5Context *ctx, const void *buffer, size_t len); /* Starting with the result of former calls of this function (or the initialization function update the context for the next LEN bytes starting at BUFFER. It is NOT required that LEN is a multiple of 64. */ void mn_md5_process_bytes (MNMD5Context *ctx, const void *buffer, size_t len); /* Process the remaining bytes in the buffer and put result from CTX in first 16 bytes following RESBUF. The result is always in little endian byte order, so that a byte-wise output yields to the wanted ASCII representation of the message digest. IMPORTANT: On some systems it is required that RESBUF is correctly aligned for a 32 bits value. */ void *mn_md5_finish_ctx (MNMD5Context *ctx, unsigned char resbuf[16]); /* * Stores the nul-terminated hexadecimal representation of @resbuf * (which must be the result buffer filled in by mn_md5_finish_ctx()) * into @hexbuf. */ void mn_md5_to_hex (const unsigned char resbuf[16], char hexbuf[33]); #endif /* _MN_MD5_H */ mail-notification-5.4.dfsg.1/src/mn-yahoo-mailbox-properties.gob0000644000175000001440000000225111015312440024474 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-webmail-mailbox-properties.h" %} %{ #include "mn-stock.h" %} class MN:Yahoo:Mailbox:Properties from MN:Webmail:Mailbox:Properties { class_init (class) { MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "yahoo"; p_class->stock_id = MN_STOCK_YAHOO; p_class->combo_label = "Yahoo! Mail"; } } mail-notification-5.4.dfsg.1/src/mn-evolution-mailbox-properties.gob0000644000175000001440000001022111015312440025375 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-mailbox-properties.h" %} %privateheader{ #include "mn-evolution-client.h" %} %{ #include #include "mn-evolution-mailbox.h" #include "mn-stock.h" #include "mn-mailbox-properties-private.h" #include "mn-shell.h" #include "mn-evolution-client-dbus.h" #include "mn-util.h" #include "mn-evolution-folder-tree-client.h" %} class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties { private GtkWidget *tree; private char *name destroywith g_free; property BOOLEAN complete (override) get { MNEvolutionFolderTreeClient *tree = MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree); g_value_set_boolean(VAL, mn_evolution_folder_tree_client_get_connected(tree) && tree->selected_uri != NULL); }; property STRING default_name (override) get { g_value_set_string(VAL, selfp->name); }; class_init (class) { MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "evolution"; p_class->stock_id = MN_STOCK_EVOLUTION_MAILBOX; p_class->combo_label = "Evolution"; p_class->enable_check_delay = FALSE; } init (self) { MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); GtkWidget *vbox; /* translators: header capitalization */ vbox = mn_mailbox_properties_add_general_section(properties, _("Folder")); selfp->tree = mn_evolution_folder_tree_client_new(); gtk_box_pack_start(GTK_BOX(vbox), selfp->tree, TRUE, TRUE, 0); gtk_widget_show(selfp->tree); g_object_connect(selfp->tree, "swapped-signal::notify::connected", mn_mailbox_properties_notify_complete, self, "signal::notify::selected-uri", self_notify_selected_uri_h, self, "signal::folder-activated", self_folder_activated_h, self, NULL); } private void notify_selected_uri_h (GObject *object, GParamSpec *pspec, gpointer user_data) { Self *self = user_data; MNEvolutionClient *client; char *name = NULL; client = mn_evolution_client_get(); if (client->proxy) org_gnome_MailNotification_Evolution_get_folder_name(client->proxy, MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree)->selected_uri, &name, NULL); g_free(selfp->name); selfp->name = name; g_object_notify(G_OBJECT(self), "complete"); g_object_notify(G_OBJECT(self), "default-name"); } private void folder_activated_h (MNEvolutionFolderTreeClient *client, gpointer user_data) { Self *self = user_data; gtk_window_activate_default(GTK_WINDOW(MN_MAILBOX_PROPERTIES(self)->dialog)); } override (MN:Mailbox:Properties) void set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox) { Self *self = SELF(properties); MNEvolutionMailbox *evolution_mailbox = MN_EVOLUTION_MAILBOX(mailbox); mn_evolution_folder_tree_client_set_selected_uri(MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree), evolution_mailbox->uri); g_free(selfp->name); selfp->name = g_strdup(evolution_mailbox->folder_name); } override (MN:Mailbox:Properties) MNMailbox * get_mailbox (MNMailboxProperties *properties) { Self *self = SELF(properties); MNMailbox *mailbox; mailbox = PARENT_HANDLER(properties); g_object_set(mailbox, MN_EVOLUTION_MAILBOX_PROP_URI(MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree)->selected_uri), MN_EVOLUTION_MAILBOX_PROP_FOLDER_NAME(selfp->name), NULL); return mailbox; } } mail-notification-5.4.dfsg.1/src/mn-sound-file-chooser-dialog.gob0000644000175000001440000000725211015312440024502 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %privateheader{ #include "mn-sound-player.h" %} %{ #include enum { RESPONSE_PLAY = 1, RESPONSE_STOP }; %} class MN:Sound:File:Chooser:Dialog from Gtk:File:Chooser:Dialog { private MNSoundPlayer *sound_player unrefwith g_object_unref; constructor (self) { GtkFileFilter *filter; selfp->sound_player = mn_sound_player_new(); gtk_window_set_title(GTK_WINDOW(self), _("Select a File")); gtk_dialog_add_buttons(GTK_DIALOG(self), GTK_STOCK_MEDIA_PLAY, RESPONSE_PLAY, GTK_STOCK_MEDIA_STOP, RESPONSE_STOP, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("All files")); gtk_file_filter_add_pattern(filter, "*"); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(self), filter); filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("Audio files")); gtk_file_filter_add_mime_type(filter, "audio/*"); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(self), filter); gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(self), filter); g_object_connect(self, "signal::response", self_response_h, NULL, "signal::selection-changed", self_update_sensitivity, NULL, NULL); g_object_connect(selfp->sound_player, "swapped-signal::notify::can-play", self_update_sensitivity, self, "swapped-signal::notify::can-stop", self_update_sensitivity, self, NULL); self_update_sensitivity(self); } private void response_h (GtkDialog *dialog, int response, gpointer user_data) { Self *self = SELF(dialog); if (response == RESPONSE_PLAY) { char *filename; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); if (filename) { mn_sound_player_play(selfp->sound_player, filename, GTK_WINDOW(dialog)); g_free(filename); } } else if (response == RESPONSE_STOP) mn_sound_player_stop(selfp->sound_player); else return; /* * Do not pass our internal responses to client code and do not * let the dialog be destroyed. */ g_signal_stop_emission_by_name(dialog, "response"); } private void update_sensitivity (self) { gtk_dialog_set_response_sensitive(GTK_DIALOG(self), RESPONSE_PLAY, self_has_selected_file(self) && mn_sound_player_get_can_play(selfp->sound_player)); gtk_dialog_set_response_sensitive(GTK_DIALOG(self), RESPONSE_STOP, mn_sound_player_get_can_stop(selfp->sound_player)); } private gboolean has_selected_file (self) { char *filename; gboolean has; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(self)); has = filename && ! g_file_test(filename, G_FILE_TEST_IS_DIR); g_free(filename); return has; } public GtkWidget * new (void) { return GTK_WIDGET(GET_NEW); } } mail-notification-5.4.dfsg.1/src/mn-yahoo-mailbox.gob0000644000175000001440000001673611015312440022317 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-webmail-mailbox.h" %} %{ #include #include #include #include #include #include #include #include "mn-webmail-mailbox-private.h" #include "mn-stock.h" #include "mn-conf.h" #include "mn-util.h" %} class MN:Yahoo:Mailbox from MN:Webmail:Mailbox { class_init (class) { MN_MAILBOX_CLASS(class)->type = "yahoo"; /* 5 minutes is a good default */ MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5; MN_WEBMAIL_MAILBOX_CLASS(class)->default_domain = "yahoo.com"; } init (self) { mn_mailbox_set_format(MN_MAILBOX(self), "Yahoo! Mail"); mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_YAHOO); } private char * create_cookies_file (GError **err) { char *filename; /* * If the file already exists, ensure it has the proper * permissions. Otherwise, create it with the proper permissions. */ filename = g_build_filename(mn_conf_dot_dir, "yahoo-cookies", NULL); if (g_file_test(filename, G_FILE_TEST_EXISTS)) { if (chmod(filename, S_IRUSR | S_IWUSR) < 0) { g_set_error(err, 0, 0, _("unable to change the permissions of %s: %s"), filename, g_strerror(errno)); goto error; } } else { int fd; fd = open(filename, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); if (fd < 0) { g_set_error(err, 0, 0, _("unable to create %s: %s"), filename, g_strerror(errno)); goto error; } close(fd); } return filename; error: g_free(filename); return NULL; } private gboolean can_convert (const char *str (check null), const char *encoding (check null)) { char *converted; gboolean can; converted = g_convert(str, -1, encoding, "UTF-8", NULL, NULL, NULL); can = converted != NULL; g_free(converted); return can; } private const char * get_config_file_encoding (const char *folder (check null)) { /* * fetchyahoo does not seem to deal with the folder name encoding * at all, and Yahoo apparently uses ISO8859-1 when possible, and * UTF-8 otherwise. */ if (self_can_convert(folder, "ISO8859-1")) return "ISO8859-1"; else return "UTF-8"; } private char * create_config_file (self, const char *spool_file (check null), const char *cookies_file (check null), GError **err) { GString *contents; char *filename; contents = g_string_new(NULL); g_string_append_printf(contents, "username = %s\n" "password = %s\n" "folder = %s\n" "spool = %s\n" "cookie-file = %s\n" "new-messages-only = 1\n" "no-delete = 1\n" "leave-unread = 1\n", MN_AUTHENTICATED_MAILBOX(self)->username, MN_AUTHENTICATED_MAILBOX(self)->runtime_password, MN_WEBMAIL_MAILBOX(self)->folder, spool_file, cookies_file); if (mn_conf_get_bool(MN_CONF_SYSTEM_HTTP_PROXY_USE_HTTP_PROXY)) { char *host; host = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_HOST); if (host && *host) { g_string_append_printf(contents, "use-proxy = 1\n" "proxy-host = %s\n" "proxy-port = %i\n", host, mn_conf_get_int(MN_CONF_SYSTEM_HTTP_PROXY_PORT)); if (mn_conf_get_bool(MN_CONF_SYSTEM_HTTP_PROXY_USE_AUTHENTICATION)) { char *user; char *password; user = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_AUTHENTICATION_USER); password = mn_conf_get_string(MN_CONF_SYSTEM_HTTP_PROXY_AUTHENTICATION_PASSWORD); if (user && *user && password && *password) g_string_append_printf(contents, "proxy-username = %s\n" "proxy-password = %s\n", user, password); g_free(user); g_free(password); } } g_free(host); } mn_webmail_mailbox_print_config(MN_WEBMAIL_MAILBOX(self), contents->str); filename = mn_webmail_mailbox_write_temporary_file(contents->str, self_get_config_file_encoding(MN_WEBMAIL_MAILBOX(self)->folder), err); g_string_free(contents, TRUE); return filename; } override (MN:Webmail:Mailbox) char * get_error_message (MNWebmailMailbox *mailbox, const char *helper_stdout, const char *helper_stderr, gboolean *is_auth_failure) { if (helper_stderr) { char **lines; int i; char *message = NULL; lines = g_strsplit(helper_stderr, "\n", 0); for (i = 0; lines[i]; i++) if (g_str_has_prefix(lines[i], "Failed: ")) { char *escaped; if (mn_ascii_strcasestr(lines[i], "wrong password") || mn_ascii_strcasestr(lines[i], "invalid ID") || (mn_ascii_strcasestr(lines[i], "Yahoo user") && mn_ascii_strcasestr(lines[i], "does not exist"))) *is_auth_failure = TRUE; escaped = mn_utf8_escape(lines[i] + 8); message = g_strdup_printf(_("\"%s\""), escaped); g_free(escaped); break; } g_strfreev(lines); if (message) return message; if (mn_ascii_strcasestr(helper_stderr, "an image of text")) return g_strdup(_("delay between mail checks too small")); } return NULL; } private gboolean run_fetchyahoo (self, const char *config_file (check null), GError **err) { char *command; gboolean status; command = g_strdup_printf("fetchyahoo --configfile=%s", config_file); status = mn_webmail_mailbox_run_helper(MN_WEBMAIL_MAILBOX(self), "fetchyahoo", command, err); g_free(command); return status; } override (MN:Webmail:Mailbox) gboolean webmail_check (MNWebmailMailbox *mailbox, GError **err) { Self *self = SELF(mailbox); char *spool_file; char *cookies_file; char *config_file = NULL; gboolean status = FALSE; /* * We create an empty spool file beforehand to make sure it is not * world-readable. */ spool_file = mn_webmail_mailbox_create_spool_file(err); if (! spool_file) return FALSE; /* * Likewise, we create an empty cookies file beforehand to make * sure it is not world-readable. */ cookies_file = self_create_cookies_file(err); if (! cookies_file) goto end; /* * We create a config file rather than use command line arguments * because for obvious reasons, we must not pass the password on * the command line. */ config_file = self_create_config_file(self, spool_file, cookies_file, err); if (! config_file) goto end; if (! self_run_fetchyahoo(self, config_file, err)) goto end; if (! mn_webmail_mailbox_read_spool_file(mailbox, spool_file, err)) goto end; status = TRUE; end: unlink(spool_file); g_free(spool_file); g_free(cookies_file); if (config_file) { unlink(config_file); g_free(config_file); } return status; } } mail-notification-5.4.dfsg.1/src/mn-authenticated-mailbox-properties.gob0000644000175000001440000002130711015312437026210 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-mailbox-properties.h" %} %privateheader{ #include "mn-authenticated-mailbox.h" %} %{ #include #include "mn-mailbox-properties-private.h" #include "mn-util.h" %} class MN:Authenticated:Mailbox:Properties from MN:Mailbox:Properties (abstract) { protected GtkWidget *account_vbox; protected GtkWidget *username_vbox; protected GtkWidget *username_label; protected GtkWidget *username_entry; protected GtkWidget *password_vbox; protected GtkWidget *password_label; protected GtkWidget *password_entry unrefwith g_object_unref; private GtkWidget *password_operation_label unrefwith g_object_unref; private GtkWidget *password_widget; private MNAuthenticatedMailbox *mailbox_setting_password; private gpointer get_password_request; init (self) { MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); const char *username; /* translators: header capitalization */ self->account_vbox = mn_mailbox_properties_add_general_section(properties, _("Account")); self->username_vbox = self_field_new(self, _("_Username:"), &self->username_label, &self->username_entry); self->password_vbox = self_field_new(self, _("_Password:"), &self->password_label, &self->password_entry); selfp->password_operation_label = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(selfp->password_operation_label), 0.0, 0.5); /* * These two widgets will alternate in their parent container so * we need to reference them. */ g_object_ref_sink(self->password_entry); g_object_ref_sink(selfp->password_operation_label); selfp->password_widget = self->password_entry; /* defaults to the login name */ username = g_get_user_name(); if (username) gtk_entry_set_text(GTK_ENTRY(self->username_entry), username); gtk_entry_set_visibility(GTK_ENTRY(self->password_entry), FALSE); } /* dispose and not finalize because we use unrefwith above */ dispose (self) { self_clear_mailbox_callbacks(self); } protected GtkWidget * field_new (self, const char *mnemonic (check null), GtkWidget **label, GtkWidget **entry (check null)) { GtkWidget *hbox; GtkWidget *_label; _label = gtk_label_new_with_mnemonic(mnemonic); gtk_misc_set_alignment(GTK_MISC(_label), 0.0, 0.5); *entry = gtk_entry_new(); gtk_label_set_mnemonic_widget(GTK_LABEL(_label), *entry); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), _label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), *entry, TRUE, TRUE, 0); gtk_widget_show_all(hbox); gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->label_size_group, _label); if (label) *label = _label; return hbox; } override (MN:Mailbox:Properties) void set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox) { Self *self = SELF(properties); MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); self_clear_mailbox_callbacks(self); gtk_entry_set_text(GTK_ENTRY(self->username_entry), auth_mailbox->username); /* * If the password is currently being saved, wait for that * operation to finish before querying the keyring for the * password. */ if (mn_authenticated_mailbox_get_setting_password(auth_mailbox)) { selfp->mailbox_setting_password = g_object_ref(auth_mailbox); g_signal_connect(auth_mailbox, "notify::setting-password", G_CALLBACK(self_setting_password_notify_h), self); self_set_password_operation(self, _("Saving password to keyring...")); } else self_get_password(self, auth_mailbox); } private void clear_mailbox_callbacks (self) { if (selfp->mailbox_setting_password) { g_signal_handlers_disconnect_by_func(selfp->mailbox_setting_password, self_setting_password_notify_h, self); g_object_unref(selfp->mailbox_setting_password); selfp->mailbox_setting_password = NULL; } if (selfp->get_password_request) { gnome_keyring_cancel_request(selfp->get_password_request); selfp->get_password_request = NULL; } } private void setting_password_notify_h (GObject *object, GParamSpec *pspec, gpointer user_data) { Self *self = user_data; MNAuthenticatedMailbox *mailbox = MN_AUTHENTICATED_MAILBOX(object); /* * If the password save operation is finished, we can query the * keyring for the password. */ if (! mn_authenticated_mailbox_get_setting_password(mailbox)) { g_signal_handlers_disconnect_by_func(mailbox, self_setting_password_notify_h, self); self_get_password(self, mailbox); } } private void get_password (self, MN:Authenticated:Mailbox *mailbox (check null)) { self_set_password_operation(self, _("Retrieving password from keyring...")); selfp->get_password_request = mn_authenticated_mailbox_get_password(mailbox, self_get_password_cb, self); } private void get_password_cb (GnomeKeyringResult result, GList *list, gpointer data) { Self *self = data; const char *password = NULL; /* * If the request was cancelled, it is either from dispose() and * self might already have been finalized (since this is a main * loop callback), or it is from set_mailbox() and the password * will be retrieved again. In both cases we must do nothing. */ if (result == GNOME_KEYRING_RESULT_CANCELLED) return; selfp->get_password_request = NULL; if (result == GNOME_KEYRING_RESULT_OK && list) { GnomeKeyringNetworkPasswordData *password_data = list->data; password = password_data->password; } GDK_THREADS_ENTER(); gtk_entry_set_text(GTK_ENTRY(self->password_entry), password ? password : ""); self_set_password_operation(self, NULL); /* do not call gdk_flush(), we're normally in the main thread */ GDK_THREADS_LEAVE(); } override (MN:Mailbox:Properties) MNMailbox * get_mailbox (MNMailboxProperties *properties) { Self *self = SELF(properties); MNMailbox *mailbox; MNAuthenticatedMailbox *auth_mailbox; const char *username; const char *password; mailbox = PARENT_HANDLER(properties); auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); username = gtk_entry_get_text(GTK_ENTRY(self->username_entry)); password = gtk_entry_get_text(GTK_ENTRY(self->password_entry)); auth_mailbox->username = g_strdup(username); if (*password) auth_mailbox->password = g_strdup(password); return mailbox; } private void set_password_operation (self, const char *operation) { GtkWidget *password_widget; gtk_label_set_text(GTK_LABEL(selfp->password_operation_label), operation); if (operation) password_widget = selfp->password_operation_label; else password_widget = self->password_entry; if (password_widget != selfp->password_widget) { gtk_container_remove(GTK_CONTAINER(self->password_vbox), selfp->password_widget); gtk_box_pack_start(GTK_BOX(self->password_vbox), password_widget, TRUE, TRUE, 0); gtk_widget_show(password_widget); selfp->password_widget = password_widget; mn_mailbox_properties_notify_complete(MN_MAILBOX_PROPERTIES(self)); } } protected void get_contents (self, const char **username, const char **password) { if (username) { const char *_username; _username = gtk_entry_get_text(GTK_ENTRY(self->username_entry)); *username = *_username ? _username : NULL; } if (password) { const char *_password; _password = gtk_entry_get_text(GTK_ENTRY(self->password_entry)); *password = *_password ? _password : NULL; } } protected gboolean is_complete (self) { const char *username; if (selfp->password_widget == selfp->password_operation_label) return FALSE; username = gtk_entry_get_text(GTK_ENTRY(self->username_entry)); return *username != 0; } } mail-notification-5.4.dfsg.1/src/mn-test-mailbox.gob0000644000175000001440000000360011015312440022141 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-mailbox.h" %} %{ #include #include "mn-mailbox-private.h" #include "mn-message.h" #include "mn-util.h" %} class MN:Test:Mailbox from MN:Mailbox { init (self) { MNMailbox *mailbox = MN_MAILBOX(self); mn_mailbox_set_poll(mailbox, FALSE); mailbox->runtime_name = g_strdup(_("Test mailbox")); } override (MN:Mailbox) void check (MNMailbox *mailbox) { GSList *messages = NULL; time_t now; int i; PARENT_HANDLER(mailbox); now = mn_time(); for (i = 1; i < 4; i++) { MNMessage *message; char *subject; subject = g_strdup_printf(_("Test message #%i"), i); message = mn_message_new(mailbox, now, NULL, NULL, /* translators: header capitalization */ _("Mail Notification Properties Dialog"), subject, NULL, MN_MESSAGE_NEW); g_free(subject); messages = g_slist_append(messages, message); } mn_mailbox_set_messages(mailbox, messages); mn_g_object_slist_free(messages); } public MNMailbox * new (void) { return MN_MAILBOX(GET_NEW); } } mail-notification-5.4.dfsg.1/src/mn-evolution-client.gob0000644000175000001440000000710011015312437023036 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include %} %{ #include "mn-shell.h" #include "mn-evolution.h" #include "mn-util.h" %} /* * A memory management bug in DBusGProxy * (https://bugs.freedesktop.org/show_bug.cgi?id=14030) prevents us * from unreferencing the proxy, so provide an eternal singleton * proxy. */ class MN:Evolution:Client { public DBusGProxy *proxy; property POINTER proxy (link, export, type = DBusGProxy *); private gboolean name_owner_signal_connected; init (self) { self_connect(self); } private void connect_name_owner_signal (self) { if (selfp->name_owner_signal_connected) return; dbus_g_proxy_connect_signal(mn_shell->session_bus_proxy, "NameOwnerChanged", G_CALLBACK(self_name_owner_changed_h), self, NULL); selfp->name_owner_signal_connected = TRUE; } private void disconnect_name_owner_signal (self) { if (! selfp->name_owner_signal_connected) return; dbus_g_proxy_disconnect_signal(mn_shell->session_bus_proxy, "NameOwnerChanged", G_CALLBACK(self_name_owner_changed_h), self); selfp->name_owner_signal_connected = FALSE; } private void connect (self) { DBusGProxy *proxy; g_return_if_fail(self->proxy == NULL); proxy = dbus_g_proxy_new_for_name_owner(mn_shell->session_bus, MN_EVOLUTION_SERVER_SERVICE, MN_EVOLUTION_SERVER_PATH, MN_EVOLUTION_SERVER_INTERFACE, NULL); if (proxy) { self_disconnect_name_owner_signal(self); dbus_g_proxy_add_signal(proxy, MN_EVOLUTION_SERVER_SIGNAL_FOLDER_CHANGED, G_TYPE_STRING, /* uri */ G_TYPE_INVALID); dbus_g_proxy_add_signal(proxy, MN_EVOLUTION_SERVER_SIGNAL_MESSAGE_READING, G_TYPE_STRING, /* uri */ G_TYPE_INVALID); g_signal_connect(proxy, "destroy", G_CALLBACK(self_proxy_destroy_h), self); self_set_proxy(self, proxy); } else self_connect_name_owner_signal(self); } private void name_owner_changed_h (DBusGProxy *proxy, const char *service_name, const char *old_owner, const char *new_owner, gpointer user_data) { Self *self = user_data; /* this is a main loop callback */ GDK_THREADS_ENTER(); if (! strcmp(service_name, MN_EVOLUTION_SERVER_SERVICE) && *new_owner) self_connect(self); GDK_THREADS_LEAVE(); } private void proxy_destroy_h (DBusGProxy *proxy, gpointer user_data) { Self *self = user_data; /* this is a main loop callback */ GDK_THREADS_ENTER(); self_set_proxy(self, NULL); self_connect_name_owner_signal(self); GDK_THREADS_LEAVE(); } public MNEvolutionClient * get (void) { static Self *self = NULL; /* does not need to be thread-safe */ if (! self) self = GET_NEW; return self; } } mail-notification-5.4.dfsg.1/src/mn-maildir-message.gob0000644000175000001440000001560411015312440022603 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-vfs-message.h" %} %privateheader{ #include %} %{ #include #include "mn-vfs-mailbox.h" #include "mn-vfs.h" #include "mn-util.h" #include "mn-message-private.h" #include "mn-shell.h" #define DELETE_DIALOG_MESSAGE "mn-maildir-message-delete-dialog-message" %} class MN:Maildir:Message from MN:VFS:Message { private int flags_sort_cb (const void *a, const void *b) { char ca = *((char *) a); char cb = *((char *) b); /* sort flags using ASCII order, see http://cr.yp.to/proto/maildir.html */ return ca - cb; } override (MN:Message) void builtin_mark_as_read (MNMessage *message, MNMessageActionRequest *request) { mn_message_perform_action_in_thread(request, self_builtin_mark_as_read_cb, NULL); } private GError * builtin_mark_as_read_cb (MNMessage *message, gpointer data) { MNVFSMessage *vmessage = MN_VFS_MESSAGE(message); char *old_flags; char *old_filename; char *new_filename; GnomeVFSURI *dir_uri; GnomeVFSURI *new_uri; GError *err = NULL; /* http://cr.yp.to/proto/maildir.html */ old_filename = gnome_vfs_uri_extract_short_name(vmessage->vfs_uri); old_flags = strrchr(old_filename, ','); if (old_flags) { char *new_flags; int old_len; char *base_filename; /* append the S (seen) flag */ old_flags++; g_assert(strchr(old_flags, 'S') == NULL); old_len = strlen(old_flags); new_flags = g_new(char, old_len + 2); /* + space for S and nul */ memcpy(new_flags, old_flags, old_len); new_flags[old_len] = 'S'; new_flags[old_len + 1] = 0; qsort(new_flags, old_len + 1, sizeof(char), self_flags_sort_cb); base_filename = g_strndup(old_filename, old_flags - old_filename - 1); new_filename = g_strdup_printf("%s,%s", base_filename, new_flags); g_free(base_filename); g_free(new_flags); } else new_filename = g_strconcat(old_filename, ":2,S", NULL); g_free(old_filename); dir_uri = gnome_vfs_uri_append_path(MN_VFS_MAILBOX(message->mailbox)->vfs_uri, "cur"); new_uri = gnome_vfs_uri_append_file_name(dir_uri, new_filename); gnome_vfs_uri_unref(dir_uri); g_free(new_filename); mn_vfs_result_to_g_error(gnome_vfs_move_uri(vmessage->vfs_uri, new_uri, TRUE), &err); gnome_vfs_uri_unref(new_uri); return err; } /* returns NULL if not supported for the volume where the file resides */ private GnomeVFSURI * get_trash_uri (self) { MNVFSMessage *vmessage = MN_VFS_MESSAGE(self); GnomeVFSURI *trash_uri; /* * Do what is advised in the gnome_vfs_find_directory() * documentation: first pass find_if_needed, then create_if_needed. */ if (gnome_vfs_find_directory(vmessage->vfs_uri, GNOME_VFS_DIRECTORY_KIND_TRASH, &trash_uri, FALSE, TRUE, 0) == GNOME_VFS_OK) return trash_uri; if (gnome_vfs_find_directory(vmessage->vfs_uri, GNOME_VFS_DIRECTORY_KIND_TRASH, &trash_uri, TRUE, FALSE, S_IRUSR | S_IWUSR | S_IXUSR) == GNOME_VFS_OK) return trash_uri; return NULL; } [G_GNUC_PRINTF(2, 3)] private GError * delete_with_prompt (self, const char *format (check null), ...) { GtkWidget *dialog; char *prompt; int response; MN_STRDUP_VPRINTF(prompt, format); GDK_THREADS_ENTER(); dialog = mn_alert_dialog_new(NULL, GTK_MESSAGE_WARNING, 0, _("Delete message?"), prompt); g_free(prompt); gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_DELETE, GTK_RESPONSE_OK, NULL); g_object_set_data(G_OBJECT(dialog), DELETE_DIALOG_MESSAGE, self); mn_g_object_connect(dialog, mn_shell->mailboxes, "signal::messages-changed", self_delete_messages_changed_h, dialog, NULL); response = mn_dialog_run_nonmodal(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); gdk_flush(); GDK_THREADS_LEAVE(); if (response == GTK_RESPONSE_OK) { GError *err = NULL; mn_vfs_result_to_g_error(gnome_vfs_unlink_from_uri(MN_VFS_MESSAGE(self)->vfs_uri), &err); return err; } else return g_error_new(MN_MESSAGE_ACTION_ERROR, MN_MESSAGE_ACTION_ERROR_CANCELLED, "cancelled"); } private void delete_messages_changed_h (MNMailboxes *mailboxes, gboolean has_new, gpointer user_data) { GtkWidget *dialog = user_data; Self *self; self = g_object_get_data(G_OBJECT(dialog), DELETE_DIALOG_MESSAGE); /* if the message was removed, close the dialog */ if (! g_hash_table_lookup(mn_shell->mailboxes->messages_hash_table, MN_MESSAGE(self)->id)) gtk_dialog_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL); } override (MN:Message) void builtin_delete (MNMessage *message, MNMessageActionRequest *request) { mn_message_perform_action_in_thread(request, self_builtin_delete_cb, NULL); } private GError * builtin_delete_cb (MNMessage *message, gpointer data) { Self *self = SELF(message); MNVFSMessage *vmessage = MN_VFS_MESSAGE(message); GnomeVFSURI *trash_uri; char *filename; GnomeVFSURI *dest_uri; GnomeVFSResult result; trash_uri = self_get_trash_uri(self); if (! trash_uri) return self_delete_with_prompt(self, _("The message cannot be moved to the trash. Permanently delete it?")); filename = gnome_vfs_uri_extract_short_name(vmessage->vfs_uri); dest_uri = gnome_vfs_uri_append_file_name(trash_uri, filename); gnome_vfs_uri_unref(trash_uri); g_free(filename); /* * Use gnome_vfs_xfer_uri() rather than gnome_vfs_move_uri(), in * case the trash resides on a different file system than the * message. */ result = gnome_vfs_xfer_uri(vmessage->vfs_uri, dest_uri, GNOME_VFS_XFER_REMOVESOURCE | GNOME_VFS_XFER_FOLLOW_LINKS, GNOME_VFS_XFER_ERROR_MODE_ABORT, GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE, NULL, NULL); gnome_vfs_uri_unref(dest_uri); if (result == GNOME_VFS_OK) return NULL; else return self_delete_with_prompt(self, _("The message could not be moved to the trash (%s). Permanently delete it?"), gnome_vfs_result_to_string(result)); } } mail-notification-5.4.dfsg.1/src/mn-ssl.c0000644000175000001440000001017511015312437020020 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include typedef GMutex CRYPTO_dynlock_value; #include #include #include #include "mn-ssl.h" static gboolean attempted = FALSE; static SSL_CTX *ctx = NULL; static char *init_error = NULL; static int num_locks; static GMutex **locks; /* a general purpose global SSL lock */ G_LOCK_DEFINE(mn_ssl); static void locking_cb (int mode, int n, const char *file, int line) { g_assert(n >= 0 && n < num_locks); if ((mode & CRYPTO_LOCK) != 0) g_mutex_lock(locks[n]); else g_mutex_unlock(locks[n]); } static unsigned long id_cb (void) { return (unsigned long) g_thread_self(); } static struct CRYPTO_dynlock_value * dynlock_create_cb (const char *file, int line) { return (struct CRYPTO_dynlock_value *) g_mutex_new(); } static void dynlock_locking_cb (int mode, struct CRYPTO_dynlock_value *lock, const char *file, int line) { if ((mode & CRYPTO_LOCK) != 0) g_mutex_lock((GMutex *) lock); else g_mutex_unlock((GMutex *) lock); } static void dynlock_destroy_cb (struct CRYPTO_dynlock_value *lock, const char *file, int line) { g_mutex_free((GMutex *) lock); } static void init_threading (void) { int i; num_locks = CRYPTO_num_locks(); locks = g_new(GMutex *, num_locks); for (i = 0; i < num_locks; i++) locks[i] = g_mutex_new(); CRYPTO_set_locking_callback(locking_cb); CRYPTO_set_id_callback(id_cb); CRYPTO_set_dynlock_create_callback(dynlock_create_cb); CRYPTO_set_dynlock_lock_callback(dynlock_locking_cb); CRYPTO_set_dynlock_destroy_callback(dynlock_destroy_cb); } SSL_CTX * mn_ssl_init (GError **err) { /* * SSL_CTX_new() will fail the second time it is called, so we just * keep the same context for the whole application lifetime. */ G_LOCK(mn_ssl); if (! attempted) { SSL_library_init(); SSL_load_error_strings(); init_threading(); ctx = SSL_CTX_new(SSLv23_client_method()); if (ctx) { SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY); SSL_CTX_set_default_verify_paths(ctx); /* #19578 */ } else init_error = g_strdup(mn_ssl_get_error()); attempted = TRUE; } if (! ctx) { g_assert(init_error != NULL); g_set_error(err, 0, 0, "%s", init_error); } G_UNLOCK(mn_ssl); return ctx; } const char * mn_ssl_get_error (void) { static GStaticPrivate buf_key = G_STATIC_PRIVATE_INIT; char *buf; /* * We use a per-thread buffer so that the caller does not have to * free the returned string. */ buf = g_static_private_get(&buf_key); if (! buf) { buf = g_new(char, 120); /* the size is specified by the manpage */ g_static_private_set(&buf_key, buf, g_free); } return ERR_error_string(ERR_get_error(), buf); } const char * mn_ssl_get_io_error (const SSL *ssl, int ret) { g_return_val_if_fail(ssl != NULL, NULL); switch (SSL_get_error(ssl, ret)) { case SSL_ERROR_SYSCALL: if (ERR_peek_error() == 0) switch (ret) { case 0: return "EOF"; case -1: /* * This assumes that a UNIX BIO is in use (it is always * the case in MN). */ return g_strerror(errno); } else return mn_ssl_get_error(); break; case SSL_ERROR_SSL: return mn_ssl_get_error(); } return _("unknown SSL/TLS error"); } mail-notification-5.4.dfsg.1/src/mn-system-vfs-mailbox-properties.gob0000644000175000001440000000521711015312440025502 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-mailbox-properties.h" %} %{ #include #include #include "mn-mailbox-properties-private.h" #include "mn-system-vfs-mailbox.h" #include "mn-stock.h" %} class MN:System:VFS:Mailbox:Properties from MN:Mailbox:Properties { property BOOLEAN complete (override) get { g_value_set_boolean(VAL, mn_system_vfs_mailbox_get_uri() != NULL); }; property STRING default_name (override) get { g_value_set_string(VAL, _("System mailbox")); }; class_init (class) { MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "system-vfs"; p_class->stock_id = MN_STOCK_SYSTEM_MAILBOX; p_class->combo_label = _("System mailbox"); } init (self) { MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self); GtkWidget *location_vbox; GtkWidget *label; const char *system_uri; /* translators: header capitalization */ location_vbox = mn_mailbox_properties_add_general_section(properties, _("Location")); label = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_label_set_selectable(GTK_LABEL(label), TRUE); system_uri = mn_system_vfs_mailbox_get_uri(); if (system_uri) { char *path; char *markup; path = gnome_vfs_get_local_path_from_uri(system_uri); markup = g_markup_printf_escaped(_("Your system mailbox is %s."), path ? path : system_uri); gtk_label_set_markup(GTK_LABEL(label), markup); g_free(markup); g_free(path); } else gtk_label_set_text(GTK_LABEL(label), _("The location of your system mailbox could not be detected. Check the MAIL environment variable.")); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(location_vbox), label, FALSE, FALSE, 0); } } mail-notification-5.4.dfsg.1/src/mn-standard-message-view.gob0000644000175000001440000000460711015312440023733 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-message-view.h" %} %{ #include #include "mn-message-view-private.h" #include "mn-message.h" #include "mn-util.h" #include "mn-text-table.h" %} class MN:Standard:Message:View from MN:Message:View { override (MN:Message:View) void append_message (MNMessageView *view, MNMessage *message, time_t now) { Self *self = SELF(view); self_append_row(self, _("Mailbox:"), message->mailbox->runtime_name); self_append_row(self, _("From:"), message->from); self_append_row(self, _("Subject:"), message->subject); if (message->sent_time > 0) { self_append_header(self, _("Sent:")); mn_message_view_append_past_time_cell(MN_MESSAGE_VIEW(self), message->sent_time, now); mn_text_table_line_break(MN_TEXT_TABLE(self)); } } override (MN:Message:View) void append_message_separator (MNMessageView *view) { mn_text_table_append_blank_cell(MN_TEXT_TABLE(view), 0, 12); mn_text_table_line_break(MN_TEXT_TABLE(view)); } private void append_row (self, const char *name (check null), const char *value (check null)) { self_append_header(self, name); mn_text_table_append_text_cell(MN_TEXT_TABLE(self), value); mn_text_table_line_break(MN_TEXT_TABLE(self)); } private void append_header (self, const char *name (check null)) { char *markup; markup = g_markup_printf_escaped("%s", name); mn_text_table_append_text_cell_from_markup(MN_TEXT_TABLE(self), markup); g_free(markup); } public GtkWidget * new (void) { return GTK_WIDGET(GET_NEW); } } mail-notification-5.4.dfsg.1/src/mn-message.gob0000644000175000001440000003541611015312440021167 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include #include "mn-mailbox.h" %} %h{ typedef enum { MN_MESSAGE_NEW = 1 << 0 /* unseen message */ } MNMessageFlags; typedef struct _MNMessageAction MNMessageAction; typedef void (*MNMessageActionResultCallback) (MNMessageAction *action, GError *err, gpointer data); typedef struct { MNMessageAction *action; MNMessage *message; MNMessageActionResultCallback callback; gpointer data; } MNMessageActionRequest; struct _MNMessageAction { const char *name; const char *icon; const char *label; const char *error_message; gboolean (*can_perform) (MNMessage *message); void (*perform) (MNMessage *message, MNMessageActionRequest *request); void (*done) (MNMessage *message, GError *err); }; #define MN_MESSAGE_ACTION_ERROR (mn_message_action_error_quark()) typedef enum { MN_MESSAGE_ACTION_ERROR_OTHER, MN_MESSAGE_ACTION_ERROR_CANCELLED } MNMessageActionError; %} %privateheader{ #include "mn-xml.h" typedef enum { /* include in the XML summary and allow as a command format */ MN_MESSAGE_PARAM_EXPORT = MN_XML_PARAM_EXPORT, } MNMessageParamFlags; typedef GError *(*MNMessageActionPerformCallback) (MNMessage *message, gpointer data); %} %{ #include #include #include #include #include "mn-conf.h" #include "mn-util.h" typedef struct { MNMessageActionRequest *request; MNMessageActionPerformCallback callback; gpointer user_data; } PerformInfo; %} %afterdecls{ static const MNMessageAction message_actions[] = { { "open", "mail-open", /* translators: header capitalization */ N_("Open"), N_("Unable to open message"), self_builtin_can_open, self_builtin_open, self_open_done }, { "mark-as-read", "mark", /* translators: header capitalization */ N_("Mark as Read"), N_("Unable to mark message as read"), self_builtin_can_mark_as_read, self_builtin_mark_as_read, self_mark_as_read_done }, { "mark-as-spam", "spam", /* translators: header capitalization */ N_("Mark as Spam"), N_("Unable to mark message as spam"), self_builtin_can_mark_as_spam, self_builtin_mark_as_spam, self_mark_as_spam_done }, { "delete", "delete", /* translators: header capitalization */ N_("Delete"), N_("Unable to mark message as spam"), self_builtin_can_delete, self_builtin_delete, self_delete_done } }; %} class MN:Message { /* * In order to not create reference cycles, we do not hold a * reference to the mailbox. The code is arranged so that a message * cannot survive its containing mailbox (whenever the mailbox is * removed, subsystems handle the messages-changed signal and * dereference the mailbox messages). */ public MNMailbox *mailbox; property POINTER mailbox (flags = CONSTRUCT_ONLY, link, type = MNMailbox *); /* sent time, may be 0 */ public time_t sent_time; property ULONG sent_time (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT, link, type = time_t); /* * The application-wise message identifier. It is used by various * subsystems to test the equality of two messages (the MNMessage * instance pointers cannot be compared since they can change across * checks). * * Uniqueness is highly desired but not required. Nothing * catastrophical will happen if an ID clash occurs. * * This field is never NULL. */ public char *id destroywith g_free; property STRING id (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT); /* * The mailbox-wise message identifier. It is used by MNMailbox to * cache the message. It is not cached using the application-wise ID * because for most backends, retrieving that ID requires to read * the message, which obviously defeats the purpose of caching. * * If set, it should be unique across all the messages of the * containing mailbox, but nothing catastrophical will happen if an * ID clash occurs. * * If NULL, the message will not be cached. */ public char *mid destroywith g_free; property STRING mid (link, flags = CONSTRUCT_ONLY); /* always set */ public char *from destroywith g_free; property STRING from (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT); /* always set */ public char *subject destroywith g_free; property STRING subject (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT); /* may be NULL */ public char *uri destroywith g_free; property STRING uri (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT); /* may be NULL */ property STRING filename (flags = MN_MESSAGE_PARAM_EXPORT) get { g_value_take_string(VAL, self->uri ? gnome_vfs_get_local_path_from_uri(self->uri) : NULL); }; public MNMessageFlags flags; property UINT flags (link, flags = CONSTRUCT_ONLY); public MNMessageAction * get_action (const char *name (check null)) { static GHashTable *actions = NULL; if (! actions) { int i; actions = g_hash_table_new(g_str_hash, g_str_equal); for (i = 0; i < G_N_ELEMENTS(message_actions); i++) { const MNMessageAction *action = &message_actions[i]; g_hash_table_insert(actions, (gpointer) action->name, (gpointer) action); } } return g_hash_table_lookup(actions, name); } constructor (self) { g_assert(MN_IS_MAILBOX(self->mailbox)); if (! self->id) { GString *id; /* no ID was provided, try to generate a persistent one */ id = g_string_new(NULL); if (self->sent_time > 0) g_string_append_printf(id, ":sent-time:%i:", (int) self->sent_time); if (self->from) g_string_append_printf(id, ":from:%s:", self->from); if (self->subject) g_string_append_printf(id, ":subject:%s:", self->subject); if (! *id->str) { static int unique = 0; /* * We could not generate a persistent ID. Fallback to a * non-persistent one. */ g_string_append_printf(id, "%i", g_atomic_int_exchange_and_add(&unique, 1)); } self->id = g_string_free(id, FALSE); } /* these fields must only be filled after we have generated an ID */ if (! self->from) self->from = g_strdup(""); if (! self->subject) self->subject = g_strdup(""); } private gboolean subst_command_cb (const char *name, char **value, gpointer data) { Self *self = data; GParamSpec **properties; unsigned int n_properties; gboolean status = FALSE; int i; properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties); for (i = 0; i < n_properties; i++) if ((properties[i]->flags & MN_MESSAGE_PARAM_EXPORT) != 0 && ! strcmp(g_param_spec_get_name(properties[i]), name)) { GValue gvalue = { 0, }; g_value_init(&gvalue, G_PARAM_SPEC_VALUE_TYPE(properties[i])); g_object_get_property(G_OBJECT(self), name, &gvalue); *value = mn_g_value_to_string(&gvalue); g_value_unset(&gvalue); status = TRUE; break; } g_free(properties); return status; } private gboolean execute_command_real (self, const char *command (check null), GError **err) { char *subst; int status; subst = mn_subst_command(command, self_subst_command_cb, self, err); if (! subst) return FALSE; status = gnome_execute_shell(NULL, subst); g_free(subst); if (status < 0) { g_set_error(err, 0, 0, "%s", g_strerror(errno)); return FALSE; } return TRUE; } /* * Returns TRUE if a custom action was found. Sets @err is the * execution of the custom action failed. */ private gboolean execute_command (self, const char *id (check null), GError **err) { char *command; GError *tmp_err = NULL; command = mn_mailbox_get_command(self->mailbox, id); if (! command) return FALSE; if (! self_execute_command_real(self, command, &tmp_err)) { g_set_error(err, 0, 0, _("Unable to execute \"%s\": %s."), command, tmp_err->message); g_error_free(tmp_err); } g_free(command); return TRUE; } public gboolean can_perform_action (self, MNMessageAction *action (check null)) { return mn_mailbox_has_command(self->mailbox, action->name) || action->can_perform(self); } public void perform_action (self, MNMessageAction *action (check null), MNMessageActionResultCallback callback (check null), gpointer data) { GError *err = NULL; if (self_execute_command(self, action->name, &err)) self_action_done_real(self, action, err, callback, data); else { MNMessageActionRequest *request; request = g_new0(MNMessageActionRequest, 1); request->message = g_object_ref(self); request->action = action; request->callback = callback; request->data = data; action->perform(self, request); } } protected void perform_action_in_thread (MNMessageActionRequest *request (check null), MNMessageActionPerformCallback callback (check null), gpointer user_data) { PerformInfo *info; info = g_new0(PerformInfo, 1); info->request = request; info->callback = callback; info->user_data = user_data; g_object_ref(request->message); g_object_ref(request->message->mailbox); mn_thread_create((GThreadFunc) self_perform_action_in_thread_cb, info); } private void perform_action_in_thread_cb (PerformInfo *info) { GError *err; err = info->callback(info->request->message, info->user_data); GDK_THREADS_ENTER(); self_action_done(info->request, err); g_object_unref(info->request->message->mailbox); g_object_unref(info->request->message); gdk_flush(); GDK_THREADS_LEAVE(); } private void action_done_real (self, MNMessageAction *action (check null), GError *err, MNMessageActionResultCallback callback, gpointer data) { action->done(self, err); callback(action, err, data); } protected void action_done (MNMessageActionRequest *request (check null), GError *err) { Self *self = request->message; self_action_done_real(self, request->action, err, request->callback, request->data); g_object_unref(request->message); g_free(request); } public GQuark action_error_quark (void) { return g_quark_from_static_string("mn-message-action-error"); } virtual private gboolean builtin_can_open (self) { return self->uri != NULL; } virtual private void builtin_open (self, MNMessageActionRequest *request) { GError *err = NULL; gnome_url_show(self->uri, &err); self_action_done(request, err); } private void open_done (self, GError *err) { if (! err) self_consider_as_read(self); /* [1] */ } virtual private gboolean builtin_can_mark_as_read (self) { return SELF_GET_CLASS(self)->builtin_mark_as_read != NULL; } virtual private void builtin_mark_as_read (self, MNMessageActionRequest *request); private void mark_as_read_done (self, GError *err) { if (! err) self_consider_as_read(self); /* [1] */ } virtual private gboolean builtin_can_mark_as_spam (self) { return SELF_GET_CLASS(self)->builtin_mark_as_spam != NULL; } virtual private void builtin_mark_as_spam (self, MNMessageActionRequest *request); private void mark_as_spam_done (self, GError *err) { if (! err) self_consider_as_read(self); /* [1] */ } virtual private gboolean builtin_can_delete (self) { return SELF_GET_CLASS(self)->builtin_delete != NULL; } virtual private void builtin_delete (self, MNMessageActionRequest *request); private void delete_done (self, GError *err) { if (! err) self_consider_as_read(self); /* [1] */ } public void consider_as_read (self) { GSList *list; GSList *l; gboolean exists = FALSE; list = mn_conf_get_string_list(MN_CONF_MESSAGES_CONSIDERED_AS_READ); MN_LIST_FOREACH(l, list) { const char *id = l->data; if (! strcmp(id, self->id)) { exists = TRUE; break; } } if (! exists) { list = g_slist_prepend(list, g_strdup(self->id)); mn_conf_set_string_list(MN_CONF_MESSAGES_CONSIDERED_AS_READ, list); } mn_g_slist_free_deep(list); } /* * Atomically considers a list of messages as read, setting the * GConf list only once rather than for each message. */ public void consider_as_read_list (GList *messages) { GHashTable *set; unsigned int old_size; GList *l; set = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ); old_size = g_hash_table_size(set); MN_LIST_FOREACH(l, messages) { MNMessage *message = l->data; g_hash_table_replace(set, g_strdup(message->id), GINT_TO_POINTER(TRUE)); } if (g_hash_table_size(set) != old_size) mn_conf_set_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ, set); g_hash_table_destroy(set); } public MNMessage * new (MN:Mailbox *mailbox (check null type), time_t sent_time, const char *id, const char *mid, const char *from, const char *subject, const char *uri, MNMessageFlags flags) { return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX(mailbox), MN_MESSAGE_PROP_SENT_TIME(sent_time), MN_MESSAGE_PROP_ID((char *) id), MN_MESSAGE_PROP_MID((char *) mid), MN_MESSAGE_PROP_FROM((char *) from), MN_MESSAGE_PROP_SUBJECT((char *) subject), MN_MESSAGE_PROP_URI((char *) uri), MN_MESSAGE_PROP_FLAGS(flags), NULL); } public xmlNode * xml_node_new (self) { xmlNode *node; node = xmlNewNode(NULL, "message"); xmlSetProp(node, "mailbox", self->mailbox->runtime_name); if ((self->flags & MN_MESSAGE_NEW) != 0) xmlSetProp(node, "new", "true"); mn_xml_export_properties(G_OBJECT(self), node); return node; } } /* * [1]: there can be a slight (or large if polling is in effect) delay * between executing an action which should cause a message to * disappear from MN (open it, mark it as read, etc) and having the * next mail check catch the change. By adding the message to the * considered-as-read GConf list, this delay is concealed from the * user. */ mail-notification-5.4.dfsg.1/src/mn-vfs.h0000644000175000001440000000371511015312437020024 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_VFS_H #define _MN_VFS_H #include #include typedef struct _MNVFSReadLineContext MNVFSReadLineContext; GnomeVFSResult mn_vfs_read_line (MNVFSReadLineContext **context, GnomeVFSHandle *handle, const char **line); void mn_vfs_read_line_context_free (MNVFSReadLineContext *context); gboolean mn_vfs_test (GnomeVFSURI *uri, GFileTest test); GnomeVFSResult mn_vfs_read_entire_file_uri (GnomeVFSURI *uri, int *file_size, char **file_contents); GnomeVFSResult mn_vfs_write_entire_file_uri (GnomeVFSURI *uri, gsize file_size, const char *file_contents, gboolean exclusive, unsigned int perms); gboolean mn_vfs_write_entire_file_uri_safe (GnomeVFSURI *uri, gsize file_size, const char *file_contents, unsigned int perms, GError **err); GnomeVFSURI *mn_vfs_uri_append_file_suffix (GnomeVFSURI *uri, const char *suffix); char *mn_vfs_uri_extract_short_name (const char *text_uri); char *mn_vfs_get_local_path (GnomeVFSURI *uri); gboolean mn_vfs_result_to_g_error (GnomeVFSResult result, GError **err); #endif /* _MN_VFS_H */ mail-notification-5.4.dfsg.1/src/mn-webmail-mailbox.gob0000644000175000001440000002215411015312440022607 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-authenticated-mailbox.h" %} %{ #include #include #include #include #include #include #include #include #include "mn-mailbox-private.h" #include "mn-authenticated-mailbox-private.h" #include "mn-message-mime.h" #include "mn-util.h" %} class MN:Webmail:Mailbox from MN:Authenticated:Mailbox (abstract) { classwide const char *default_domain; public char *folder destroywith g_free; property STRING folder (link, flags = CONSTRUCT | MN_MAILBOX_PARAM_LOAD_SAVE | MN_MAILBOX_PARAM_REQUIRED, default_value = "Inbox"); override (MN:Mailbox) void seal (MNMailbox *mailbox) { MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox); Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); if (! mailbox->runtime_name) mailbox->runtime_name = self_build_name(SELF_GET_CLASS(self), MN_AUTHENTICATED_MAILBOX(mailbox)->username, self->folder); if (! auth_mailbox->keyring_domain) auth_mailbox->keyring_domain = g_strdup(MN_WEBMAIL_MAILBOX_CLASS(SELF_GET_CLASS(self))->default_domain); } protected void parse_username (self, char **username (check null), char **domain (check null)) { mn_authenticated_mailbox_parse_username(MN_AUTHENTICATED_MAILBOX(self), username, domain); if (! *domain) *domain = g_strdup(MN_WEBMAIL_MAILBOX_CLASS(SELF_GET_CLASS(self))->default_domain); } private int create_temporary_file (char **filename (check null), GError **err) { int fd; char *_filename; GError *tmp_err = NULL; /* GetLive chokes on the hyphen in "mail-notification", so use "mn" */ fd = g_file_open_tmp("mn.XXXXXX", &_filename, &tmp_err); if (fd == -1) { g_set_error(err, 0, 0, _("unable to create a temporary file: %s"), tmp_err->message); g_error_free(tmp_err); return -1; } if (fchmod(fd, S_IRUSR | S_IWUSR) < 0) { g_set_error(err, 0, 0, _("unable to change the permissions of the temporary file: %s"), g_strerror(errno)); g_free(_filename); close(fd); return -1; } *filename = _filename; return fd; } protected char * create_spool_file (GError **err) { int fd; char *filename; fd = self_create_temporary_file(&filename, err); if (fd == -1) return NULL; close(fd); return filename; } protected char * write_temporary_file (const char *contents (check null), const char *encoding (check null), GError **err) { int fd; GError *tmp_err = NULL; char *filename; GIOChannel *channel; gsize bytes_written; fd = self_create_temporary_file(&filename, err); if (fd == -1) return NULL; channel = g_io_channel_unix_new(fd); if (g_io_channel_set_encoding(channel, encoding, &tmp_err) != G_IO_STATUS_NORMAL) { g_set_error(err, 0, 0, _("unable to set encoding of %s: %s"), filename, tmp_err->message); goto error; } if (g_io_channel_write_chars(channel, contents, -1, &bytes_written, &tmp_err) != G_IO_STATUS_NORMAL) { g_set_error(err, 0, 0, _("unable to write to %s: %s"), filename, tmp_err->message); goto error; } if (g_io_channel_shutdown(channel, TRUE, &tmp_err) != G_IO_STATUS_NORMAL) { g_set_error(err, 0, 0, _("unable to close %s: %s"), filename, tmp_err->message); goto error_noshutdown; } g_io_channel_unref(channel); return filename; error: g_io_channel_shutdown(channel, FALSE, NULL); error_noshutdown: g_io_channel_unref(channel); g_free(filename); return NULL; } virtual private char * get_error_message (self, const char *helper_stdout, const char *helper_stderr, gboolean *is_auth_failure (check null)); private void print_multiline_text (self, const char *text (check null), const char *line_prefix (check null)) { char **lines; int i; lines = g_strsplit(text, "\n", 0); for (i = 0; lines[i]; i++) { // do not print the empty last line if (! lines[i + 1] && ! lines[i][0]) break; mn_mailbox_notice(MN_MAILBOX(self), "%s%s", line_prefix, lines[i]); } g_strfreev(lines); } protected void print_config (self, const char *config (check null)) { mn_mailbox_notice(MN_MAILBOX(self), _("configuration:")); self_print_multiline_text(self, config, "> "); } private void print_output (self, const char *header (check null), const char *contents) { if (! contents || ! *contents) return; mn_mailbox_notice(MN_MAILBOX(self), "%s", header); self_print_multiline_text(self, contents, "< "); } protected gboolean run_helper (self, const char *name (check null), const char *command (check null), GError **err) { GError *tmp_err = NULL; char *helper_stdout; char *helper_stderr; int exit_status; gboolean status = FALSE; mn_mailbox_notice(MN_MAILBOX(self), _("running %s"), command); if (! g_spawn_command_line_sync(command, &helper_stdout, &helper_stderr, &exit_status, &tmp_err)) { g_set_error(err, 0, 0, _("cannot execute \"%s\": %s"), name, tmp_err->message); g_error_free(tmp_err); return FALSE; } self_print_output(self, _("standard output:"), helper_stdout); self_print_output(self, _("standard error output:"), helper_stderr); if (WEXITSTATUS(exit_status) != 0) { char *message; gboolean is_auth_failure = FALSE; message = self_get_error_message(self, helper_stdout, helper_stderr, &is_auth_failure); if (message) { g_set_error(err, 0, 0, "%s", message); g_free(message); } else /* translators: %s is a program name, as in "unknown fetchyahoo failure" */ g_set_error(err, 0, 0, _("unknown %s failure"), name); if (is_auth_failure && MN_AUTHENTICATED_MAILBOX(self)->auth_prompted) mn_authenticated_mailbox_auth_failed(MN_AUTHENTICATED_MAILBOX(self)); goto end; } status = TRUE; end: g_free(helper_stdout); g_free(helper_stderr); return status; } protected gboolean read_spool_file (self, const char *spool_file (check null), GError **err) { int fd; GMimeStream *stream; GMimeParser *parser; GSList *messages = NULL; fd = open(spool_file, O_RDONLY); if (fd < 0) { g_set_error(err, 0, 0, _("unable to open %s: %s"), spool_file, strerror(errno)); return FALSE; } stream = g_mime_stream_fs_new(fd); parser = g_mime_parser_new_with_stream(stream); g_object_unref(stream); g_mime_parser_set_scan_from(parser, TRUE); while (! g_mime_parser_eos(parser)) { GMimeMessage *mime_message; mime_message = g_mime_parser_construct_message(parser); if (mime_message) { MNMessage *message; message = mn_message_new_from_mime_message(MN_MAILBOX(self), mime_message, NULL, 0, TRUE); g_object_unref(mime_message); if (message) messages = g_slist_prepend(messages, message); } } g_object_unref(parser); /* the fd is owned by the stream and closed by it */ GDK_THREADS_ENTER(); mn_mailbox_set_messages(MN_MAILBOX(self), messages); mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); return TRUE; } virtual private gboolean webmail_check (self, GError **err); override (MN:Authenticated:Mailbox) void authenticated_check (MNAuthenticatedMailbox *mailbox) { Self *self = SELF(mailbox); GError *err = NULL; PARENT_HANDLER(mailbox); again: if (! mn_authenticated_mailbox_fill_password(mailbox, TRUE)) return; if (! self_webmail_check(self, &err)) { if (mailbox->auth_prompted && mailbox->auth_failed) { g_clear_error(&err); goto again; } GDK_THREADS_ENTER(); mn_mailbox_set_error(MN_MAILBOX(self), "%s", err->message); g_error_free(err); gdk_flush(); GDK_THREADS_LEAVE(); } } public char * build_name (MNWebmailMailboxClass *class (check null), const char *username (check null), const char *folder) { GString *name; name = g_string_new(NULL); if (strchr(username, '@')) g_string_append(name, username); else g_string_append_printf(name, "%s@%s", username, class->default_domain); if (folder && strcmp(folder, "Inbox")) g_string_append_printf(name, "/%s", folder); return g_string_free(name, FALSE); } } mail-notification-5.4.dfsg.1/src/mn-hotmail-mailbox-properties.gob0000644000175000001440000000227011015312440025013 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-webmail-mailbox-properties.h" %} %{ #include "mn-stock.h" %} class MN:Hotmail:Mailbox:Properties from MN:Webmail:Mailbox:Properties { class_init (class) { MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class); p_class->type = "hotmail"; p_class->stock_id = MN_STOCK_HOTMAIL; p_class->combo_label = "Windows Live Hotmail"; } } mail-notification-5.4.dfsg.1/src/mn-evolution.h0000644000175000001440000000336211015312437021250 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_EVOLUTION_H #define _MN_EVOLUTION_H #define MN_EVOLUTION_SERVER_SERVICE "org.gnome.MailNotification.Evolution" #define MN_EVOLUTION_SERVER_PATH "/org/gnome/MailNotification/Evolution" #define MN_EVOLUTION_SERVER_INTERFACE "org.gnome.MailNotification.Evolution" #define MN_EVOLUTION_SERVER_SIGNAL_FOLDER_CHANGED "FolderChanged" #define MN_EVOLUTION_SERVER_SIGNAL_MESSAGE_READING "MessageReading" #define MN_EVOLUTION_FOLDER_TREE_SERVER_SERVICE "org.gnome.MailNotification.Evolution.FolderTree%u" #define MN_EVOLUTION_FOLDER_TREE_SERVER_PATH "/org/gnome/MailNotification/Evolution/FolderTree%u" #define MN_EVOLUTION_FOLDER_TREE_SERVER_INTERFACE "org.gnome.MailNotification.Evolution.FolderTree" #define MN_EVOLUTION_FOLDER_TREE_SERVER_PROPERTY_URI "uri" #define MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_SELECTED "FolderSelected" #define MN_EVOLUTION_FOLDER_TREE_SERVER_SIGNAL_FOLDER_ACTIVATED "FolderActivated" #endif /* _MN_EVOLUTION_H */ mail-notification-5.4.dfsg.1/src/mn-maildir-mailbox-backend.gob0000644000175000001440000001707211015312440024200 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-vfs-mailbox-backend.h" %} %{ #include #include #include #include "mn-mailbox-private.h" #include "mn-reentrant-mailbox-private.h" #include "mn-vfs-mailbox-backend-private.h" #include "mn-vfs.h" #include "mn-util.h" #include "mn-message-mime.h" #include "mn-maildir-message.h" %} class MN:Maildir:Mailbox:Backend from MN:VFS:Mailbox:Backend { class_init (class) { MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Maildir"; } override (MN:VFS:Mailbox:Backend) void monitor_cb (MNVFSMailboxBackend *backend, const char *info_uri, GnomeVFSMonitorEventType event_type) { if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED || event_type == GNOME_VFS_MONITOR_EVENT_DELETED || event_type == GNOME_VFS_MONITOR_EVENT_CREATED) { char *filename; filename = mn_vfs_uri_extract_short_name(info_uri); if (filename) { if (filename[0] != '.') mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(backend->mailbox)); g_free(filename); } } } private gboolean dir_exists (MN:VFS:Mailbox *mailbox (check null type), const char *name (check null)) { GnomeVFSURI *dir_uri; gboolean exists; dir_uri = gnome_vfs_uri_append_path(mailbox->vfs_uri, name); exists = mn_vfs_test(dir_uri, G_FILE_TEST_IS_DIR); gnome_vfs_uri_unref(dir_uri); return exists; } override (MN:VFS:Mailbox:Backend) gboolean is (MNVFSMailboxBackend *dummy, MNVFSMailboxBackendClass *class, MNVFSMailbox *mailbox) { return self_dir_exists(mailbox, "cur") && self_dir_exists(mailbox, "new") && self_dir_exists(mailbox, "tmp"); } private void monitor_directory (self, int check_id, const char *dir (check null)) { MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self); GnomeVFSURI *uri; char *text_uri; uri = gnome_vfs_uri_append_path(backend->mailbox->vfs_uri, dir); text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE); gnome_vfs_uri_unref(uri); mn_vfs_mailbox_backend_monitor(backend, check_id, text_uri, GNOME_VFS_MONITOR_DIRECTORY); g_free(text_uri); } private gboolean scan_directory (self, int check_id, const char *dir (check null), gboolean new, GSList **messages (check null), int *num_errors (check null), GError **err) { MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self); GnomeVFSURI *uri; GnomeVFSResult result; GnomeVFSResult close_result; GnomeVFSDirectoryHandle *handle; GnomeVFSFileInfo *file_info; gboolean aborted = FALSE; uri = gnome_vfs_uri_append_path(backend->mailbox->vfs_uri, dir); result = gnome_vfs_directory_open_from_uri(&handle, uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS); if (result != GNOME_VFS_OK) { g_set_error(err, 0, 0, _("unable to open folder \"%s\": %s"), dir, gnome_vfs_result_to_string(result)); gnome_vfs_uri_unref(uri); return FALSE; } file_info = gnome_vfs_file_info_new(); while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK) if (file_info->name[0] != '.') { char *mid; MNMessageFlags flags = 0; MNVFSMessage *message = NULL; if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { aborted = TRUE; break; } if (new) { mid = g_strdup(file_info->name); flags |= MN_MESSAGE_NEW; } else { char *info; /* http://cr.yp.to/proto/maildir.html */ info = strrchr(file_info->name, ':'); if (! info || ! g_str_has_prefix(info + 1, "2,") || strpbrk(info + 3, "ST")) continue; /* no info, or message seen/trashed: ignore it */ mid = g_strndup(file_info->name, info - file_info->name); } /* * Hold the GDK lock while using * mn_mailbox_get_message_from_mid(), since for * MNReentrantMailbox, mail checks can run concurrently, so * another check could be modifying the MID hash table. */ GDK_THREADS_ENTER(); message = MN_VFS_MESSAGE(mn_mailbox_get_message_from_mid(MN_MAILBOX(backend->mailbox), mid)); if (message) message = mn_vfs_message_new_from_message(message, uri, file_info->name, flags); gdk_flush(); GDK_THREADS_LEAVE(); if (! message) { GError *tmp_err = NULL; message = mn_vfs_message_new(MN_TYPE_MAILDIR_MESSAGE, backend, mid, uri, file_info->name, flags, FALSE, &tmp_err); if (tmp_err) { GnomeVFSURI *message_uri; char *message_text_uri; message_uri = gnome_vfs_uri_append_file_name(uri, file_info->name); message_text_uri = gnome_vfs_uri_to_string(message_uri, GNOME_VFS_URI_HIDE_PASSWORD); gnome_vfs_uri_unref(message_uri); mn_mailbox_warning(MN_MAILBOX(backend->mailbox), "cannot read message \"%s\": %s", message_text_uri, tmp_err->message); g_free(message_text_uri); g_error_free(tmp_err); (*num_errors)++; } } g_free(mid); if (message) *messages = g_slist_prepend(*messages, message); } gnome_vfs_uri_unref(uri); gnome_vfs_file_info_unref(file_info); close_result = gnome_vfs_directory_close(handle); if (! aborted) { if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK) { if (close_result == GNOME_VFS_OK) return TRUE; else g_set_error(err, 0, 0, _("unable to close folder \"%s\": %s"), dir, gnome_vfs_result_to_string(close_result)); } else g_set_error(err, 0, 0, _("error while reading folder \"%s\": %s"), dir, gnome_vfs_result_to_string(result)); } return FALSE; } override (MN:VFS:Mailbox:Backend) void check (MNVFSMailboxBackend *backend, int check_id) { Self *self = SELF(backend); GSList *messages = NULL; GError *err = NULL; int num_errors = 0; gboolean status; self_monitor_directory(self, check_id, "cur"); self_monitor_directory(self, check_id, "new"); status = self_scan_directory(self, check_id, "cur", FALSE, &messages, &num_errors, &err) && self_scan_directory(self, check_id, "new", TRUE, &messages, &num_errors, &err); GDK_THREADS_ENTER(); if (! mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id)) { if (status) { mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages); if (num_errors != 0) mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), ngettext("cannot read %i message", "cannot read %i messages", num_errors), num_errors); } else mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), "%s", err->message); } mn_g_object_slist_free(messages); gdk_flush(); GDK_THREADS_LEAVE(); if (err) g_error_free(err); } } mail-notification-5.4.dfsg.1/src/mn-stock.h0000644000175000001440000000324311015312437020345 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MN_STOCK_H #define _MN_STOCK_H #define MN_STOCK_MAIL "mn-mail" #define MN_STOCK_NO_MAIL "mn-no-mail" #define MN_STOCK_LOCAL "mn-local" #define MN_STOCK_REMOTE "mn-remote" #define MN_STOCK_UNKNOWN "mn-unknown" #define MN_STOCK_ERROR "mn-error" #if WITH_GMAIL #define MN_STOCK_GMAIL "mn-gmail" #endif #if WITH_YAHOO #define MN_STOCK_YAHOO "mn-yahoo" #endif #if WITH_HOTMAIL #define MN_STOCK_HOTMAIL "mn-hotmail" #endif #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED #define MN_STOCK_SYSTEM_MAILBOX "mn-system-mailbox" #endif #if WITH_EVOLUTION #define MN_STOCK_EVOLUTION_MAILBOX "mn-evolution-mailbox" #endif #define MN_STOCK_MAIL_READER "mn-mail-reader" #define MN_STOCK_OPEN_MESSAGE "mn-open-message" #define MN_STOCK_CONSIDER_NEW_MAIL_AS_READ "mn-consider-new-mail-as-read" void mn_stock_init (void); #endif /* _MN_STOCK_H */ mail-notification-5.4.dfsg.1/src/mn-evolution-mailbox.gob0000644000175000001440000001575411015312440023223 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-mailbox.h" %} %privateheader{ #include #include "mn-evolution-client.h" %} %{ #include #include #include #include "mn-evolution.h" #include "mn-mailbox-private.h" #include "mn-message.h" #include "mn-util.h" #include "mn-stock.h" #include "mn-evolution-message.h" #include "mn-shell.h" #include "mn-evolution-client-dbus.h" typedef struct { const char *uid; unsigned int sent_time; unsigned int received_time; const char *id; const char *from; const char *subject; } MessageInfo; %} class MN:Evolution:Mailbox from MN:Mailbox { public char *uri destroywith g_free; property STRING uri (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE | MN_MAILBOX_PARAM_REQUIRED); /* * Evolution might not be running when we instantiate the mailbox, * so we cache the folder name. */ public char *folder_name destroywith g_free; property STRING folder_name (link, flags = MN_MAILBOX_PARAM_LOAD_SAVE | MN_MAILBOX_PARAM_REQUIRED); private MNEvolutionClient *client; private gboolean signals_connected; private DBusGProxyCall *pending_call; private time_t last_browsed; class_init (class) { MN_MAILBOX_CLASS(class)->type = "evolution"; } init (self) { mn_mailbox_set_format(MN_MAILBOX(self), "Evolution"); mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_EVOLUTION_MAILBOX); /* we receive notifications from Evolution, no need to poll */ mn_mailbox_set_poll(MN_MAILBOX(self), FALSE); } override (MN:Mailbox) void seal (MNMailbox *mailbox) { PARENT_HANDLER(mailbox); if (! mailbox->runtime_name) mailbox->runtime_name = g_strdup(SELF(mailbox)->folder_name); } finalize (self) { if (selfp->client) { if (selfp->pending_call) { g_assert(selfp->client->proxy != NULL); dbus_g_proxy_cancel_call(selfp->client->proxy, selfp->pending_call); } self_disconnect_proxy_signals(self); g_signal_handlers_disconnect_by_func(selfp->client, mn_mailbox_check, self); } } private void connect_proxy_signals (self) { g_return_if_fail(selfp->client != NULL); g_return_if_fail(selfp->client->proxy != NULL); if (selfp->signals_connected) return; dbus_g_proxy_connect_signal(selfp->client->proxy, MN_EVOLUTION_SERVER_SIGNAL_FOLDER_CHANGED, G_CALLBACK(self_folder_changed_h), self, NULL); dbus_g_proxy_connect_signal(selfp->client->proxy, MN_EVOLUTION_SERVER_SIGNAL_MESSAGE_READING, G_CALLBACK(self_message_reading_h), self, NULL); selfp->signals_connected = TRUE; } private void disconnect_proxy_signals (self) { g_return_if_fail(selfp->client != NULL); if (! selfp->signals_connected) return; selfp->signals_connected = FALSE; if (! selfp->client->proxy) return; dbus_g_proxy_disconnect_signal(selfp->client->proxy, MN_EVOLUTION_SERVER_SIGNAL_FOLDER_CHANGED, G_CALLBACK(self_folder_changed_h), self); dbus_g_proxy_disconnect_signal(selfp->client->proxy, MN_EVOLUTION_SERVER_SIGNAL_MESSAGE_READING, G_CALLBACK(self_message_reading_h), self); } private void folder_changed_h (DBusGProxy *proxy, const char *uri, gpointer user_data) { Self *self = user_data; if (! strcmp(uri, self->uri)) { GDK_THREADS_ENTER(); mn_mailbox_check(MN_MAILBOX(self)); GDK_THREADS_LEAVE(); } } private void message_reading_h (DBusGProxy *proxy, const char *uri, gpointer user_data) { Self *self = user_data; if (! strcmp(uri, self->uri)) { selfp->last_browsed = mn_time(); GDK_THREADS_ENTER(); mn_mailbox_check(MN_MAILBOX(self)); GDK_THREADS_LEAVE(); } } private void value_array_get_values (GValueArray *value_array (check null), ...) { va_list args; int i; va_start(args, value_array); for (i = 0; i < value_array->n_values; i++) { GValue *value = g_value_array_get_nth(value_array, i); char *error = NULL; G_VALUE_LCOPY(value, args, G_VALUE_NOCOPY_CONTENTS, &error); g_assert(error == NULL); } va_end(args); } override (MN:Mailbox) void check (MNMailbox *mailbox) { Self *self = SELF(mailbox); PARENT_HANDLER(mailbox); mn_mailbox_set_error(mailbox, NULL); if (! selfp->client) { selfp->client = mn_evolution_client_get(); g_signal_connect_swapped(selfp->client, "notify::proxy", G_CALLBACK(mn_mailbox_check), self); } if (! selfp->client->proxy) /* not connected */ { selfp->pending_call = NULL; self_disconnect_proxy_signals(self); mn_mailbox_set_error(mailbox, _("unable to contact Evolution")); return; } self_connect_proxy_signals(self); if (selfp->pending_call) dbus_g_proxy_cancel_call(selfp->client->proxy, selfp->pending_call); selfp->pending_call = org_gnome_MailNotification_Evolution_get_unseen_messages_async(selfp->client->proxy, self->uri, self_get_unseen_messages_cb, self); } private void get_unseen_messages_cb (DBusGProxy *proxy, GPtrArray *messages_array, GError *err, gpointer user_data) { Self *self = user_data; GDK_THREADS_ENTER(); if (err) { mn_mailbox_set_error(MN_MAILBOX(self), "%s", err->message); g_error_free(err); } else { int i; GSList *messages = NULL; for (i = 0; i < messages_array->len; i++) { GValueArray *value_array = g_ptr_array_index(messages_array, i); MessageInfo info; MNMessageFlags flags = 0; self_value_array_get_values(value_array, &info.uid, &info.sent_time, &info.received_time, &info.id, &info.from, &info.subject); if (info.received_time > selfp->last_browsed) flags |= MN_MESSAGE_NEW; messages = g_slist_prepend(messages, mn_evolution_message_new(MN_MAILBOX(self), info.sent_time, info.id, info.from, info.subject, flags, info.uid)); } mn_g_ptr_array_free_deep_custom(messages_array, (GFunc) g_value_array_free, NULL); mn_mailbox_set_messages(MN_MAILBOX(self), messages); mn_g_object_slist_free(messages); } selfp->pending_call = NULL; GDK_THREADS_LEAVE(); } } mail-notification-5.4.dfsg.1/src/mn-mailbox-properties-dialog.gob0000644000175000001440000005075411015312440024627 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ %headertop{ #include "mn-dialog.h" #include "mn-mailbox.h" %} %privateheader{ #include "mn-mailbox-properties.h" %} %{ #include #include "mn-autodetect-mailbox-properties.h" #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED #include "mn-system-vfs-mailbox-properties.h" #endif #if WITH_POP3 #include "mn-pop3-mailbox-properties.h" #endif #if WITH_IMAP #include "mn-imap-mailbox-properties.h" #endif #if WITH_GMAIL #include "mn-gmail-mailbox-properties.h" #endif #if WITH_YAHOO #include "mn-yahoo-mailbox-properties.h" #endif #if WITH_HOTMAIL #include "mn-hotmail-mailbox-properties.h" #endif #if WITH_EVOLUTION #include "mn-evolution-mailbox-properties.h" #endif #include "mn-util.h" #include "mn-mailboxes.h" #include "mn-shell.h" #include "mn-non-linear-range.h" #define HELP_SECTION "mn-mailbox-properties-help-section" enum { COLUMN_PROPERTIES, COLUMN_STOCK_ID, COLUMN_LABEL, N_COLUMNS }; static GType selected_type = 0; static const MNNonLinearRangeBlock delay_blocks[] = { { MN_SECS(10), MN_SECS(60), MN_SECS(10) }, { MN_MINS(2), MN_MINS(10), MN_MINS(1) }, { MN_MINS(15), MN_MINS(60), MN_MINS(5) }, { MN_HOURS(2), MN_HOURS(24), MN_HOURS(1) } }; %} class MN:Mailbox:Properties:Dialog from MN:Dialog { /* "parent" is a GtkWidget property, do not conflict with it */ private GtkWindow *dialog_parent; property POINTER dialog_parent (link, flags = CONSTRUCT_ONLY, type = GtkWindow *); private MNMailbox *mailbox unrefwith g_object_unref; property OBJECT mailbox (flags = CONSTRUCT, object_type = MN:Mailbox, type = MNMailbox *, export) set { GObject *obj; if (selfp->mailbox) { g_object_unref(selfp->mailbox); selfp->mailbox = NULL; } obj = g_value_dup_object(VAL); if (obj) { char *title; selfp->mailbox = MN_MAILBOX(obj); /* translators: header capitalization */ title = g_strdup_printf(_("%s Properties"), selfp->mailbox->runtime_name); gtk_window_set_title(GTK_WINDOW(self), title); g_free(title); } } get { g_value_set_object(VAL, selfp->mailbox); }; private gboolean apply_used; /* only set in editing mode */ private MNMailboxConfiguration *orig_mailbox_configuration destroywith mn_mailbox_configuration_free; protected GtkWidget *notebook; protected GtkWidget *general_vbox; private GtkWidget *type_label; private GtkWidget *type_combo; private GtkWidget *name_default_radio; private GtkWidget *name_default_label; private GtkWidget *name_other_radio; private GtkWidget *name_entry; private GtkWidget *delay_vbox; private GtkWidget *delay_default_radio; private GtkWidget *delay_default_label; private GtkWidget *delay_other_radio; private GtkWidget *delay_scale; private GtkWidget *apply_button; private GtkWidget *accept_button; private GtkListStore *store unrefwith g_object_unref; private MNMailboxProperties *active_properties unrefwith g_object_unref; private GtkSizeGroup *details_size_group = {gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL)} unrefwith g_object_unref; constructor (self) { GtkWidget *page; MNMailboxProperties *properties; mn_container_create_interface(GTK_CONTAINER(self), PKGDATADIR G_DIR_SEPARATOR_S "mailbox-properties-dialog.glade", "notebook", "mn_mailbox_properties_dialog_", "notebook", &self->notebook, "general_vbox", &self->general_vbox, "type_label", &selfp->type_label, "type_combo", &selfp->type_combo, "name_default_radio", &selfp->name_default_radio, "name_default_label", &selfp->name_default_label, "name_other_radio", &selfp->name_other_radio, "name_entry", &selfp->name_entry, "delay_vbox", &selfp->delay_vbox, "delay_default_radio", &selfp->delay_default_radio, "delay_default_label", &selfp->delay_default_label, "delay_other_radio", &selfp->delay_other_radio, "delay_scale", &selfp->delay_scale, NULL); gtk_window_set_resizable(GTK_WINDOW(self), FALSE); if (selfp->dialog_parent) gtk_window_set_transient_for(GTK_WINDOW(self), selfp->dialog_parent); page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self->notebook), 0); self_set_help_section(page, "mailbox-properties-general"); page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self->notebook), 1); self_set_help_section(page, "mailbox-properties-details"); self_setup_type_combo(self); mn_non_linear_range_setup_static(GTK_RANGE(selfp->delay_scale), delay_blocks, G_N_ELEMENTS(delay_blocks)); /* set a good general default value */ mn_non_linear_range_set_value(GTK_RANGE(selfp->delay_scale), MN_MINS(5)); gtk_size_group_add_widget(selfp->details_size_group, selfp->name_default_radio); gtk_size_group_add_widget(selfp->details_size_group, selfp->name_other_radio); /* setup the dialog depending on the mode (edit or add) */ gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_HELP, GTK_RESPONSE_HELP); if (selfp->mailbox) { selfp->apply_button = gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_APPLY, GTK_RESPONSE_APPLY); gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); selfp->accept_button = gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_OK, GTK_RESPONSE_OK); properties = self_get_properties_by_type(self, MN_MAILBOX_GET_CLASS(selfp->mailbox)->type); } else { gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); selfp->accept_button = gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_ADD, GTK_RESPONSE_ACCEPT); if (! selected_type) selected_type = MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES; properties = self_get_properties_by_g_type(self, selected_type); /* translators: header capitalization */ gtk_window_set_title(GTK_WINDOW(self), _("Add a Mailbox")); } self_set_active_properties(self, properties); if (selfp->mailbox) { selfp->orig_mailbox_configuration = mn_mailbox_get_configuration(selfp->mailbox); mn_mailbox_properties_set_mailbox(properties, selfp->mailbox); if (selfp->mailbox->name) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->name_other_radio), TRUE); gtk_entry_set_text(GTK_ENTRY(selfp->name_entry), selfp->mailbox->name); } if (selfp->mailbox->check_delay != -1) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->delay_other_radio), TRUE); mn_non_linear_range_set_value(GTK_RANGE(selfp->delay_scale), selfp->mailbox->check_delay); } } g_object_unref(properties); gtk_widget_grab_default(selfp->accept_button); /* * HIG chapter 3: * "When opening a dialog, provide initial keyboard focus to the * component that you expect users to operate first. This focus is * especially important for users who must use a keyboard to * navigate your application." */ gtk_widget_grab_focus(selfp->type_combo); self_update_name_sensitivity(self); self_update_delay_sensitivity(self); g_signal_connect(self, "response", G_CALLBACK(self_response_h), NULL); } private void setup_type_combo (self) { GtkCellRenderer *renderer; selfp->store = gtk_list_store_new(N_COLUMNS, MN_TYPE_MAILBOX_PROPERTIES, G_TYPE_STRING, G_TYPE_STRING); self_add_type(self, MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES); #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED self_add_type(self, MN_TYPE_SYSTEM_VFS_MAILBOX_PROPERTIES); #endif #if WITH_POP3 self_add_type(self, MN_TYPE_POP3_MAILBOX_PROPERTIES); #endif #if WITH_IMAP self_add_type(self, MN_TYPE_IMAP_MAILBOX_PROPERTIES); #endif #if WITH_GMAIL self_add_type(self, MN_TYPE_GMAIL_MAILBOX_PROPERTIES); #endif #if WITH_YAHOO self_add_type(self, MN_TYPE_YAHOO_MAILBOX_PROPERTIES); #endif #if WITH_HOTMAIL self_add_type(self, MN_TYPE_HOTMAIL_MAILBOX_PROPERTIES); #endif #if WITH_EVOLUTION self_add_type(self, MN_TYPE_EVOLUTION_MAILBOX_PROPERTIES); #endif gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(selfp->store), COLUMN_LABEL, GTK_SORT_ASCENDING); renderer = gtk_cell_renderer_pixbuf_new(); g_object_set(renderer, "stock-size", GTK_ICON_SIZE_MENU, NULL); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->type_combo), renderer, FALSE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(selfp->type_combo), renderer, "stock-id", COLUMN_STOCK_ID, NULL); renderer = gtk_cell_renderer_text_new(); g_object_set(renderer, "xpad", 6, NULL); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->type_combo), renderer, TRUE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(selfp->type_combo), renderer, "text", COLUMN_LABEL, NULL); gtk_combo_box_set_model(GTK_COMBO_BOX(selfp->type_combo), GTK_TREE_MODEL(selfp->store)); } private void response_h (GtkDialog *dialog, int response, gpointer user_data) { Self *self = SELF(dialog); if (response == GTK_RESPONSE_HELP) { int page_number; GtkWidget *page; const char *section; page_number = gtk_notebook_get_current_page(GTK_NOTEBOOK(self->notebook)); page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self->notebook), page_number); g_assert(page != NULL); section = g_object_get_data(G_OBJECT(page), HELP_SECTION); g_assert(section != NULL); mn_show_help(GTK_WINDOW(self), section); } /* other responses are handled by the client */ } private void add_type (self, GType type (check != 0)) { MNMailboxProperties *properties; MNMailboxPropertiesClass *p_class; GtkTreeIter iter; GSList *l; properties = g_object_new(type, MN_MAILBOX_PROPERTIES_PROP_DIALOG(GTK_WIDGET(self)), NULL); p_class = MN_MAILBOX_PROPERTIES_GET_CLASS(properties); gtk_list_store_append(selfp->store, &iter); gtk_list_store_set(selfp->store, &iter, COLUMN_PROPERTIES, properties, COLUMN_STOCK_ID, p_class->stock_id, COLUMN_LABEL, p_class->combo_label, -1); g_object_connect(properties, "swapped-signal::notify::complete", self_update_complete, self, "swapped-signal::notify::default-name", self_update_default_name, self, "swapped-signal::notify::default-check-delay", self_update_default_check_delay, self, NULL); MN_LIST_FOREACH(l, properties->entries) g_signal_connect_swapped(l->data, "activate", G_CALLBACK(self_entry_activate_h), self); g_object_unref(properties); /* now it belongs to the store */ } private void set_active_properties (self, MN:Mailbox:Properties *properties (check null type)) { gboolean valid; GtkTreeIter iter; MN_TREE_MODEL_FOREACH(valid, &iter, GTK_TREE_MODEL(selfp->store)) { MNMailboxProperties *these_properties; gtk_tree_model_get(GTK_TREE_MODEL(selfp->store), &iter, COLUMN_PROPERTIES, &these_properties, -1); g_object_unref(these_properties); if (these_properties == properties) { gtk_combo_box_set_active_iter(GTK_COMBO_BOX(selfp->type_combo), &iter); break; } } } private MNMailboxProperties * get_active_properties (self) { GtkTreeIter iter; MNMailboxProperties *properties = NULL; if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(selfp->type_combo), &iter)) gtk_tree_model_get(GTK_TREE_MODEL(selfp->store), &iter, COLUMN_PROPERTIES, &properties, -1); return properties; } private MNMailboxProperties * get_properties_by_type (self, const char *type (check null)) { gboolean valid; GtkTreeIter iter; MN_TREE_MODEL_FOREACH(valid, &iter, GTK_TREE_MODEL(selfp->store)) { MNMailboxProperties *properties; MNMailboxPropertiesClass *class; gtk_tree_model_get(GTK_TREE_MODEL(selfp->store), &iter, COLUMN_PROPERTIES, &properties, -1); class = MN_MAILBOX_PROPERTIES_GET_CLASS(properties); if (class->type && ! strcmp(class->type, type)) return properties; g_object_unref(properties); } return NULL; } private MNMailboxProperties * get_properties_by_g_type (self, GType type (check != 0)) { gboolean valid; GtkTreeIter iter; MN_TREE_MODEL_FOREACH(valid, &iter, GTK_TREE_MODEL(selfp->store)) { MNMailboxProperties *properties; gtk_tree_model_get(GTK_TREE_MODEL(selfp->store), &iter, COLUMN_PROPERTIES, &properties, -1); if (G_TYPE_CHECK_INSTANCE_TYPE(properties, type)) return properties; g_object_unref(properties); } return NULL; } public MNMailbox * get_current_mailbox (self) { MNMailboxProperties *properties; MNMailbox *mailbox; properties = self_get_active_properties(self); mailbox = mn_mailbox_properties_get_mailbox(properties); g_object_unref(properties); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->name_other_radio))) g_object_set(G_OBJECT(mailbox), MN_MAILBOX_PROP_NAME((char *) gtk_entry_get_text(GTK_ENTRY(selfp->name_entry))), NULL); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->delay_other_radio))) g_object_set(G_OBJECT(mailbox), MN_MAILBOX_PROP_CHECK_DELAY(mn_non_linear_range_get_value(GTK_RANGE(selfp->delay_scale))), NULL); return mailbox; } public void apply (self) { MNMailbox *new_mailbox; selfp->apply_used = TRUE; new_mailbox = self_get_current_mailbox(self); g_assert(MN_IS_MAILBOX(new_mailbox)); mn_mailbox_seal(new_mailbox); mn_mailboxes_queue_remove(mn_shell->mailboxes, selfp->mailbox); mn_mailboxes_queue_add(mn_shell->mailboxes, new_mailbox); self_set_mailbox(self, new_mailbox); g_object_unref(new_mailbox); } public void cancel (self) { MNMailbox *orig_mailbox; if (! selfp->apply_used) return; orig_mailbox = mn_mailbox_new_from_configuration(selfp->orig_mailbox_configuration); mn_mailbox_seal(orig_mailbox); mn_mailboxes_queue_remove(mn_shell->mailboxes, selfp->mailbox); mn_mailboxes_queue_add(mn_shell->mailboxes, orig_mailbox); g_object_unref(orig_mailbox); } private void update_complete (self) { MNMailboxProperties *properties; properties = self_get_active_properties(self); if (properties) { gboolean complete; g_object_get(G_OBJECT(properties), MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(&complete), NULL); g_object_unref(properties); if (selfp->apply_button) gtk_widget_set_sensitive(selfp->apply_button, complete); gtk_widget_set_sensitive(selfp->accept_button, complete); } } private void update_name_sensitivity (self) { gtk_widget_set_sensitive(selfp->name_entry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->name_other_radio))); } private void update_delay_sensitivity (self) { gtk_widget_set_sensitive(selfp->delay_scale, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->delay_other_radio))); } private void update_delay_visibility (self) { MNMailboxProperties *properties; gboolean visible = TRUE; properties = self_get_active_properties(self); if (properties) { visible = MN_MAILBOX_PROPERTIES_GET_CLASS(properties)->enable_check_delay; g_object_unref(properties); } if (visible) { if (! g_slist_find(gtk_size_group_get_widgets(selfp->details_size_group), selfp->delay_default_radio)) gtk_size_group_add_widget(selfp->details_size_group, selfp->delay_default_radio); if (! g_slist_find(gtk_size_group_get_widgets(selfp->details_size_group), selfp->delay_other_radio)) gtk_size_group_add_widget(selfp->details_size_group, selfp->delay_other_radio); gtk_widget_show(selfp->delay_vbox); } else { if (g_slist_find(gtk_size_group_get_widgets(selfp->details_size_group), selfp->delay_default_radio)) gtk_size_group_remove_widget(selfp->details_size_group, selfp->delay_default_radio); if (g_slist_find(gtk_size_group_get_widgets(selfp->details_size_group), selfp->delay_other_radio)) gtk_size_group_remove_widget(selfp->details_size_group, selfp->delay_other_radio); gtk_widget_hide(selfp->delay_vbox); } } private void update_default_name (self) { MNMailboxProperties *properties; char *name = NULL; const char *radio_label; properties = self_get_active_properties(self); if (properties) { gboolean complete; g_object_get(G_OBJECT(properties), MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(&complete), NULL); if (complete) g_object_get(G_OBJECT(properties), MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(&name), NULL); g_object_unref(properties); } if (name) radio_label = _("_Default:"); else radio_label = _("_Default"); gtk_button_set_label(GTK_BUTTON(selfp->name_default_radio), radio_label); gtk_label_set_text(GTK_LABEL(selfp->name_default_label), name); g_free(name); } private void update_default_check_delay (self) { MNMailboxProperties *properties; int delay = -1; const char *radio_label; char *delay_str = NULL; properties = self_get_active_properties(self); if (properties) { g_object_get(G_OBJECT(properties), MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(&delay), NULL); g_object_unref(properties); } if (delay != -1) { radio_label = _("D_efault:"); delay_str = mn_format_seconds(delay); } else radio_label = _("D_efault"); gtk_button_set_label(GTK_BUTTON(selfp->delay_default_radio), radio_label); gtk_label_set_text(GTK_LABEL(selfp->delay_default_label), delay_str); g_free(delay_str); } protected void set_help_section (Gtk:Widget *page (check null type), const char *section (check null)) { g_object_set_data_full(G_OBJECT(page), HELP_SECTION, g_strdup(section), g_free); } public GtkWidget * new (GtkWindow *parent, MNMailbox *mailbox) { return GTK_WIDGET(GET_NEW_VARG(MN_MAILBOX_PROPERTIES_DIALOG_PROP_DIALOG_PARENT(parent), MN_MAILBOX_PROPERTIES_DIALOG_PROP_MAILBOX(mailbox), NULL)); } /* libglade callbacks */ protected void type_changed_h (self, GtkComboBox *combobox) { if (selfp->active_properties) { mn_mailbox_properties_deactivate(selfp->active_properties); gtk_size_group_remove_widget(selfp->active_properties->label_size_group, selfp->type_label); g_object_unref(selfp->active_properties); } selfp->active_properties = self_get_active_properties(self); mn_mailbox_properties_activate(selfp->active_properties); gtk_size_group_add_widget(selfp->active_properties->label_size_group, selfp->type_label); if (! selfp->mailbox) /* mode is add */ selected_type = G_OBJECT_TYPE(selfp->active_properties); self_update_complete(self); self_update_delay_visibility(self); self_update_default_name(self); self_update_default_check_delay(self); } protected void name_toggled_h (self, GtkToggleButton *button) { self_update_name_sensitivity(self); } protected void delay_toggled_h (self, GtkToggleButton *button) { self_update_delay_sensitivity(self); } protected char * delay_format_value_h (self, double arg, GtkScale *scale) { return mn_format_seconds(mn_non_linear_range_get_value(GTK_RANGE(scale))); } protected void entry_activate_h (self, GtkEntry *entry) { if (GTK_WIDGET_IS_SENSITIVE(GTK_WINDOW(self)->default_widget)) gtk_window_activate_default(GTK_WINDOW(self)); else { MNMailboxProperties *properties; GtkWidget *next = NULL; GSList *elem; properties = self_get_active_properties(self); g_assert(properties != NULL); elem = g_slist_find(properties->entries, entry); g_assert(elem != NULL); do { elem = elem->next; if (! elem) elem = properties->entries; if (elem->data == entry) break; if (GTK_WIDGET_MAPPED(elem->data) && GTK_WIDGET_VISIBLE(elem->data) && GTK_WIDGET_SENSITIVE(elem->data)) next = elem->data; } while (! next); if (next) gtk_widget_grab_focus(next); g_object_unref(properties); } } } mail-notification-5.4.dfsg.1/src/mn-evolution-plugin.c0000644000175000001440000001532511015312437022541 0ustar evilynuxusers/* * Mail Notification * Copyright (C) 2003-2008 Jean-Yves Lefort * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include #include #include #include #include #include #include "mn-evolution.h" #include "mn-evolution-server.h" #include "mn-evolution-plugin.h" #define ENABLE_SUCCESS 0 #define ENABLE_FAILURE 1 static MNEvolutionServer *evo_server = NULL; static DBusGConnection *session_bus = NULL; static DBusGProxy *session_bus_proxy = NULL; static void show_error_dialog (const char *primary, const char *format, ...) G_GNUC_PRINTF(2, 3); static void show_error_dialog (const char *primary, const char *format, ...) { GtkWidget *dialog; va_list args; char *secondary; g_return_if_fail(primary != NULL); g_return_if_fail(format != NULL); dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", primary); va_start(args, format); secondary = g_strdup_vprintf(format, args); va_end(args); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", secondary); g_free(secondary); gtk_window_set_title(GTK_WINDOW(dialog), ""); /* HIG */ g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL); gtk_widget_show(dialog); } gboolean mn_evolution_plugin_register_server (GObject *server, const char *service, const char *path, GError **err) { unsigned int name_reply; g_return_val_if_fail(G_IS_OBJECT(server), FALSE); g_return_val_if_fail(service != NULL, FALSE); g_return_val_if_fail(path != NULL, FALSE); dbus_g_connection_register_g_object(session_bus, path, server); if (! org_freedesktop_DBus_request_name(session_bus_proxy, service, DBUS_NAME_FLAG_DO_NOT_QUEUE, &name_reply, err)) return FALSE; if (name_reply != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { /* unlikely to ever happen, not worth a translation */ g_set_error(err, 0, 0, "cannot register name \"%s\"", service); return FALSE; } return TRUE; } gboolean mn_evolution_plugin_unregister_server (const char *service, GError **err) { unsigned int name_reply; g_return_val_if_fail(service != NULL, FALSE); if (! org_freedesktop_DBus_release_name(session_bus_proxy, service, &name_reply, err)) return FALSE; if (name_reply != DBUS_RELEASE_NAME_REPLY_RELEASED) { /* unlikely to ever happen, not worth a translation */ g_set_error(err, 0, 0, "cannot unregister name \"%s\"", service); return FALSE; } return TRUE; } static void disable_plugin (void) { g_object_unref(evo_server); evo_server = NULL; /* * Do not unref session_bus_proxy, since it might break when the * DBusGProxy memory management issue is fixed * (https://bugs.freedesktop.org/show_bug.cgi?id=14030). */ session_bus_proxy = NULL; dbus_g_connection_unref(session_bus); session_bus = NULL; } static DBusHandlerResult session_bus_filter_cb (DBusConnection *conn, DBusMessage *message, void *user_data) { if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL, "Disconnected")) { GDK_THREADS_ENTER(); show_error_dialog(dgettext(GETTEXT_PACKAGE, "A fatal error has occurred in the Evolution Mail Notification plugin"), dgettext(GETTEXT_PACKAGE, "The connection to the D-Bus session bus was lost.")); disable_plugin(); GDK_THREADS_LEAVE(); return DBUS_HANDLER_RESULT_HANDLED; } return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } static gboolean connect_to_session_bus (void) { DBusConnection *raw_bus; GError *err = NULL; g_return_val_if_fail(session_bus == NULL, FALSE); session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &err); if (! session_bus) { show_error_dialog(dgettext(GETTEXT_PACKAGE, "Unable to initialize the Mail Notification plugin"), dgettext(GETTEXT_PACKAGE, "Unable to connect to the D-Bus session bus: %s."), err->message); g_error_free(err); return FALSE; } raw_bus = dbus_g_connection_get_connection(session_bus); dbus_connection_set_exit_on_disconnect(raw_bus, FALSE); if (! dbus_connection_add_filter(raw_bus, session_bus_filter_cb, NULL, NULL)) { show_error_dialog(dgettext(GETTEXT_PACKAGE, "Unable to initialize the Mail Notification plugin"), /* too unlikely to be worth a translation */ "Unable to add a D-Bus filter: not enough memory."); dbus_g_connection_unref(session_bus); session_bus = NULL; return FALSE; } session_bus_proxy = dbus_g_proxy_new_for_name(session_bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); return TRUE; } int e_plugin_lib_enable (EPluginLib *ep, int enable) { static gboolean enabled = FALSE; GError *err = NULL; if (! enable || enabled) return ENABLE_SUCCESS; enabled = TRUE; if (! connect_to_session_bus()) return ENABLE_FAILURE; evo_server = mn_evolution_server_new(); if (! mn_evolution_plugin_register_server(G_OBJECT(evo_server), MN_EVOLUTION_SERVER_SERVICE, MN_EVOLUTION_SERVER_PATH, &err)) { show_error_dialog(dgettext(GETTEXT_PACKAGE, "Unable to initialize the Mail Notification plugin"), dgettext(GETTEXT_PACKAGE, "Unable to register the Mail Notification Evolution D-Bus server: %s."), err->message); g_error_free(err); disable_plugin(); return ENABLE_FAILURE; } return ENABLE_SUCCESS; } void org_jylefort_mail_notification_folder_changed (EPlugin *plugin, EMEventTargetFolder *folder) { if (evo_server) mn_evolution_server_folder_changed(evo_server, folder->uri); } void org_jylefort_mail_notification_message_reading (EPlugin *plugin, EMEventTargetMessage *message) { if (evo_server) { char *url; url = mail_tools_folder_to_url(message->folder); mn_evolution_server_message_reading(evo_server, url); g_free(url); } } mail-notification-5.4.dfsg.1/ui/0000755000175000001440000000000011015313040016254 5ustar evilynuxusersmail-notification-5.4.dfsg.1/ui/mailbox-properties-dialog.glade0000644000175000001440000005463410760747035024375 0ustar evilynuxusers 5 False GDK_WINDOW_TYPE_HINT_DIALOG False True 2 True 5 True 12 18 True 6 True 0 <span weight="bold">General</span> True True 12 True 6 True 12 True 0 Mailbox _type: True type_combo False False True 1 1 False False True General tab False True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 18 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 <span weight="bold">Mailbox Name</span> True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK _Default True 0 True True False False True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 1 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK _Other: True 0 True True name_default_radio False False True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True 1 1 1 False False True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 <span weight="bold">Delay Between Mail Checks</span> True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK D_efault True 0 True True False False True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 1 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 0 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK O_ther: True 0 True True delay_default_radio False False True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 0 100 1 10 0 0 GTK_POS_BOTTOM 1 1 1 False False 1 1 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Details tab 1 False 1 True GTK_BUTTONBOX_END False GTK_PACK_END mail-notification-5.4.dfsg.1/ui/properties-dialog.glade0000644000175000001440000011104010760747071022725 0ustar evilynuxusers 5 Mail Notification Properties GDK_WINDOW_TYPE_HINT_DIALOG False True 2 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 5 6 True True True 12 18 True 6 True 0 <span weight="bold">General</span> True False False True 12 True 6 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Play a _sound when new mail arrives: True 0 True False False 1 False False True 6 True 0 <span weight="bold">Mailbox List</span> True False False True 12 True 6 True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN True False False 1 True 6 True True True gtk-add True 0 True True gtk-remove True 0 1 True True gtk-properties True 0 2 False False 2 1 1 True General tab False True 12 18 True 6 True 0 <span weight="bold">Click Action</span> True False False True 12 True 6 True True _Launch the mail reader True 0 True False False True _Open the latest message True 0 True icon_action_mail_reader_radio 1 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Co_nsider new mail as read True 0 True True icon_action_mail_reader_radio 2 True True _Update the mail status True 0 True icon_action_mail_reader_radio False False 3 1 False False 1 True Status Icon tab 1 False True 12 18 True 6 True 0 <span weight="bold">General</span> True False False True 12 True 6 True True _Enable message popups True 0 True False False 1 False False True 6 True 0 <span weight="bold">Position</span> True False False True 12 True 6 True _Attached to the status icon True 0 True True In the p_opup stack True 0 True popups_position_attached_radio 1 1 False False 1 True 6 True 0 <span weight="bold">Expiration</span> True False False True 12 True 6 True De_sktop default True 0 True True message popups tab|_Never True 0 True popups_expiration_default_radio 1 True 12 True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 0 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK A_fter: True 0 True True popups_expiration_default_radio False False True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 0 100 1 10 0 0 GTK_POS_BOTTOM 1 2 1 False False 2 2 True Message Popups tab 2 False True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK _Display test messages True 0 True False False 1 1 True GTK_BUTTONBOX_END False GTK_PACK_END mail-notification-5.4.dfsg.1/README0000644000175000001440000001307410770320041016532 0ustar evilynuxusers=============================================================================== Mail Notification overview =============================================================================== Index 0. About this document 1. About Mail Notification 2. Dependencies 3. Installation instructions 4. Issues in third-party software affecting Mail Notification 0. About this document $Id: README,v 1.45 2008-03-19 23:22:09 jylefort Exp $ Copyright (C) 2003-2008 Jean-Yves Lefort. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.2 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at http://www.gnu.org/licenses/fdl.html or in the file COPYING-DOCS distributed with this manual. 1. About Mail Notification Mail Notification is a status icon (aka tray icon) that informs you if you have new mail. It works with system trays implementing the freedesktop.org System Tray Specification, such as the GNOME Panel Notification Area, the Xfce Notification Area and the KDE System Tray. Mail Notification features include: * multiple mailbox support * Evolution, Gmail, IMAP, Maildir, mbox, MH, Mozilla products (Mozilla, SeaMonkey, Thunderbird, ...), POP3, Sylpheed, Windows Live Hotmail and Yahoo! Mail support * SASL authentication support * APOP authentication support * SSL/TLS support * automatic detection of mailbox format * immediate notification (the status icon is updated immediately or within seconds after a mailbox changes) * message popups * HIG 2.0 compliance 2. Dependencies Mandatory: * GNOME (version 2.14.0 or superior) http://www.gnome.org/ * libnotify (version 0.4.1 or superior) http://www.galago-project.org/ Optional: * for IMAP, Maildir, mbox, MH, Mozilla, POP3, Sylpheed, Windows Live Hotmail and Yahoo! Mail support: GMime (version 2.2.7 or superior) http://spruce.sourceforge.net/gmime/ * for Windows Live Hotmail support: GetLive http://sourceforge.net/projects/getlive/ * for Yahoo! Mail support: FetchYahoo http://fetchyahoo.twizzler.org/ * for SSL/TLS support: OpenSSL (version 0.9.6 or superior) http://www.openssl.org/ * for SASL authentication support: Cyrus SASL (version 2.0 or superior) http://asg.web.cmu.edu/sasl/sasl-library.html * for Evolution support: Evolution (version 2.12 or superior) http://www.gnome.org/projects/evolution/ 3. Installation instructions To configure, build and install Mail Notification, use the following commands: ./jb configure ./jb build sudo ./jb install Note that a number of settings can be passed to the configure stage, for instance: ./jb configure prefix=/opt cflags=-O3 pop3=no For details, use: ./jb help For more informations about JB (the Jean-Yves Lefort's Build System), read jbsrc/lib/README. Note to Sylpheed users: if you want more responsive notifications, apply the patch data/sylpheed-locking.diff to Sylpheed and recompile it. 4. Issues in third-party software affecting Mail Notification * Thread-safety bugs in libgnomeui may cause Mail Notification (and other multi-threaded GNOME applications) to crash or hang. http://bugzilla.gnome.org/show_bug.cgi?id=152023 fixed: - FreeBSD port x11-toolkits/libgnomeui >= 2.10.0_1 - libgnomeui CVS >= 20060102 - libgnomeui >= 2.13.2 http://bugzilla.gnome.org/show_bug.cgi?id=312180 fixed: - FreeBSD port x11-toolkits/libgnomeui >= 2.10.1_1 - libgnomeui CVS >= 20060208 - libgnomeui >= 2.15.90 * An infinite loop in GnomeVFS may affect mailboxes which use HTTP authentication (for instance, Gmail mailboxes). http://bugzilla.gnome.org/show_bug.cgi?id=310596 fixed: - GnomeVFS CVS >= 20050724 - GnomeVFS >= 2.11.90 * If GnomeVFS was built with GnuTLS support, a GnomeVFS bug may cause Mail Notification to crash when accessing a mailbox over SSL (for instance, a Gmail mailbox) with GnomeVFS. The crash is accompanied by an error message similar to the following: mail-notification: ath.c:181: _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed. Xlib: unexpected async reply (sequence 0x2cc0)! http://bugzilla.gnome.org/show_bug.cgi?id=172813 fixed: - GnomeVFS CVS >= 20050411 - GnomeVFS >= 2.11.1 * An infinite loop in GnomeVFS may affect mailboxes which use the GnomeVFS bzip2 method. http://bugzilla.gnome.org/show_bug.cgi?id=322652 fixed: - FreeBSD port devel/gnomevfs2 >= 2.12.1.1_4 - GnomeVFS CVS >= 20051201 - GnomeVFS >= 2.13.2 * A bug in GnomeVFS may prevent successful authentication if an username or password contains special characters such as '@'. http://bugzilla.gnome.org/show_bug.cgi?id=89106 fixed: - GnomeVFS CVS >= 20050716 - GnomeVFS >= 2.11.90 * A bug in GnomeVFS may occasionally cause mbox, MH, Maildir and Sylpheed mailbox changes to stay undetected. http://bugzilla.gnome.org/show_bug.cgi?id=341585 fixed: - FreeBSD port devel/gnomevfs2 >= 2.14.1_2 - GnomeVFS >= 2.15.90 * A bug in GnomeVFS causes intermittent Gmail errors when the delay between mail checks is set to a small value. http://bugzilla.gnome.org/show_bug.cgi?id=455972 * Bugs in GnomeVFS may cause various problems with mailboxes accessed through ssh/sftp. http://bugzilla.gnome.org/show_bug.cgi?id=500307 http://bugzilla.gnome.org/show_bug.cgi?id=500533 http://bugzilla.gnome.org/show_bug.cgi?id=500538 mail-notification-5.4.dfsg.1/art/0000755000175000001440000000000011015426706016443 5ustar evilynuxusersmail-notification-5.4.dfsg.1/art/gmail.png0000644000175000001440000000570211015426706020246 0ustar evilynuxusersPNG  IHDR00`n pHYs  tIME:KtEXtCommentCreated with The GIMPd%n 8IDATXýY[lW>sٝymǷNlR84%Ui>* Q$*@3򂄄PO-4D-($͵8qǗm]{ٹ=xc'9ZΞ9KkoLq0Յ 9~uik'+Qde aM0\iM)U.hdiyJ>- c,;hvu1vz߆tE@4ESkڋ)]Ŷ ˵Z03ڍrc;@)rǚqW{0Cݏat5'/e ƧQ"ǢDDb(;8Y)aSeMr<EXL;Xp$q mĈH3ܒ朹QLi6Yܾb+vlx!ӲΞ87ן̪J."+,E1S9*4ՉA:a@͹舔YV'44x[b]o[P>dXz?-r۷쮋ʂ Pxu@(Ek`܇&#;ر  GEaWM?y!,,LᕴUY@؛S}=7+a\5Lv4yiH|[(7uǾeC\u۶0p9A,kߐvtֿs*wnD)J8!T+E{4۪~@[Iޥ u7 x)Rć NͶ6u^b$/ېZ,zu#L4HC KQ3ӟDUX,4gpgp-y\6HZOO?U}~}2Ԗf>v/0UT“sVCzZSK"RiQV{fC\R;^Fb?dՊY]cE& xŎT,@XTwE(rCр YG wy?S!9dDj5j7YI,2YLeEC'̑^,޶ş oA `ɚE̅e鱍Q:$"9j$Y `+H=~7R^E'm+O}EfzYָi6#G[DB#h NNܞȃU?jÑZ k{G׷}@ 2FBE8OߝL|qH'b뚂,;0v\aC-Ggn#B[qa$KJ|"5sEk|R2̼wλR4O Nvzc |]&3HvsK`_B>- `({jҕN)I0jMO"x,dMMGɕ|)Y&S s kgn񙴵-f^q()XSٜuV6s{]xV1e$<{h.͝,5PJ!R)FZËG庎\;"9{7mn3*/]cQdkz7H@sۚbv4n̜:6<1786nZ.Hd%Y$Iܙش)Nڔh?1&4$jk"CMH -9QKibMu"l,$umi𺚎,UDk8R 1p!(`O`{Fv 9ǛE =]GۿnEBobT|T)cCأ'ֻIENDB`mail-notification-5.4.dfsg.1/art/scalable/0000755000175000001440000000000011015313027020200 5ustar evilynuxusersmail-notification-5.4.dfsg.1/art/scalable/apps/0000755000175000001440000000000011015313027021143 5ustar evilynuxusersmail-notification-5.4.dfsg.1/art/scalable/apps/mail-notification.svg0000644000175000001440000004162010523136345025306 0ustar evilynuxusers image/svg+xml Mail Notification 3.11.2006 Josef Vybíral http://blog.vybiral.info http://blog.vybiral.info/2006/11/04/tango-friday-november-3rd/ mail notification notification e-mail mailbox mail-notification-5.4.dfsg.1/art/48x48/0000755000175000001440000000000011015313027017231 5ustar evilynuxusersmail-notification-5.4.dfsg.1/art/48x48/apps/0000755000175000001440000000000011015313027020174 5ustar evilynuxusersmail-notification-5.4.dfsg.1/art/48x48/apps/mail-notification.png0000644000175000001440000000345210522671554024332 0ustar evilynuxusersPNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATh]pWnlؐ/ЎՂiXb2F|Ԫ3qJ:Ԥ8` i@[Ez’MI7zf7dn[̌ggyyB)J oxۀHy TRu|B.Pq~_)a4+!BwRs/v,_+peWn6?QsiR&/w} <9{rvPqȧ얃LnYmry匜}De!, MK8` Ҷ 0*F67n85 HbD"y;7c E,%H09;E8A@Q*VŋA8ܸp0TC mc.Km0sz uұ{~b.} 8{Q^^K)++'di;y;wnٍa)AN%>=ɱGeYċavl߉+P@qT=qfK"G㱈F|FlnZd-!](S`0H`&LLƙX!zK`޾M8"_Yzdo߹M`&ZmmXGBx޻|*++ilhDUBP%҉$Q al-'nDyYP((Ss_czzM?WaծD%TBJK˨F(Ruuէbq$KKK@`cj|4-oYK ;jj-k"8nP߀eygy*JOO/?{ 3{:KV_ -ęjhII RʔA<ܻn>fY^F#\kSL"x'8|Uyo:].4McCM-w:UkY*qS%ДR92 q>\ tO~Ol-Jҭ 5LMc)< ,/ o8#ccmKV|>UPlpSXXBϾc۱ymU ? z}E@KPf3M3"κCl! NEW)s @ȗI(FB< /$ $SJeQJŠRYpIENDB`mail-notification-5.4.dfsg.1/art/32x32/0000755000175000001440000000000011015313027017213 5ustar evilynuxusersmail-notification-5.4.dfsg.1/art/32x32/apps/0000755000175000001440000000000011015313027020156 5ustar evilynuxusersmail-notification-5.4.dfsg.1/art/32x32/apps/mail-notification.png0000644000175000001440000000247610522672666024326 0ustar evilynuxusersPNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATXŗoU?cЖ6}!FĖGW`iAR"ʿ#? ?-(PTE"hEA@-ݭm-$'wΙ{9PJ(M>oV<ՎR~T! Qy*>j|RVش,Tj/3ZQ(埴hƵO 0MKJٚH'5q#ar`2+W>aY]M)uuQfԩ#͝P(ĝNի F3MTFf 2^<u x;G-[4*:*F ToR8 Tq;a7KPUUgѪpQ櫪BJQgu+*++0˖,_[4Btxg聖u4˲0%71V<Ez'#͛7@$m3!wII,-ydf222xfq idA[[,RRR ۨxm,]w4o0}Zӧ0eY\rPY*RT4ocb.]nGawA4ɟ8(WLyr 'Nty)  v}#ǪB)BIIOn0t^ BH$R#>il R _#8IENDB`mail-notification-5.4.dfsg.1/art/hotmail.png0000644000175000001440000000527210665366112020620 0ustar evilynuxusersPNG  IHDR''Q5bKGD pHYs   ZIDATX͘{PSWǿ.yH! (1Pjk}tҊC[ۮݲtNcvnQ֕eNwv,Uvk4< !@yKB^g&;̝ܜ{9{s~?G,ԃt"R @@8/^B78BH1 ɔ244dt$BN\bPEEuEE~8BAeLy ۷o?m޼9N@YqSuuu`J_Z,X"GVgg9s$d*)9L"QgnZ,kmͽݝ6D$Qv\h4mfn.`|/^\]]]MhGʵ9YE*eHLtZA7zmW4;7#Fד =E3!D@W__rΝ#@*~hm*-/.PBgw׭n ޼t?VGjkk՗(݋ !` gVY md {3^SAԶ< `wB9Kͬ9>õ7o@m{y'Ք-*k2cڸ_jy9ihhPlڴs}2`0Ty@ EQ/=Zkjj5Cnn G~}|.kuO嬯 L(z%;A' HL2@xG7_oݷozB(EQ~H[˔.]mjjr2Rzi L6 n7r_Opt P{!PQ(6n}~*.]x{ynl P=ӠnE׭B:z(.Xlv.ٻwo^m1:::F;i)^huF+(i3S&[1}3'ocU@ixc4]httt_f @RԤ/^YU1;G,S&E Ȅ&AŃx=V,T͝V4/6Zn2)riVUn8* @ ˲,ы8F춄fd<0zޝጵGLz?S5鿈 KD:daY6@JfcX @VR/EřxmY}xZ[QXH>YJ=,l ! @v)FREBᖌ+/8ք}x+8MQ% B_(HhRMgbm4Jl]{XX&y}-q9 )9K6Њr"6knfjJ%C|tRHKnցiݟnڼy|^20ǓDD" @@$L6/~浩gO?-Cif4)4OH$4DoB3yd@[;w5&>0zd4qXNAa''J#܃/03Y}䌝ՙ$  ]p8Igxf.1 r<$>DW!~5O8]ynj}yYpp£,^im,,V{ZI$.HӴQ v@86ߦJ<`Y`Շ!+G@8vvF5MA(BjpꃫO>R'_զ163]PKQi߬}'k0Q Y7U-͞ X[{ΖڽW:.5 33 !mmmODkc p~'-֪/V$=M)* UB zzz-/nzGε\ms^_0|W8_0L\\Ֆ/nlyOOBH!DU [tY楗^%iteW,^\ɚ!4p(?0zMEVclY Ji?ϵtO:B`Ug5[|K&FMKPE7R()VJiScvҁ?i W(pR )}FclHn(+iƔoZ`!K7 c |]$exxLɕHH89._$p8B3:l N?SW~ǭ~]TtOJ)8Bz1'kWoqb /24\Em"=lJ._#O`fzx߾bHǢj3NAsgcx8nN 3S^!Lo㓘<=r]1 "ߖR?XY|)e"d@9IENDB`mail-notification-5.4.dfsg.1/art/logo.png0000644000175000001440000003024210110004167020076 0ustar evilynuxusersPNG  IHDRLbKGD pHYs  d_tIME7 IDATx}{dwu=wvvvwvw$Jyژ ^%+rmK8BR8I٩C0I<% %!V3}g:͞9}~{vUuͫ9yBP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( nE-Pϻc_~Wli'{ȅ\zӬiu_g7`iUJ~$=u3 C.OP+&]Kde6:$NF#FGHTϯP޻K;;%{##|#Ioz=\X]<8n~PFY.J~bq$,$INV..sk'$I?ѫH @%B1)/.xYg$Dv CKE+BSGQ)_ HgHvέ6w<_8,p! ڸ_=bݗ\\\g<ֲ yS%b؄Þ%vx^ny$$IѯX ODBZ+ߠq{w?phDoZ_mPN6^ܿ\ucAO]OɯR>KrfP, ,Ia}J|$Iq61Tϯ)R5%9)&V_0Oe[G?Z^\F6J/,vǗDZHI#^W(IDP)OI%Loˉ'Irn0li#y3 Zk'y$o3 &^)_.%/Cd+.Q6/=I H74dV߆y_=Jr; ɩr)ȶ뺮#M"6ﺞD|)gwvZ%,S~J]dChN<=zw[Bny2s"Iһ8]iϦK;=xwٕ!]?|?or>٭}6+C|)ȓ7kV߉є>#fP6v< g$;8 1&s 2 gg}373?wq_iwMmq<,n;=焖O#pˮ5BǤh "=_1mL(] !OK`A5%G6Fy_M(]>SYow9"b7/\'I8~JKEc$|^S|'_wbkKhi߾!>'o9a>Y?UDt#&I5QR|!%yoY26!2ek5k{cIK;-Eyb~/51%d7у&J,*M7hf~ܐBu~<)M?t`(fgJ~QėmbלI>K$&lpUe'5 !3yJ^Wѥ*Sv.>i;mm7`^Ӭ?_6Jx#Io.]Ä~(a#''-s3"8׾+%ldmw&j}:d%dzi [ks⛹gKB̆d/ã.d:;yr EsRߵ}&\^ǶiWo jݜ> ‡V^%!mȗ{+wB?36o{\>pauE"->dɺ W..;+!lLG_YD%x(g&Iبb^W U"}wJ?Ϭ7477^¡\ۄm;}IfgLpɯlN;,3JAcwC̲ggƤ({VN|0 $F|cJ~Oq"JįjAߖy(dn04T |sy"n d1^wY BeC< 3OQ$|_久3rۆvxym=TGbH豟wy2aorHԳ%%k(/Iҷvof qшD8+Cn2E ^Pd~rM]X]#xWL<ҹG⋪$VwSwPYY3o C~$H%*"CBC<͐аODүlODIJ` >F!(r!2ڷk"⣃?*$_tCOJ$1Tc8.%2p|F#LR|;.mI< 'OAy\OqOݗy|]FwOY>)ϻN-?x܇G+j ě{U󞮊 r!y~6vsI?@7 S~S+hqt羽q|ɾ]J.C!1yep|< weݏ!iߵ% w) Owy8~ɳg?m$VW?wґeEB)ơz,7W{UWf_:}}o`7b±ܹI16b`E+Ό\e$m^_diW{mN?m5n576IҚ0~ҿ1]Ϊ?dA+ta#1xV[c8^]}tsKnm),ZVbX?$r^]~%?*jZa!&iU4%巙HCjS ")m }_'3V!ܟ7<I>H/ŏҞpVH#K 8I@0٩tc}㻞[+ F_0ѫ$Ojz=,? v#K1;PϟS I1][l\U9ȗj>ۛ&bm$}!mlExOc.?)rzx.~LN饞dA&7! ¾aiXypC`|nqVޟS|yDcMJi>RCji=_"$}W@^pf`"Nq$PGCCiS47~{:.CzI)߲USLRbg^!՝m!+/Rjd\X]J_5KÄSdJ7p%cVа T}@ X\Sgq8mT(לp$|$o8$i?Pg &$5[uz=#BWY:+~[ت2Kتw2_''Igy")4ZfQ܀L{nD2q>X?:eZ}G7߬J8zOt6o\9KfB|.Cc}K"y͗n=+u(b>$I?Z8؝`Y@]B|Ӿ+ᓒ|!CpmweOlWD?*ٿc77&I"clc!F !]Iۧ[w]rS:H%QYgNzQzUpx^zI|z뤲Ol}ܹ<+i>qa582<,p50}No_'R%ymb?ώIGNhGBCC>\TհRKNHʥ<{YŸ6{^+$S?,R*^g ^!Ra0|$B$b*߁CX:tqyQz4}j?IyH U.|[(CIoS U6_w|V+K!]IB:\\n'G !>W/yBU@U~Rnȶ˟@:ʫ}=mm!kpU1ҿlo3"E{IB)$ģ]r߶}Ϥ;H^ <ȵh6g++K[)BhBm^!>]Zu~wn4*+{ŏz_ \A17%7t!1e X?4η*5I5:f~jQ%}H83/A(RRӷo#<5Xy|.s3N?]5J';$*[w[5@:L،75`!rXҕK?w<Oرc=ŭ"mw쫽1z~3cojb{W*y!BXpdikPIEQ`ݻf;K+so}L'|leIp3 /cۗAgo'3w[hĹg~7xk~Ο'pWTT{7lyzJB/˜|EMqǟ&666/->}ݹ9u~˭}+߱4BwF`1?5tGb$o tDHBB['[Qaa440;]!&Zj@n#MS 8p<~3Dj\V`d8(EflȩD7U\ H#ƶ$+eXrE@C^gS1;gtP133ZZwoE4Mw"bMtJ|)9*I[Ԓ'vTJE fk$7F6[DK#Q(O U|q[߂{333xޅe,,, cx9666pa,,,[oÑ#Gb}%%un;Uq9)>O'] !t")G62F+=k}n?>O?o t^_?!nvDnyG A^O%{_Vh|NMR{<2СP(r=WADVC }5x;߉3g~GlQg^,1>}* &MFZVPrHFĢ+6I?9s_UW]'x>Zk1;@?$cX\)ߏE<ii>EfoN|6pRև1#$YF[:34x~y7t#g}~ccc.afffď8z(=S#2??W|./Rd+?+xy*ywqy_oX$$~W[(Zȹnǫ 0 qln'N+_臈133|x __nó>[}V nW| zPodvvU-VQ#un<2h9pA|׾ Mwn'j 8њI> Ov?t4*lW_5ex\fq[ތ_x?AǸri_~qѣٻw/{cF~mq<\`.T /|qzh2j IT6uܷ^\k喛pݵڳØ=y/<轾-'y\,?~<ʸ]U^wH]Gr #޽wp` ۷xū^D|_/ 4?)4z>7"8z(HǏrWoYSOYnqsOl#ĉسg(B^G7H/Wҏ\/ψԒ_]-Ô{[IW+r U%+Y}>K|07<#Ǐݖֶ%033~4Zk6H[!!IQxA:l%8?wi՗'J5Urd/`/Z}LOLeZW}s{ 29_6EQ%v{~ď~d+rDE8|0݋׽ ޿oljF|Bo<8^I?GQ'Q Ueu~п7hu{$/K^_!I>01FmRKy:ecmm ÷q}҅U޵{߁C!ck '<Zݓ!n}?q8>;WR 죎% )1!hZx/K^t$ɞ_}^l}^S_?7I2 Dj\b3o4bq5\%)7z]hlOc?(U>ZsdJ~WϺ2uYM=L{J0b=RCm#$"ݠʽ/ o#{ozA!-w q]˺#a׵6»&;dU\@~Z9ۂl"'0.H̶ܼ;^s.5dܺ@uwIy[YuOZ &yppGg^D2[ZJ_u{\ HU^6NBv\6V:=&CsEB7I}q۲ 9Ck锟Mj!\!UEk 庼;ߗ$K8촬6$7UdDϥJAjyϖK 00nOi +YgA8Ax[םͣ:\3W_$2}|e,Bϼs7ґYeݾ@jm㱮.%>{os{R?Ϲ/ڦ;( 5vJnWjB?L6-ΓgR됻amoR^t)w !8H[hͫ;mN~uw7 w%.t?Ė$rD-[VY4/e3ߟ$鋳n:LRfԫ {t `i?47"!D':eSOBɮ|Jo3߿al?)UݜSVν:5xt^yIScBv-ZLؕ7 Crt$kmoWO"^t|MS0//}t|_- >t]eq?\$';d, JxW,ߟt):_^z~3צ޿T Y ;v<#yMhln^lҟs3qg#:˗Pfuoګ`/|$w: LʛtZ+o뤓VLMW_Iϗ{$e?PQ I%v >Ny%b=?S|%Hґߙw-mb}5u^^eb~4Ld3#|{h6`Jx%bzDOWvg$O7J>d7]ѽt*%Bc~k$o؃I~yck`&Ն@vb>^:%B!iqg?dkeF)eX mGxKP?D'.חx[(3_P@JΕBɮP)72:y}#̩gzuޟzriΈeF^C -;8BɮPPF{JvD6e$L_DH?AO whRNOQ(+j'9 H<]ɮPOkY^\ůSIP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BB;eIENDB`mail-notification-5.4.dfsg.1/art/22x22/0000755000175000001440000000000011015313027017211 5ustar evilynuxusersmail-notification-5.4.dfsg.1/art/22x22/apps/0000755000175000001440000000000011015313027020154 5ustar evilynuxusersmail-notification-5.4.dfsg.1/art/22x22/apps/mail-notification.png0000644000175000001440000000156610522674353024316 0ustar evilynuxusersPNG  IHDRĴl;sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDAT8OlU?~u놲tPmjх1R1r F")%<@B{DXDēc0Ymj.5EM\ -.ͼ|䉪=y3TEK)QtuoGkUk{z"(0;1yرS@W`UM(gE!r(\A !0&ytju:Lj 8s*\_}ro4=}fZD}{kHuUquԏj ˄aX9ǥo/2 hrM95:U/|Z1^嵍q>ywY`0xZ1؇&ّQ"8֭gv>"҈RYy:C,~Tt_lUVM?<~|x<ή>8룐 7ܱXx A5"J0"olgvn~.Jm HTK!b|UXIg;TwWmI80T:odvkcꄺ&*'N8g/x&"]n.ATiZ|Íjo=.~^0Sz:IENDB`mail-notification-5.4.dfsg.1/art/yahoo.png0000644000175000001440000000363110665303503020272 0ustar evilynuxusersPNG  IHDR00WbKGD pHYs  9IDAThmXS' $ .DDH}a; eUY/\n:]B;7aՊ Љ0E BN(-!vW?)羟9y9 @1{v16޵T{.M)Jt͟6٭hy QpE<*e0#`@Z<\}k8iEN c^ 76Ӈ~bff>urus؛AA O!Au2f4bapB"F_(Ert>b2'?V2= 8]:y985xB B5y LqH$|wys–۞8V +5fpyNL8ńC?.%z.X- $R ) &r{ĖV0pΘ\.mW(ހcg$;r.]`B .>]ܳ<ɤN-Q׈qsRa?FPG!N?ciz %NYdxG 3O_jd\x~_\Pfm[O?\Ҷk;ls-3ԍ}sj+JpBBȣ!6'ie/<,N w b>sAǨZ4O˗$;}[k˫h6`'z&IUqH(f ˲;<FC@ ~q_,vJS{ >sՎU |^]baO&- R~4V"Y5rSm/33@ӴmX;p۩=5˿pb6,J珖WpӇpXt|=֕d/te}JWv(NS,IBS$19(<Bla7,V:l//OÉcy eLqE ⼯W88%gua}+,h*;& 6il?"hkM:Ȉy9M4ӷN#D >AsWGġwK9N͞QfmYij bjhSuqX0U{\R!^pX%6a1>#N짦:|j~!%{082dY.0y'Ä,ÝROkgдEl5.,Q\CHz~&Yo@f]ty