aboutsummaryrefslogtreecommitdiffstats
path: root/camel
diff options
context:
space:
mode:
authorbertrand <Bertrand.Guiheneuf@aful.org>1999-08-05 00:36:54 +0800
committerBertrand Guiheneuf <bertrand@src.gnome.org>1999-08-05 00:36:54 +0800
commitb92cd47ad5105869b66b2166e2dafecbf8d29c93 (patch)
tree4dbb4d18f49594b603155abd4696e1dc286f99d1 /camel
parent8a9862a5504e3987af99b9a444ca141736051c4d (diff)
downloadgsoc2013-evolution-b92cd47ad5105869b66b2166e2dafecbf8d29c93.tar.gz
gsoc2013-evolution-b92cd47ad5105869b66b2166e2dafecbf8d29c93.tar.zst
gsoc2013-evolution-b92cd47ad5105869b66b2166e2dafecbf8d29c93.zip
finshed implementation (_delete_messages): implemented.
1999-08-04 bertrand <Bertrand.Guiheneuf@aful.org> * camel/providers/MH/camel-mh-folder.c (_delete): finshed implementation (_delete_messages): implemented. svn path=/trunk/; revision=1076
Diffstat (limited to 'camel')
-rw-r--r--camel/camel-stream-fs.c2
-rw-r--r--camel/providers/MH/camel-mh-folder.c101
2 files changed, 92 insertions, 11 deletions
diff --git a/camel/camel-stream-fs.c b/camel/camel-stream-fs.c
index 0e006a28f3..a8e0dcb6c4 100644
--- a/camel/camel-stream-fs.c
+++ b/camel/camel-stream-fs.c
@@ -118,7 +118,7 @@ camel_stream_fs_new_with_name (gchar *name, CamelStreamFsMode mode)
fd = open (name, flags, 0600);
if (fd==-1) {
- CAMEL_LOG_FULL_DEBUG ( "CamelStreamFs::new_with_name can not obtain fd for file \"%s\"\n", name);
+ CAMEL_LOG_WARNING ( "CamelStreamFs::new_with_name can not obtain fd for file \"%s\"\n", name);
CAMEL_LOG_FULL_DEBUG ( " Full error text is : %s\n", strerror(errno));
return NULL;
}
diff --git a/camel/providers/MH/camel-mh-folder.c b/camel/providers/MH/camel-mh-folder.c
index 206636578b..8027be95b6 100644
--- a/camel/providers/MH/camel-mh-folder.c
+++ b/camel/providers/MH/camel-mh-folder.c
@@ -21,14 +21,17 @@
* USA
*/
-#include "camel-mh-folder.h"
-#include "camel-mh-store.h"
-#include "gstring-util.h"
-#include <sys/stat.h>
+#include <sys/stat.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
-
+#include <dirent.h>
+#include <stdio.h>
+#include <errno.h>
+#include "camel-mh-folder.h"
+#include "camel-mh-store.h"
+#include "gstring-util.h"
+#include "camel-log.h"
static CamelFolderClass *parent_class=NULL;
@@ -42,6 +45,8 @@ static void _set_name(CamelFolder *folder, const gchar *name);
static void _init_with_store (CamelFolder *folder, CamelStore *parent_store);
static gboolean _exists (CamelFolder *folder);
static gboolean _create(CamelFolder *folder);
+static gboolean _delete (CamelFolder *folder, gboolean recurse);
+static gboolean _delete_messages (CamelFolder *folder);
static void
camel_mh_folder_class_init (CamelMhFolderClass *camel_mh_folder_class)
@@ -55,6 +60,8 @@ camel_mh_folder_class_init (CamelMhFolderClass *camel_mh_folder_class)
camel_folder_class->init_with_store = _init_with_store;
camel_folder_class->set_name = _set_name;
camel_folder_class->exists = _exists;
+ camel_folder_class->delete = _delete;
+ camel_folder_class->delete_messages = _delete_messages;
}
@@ -159,7 +166,7 @@ _exists (CamelFolder *folder)
static gboolean
-_create(CamelFolder *folder)
+_create (CamelFolder *folder)
{
CamelMhFolder *mh_folder = CAMEL_MH_FOLDER(folder);
const gchar *directory_path;
@@ -188,19 +195,93 @@ _delete (CamelFolder *folder, gboolean recurse)
CamelMhFolder *mh_folder = CAMEL_MH_FOLDER(folder);
const gchar *directory_path;
- gint rmdir_error;
-
+ gint rmdir_error = 0;
+
g_assert(folder);
/* call default implementation */
parent_class->delete (folder, recurse);
-
+ /* the default implementation will care about deleting
+ messages first and recursing the operation if
+ necessary */
+
directory_path = mh_folder->directory_path;
if (!directory_path) return FALSE;
if (!camel_folder_exists (folder)) return TRUE;
-
+ /* physically delete the directory */
+ CAMEL_LOG_FULL_DEBUG ("CamelMhFolder::delete removing directory %s\n", directory_path);
rmdir_error = rmdir (directory_path);
+ if (rmdir_error == -1) {
+ CAMEL_LOG_FULL_WARNING ("CamelMhFolder::delete Error when removing directory %s\n", directory_path);
+ CAMEL_LOG_FULL_DEBUG ( " Full error text is : %s\n", strerror(errno));
+ }
+
+ return (rmdir_error != -1);
+}
+
+
+static gboolean
+_delete_messages (CamelFolder *folder)
+{
+
+ CamelMhFolder *mh_folder = CAMEL_MH_FOLDER(folder);
+ const gchar *directory_path;
+ struct stat stat_buf;
+ gint stat_error = 0;
+ GList *file_list;
+ gchar *entry_name;
+ struct dirent *dir_entry;
+ gint unlink_error = 0;
+ DIR *dir_handle;
+
+ g_assert(folder);
+
+ /* call default implementation */
+ parent_class->delete_messages (folder);
+
+ directory_path = mh_folder->directory_path;
+ if (!directory_path) return FALSE;
+
+ if (!camel_folder_exists (folder)) return TRUE;
+
+ dir_handle = opendir (directory_path);
+
+ /* read first entry in the directory */
+ dir_entry = readdir (dir_handle);
+ while ((stat_error != -1) && (unlink_error != -1) && (dir_entry != NULL)) {
+
+ /* get the name of the next entry in the dir */
+ entry_name = dir_entry->d_name;
+ stat_error = stat (mh_folder->directory_path, &stat_buf);
+
+ /* is it a regular file ? */
+ if ((stat_error != -1) && S_ISREG(stat_buf.st_mode)) {
+ /* yes, delete it */
+ CAMEL_LOG_FULL_DEBUG ("CamelMhFolder::delete_messages removing file %s\n", entry_name);
+ unlink_error = unlink(entry_name);
+
+ if (unlink_error == -1) {
+ CAMEL_LOG_FULL_WARNING ("CamelMhFolder::delete_messages Error when deleting file %s\n", entry_name);
+ CAMEL_LOG_FULL_DEBUG ( " Full error text is : %s\n", strerror(errno));
+ }
+ }
+ /* read next entry */
+ dir_entry = readdir (dir_handle);
+ }
+
+ closedir (dir_handle);
+
+ return ((stat_error != -1) && (unlink_error != -1));
}
+
+
+
+
+
+
+
+
+
409'>409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576
<?xml version="1.0"?>
<GTK-Interface>

