diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2005-07-04 11:58:16 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-07-04 11:58:16 (GMT) |
commit | 19be09f257f9250cb45fa96e05ab16d6e9ff7ba9 (patch) | |
tree | dfdad6d80601449e9100e423e9b92d8241ebcbf5 | |
parent | b7abdba401b7aec50e93ecd1df1ce76cb1f315c1 (diff) |
Split the properties pages in two different objects, depend only on the
2005-07-04 Marco Pesenti Gritti <mpg@redhat.com>
* Makefile.am:
* configure.ac:
* data/evince-properties.glade:
* properties/.cvsignore:
* properties/Makefile.am:
* properties/ev-properties-view.c: (ev_properties_view_dispose),
(ev_properties_view_class_init), (ev_properties_view_format_date),
(make_valid_utf8), (set_property), (ev_properties_view_set_info),
(ev_properties_view_init), (ev_properties_view_new):
* properties/ev-properties-view.h:
* shell/Makefile.am:
* shell/ev-properties-dialog.c: (ev_properties_dialog_class_init),
(ev_properties_dialog_init), (ev_properties_dialog_set_document),
(ev_properties_dialog_new):
* shell/ev-properties-dialog.h:
* shell/ev-properties-fonts.c: (ev_properties_fonts_dispose),
(ev_properties_fonts_class_init), (ev_properties_fonts_init),
(update_progress_label), (job_fonts_finished_cb),
(ev_properties_fonts_set_document), (ev_properties_fonts_new):
* shell/ev-properties-fonts.h:
* shell/ev-properties.c:
* shell/ev-properties.h:
* shell/ev-window.c: (ev_window_setup_document),
(ev_window_cmd_file_properties):
Split the properties pages in two different objects, depend
only on the backend where possible, use widgets instead
of gobject for the glade part, reimplement the dialog
itself with gtk.
I need this to implement nautilus properties page.
-rw-r--r-- | ChangeLog | 33 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | data/evince-properties.glade | 1579 | ||||
-rw-r--r-- | properties/.cvsignore | 2 | ||||
-rw-r--r-- | properties/Makefile.am | 15 | ||||
-rw-r--r-- | properties/ev-properties-view.c | 262 | ||||
-rw-r--r-- | properties/ev-properties-view.h | 48 | ||||
-rw-r--r-- | shell/Makefile.am | 8 | ||||
-rw-r--r-- | shell/ev-properties.c | 386 | ||||
-rw-r--r-- | shell/ev-properties.h | 50 | ||||
-rw-r--r-- | shell/ev-window.c | 18 |
12 files changed, 1121 insertions, 1283 deletions
@@ -1,3 +1,36 @@ +2005-07-04 Marco Pesenti Gritti <mpg@redhat.com> + + * Makefile.am: + * configure.ac: + * data/evince-properties.glade: + * properties/.cvsignore: + * properties/Makefile.am: + * properties/ev-properties-view.c: (ev_properties_view_dispose), + (ev_properties_view_class_init), (ev_properties_view_format_date), + (make_valid_utf8), (set_property), (ev_properties_view_set_info), + (ev_properties_view_init), (ev_properties_view_new): + * properties/ev-properties-view.h: + * shell/Makefile.am: + * shell/ev-properties-dialog.c: (ev_properties_dialog_class_init), + (ev_properties_dialog_init), (ev_properties_dialog_set_document), + (ev_properties_dialog_new): + * shell/ev-properties-dialog.h: + * shell/ev-properties-fonts.c: (ev_properties_fonts_dispose), + (ev_properties_fonts_class_init), (ev_properties_fonts_init), + (update_progress_label), (job_fonts_finished_cb), + (ev_properties_fonts_set_document), (ev_properties_fonts_new): + * shell/ev-properties-fonts.h: + * shell/ev-properties.c: + * shell/ev-properties.h: + * shell/ev-window.c: (ev_window_setup_document), + (ev_window_cmd_file_properties): + + Split the properties pages in two different objects, depend + only on the backend where possible, use widgets instead + of gobject for the glade part, reimplement the dialog + itself with gtk. + I need this to implement nautilus properties page. + 2005-07-03 Matthew S. Wilson <msw@rpath.com> * tiff/tiff-document.c (tiff_document_ps_export_begin) diff --git a/Makefile.am b/Makefile.am index 8f0cec1..229a03b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,7 +18,7 @@ endif # Applications -SUBDIRS += shell thumbnailer +SUBDIRS += properties shell thumbnailer intltool_extra = intltool-extract.in intltool-merge.in intltool-update.in diff --git a/configure.ac b/configure.ac index d49fe82..ad43ee6 100644 --- a/configure.ac +++ b/configure.ac @@ -306,6 +306,7 @@ dvi/Makefile dvi/mdvi-lib/Makefile po/Makefile.in backend/Makefile +properties/Makefile shell/Makefile thumbnailer/Makefile help/Makefile diff --git a/data/evince-properties.glade b/data/evince-properties.glade index c18a08f..c33c551 100644 --- a/data/evince-properties.glade +++ b/data/evince-properties.glade @@ -3,871 +3,753 @@ <glade-interface> -<widget class="GtkDialog" id="properties_dialog"> - <property name="border_width">5</property> - <property name="title" translatable="yes">Properties</property> +<widget class="GtkWindow" id="general_page"> + <property name="title" translatable="yes"></property> <property name="type">GTK_WINDOW_TOPLEVEL</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="window_position">GTK_WIN_POS_NONE</property> <property name="modal">False</property> <property name="resizable">True</property> <property name="destroy_with_parent">False</property> <property name="decorated">True</property> <property name="skip_taskbar_hint">False</property> <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="gravity">GDK_GRAVITY_CENTER</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="focus_on_map">True</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox1"> + <child> + <widget class="GtkTable" id="general_page_root"> + <property name="border_width">12</property> <property name="visible">True</property> + <property name="n_rows">12</property> + <property name="n_columns">2</property> <property name="homogeneous">False</property> - <property name="spacing">2</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area1"> + <child> + <widget class="GtkLabel" id="title_caption"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="label" translatable="yes"><b>Title:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> - <child> - <widget class="GtkButton" id="close_button"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-close</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-7</property> - </widget> - </child> + <child> + <widget class="GtkLabel" id="subject_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Subject:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">GTK_PACK_END</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="author_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Author:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="keywords_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Keywords:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="creator_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Creator:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="producer_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Producer:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="created_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Created:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="modified_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Modified:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="security_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Security:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="version_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Format:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">9</property> + <property name="bottom_attach">10</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="pages_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Number of Pages:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">10</property> + <property name="bottom_attach">11</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="optimized_caption"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Optimized:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">11</property> + <property name="bottom_attach">12</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkNotebook" id="notebook2"> - <property name="border_width">5</property> + <widget class="GtkLabel" id="created"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="show_tabs">True</property> - <property name="show_border">True</property> - <property name="tab_pos">GTK_POS_TOP</property> - <property name="scrollable">False</property> - <property name="enable_popup">False</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> - <child> - <widget class="GtkTable" id="table2"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="n_rows">12</property> - <property name="n_columns">2</property> - <property name="homogeneous">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> - - <child> - <widget class="GtkLabel" id="title_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Title:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="subject_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Subject:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="author_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Author:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="keywords_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Keywords:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="creator_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Creator:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="producer_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Producer:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="created_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Created:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="modified_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Modified:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="security_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Security:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">8</property> - <property name="bottom_attach">9</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="version_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Format:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">9</property> - <property name="bottom_attach">10</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="pages_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Number of Pages:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">10</property> - <property name="bottom_attach">11</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="optimized_caption"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Optimized:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">11</property> - <property name="bottom_attach">12</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="created"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="modified"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="security"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">8</property> - <property name="bottom_attach">9</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="version"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">9</property> - <property name="bottom_attach">10</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="pages"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">10</property> - <property name="bottom_attach">11</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="optimized"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">11</property> - <property name="bottom_attach">12</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="producer"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="creator"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="keywords"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="author"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="subject"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="title"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">25</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> - <property name="y_options"></property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> + <child> + <widget class="GtkLabel" id="modified"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> - <child> - <widget class="GtkLabel" id="pdf_properties_label"> - <property name="visible">True</property> - <property name="label" translatable="yes">General</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="type">tab</property> - </packing> - </child> + <child> + <widget class="GtkLabel" id="security"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> - <child> - <widget class="GtkVBox" id="fonts_page"> - <property name="border_width">12</property> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <property name="window_placement">GTK_CORNER_TOP_LEFT</property> - - <child> - <widget class="GtkTreeView" id="fonts_treeview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">False</property> - <property name="reorderable">False</property> - <property name="enable_search">True</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="font_progress_label"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> + <child> + <widget class="GtkLabel" id="version"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">9</property> + <property name="bottom_attach">10</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="pages"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">10</property> + <property name="bottom_attach">11</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="optimized"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">11</property> + <property name="bottom_attach">12</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="producer"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="creator"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="keywords"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="author"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="subject"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="title"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_END</property> + <property name="width_chars">25</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="y_options"></property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkWindow" id="fonts_page"> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">False</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + + <child> + <widget class="GtkVBox" id="fonts_page_root"> + <property name="border_width">12</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> <child> - <widget class="GtkLabel" id="label1"> + <widget class="GtkTreeView" id="fonts_treeview"> <property name="visible">True</property> - <property name="label" translatable="yes">Fonts</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">False</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> </widget> - <packing> - <property name="type">tab</property> - </packing> </child> </widget> <packing> @@ -876,6 +758,31 @@ <property name="fill">True</property> </packing> </child> + + <child> + <widget class="GtkLabel" id="font_progress_label"> + <property name="visible">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> </child> </widget> diff --git a/properties/.cvsignore b/properties/.cvsignore new file mode 100644 index 0000000..282522d --- /dev/null +++ b/properties/.cvsignore @@ -0,0 +1,2 @@ +Makefile +Makefile.in diff --git a/properties/Makefile.am b/properties/Makefile.am new file mode 100644 index 0000000..bac8f35 --- /dev/null +++ b/properties/Makefile.am @@ -0,0 +1,15 @@ +NULL= + +INCLUDES= \ + -DDATADIR=\"$(pkgdatadir)\" \ + -I$(top_srcdir)/backend \ + $(SHELL_CFLAGS) \ + $(EVINCE_DISABLE_DEPRECATED) \ + $(NULL) + +noinst_LTLIBRARIES = libevproperties.la + +libevproperties_la_SOURCES= \ + ev-properties-view.c \ + ev-properties-view.h \ + $(NULL) diff --git a/properties/ev-properties-view.c b/properties/ev-properties-view.c new file mode 100644 index 0000000..297cbc5 --- /dev/null +++ b/properties/ev-properties-view.c @@ -0,0 +1,262 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-indent-level: 8 -*- */ +/* this file is part of evince, a gnome document viewer + * + * Copyright (C) 2005 Red Hat, Inc + * + * Evince 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. + * + * Evince 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "ev-properties-view.h" +#include "ev-document-fonts.h" + +#include <glib/gi18n.h> +#include <gtk/gtk.h> +#include <glade/glade.h> +#include <time.h> +#include <sys/time.h> +#include <string.h> + +typedef enum +{ + TITLE_PROPERTY, + SUBJECT_PROPERTY, + AUTHOR_PROPERTY, + KEYWORDS_PROPERTY, + PRODUCER_PROPERTY, + CREATOR_PROPERTY, + CREATION_DATE_PROPERTY, + MOD_DATE_PROPERTY, + N_PAGES_PROPERTY, + LINEARIZED_PROPERTY, + FORMAT_PROPERTY, + SECURITY_PROPERTY +} Property; + +typedef struct +{ + Property property; + const char *label_id; +} PropertyInfo; + +static const PropertyInfo properties_info[] = { + { TITLE_PROPERTY, "title" }, + { SUBJECT_PROPERTY, "subject" }, + { AUTHOR_PROPERTY, "author" }, + { KEYWORDS_PROPERTY, "keywords" }, + { PRODUCER_PROPERTY, "producer" }, + { CREATOR_PROPERTY, "creator" }, + { CREATION_DATE_PROPERTY, "created" }, + { MOD_DATE_PROPERTY, "modified" }, + { N_PAGES_PROPERTY, "pages" }, + { LINEARIZED_PROPERTY, "optimized" }, + { FORMAT_PROPERTY, "version" }, + { SECURITY_PROPERTY, "security" } +}; + +struct _EvPropertiesView { + GtkVBox base_instance; + + GladeXML *xml; +}; + +struct _EvPropertiesViewClass { + GtkVBoxClass base_class; +}; + +G_DEFINE_TYPE (EvPropertiesView, ev_properties_view, GTK_TYPE_VBOX) + +static void +ev_properties_view_dispose (GObject *object) +{ + EvPropertiesView *properties = EV_PROPERTIES_VIEW (object); + + if (properties->xml) { + g_object_unref (properties->xml); + properties->xml = NULL; + } +} + +static void +ev_properties_view_class_init (EvPropertiesViewClass *properties_class) +{ + GObjectClass *g_object_class = G_OBJECT_CLASS (properties_class); + + g_object_class->dispose = ev_properties_view_dispose; +} + +/* Returns a locale specific date and time representation */ +static char * +ev_properties_view_format_date (GTime utime) +{ + time_t time = (time_t) utime; + struct tm t; + char s[256]; + const char *fmt_hack = "%c"; + size_t len; + + if (!localtime_r (&time, &t)) return NULL; + + len = strftime (s, sizeof (s), fmt_hack, &t); + if (len == 0 || s[0] == '\0') return NULL; + + return g_locale_to_utf8 (s, -1, NULL, NULL, NULL); +} + +/* This is cut out of gconvert.c from glib (and mildly modified). Not all + backends give valid UTF-8 for properties, so we make sure that is. + */ +static gchar * +make_valid_utf8 (const gchar *name) +{ + GString *string; + const gchar *remainder, *invalid; + gint remaining_bytes, valid_bytes; + + string = NULL; + remainder = name; + remaining_bytes = strlen (name); + + while (remaining_bytes != 0) + { + if (g_utf8_validate (remainder, remaining_bytes, &invalid)) + break; + valid_bytes = invalid - remainder; + + if (string == NULL) + string = g_string_sized_new (remaining_bytes); + + g_string_append_len (string, remainder, valid_bytes); + g_string_append_c (string, '?'); + + remaining_bytes -= valid_bytes + 1; + remainder = invalid + 1; + } + + if (string == NULL) + return g_strdup (name); + + g_string_append (string, remainder); + + g_assert (g_utf8_validate (string->str, -1, NULL)); + + return g_string_free (string, FALSE); +} + +static void +set_property (GladeXML *xml, Property property, const char *text) +{ + GtkWidget *widget; + char *valid_text; + + widget = glade_xml_get_widget (xml, properties_info[property].label_id); + g_return_if_fail (GTK_IS_LABEL (widget)); + + if (text == NULL || text[0] == '\000') { + gchar *markup; + + markup = g_markup_printf_escaped ("<i>%s</i>", _("None")); + gtk_label_set_markup (GTK_LABEL (widget), markup); + g_free (markup); + + return; + } + text = text ? text : ""; + + valid_text = make_valid_utf8 (text); + + gtk_label_set_text (GTK_LABEL (widget), valid_text); + + g_free (valid_text); +} + +void +ev_properties_view_set_info (EvPropertiesView *properties, const EvDocumentInfo *info) +{ + GladeXML *xml = properties->xml; + char *text; + + if (info->fields_mask & EV_DOCUMENT_INFO_TITLE) { + set_property (xml, TITLE_PROPERTY, info->title); + } + if (info->fields_mask & EV_DOCUMENT_INFO_SUBJECT) { + set_property (xml, SUBJECT_PROPERTY, info->subject); + } + if (info->fields_mask & EV_DOCUMENT_INFO_AUTHOR) { + set_property (xml, AUTHOR_PROPERTY, info->author); + } + if (info->fields_mask & EV_DOCUMENT_INFO_KEYWORDS) { + set_property (xml, KEYWORDS_PROPERTY, info->keywords); + } + if (info->fields_mask & EV_DOCUMENT_INFO_PRODUCER) { + set_property (xml, PRODUCER_PROPERTY, info->producer); + } + if (info->fields_mask & EV_DOCUMENT_INFO_CREATOR) { + set_property (xml, CREATOR_PROPERTY, info->creator); + } + if (info->fields_mask & EV_DOCUMENT_INFO_CREATION_DATE) { + text = ev_properties_view_format_date (info->creation_date); + set_property (xml, CREATION_DATE_PROPERTY, text); + g_free (text); + } + if (info->fields_mask & EV_DOCUMENT_INFO_MOD_DATE) { + text = ev_properties_view_format_date (info->modified_date); + set_property (xml, MOD_DATE_PROPERTY, text); + g_free (text); + } + if (info->fields_mask & EV_DOCUMENT_INFO_FORMAT) { + text = g_strdup_printf ("%s", info->format); + set_property (xml, FORMAT_PROPERTY, text); + } + if (info->fields_mask & EV_DOCUMENT_INFO_N_PAGES) { + text = g_strdup_printf ("%d", info->n_pages); + set_property (xml, N_PAGES_PROPERTY, text); + g_free (text); + } + if (info->fields_mask & EV_DOCUMENT_INFO_LINEARIZED) { + set_property (xml, LINEARIZED_PROPERTY, info->linearized); + } + if (info->fields_mask & EV_DOCUMENT_INFO_SECURITY) { + set_property (xml, SECURITY_PROPERTY, info->security); + } +} + +static void +ev_properties_view_init (EvPropertiesView *properties) +{ + GladeXML *xml; + + /* Create a new GladeXML object from XML file glade_file */ + xml = glade_xml_new (DATADIR "/evince-properties.glade", "general_page_root", NULL); + properties->xml = xml; + g_assert (xml != NULL); + + gtk_box_pack_start (GTK_BOX (properties), + glade_xml_get_widget (xml, "general_page_root"), + TRUE, TRUE, 0); +} + +GtkWidget * +ev_properties_view_new (void) +{ + EvPropertiesView *properties; + + properties = g_object_new (EV_TYPE_PROPERTIES, NULL); + + return GTK_WIDGET (properties); +} diff --git a/properties/ev-properties-view.h b/properties/ev-properties-view.h new file mode 100644 index 0000000..d95520f --- /dev/null +++ b/properties/ev-properties-view.h @@ -0,0 +1,48 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-indent-level: 8 -*- */ +/* this file is part of evince, a gnome document viewer + * + * Copyright (C) 2005 Red Hat, Inc + * + * Evince 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. + * + * Evince 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __EV_PROPERTIES_VIEW_H__ +#define __EV_PROPERTIES_VIEW_H__ + +#include "ev-document-info.h" + +#include <gtk/gtkwidget.h> + +G_BEGIN_DECLS + +typedef struct _EvPropertiesView EvPropertiesView; +typedef struct _EvPropertiesViewClass EvPropertiesViewClass; +typedef struct _EvPropertiesViewPrivate EvPropertiesViewPrivate; + +#define EV_TYPE_PROPERTIES (ev_properties_view_get_type()) +#define EV_PROPERTIES_VIEW(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_PROPERTIES, EvPropertiesView)) +#define EV_PROPERTIES_VIEW_CLASS(klass) (G_TYPE_CHACK_CLASS_CAST((klass), EV_TYPE_PROPERTIES, EvPropertiesViewClass)) +#define EV_IS_PROPERTIES_VIEW(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_PROPERTIES)) +#define EV_IS_PROPERTIES_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), EV_TYPE_PROPERTIES)) +#define EV_PROPERTIES_VIEW_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), EV_TYPE_PROPERTIES, EvPropertiesViewClass)) + +GType ev_properties_view_get_type (void); +GtkWidget *ev_properties_view_new (void); +void ev_properties_view_set_info (EvPropertiesView *properties, + const EvDocumentInfo *info); + +G_END_DECLS + +#endif /* __EV_PROPERTIES_VIEW_H__ */ diff --git a/shell/Makefile.am b/shell/Makefile.am index 71faed5..e4010a9 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -10,6 +10,7 @@ INCLUDES= \ -I$(top_srcdir)/backend \ -I$(top_srcdir)/pdf \ -I$(top_srcdir)/pixbuf \ + -I$(top_srcdir)/properties \ -I$(top_srcdir)/tiff \ -I$(top_srcdir)/ps \ -I$(top_srcdir)/djvu \ @@ -82,8 +83,10 @@ evince_SOURCES= \ ev-pixbuf-cache.h \ ev-print-job.c \ ev-print-job.h \ - ev-properties.c \ - ev-properties.h \ + ev-properties-dialog.c \ + ev-properties-dialog.h \ + ev-properties-fonts.c \ + ev-properties-fonts.h \ ev-utils.c \ ev-utils.h \ ev-view.c \ @@ -117,6 +120,7 @@ evince_LDADD= \ $(top_builddir)/cut-n-paste/zoom-control/libephymisc.la \ $(top_builddir)/cut-n-paste/zoom-control/libephywidgets.la \ $(top_builddir)/cut-n-paste/toolbar-editor/libtoolbareditor.la \ + $(top_builddir)/properties/libevproperties.la \ $(top_builddir)/lib/libev.la \ -ltiff -lz \ libevbackendfactory.la \ diff --git a/shell/ev-properties.c b/shell/ev-properties.c deleted file mode 100644 index d7974c0..0000000 --- a/shell/ev-properties.c +++ /dev/null @@ -1,386 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-indent-level: 8 -*- */ -/* this file is part of evince, a gnome document viewer - * - * Copyright (C) 2005 Red Hat, Inc - * - * Evince 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. - * - * Evince 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "ev-properties.h" -#include "ev-document-fonts.h" -#include "ev-jobs.h" -#include "ev-job-queue.h" -#include "ev-page-cache.h" - -#include <glib/gi18n.h> -#include <gtk/gtk.h> -#include <glade/glade.h> -#include <time.h> -#include <sys/time.h> -#include <string.h> - -enum -{ - FONT_NAME_COL, - NUM_COLS -}; - -typedef enum -{ - TITLE_PROPERTY, - SUBJECT_PROPERTY, - AUTHOR_PROPERTY, - KEYWORDS_PROPERTY, - PRODUCER_PROPERTY, - CREATOR_PROPERTY, - CREATION_DATE_PROPERTY, - MOD_DATE_PROPERTY, - N_PAGES_PROPERTY, - LINEARIZED_PROPERTY, - FORMAT_PROPERTY, - SECURITY_PROPERTY -} Property; - -typedef struct -{ - Property property; - const char *label_id; -} PropertyInfo; - -static const PropertyInfo properties_info[] = { - { TITLE_PROPERTY, "title" }, - { SUBJECT_PROPERTY, "subject" }, - { AUTHOR_PROPERTY, "author" }, - { KEYWORDS_PROPERTY, "keywords" }, - { PRODUCER_PROPERTY, "producer" }, - { CREATOR_PROPERTY, "creator" }, - { CREATION_DATE_PROPERTY, "created" }, - { MOD_DATE_PROPERTY, "modified" }, - { N_PAGES_PROPERTY, "pages" }, - { LINEARIZED_PROPERTY, "optimized" }, - { FORMAT_PROPERTY, "version" }, - { SECURITY_PROPERTY, "security" } -}; - -struct _EvProperties { - GObject base_instance; - - GladeXML *xml; - - GtkWidget *dialog; - GtkWidget *fonts_treeview; - GtkWidget *fonts_progress_label; - GtkWidget *font_page; - - EvDocument *document; -}; - -struct _EvPropertiesClass { - GObjectClass base_class; -}; - -G_DEFINE_TYPE (EvProperties, ev_properties, G_TYPE_OBJECT) - -static void -ev_properties_dispose (GObject *object) -{ - EvProperties *properties = EV_PROPERTIES (object); - - if (properties->xml) { - g_object_unref (properties->xml); - properties->xml = NULL; - } -} - -static void -ev_properties_class_init (EvPropertiesClass *properties_class) -{ - GObjectClass *g_object_class = G_OBJECT_CLASS (properties_class); - - g_object_class->dispose = ev_properties_dispose; -} - -static void -dialog_destroy_cb (GtkWidget *dialog, EvProperties *properties) -{ - g_object_unref (properties); -} - -static void -ev_properties_init (EvProperties *properties) -{ - GladeXML *xml; - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - - /* Create a new GladeXML object from XML file glade_file */ - xml = glade_xml_new (DATADIR "/evince-properties.glade", NULL, NULL); - properties->xml = xml; - g_assert (xml != NULL); - - properties->dialog = glade_xml_get_widget (xml, "properties_dialog"); - properties->fonts_treeview = glade_xml_get_widget (xml, "fonts_treeview"); - properties->fonts_progress_label = glade_xml_get_widget (xml, "font_progress_label"); - properties->font_page = glade_xml_get_widget (xml, "fonts_page"); - - column = gtk_tree_view_column_new (); - gtk_tree_view_column_set_expand (GTK_TREE_VIEW_COLUMN (column), TRUE); - gtk_tree_view_append_column (GTK_TREE_VIEW (properties->fonts_treeview), column); - - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_column_pack_start (GTK_TREE_VIEW_COLUMN (column), renderer, FALSE); - gtk_tree_view_column_set_title (GTK_TREE_VIEW_COLUMN (column), _("Name")); - gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), renderer, - "text", EV_DOCUMENT_FONTS_COLUMN_NAME, - NULL); - - g_signal_connect (properties->dialog, "destroy", - G_CALLBACK (dialog_destroy_cb), properties); -} - -/* Returns a locale specific date and time representation */ -static char * -ev_properties_format_date (GTime utime) -{ - time_t time = (time_t) utime; - struct tm t; - char s[256]; - const char *fmt_hack = "%c"; - size_t len; - - if (!localtime_r (&time, &t)) return NULL; - - len = strftime (s, sizeof (s), fmt_hack, &t); - if (len == 0 || s[0] == '\0') return NULL; - - return g_locale_to_utf8 (s, -1, NULL, NULL, NULL); -} - -/* This is cut out of gconvert.c from glib (and mildly modified). Not all - backends give valid UTF-8 for properties, so we make sure that is. - */ -static gchar * -make_valid_utf8 (const gchar *name) -{ - GString *string; - const gchar *remainder, *invalid; - gint remaining_bytes, valid_bytes; - - string = NULL; - remainder = name; - remaining_bytes = strlen (name); - - while (remaining_bytes != 0) - { - if (g_utf8_validate (remainder, remaining_bytes, &invalid)) - break; - valid_bytes = invalid - remainder; - - if (string == NULL) - string = g_string_sized_new (remaining_bytes); - - g_string_append_len (string, remainder, valid_bytes); - g_string_append_c (string, '?'); - - remaining_bytes -= valid_bytes + 1; - remainder = invalid + 1; - } - - if (string == NULL) - return g_strdup (name); - - g_string_append (string, remainder); - - g_assert (g_utf8_validate (string->str, -1, NULL)); - - return g_string_free (string, FALSE); -} - -static void -set_property (GladeXML *xml, Property property, const char *text) -{ - GtkWidget *widget; - char *valid_text; - - widget = glade_xml_get_widget (xml, properties_info[property].label_id); - g_return_if_fail (GTK_IS_LABEL (widget)); - - if (text == NULL || text[0] == '\000') { - gchar *markup; - - markup = g_markup_printf_escaped ("<i>%s</i>", _("None")); - gtk_label_set_markup (GTK_LABEL (widget), markup); - g_free (markup); - - return; - } - text = text ? text : ""; - - valid_text = make_valid_utf8 (text); - - gtk_label_set_text (GTK_LABEL (widget), valid_text); - - g_free (valid_text); -} - -static void -update_progress_label (GtkWidget *label, double progress) -{ - if (progress > 0) { - char *progress_text; - progress_text = g_strdup_printf (_("Gathering font information... %3d%%"), - (int) (progress * 100)); - gtk_label_set_text (GTK_LABEL (label), progress_text); - g_free (progress_text); - gtk_widget_show (label); - } else { - gtk_widget_hide (label); - } -} - -static void -job_fonts_finished_cb (EvJob *job, EvProperties *properties) -{ - EvDocumentFonts *document_fonts = EV_DOCUMENT_FONTS (job->document); - double progress; - - progress = ev_document_fonts_get_progress (document_fonts); - update_progress_label (properties->fonts_progress_label, progress); - - if (EV_JOB_FONTS (job)->scan_completed) { - g_signal_handlers_disconnect_by_func - (job, job_fonts_finished_cb, properties); - } else { - GtkTreeModel *model; - EvJob *new_job; - - model = gtk_tree_view_get_model - (GTK_TREE_VIEW (properties->fonts_treeview)); - ev_document_doc_mutex_lock (); - ev_document_fonts_fill_model (document_fonts, model); - ev_document_doc_mutex_unlock (); - new_job = ev_job_fonts_new (job->document); - ev_job_queue_add_job (job, EV_JOB_PRIORITY_LOW); - g_object_unref (new_job); - } -} - -static void -setup_fonts_view (EvProperties *properties) -{ - GtkTreeView *tree_view = GTK_TREE_VIEW (properties->fonts_treeview); - GtkListStore *list_store; - EvJob *job; - - list_store = gtk_list_store_new (NUM_COLS, G_TYPE_STRING); - gtk_tree_view_set_model (tree_view, GTK_TREE_MODEL (list_store)); - - job = ev_job_fonts_new (properties->document); - g_signal_connect_object (job, "finished", - G_CALLBACK (job_fonts_finished_cb), - properties, 0); - ev_job_queue_add_job (job, EV_JOB_PRIORITY_LOW); - g_object_unref (job); -} - -void -ev_properties_set_document (EvProperties *properties, - EvDocument *document) -{ - EvPageCache *page_cache; - GladeXML *xml = properties->xml; - const EvDocumentInfo *info; - char *text; - - properties->document = document; - - page_cache = ev_page_cache_get (document); - info = ev_page_cache_get_info (page_cache); - - if (info->fields_mask & EV_DOCUMENT_INFO_TITLE) { - set_property (xml, TITLE_PROPERTY, info->title); - } - if (info->fields_mask & EV_DOCUMENT_INFO_SUBJECT) { - set_property (xml, SUBJECT_PROPERTY, info->subject); - } - if (info->fields_mask & EV_DOCUMENT_INFO_AUTHOR) { - set_property (xml, AUTHOR_PROPERTY, info->author); - } - if (info->fields_mask & EV_DOCUMENT_INFO_KEYWORDS) { - set_property (xml, KEYWORDS_PROPERTY, info->keywords); - } - if (info->fields_mask & EV_DOCUMENT_INFO_PRODUCER) { - set_property (xml, PRODUCER_PROPERTY, info->producer); - } - if (info->fields_mask & EV_DOCUMENT_INFO_CREATOR) { - set_property (xml, CREATOR_PROPERTY, info->creator); - } - if (info->fields_mask & EV_DOCUMENT_INFO_CREATION_DATE) { - text = ev_properties_format_date (info->creation_date); - set_property (xml, CREATION_DATE_PROPERTY, text); - g_free (text); - } - if (info->fields_mask & EV_DOCUMENT_INFO_MOD_DATE) { - text = ev_properties_format_date (info->modified_date); - set_property (xml, MOD_DATE_PROPERTY, text); - g_free (text); - } - if (info->fields_mask & EV_DOCUMENT_INFO_FORMAT) { - text = g_strdup_printf ("%s", info->format); - set_property (xml, FORMAT_PROPERTY, text); - } - if (info->fields_mask & EV_DOCUMENT_INFO_N_PAGES) { - text = g_strdup_printf ("%d", info->n_pages); - set_property (xml, N_PAGES_PROPERTY, text); - g_free (text); - } - if (info->fields_mask & EV_DOCUMENT_INFO_LINEARIZED) { - set_property (xml, LINEARIZED_PROPERTY, info->linearized); - } - if (info->fields_mask & EV_DOCUMENT_INFO_SECURITY) { - set_property (xml, SECURITY_PROPERTY, info->security); - } - - if (EV_IS_DOCUMENT_FONTS (document)) { - gtk_widget_show (properties->font_page); - setup_fonts_view (properties); - } else { - gtk_widget_hide (properties->font_page); - } -} - -EvProperties * -ev_properties_new () -{ - EvProperties *properties; - - properties = g_object_new (EV_TYPE_PROPERTIES, NULL); - - return properties; -} - -void -ev_properties_show (EvProperties *properties, GtkWidget *parent) -{ - gtk_window_set_transient_for (GTK_WINDOW (properties->dialog), - GTK_WINDOW (parent)); - g_signal_connect (properties->dialog, "response", - G_CALLBACK (gtk_widget_destroy), NULL); - gtk_widget_show (properties->dialog); -} diff --git a/shell/ev-properties.h b/shell/ev-properties.h deleted file mode 100644 index 410ed1a..0000000 --- a/shell/ev-properties.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-indent-level: 8 -*- */ -/* this file is part of evince, a gnome document viewer - * - * Copyright (C) 2005 Red Hat, Inc - * - * Evince 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. - * - * Evince 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef __EV_PROPERTIES_H__ -#define __EV_PROPERTIES_H__ - -#include "ev-document.h" - -#include <gtk/gtkwidget.h> - -G_BEGIN_DECLS - -typedef struct _EvProperties EvProperties; -typedef struct _EvPropertiesClass EvPropertiesClass; -typedef struct _EvPropertiesPrivate EvPropertiesPrivate; - -#define EV_TYPE_PROPERTIES (ev_properties_get_type()) -#define EV_PROPERTIES(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_PROPERTIES, EvProperties)) -#define EV_PROPERTIES_CLASS(klass) (G_TYPE_CHACK_CLASS_CAST((klass), EV_TYPE_PROPERTIES, EvPropertiesClass)) -#define EV_IS_PROPERTIES(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_PROPERTIES)) -#define EV_IS_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), EV_TYPE_PROPERTIES)) -#define EV_PROPERTIES_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), EV_TYPE_PROPERTIES, EvPropertiesClass)) - -GType ev_properties_get_type (void); -EvProperties *ev_properties_new (void); -void ev_properties_set_document (EvProperties *properties, - EvDocument *document); -void ev_properties_show (EvProperties *properties, - GtkWidget *parent); - -G_END_DECLS - -#endif /* __EV_PROPERTIES_H__ */ diff --git a/shell/ev-window.c b/shell/ev-window.c index 72b7a38..1c1d835 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -37,7 +37,7 @@ #include "ev-password.h" #include "ev-password-view.h" #include "ev-print-job.h" -#include "ev-properties.h" +#include "ev-properties-dialog.h" #include "ev-document-thumbnails.h" #include "ev-document-links.h" #include "ev-document-fonts.h" @@ -107,7 +107,7 @@ struct _EvWindowPrivate { GtkWidget *sidebar_thumbs; /* Dialogs */ - EvProperties *properties; + GtkWidget *properties; /* UI Builders */ GtkActionGroup *action_group; @@ -668,8 +668,8 @@ ev_window_setup_document (EvWindow *ev_window) update_document_mode (ev_window, info->mode); if (ev_window->priv->properties) { - ev_properties_set_document (ev_window->priv->properties, - ev_window->priv->document); + ev_properties_dialog_set_document (EV_PROPERTIES_DIALOG (ev_window->priv->properties), + ev_window->priv->document); } } @@ -1319,14 +1319,16 @@ static void ev_window_cmd_file_properties (GtkAction *action, EvWindow *ev_window) { if (ev_window->priv->properties == NULL) { - ev_window->priv->properties = ev_properties_new (); - ev_properties_set_document (ev_window->priv->properties, - ev_window->priv->document); + ev_window->priv->properties = ev_properties_dialog_new (); + ev_properties_dialog_set_document (EV_PROPERTIES_DIALOG (ev_window->priv->properties), + ev_window->priv->document); g_object_add_weak_pointer (G_OBJECT (ev_window->priv->properties), (gpointer *) &(ev_window->priv->properties)); + gtk_window_set_transient_for (GTK_WINDOW (ev_window->priv->properties), + GTK_WINDOW (ev_window)); } - ev_properties_show (ev_window->priv->properties, GTK_WIDGET (ev_window)); + gtk_widget_show (ev_window->priv->properties); } static void |