*
* 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.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifdef HAVE_CONFIG_H
GHashTable *icon_cache;
};
-static void ev_sidebar_attachments_page_iface_init (EvSidebarPageIface *iface);
+static void ev_sidebar_attachments_page_iface_init (EvSidebarPageInterface *iface);
G_DEFINE_TYPE_EXTENDED (EvSidebarAttachments,
ev_sidebar_attachments,
GdkEventButton *event,
GtkWidget *icon_view)
{
- if (!GTK_WIDGET_HAS_FOCUS (icon_view)) {
+ if (!gtk_widget_has_focus (icon_view)) {
gtk_widget_grab_focus (icon_view);
}
GtkTreePath *path;
GtkTreeIter iter;
GFile *file;
- gchar *filename;
+ gchar *template;
GError *error = NULL;
path = (GtkTreePath *) l->data;
COLUMN_ATTACHMENT, &attachment,
-1);
- filename = g_build_filename (ev_tmp_dir (),
- ev_attachment_get_name (attachment),
- NULL);
- file = g_file_new_for_path (filename);
- g_free (filename);
+ /* FIXMEchpe: convert to filename encoding first! */
+ template = g_strdup_printf ("%s.XXXXXX", ev_attachment_get_name (attachment));
+ file = ev_mkstemp_file (template, &error);
+ g_free (template);
- if (ev_attachment_save (attachment, file, &error)) {
+ if (file != NULL && ev_attachment_save (attachment, file, &error)) {
gchar *uri;
uri = g_file_get_uri (file);
static void
ev_sidebar_attachments_init (EvSidebarAttachments *ev_attachbar)
{
-#if !GTK_CHECK_VERSION (2, 15, 0)
- const GtkTargetEntry drag_targets[] = {
- { "text/uri-list", 0, 0 }
- };
-#endif
-
GtkWidget *swindow;
ev_attachbar->priv = EV_SIDEBAR_ATTACHMENTS_GET_PRIVATE (ev_attachbar);
g_object_unref);
/* Drag and Drop */
-#if GTK_CHECK_VERSION (2, 15, 0)
gtk_icon_view_enable_model_drag_source (
GTK_ICON_VIEW (ev_attachbar->priv->icon_view),
GDK_BUTTON1_MASK,
NULL, 0,
GDK_ACTION_COPY);
gtk_drag_source_add_uri_targets (ev_attachbar->priv->icon_view);
-#else
- gtk_icon_view_enable_model_drag_source (
- GTK_ICON_VIEW (ev_attachbar->priv->icon_view),
- GDK_BUTTON1_MASK,
- drag_targets,
- G_N_ELEMENTS (drag_targets),
- GDK_ACTION_COPY);
-#endif
g_signal_connect (ev_attachbar->priv->icon_view,
"drag-data-get",
g_object_unref (job);
}
+
static void
-ev_sidebar_attachments_set_document (EvSidebarPage *page,
- EvDocument *document)
+ev_sidebar_attachments_document_changed_cb (EvDocumentModel *model,
+ GParamSpec *pspec,
+ EvSidebarAttachments *ev_attachbar)
{
- EvSidebarAttachments *ev_attachbar = EV_SIDEBAR_ATTACHMENTS (page);
+ EvDocument *document = ev_document_model_get_document (model);
EvJob *job;
+ if (!EV_IS_DOCUMENT_ATTACHMENTS (document))
+ return;
+
+ if (!ev_document_attachments_has_attachments (EV_DOCUMENT_ATTACHMENTS (document)))
+ return;
+
if (!ev_attachbar->priv->icon_theme) {
GdkScreen *screen;
ev_job_scheduler_push_job (job, EV_JOB_PRIORITY_NONE);
}
+static void
+ev_sidebar_attachments_set_model (EvSidebarPage *page,
+ EvDocumentModel *model)
+{
+ g_signal_connect (model, "notify::document",
+ G_CALLBACK (ev_sidebar_attachments_document_changed_cb),
+ page);
+}
+
static gboolean
ev_sidebar_attachments_support_document (EvSidebarPage *sidebar_page,
EvDocument *document)
{
return (EV_IS_DOCUMENT_ATTACHMENTS (document) &&
- ev_document_attachments_has_attachments (document));
+ ev_document_attachments_has_attachments (EV_DOCUMENT_ATTACHMENTS (document)));
}
static const gchar*
}
static void
-ev_sidebar_attachments_page_iface_init (EvSidebarPageIface *iface)
+ev_sidebar_attachments_page_iface_init (EvSidebarPageInterface *iface)
{
iface->support_document = ev_sidebar_attachments_support_document;
- iface->set_document = ev_sidebar_attachments_set_document;
+ iface->set_model = ev_sidebar_attachments_set_model;
iface->get_label = ev_sidebar_attachments_get_label;
}