<project>
  <name>Message Composer</name>
  <program_name>e-msg-composer</program_name>
  <directory></directory>
  <source_directory>src</source_directory>
  <pixmaps_directory>pixmaps</pixmaps_directory>
  <language>C</language>
  <gnome_support>True</gnome_support>
  <gettext_support>True</gettext_support>
  <use_widget_names>False</use_widget_names>
  <output_main_file>True</output_main_file>
  <output_support_files>True</output_support_files>
  <output_build_files>True</output_build_files>
  <backup_source_files>True</backup_source_files>
  <main_source_file>interface.c</main_source_file>
  <main_header_file>interface.h</main_header_file>
  <handler_source_file>callbacks.c</handler_source_file>
  <handler_header_file>callbacks.h</handler_header_file>
  <support_source_file>support.c</support_source_file>
  <support_header_file>support.h</support_header_file>
  <translatable_strings_file></translatable_strings_file>
</project>

<widget>
  <class>GnomeApp</class>
  <name>app1</name>
  <title>Message Composer</title>
  <type>GTK_WINDOW_TOPLEVEL</type>
  <position>GTK_WIN_POS_NONE</position>
  <modal>False</modal>
  <allow_shrink>False</allow_shrink>
  <allow_grow>True</allow_grow>
  <auto_shrink>False</auto_shrink>
  <enable_layout_config>True</enable_layout_config>

  <widget>
    <class>GnomeDock</class>
    <child_name>GnomeApp:dock</child_name>
    <name>dock1</name>
    <allow_floating>True</allow_floating>
    <child>
      <padding>0</padding>
      <expand>True</expand>
      <fill>True</fill>
    </child>

    <widget>
      <class>GnomeDockItem</class>
      <name>dockitem1</name>
      <border_width>2</border_width>
      <placement>GNOME_DOCK_TOP</placement>
      <band>0</band>
      <position>0</position>
      <offset>0</offset>
      <locked>False</locked>
      <exclusive>True</exclusive>
      <never_floating>False</never_floating>
      <never_vertical>True</never_vertical>
      <never_horizontal>False</never_horizontal>
      <shadow_type>GTK_SHADOW_OUT</shadow_type>

      <widget>
    <class>GtkMenuBar</class>
    <name>menubar</name>
    <shadow_type>GTK_SHADOW_NONE</shadow_type>

    <widget>
      <class>GtkMenuItem</class>
      <name>file</name>
      <stock_item>GNOMEUIINFO_MENU_FILE_TREE</stock_item>

      <widget>
        <class>GtkMenu</class>
        <name>file_menu</name>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>open</name>
          <signal>
        <name>activate</name>
        <handler>on_open_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:25:08 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_OPEN_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>save</name>
          <signal>
        <name>activate</name>
        <handler>on_save_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:25:13 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_SAVE_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>save_as</name>
          <signal>
        <name>activate</name>
        <handler>on_save_as_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:25:16 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_SAVE_AS_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>save_in_folder</name>
          <signal>
        <name>activate</name>
        <handler>on_save_in_folder_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:25:20 GMT</last_modification_time>
          </signal>
          <label>Save in _Folder...</label>
          <right_justify>False</right_justify>
          <stock_icon>GNOME_STOCK_MENU_SAVE_AS</stock_icon>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>separator8</name>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>menu_send</name>
          <signal>
        <name>activate</name>
        <handler>on_send_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:25:29 GMT</last_modification_time>
          </signal>
          <label>S_end</label>
          <right_justify>False</right_justify>
          <stock_icon>GNOME_STOCK_MENU_MAIL_SND</stock_icon>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>postpone</name>
          <signal>
        <name>activate</name>
        <handler>on_postpone_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:25:37 GMT</last_modification_time>
          </signal>
          <label>_Postpone</label>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>separator1</name>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>exit</name>
          <signal>
        <name>activate</name>
        <handler>on_exit_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:25:59 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_EXIT_ITEM</stock_item>
        </widget>
      </widget>
    </widget>

    <widget>
      <class>GtkMenuItem</class>
      <name>edit</name>
      <stock_item>GNOMEUIINFO_MENU_EDIT_TREE</stock_item>

      <widget>
        <class>GtkMenu</class>
        <name>edit_menu</name>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>undo</name>
          <signal>
        <name>activate</name>
        <handler>on_undo_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:26:10 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_UNDO_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>redo</name>
          <signal>
        <name>activate</name>
        <handler>on_redo_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:26:15 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_REDO_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>separator3</name>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>cut</name>
          <signal>
        <name>activate</name>
        <handler>on_cut_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:26:21 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_CUT_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>copy</name>
          <signal>
        <name>activate</name>
        <handler>on_copy_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:26:26 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_COPY_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>paste</name>
          <signal>
        <name>activate</name>
        <handler>on_paste_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:26:31 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_PASTE_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>separator2</name>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>select_all</name>
          <signal>
        <name>activate</name>
        <handler>on_select_all_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:26:37 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_SELECT_ALL_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>separator5</name>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>find</name>
          <signal>
        <name>activate</name>
        <handler>on_find_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:26:42 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_FIND_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>find_again</name>
          <signal>
        <name>activate</name>
        <handler>on_find_again_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:26:47 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_FIND_AGAIN_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>replace</name>
          <signal>
        <name>activate</name>
        <handler>on_replace_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:26:53 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_REPLACE_ITEM</stock_item>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>separator6</name>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>properties</name>
          <signal>
        <name>activate</name>
        <handler>on_properties_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:26:58 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_PROPERTIES_ITEM</stock_item>
        </widget>
      </widget>
    </widget>

    <widget>
      <class>GtkMenuItem</class>
      <name>view1</name>
      <stock_item>GNOMEUIINFO_MENU_VIEW_TREE</stock_item>

      <widget>
        <class>GtkMenu</class>
        <name>view1_menu</name>

        <widget>
          <class>GtkCheckMenuItem</class>
          <name>menu_view_attachments</name>
          <signal>
        <name>activate</name>
        <handler>on_view_attachments_activate</handler>
        <last_modification_time>Fri, 05 Nov 1999 18:31:16 GMT</last_modification_time>
          </signal>
          <label>Attachments</label>
          <active>False</active>
          <always_show_toggle>False</always_show_toggle>
        </widget>
      </widget>
    </widget>

    <widget>
      <class>GtkMenuItem</class>
      <name>insert</name>
      <label>_Insert</label>
      <right_justify>False</right_justify>

      <widget>
        <class>GtkMenu</class>
        <name>insert_menu</name>

        <widget>
          <class>GtkMenuItem</class>
          <name>menu_add_attachment</name>
          <signal>
        <name>activate</name>
        <handler>on_attachment_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:27:05 GMT</last_modification_time>
          </signal>
          <label>Attachment...</label>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>text_from_file</name>
          <signal>
        <name>activate</name>
        <handler>on_text_from_file_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:27:16 GMT</last_modification_time>
          </signal>
          <label>Text from file...</label>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>separator6</name>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>hypertext_link</name>
          <signal>
        <name>activate</name>
        <handler>on_hypertext_link_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:27:21 GMT</last_modification_time>
          </signal>
          <label>Hypertext link...</label>
          <right_justify>False</right_justify>
        </widget>
      </widget>
    </widget>

    <widget>
      <class>GtkMenuItem</class>
      <name>settings</name>
      <stock_item>GNOMEUIINFO_MENU_SETTINGS_TREE</stock_item>

      <widget>
        <class>GtkMenu</class>
        <name>settings_menu</name>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>preferences</name>
          <signal>
        <name>activate</name>
        <handler>on_preferences_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:27:37 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_PREFERENCES_ITEM</stock_item>
        </widget>
      </widget>
    </widget>

    <widget>
      <class>GtkMenuItem</class>
      <name>tools</name>
      <label>_Tools</label>
      <right_justify>False</right_justify>

      <widget>
        <class>GtkMenu</class>
        <name>tools_menu</name>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>spell_check1</name>
          <signal>
        <name>activate</name>
        <handler>on_spell_check_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:27:44 GMT</last_modification_time>
          </signal>
          <label>_Spell check</label>
          <right_justify>False</right_justify>
          <stock_icon>GNOME_STOCK_MENU_SPELLCHECK</stock_icon>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>separator7</name>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkMenuItem</class>
          <name>check_names</name>
          <signal>
        <name>activate</name>
        <handler>on_check_names_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:27:49 GMT</last_modification_time>
          </signal>
          <label>Check names</label>
          <right_justify>False</right_justify>
        </widget>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>address_book</name>
          <signal>
        <name>activate</name>
        <handler>on_address_book_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:27:53 GMT</last_modification_time>
          </signal>
          <label>Address book...</label>
          <right_justify>False</right_justify>
          <stock_icon>GNOME_STOCK_MENU_BOOK_RED</stock_icon>
        </widget>
      </widget>
    </widget>

    <widget>
      <class>GtkMenuItem</class>
      <name>help</name>
      <stock_item>GNOMEUIINFO_MENU_HELP_TREE</stock_item>

      <widget>
        <class>GtkMenu</class>
        <name>help_menu</name>

        <widget>
          <class>GtkPixmapMenuItem</class>
          <name>about</name>
          <signal>
        <name>activate</name>
        <handler>on_about_activate</handler>
        <last_modification_time>Wed, 27 Oct 1999 22:28:01 GMT</last_modification_time>
          </signal>
          <stock_item>GNOMEUIINFO_MENU_ABOUT_ITEM</stock_item>
        </widget>
      </widget>
    </widget>
      </widget>
    </widget>

    <widget>
      <class>GnomeDockItem</class>
      <name>dockitem2</name>
      <border_width>1</border_width>
      <placement>GNOME_DOCK_TOP</placement>
      <band>1</band>
      <position>0</position>
      <offset>0</offset>
      <locked>False</locked>
      <exclusive>True</exclusive>
      <never_floating>False</never_floating>
      <never_vertical>False</never_vertical>
      <never_horizontal>False</never_horizontal>
      <shadow_type>GTK_SHADOW_OUT</shadow_type>

      <widget>
    <class>GtkToolbar</class>
    <name>toolbar</name>
    <border_width>1</border_width>
    <orientation>GTK_ORIENTATION_HORIZONTAL</orientation>
    <type>GTK_TOOLBAR_BOTH</type>
    <space_size>16</space_size>
    <space_style>GTK_TOOLBAR_SPACE_LINE</space_style>
    <relief>GTK_RELIEF_NONE</relief>
    <tooltips>True</tooltips>

    <widget>
      <class>GtkButton</class>
      <child_name>Toolbar:button</child_name>
      <name>toolbar_send</name>
      <tooltip>Send this message</tooltip>
      <label>Send</label>
      <stock_pixmap>GNOME_STOCK_PIXMAP_MAIL_SND</stock_pixmap>
    </widget>

    <widget>
      <class>GtkToggleButton</class>
      <child_name>Toolbar:button</child_name>
      <name>toolbar_view_attachments</name>
      <tooltip>Show attachments for this message</tooltip>
      <label>Show
attachments</label>
      <active>False</active>
    </widget>

    <widget>
      <class>GtkButton</class>
      <child_name>Toolbar:button</child_name>
      <name>toolbar_add_attachment</name>
      <tooltip>Attach a file</tooltip>
      <label>Attach
file</label>
    </widget>
      </widget>
    </widget>

    <widget>
      <class>Placeholder</class>
      <child_name>GnomeDock:contents</child_name>
    </widget>
  </widget>

  <widget>
    <class>GnomeAppBar</class>
    <child_name>GnomeApp:appbar</child_name>
    <name>appbar</name>
    <has_progress>True</has_progress>
    <has_status>True</has_status>
    <child>
      <padding>0</padding>
      <expand>True</expand>
      <fill>True</fill>
    </child>
  </widget>
</widget>

</GTK-Interface>