This file is indexed.

/usr/include/bakery-2.6/bakery/App/App_WithDoc.h is in libbakery-2.6-dev 2.6.3-0ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/*
 * Copyright 2000 Murray Cumming
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library 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
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#ifndef BAKERY_APP_WITHDOC_H
#define BAKERY_APP_WITHDOC_H

#include <bakery/App/App.h>
#include <bakery/Document/Document.h>

namespace Bakery
{

/** Main Window which supports documents.
 *
 * This is an abstract class. You must use a class such as App_WithDoc_Gtk, which implements
 * the ui_* methods for a particular GUI toolkit.
 
 * Features:
 * - 1 document per application instance. Uses Document-derived class polymorphically.
 * - Override init_create_document() to create new blank document.
 * - Appropriate Default handling of document open, save, save as.
 * - Appropriate checking of document 'modified' status - asks user about unsaved changes.
 * - Asks user about overwriting existing documents.
 * - Override methods to add/change menus/toolbars/statusbar.
 *   - Default is basic File, Edit, Help menus and toolbar icons.
 * - Shows document name (or 'untitled') in window title.
 * - Shows * in title bar for unsaved docs. Overridable to e.g. shade a Save icon.
 * - Enforces a file extension.
 * - Recent Documents menu item - if you use add_mime_type().
 *
 *
 * TODO:
 * - Printing -?
 *  - Print Setup
 *  - Print Preview
 *  - Multiple document-types:
 *  - File/New sub menu
 *  - Some way to associate a view with a document type: class factory.
 */
class App_WithDoc : virtual public App //virtual because App_WithDoc_Gtk will inherit it via App_With_Doc and via App_Gtk.
{
public: 
  ///Don't forget to call init() too.
  App_WithDoc(const Glib::ustring& appname = ""); //TODO: appname when using get_derived_widget()

  virtual ~App_WithDoc();

  virtual void init(); //overridden to create document.

  enum enumSaveChanges
  {
    SAVECHANGES_Save,
    SAVECHANGES_Cancel,
    SAVECHANGES_Discard
  };

  static bool file_exists(const Glib::ustring& uri);

protected:
  virtual void init_create_document(); //override this to new() the specific document type.

  /** Add a MIME-type that this application can support.
   * You should also register the MIME-type when the application is installed:
   * See http://freedesktop.org/Standards/AddingMIMETutor
   */
  static void add_mime_type(const Glib::ustring& mime_type);

  ///static_cast<> or dynamic_cast<> this pointer to the correct type.
  virtual Document* get_document();

  ///static_cast<> or dynamic_cast<> this pointer to the correct type.
  virtual const Document* get_document() const ;

  virtual void set_document_modified(bool bModified = true);

  /** Open the document from a file at a URI.
   * This will check whether the document is already open.
   * @result true indicates success.
   */
  virtual bool open_document(const Glib::ustring& file_uri);

  //This cannot be virtual, because that would break our ABI.
  //Hopefully that is not necessary.
  /** Open the document using the supplied document contents.
   * Unlike open_document(), this has no way to know whether the document is already open.
   * @param data A pointer to the bytes of the document contents.
   * @param length The number of bytes in the data.
   * @result true indicates success.
   */
  bool open_document_from_data(const guchar* data, std::size_t length);

  virtual void document_history_add(const Glib::ustring& file_uri);
  virtual void document_history_remove(const Glib::ustring& file_uri);

public:
  // We can not take function pointers of these methods in 
  // a derived class if they are protected - for instance, with sigc::mem_fun()
  //Signal handlers:

  //Menu items:
  virtual void on_menu_file_open();
  virtual void on_menu_file_saveas(); //signal handler.
  virtual void offer_saveas(); //For direct use.
  virtual void on_menu_file_save(); //signal handler.
  virtual void on_menu_file_close();

  virtual void on_menu_edit_copy();
  virtual void on_menu_edit_paste();
  virtual void on_menu_edit_clear();

protected:
  //Document:

  ///Update visual status.
  virtual void on_document_modified(bool modified);

  ///override this to show document contents.
  virtual bool on_document_load();

  virtual void offer_to_save_changes();

  ///Stop the File|Close or the File|Exit.
  virtual void cancel_close_or_exit();

  ///destroy it or mark it for destruction.
  virtual void close_mark_or_destroy();

  virtual void update_window_title();

  virtual void after_successful_save(); //e.g. disable File|Save.

  virtual void ui_warning(const Glib::ustring& text, const Glib::ustring& secondary_text) = 0;
  virtual Glib::ustring ui_file_select_open(const Glib::ustring& ui_file_select_open = Glib::ustring()) = 0;

  /** Present a user interface that allows the user to select a location to save the file.
   * @param old_file_uri The existing URI of the file, if any.
   * @result The URI of the file chosen by the user.
   */
  virtual Glib::ustring ui_file_select_save(const Glib::ustring& old_file_uri) = 0;

  virtual void ui_show_modification_status() = 0;

  virtual enumSaveChanges ui_offer_to_save_changes() = 0;

  static Glib::ustring get_conf_fullkey(const Glib::ustring& key);

  //Document:
  Document* m_pDocument; //An instance of a derived type.
  bool m_bCloseAfterSave;

  //Mime types which this application can load and save:
  typedef std::list<Glib::ustring> type_list_strings;
  static type_list_strings m_mime_types;
};

} //namespace

#endif //BAKERY_APP_WITHDOC_H