nautilus r14205 - in trunk: . src src/file-manager
- From: cneumair svn gnome org
- To: svn-commits-list gnome org
- Subject: nautilus r14205 - in trunk: . src src/file-manager
- Date: Wed, 28 May 2008 19:11:09 +0000 (UTC)
Author: cneumair
Date: Wed May 28 19:11:09 2008
New Revision: 14205
URL: http://svn.gnome.org/viewvc/nautilus?rev=14205&view=rev
Log:
2008-05-28 Christian Neumair <cneumair gnome org>
* src/file-manager/fm-ditem-page.c (build_table), (create_page),
(fm_ditem_page_create_begin), (fm_ditem_page_make_box),
(fm_ditem_page_should_show):
* src/file-manager/fm-ditem-page.h:
* src/file-manager/fm-properties-window.c (create_basic_page):
* src/nautilus-application.c (finish_startup):
Display launcher editables on "Basic" page. Get rid of "Launcher" page.
Modified:
trunk/ChangeLog
trunk/src/file-manager/fm-ditem-page.c
trunk/src/file-manager/fm-ditem-page.h
trunk/src/file-manager/fm-properties-window.c
trunk/src/nautilus-application.c
Modified: trunk/src/file-manager/fm-ditem-page.c
==============================================================================
--- trunk/src/file-manager/fm-ditem-page.c (original)
+++ trunk/src/file-manager/fm-ditem-page.c Wed May 28 19:11:09 2008
@@ -32,16 +32,10 @@
#include <libgnomeui/gnome-uidefs.h>
#include <libnautilus-extension/nautilus-extension-types.h>
#include <libnautilus-extension/nautilus-file-info.h>
-#include <libnautilus-extension/nautilus-property-page-provider.h>
#include <libnautilus-private/nautilus-file.h>
#include <libnautilus-private/nautilus-file-attributes.h>
#include <libgnome/gnome-desktop-item.h>
-static void fm_ditem_page_instance_init (FMDitemPage *provider);
-static void fm_ditem_page_class_init (FMDitemPageClass *class);
-
-static GObjectClass *parent_class;
-
typedef struct ItemEntry {
const char *field;
const char *description;
@@ -206,8 +200,8 @@
static GtkWidget *
build_table (GnomeDesktopItem *item,
- GList *entries,
- int length) {
+ GtkSizeGroup *label_size_group,
+ GList *entries) {
GtkWidget *table;
GtkWidget *label;
GtkWidget *entry;
@@ -215,18 +209,21 @@
const char *val;
int i;
- table = gtk_table_new (length, 2, FALSE);
+ table = gtk_table_new (g_list_length (entries) + 1, 2, FALSE);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 6);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 12);
i = 0;
for (l = entries; l; l = l->next) {
ItemEntry *item_entry = (ItemEntry *)l->data;
char *label_text;
- label_text = g_strdup_printf ("<b>%s:</b>", item_entry->description);
+ label_text = g_strdup_printf ("%s:", item_entry->description);
label = gtk_label_new (label_text);
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
g_free (label_text);
- gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_size_group_add_widget (label_size_group, label);
entry = gtk_entry_new ();
@@ -241,10 +238,10 @@
gtk_table_attach (GTK_TABLE (table), label,
0, 1, i, i+1, GTK_FILL, GTK_FILL,
- 4, 4);
+ 0, 0);
gtk_table_attach (GTK_TABLE (table), entry,
1, 2, i, i+1, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL,
- 4, 4);
+ 0, 0);
g_signal_connect (entry, "activate",
G_CALLBACK (entry_activate_cb),
item);
@@ -279,6 +276,13 @@
i++;
}
+ /* append dummy row */
+ label = gtk_label_new ("");
+ gtk_table_attach (GTK_TABLE (table), label,
+ 0, 1, i, i+1, GTK_FILL, GTK_FILL,
+ 0, 0);
+ gtk_size_group_add_widget (label_size_group, label);
+
gtk_widget_show_all (table);
return table;
@@ -300,13 +304,11 @@
{
GtkWidget *table;
GList *entries;
+ GtkSizeGroup *label_size_group;
GnomeDesktopItemType item_type;
- GtkLabel *label;
entries = NULL;
- label = g_object_get_data (G_OBJECT (box), "label");
-
item_type = gnome_desktop_item_get_entry_type (item);
if (item_type == GNOME_DESKTOP_ITEM_TYPE_LINK) {
@@ -319,7 +321,6 @@
entries = g_list_prepend (entries,
item_entry_new (GNOME_DESKTOP_ITEM_GENERIC_NAME,
_("Description"), TRUE, FALSE));
- gtk_label_set_text (label, _("Link"));
} else if (item_type == GNOME_DESKTOP_ITEM_TYPE_APPLICATION) {
entries = g_list_prepend (entries,
item_entry_new (GNOME_DESKTOP_ITEM_COMMENT,
@@ -330,10 +331,11 @@
entries = g_list_prepend (entries,
item_entry_new (GNOME_DESKTOP_ITEM_GENERIC_NAME,
_("Description"), TRUE, FALSE));
- gtk_label_set_text (label, _("Launcher"));
} else {
/* we only handle launchers and links */
- return;
+
+ /* ensure that we build an empty table with a dummy row at the end */
+ goto build_table;
}
gnome_desktop_item_ref (item);
@@ -341,7 +343,11 @@
g_object_weak_ref (G_OBJECT (box),
box_weak_cb, item);
- table = build_table (item, entries, 2);
+
+build_table:
+ label_size_group = g_object_get_data (G_OBJECT (box), "label-size-group");
+
+ table = build_table (item, label_size_group, entries);
g_list_free (entries);
gtk_box_pack_start (GTK_BOX (box), table, FALSE, TRUE, 0);
@@ -385,8 +391,7 @@
}
static void
-fm_ditem_page_create_begin (FMDitemPage *page,
- const char *uri,
+fm_ditem_page_create_begin (const char *uri,
GtkWidget *box)
{
GFile *location;
@@ -397,96 +402,44 @@
g_object_unref (location);
}
-static GList *
-fm_ditem_page_get_pages (NautilusPropertyPageProvider *provider,
- GList *files)
+GtkWidget *
+fm_ditem_page_make_box (GtkSizeGroup *label_size_group,
+ GList *files)
{
- GList *pages;
- NautilusPropertyPage *page;
NautilusFileInfo *info;
char *uri;
GtkWidget *box;
- GtkWidget *label;
- if (!files || files->next) {
- return NULL;
- }
+ g_assert (fm_ditem_page_should_show (files));
- info = NAUTILUS_FILE_INFO (files->data);
+ box = gtk_vbox_new (FALSE, 6);
+ g_object_set_data_full (G_OBJECT (box), "label-size-group",
+ label_size_group, (GDestroyNotify) g_object_unref);
- if (!nautilus_file_info_is_mime_type (info, "application/x-desktop")) {
- return NULL;
- }
+ info = NAUTILUS_FILE_INFO (files->data);
- box = gtk_vbox_new (FALSE, 6);
- label = gtk_label_new ("");
- g_object_set_data (G_OBJECT (box), "label", label);
-
uri = nautilus_file_info_get_uri (info);
- fm_ditem_page_create_begin (FM_DITEM_PAGE (provider),
- uri, box);
+ fm_ditem_page_create_begin (uri, box);
g_free (uri);
-
- page = nautilus_property_page_new ("Desktop Item Page",
- label,
- box);
-
-
- pages = g_list_prepend (NULL, page);
- return pages;
+ return box;
}
-static void
-fm_ditem_page_property_page_provider_iface_init (NautilusPropertyPageProviderIface *iface)
+gboolean
+fm_ditem_page_should_show (GList *files)
{
- iface->get_pages = fm_ditem_page_get_pages;
-}
-
-static void
-fm_ditem_page_instance_init (FMDitemPage *provider)
-{
-}
+ NautilusFileInfo *info;
-static void
-fm_ditem_page_class_init (FMDitemPageClass *class)
-{
- parent_class = g_type_class_peek_parent (class);
-}
+ if (!files || files->next) {
+ return FALSE;
+ }
-GType
-fm_ditem_page_get_type (void)
-{
- static GType provider_type = 0;
-
- if (!provider_type) {
- const GTypeInfo type_info = {
- sizeof (FMDitemPageClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) fm_ditem_page_class_init,
- NULL,
- NULL,
- sizeof (FMDitemPage),
- 0,
- (GInstanceInitFunc) fm_ditem_page_instance_init,
- };
-
- const GInterfaceInfo property_page_provider_iface_info = {
- (GInterfaceInitFunc) fm_ditem_page_property_page_provider_iface_init,
- NULL,
- NULL
- };
-
- provider_type = g_type_register_static (G_TYPE_OBJECT,
- "FMDitemPage",
- &type_info, 0);
+ info = NAUTILUS_FILE_INFO (files->data);
- g_type_add_interface_static (provider_type,
- NAUTILUS_TYPE_PROPERTY_PAGE_PROVIDER,
- &property_page_provider_iface_info);
+ if (!nautilus_file_info_is_mime_type (info, "application/x-desktop")) {
+ return FALSE;
}
- return provider_type;
+ return TRUE;
}
Modified: trunk/src/file-manager/fm-ditem-page.h
==============================================================================
--- trunk/src/file-manager/fm-ditem-page.h (original)
+++ trunk/src/file-manager/fm-ditem-page.h Wed May 28 19:11:09 2008
@@ -24,25 +24,23 @@
#ifndef FM_DITEM_PAGE_H
#define FM_DITEM_PAGE_H
+#include <glib.h>
#include <glib-object.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
-#define FM_TYPE_DITEM_PAGE (fm_ditem_page_get_type ())
-#define FM_DITEM_PAGE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), FM_TYPE_DITEM_PAGE, FMDitemPage))
-#define FM_IS_DITEM_PAGE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), FM_TYPE_DITEM_PAGE))
-typedef struct _FMDitemPage FMDitemPage;
-typedef struct _FMDitemPageClass FMDitemPageClass;
-
-struct _FMDitemPage {
- GObject parent_slot;
-};
-
-struct _FMDitemPageClass {
- GObjectClass parent_slot;
-};
-
-GType fm_ditem_page_get_type (void);
+/* This is a mis-nomer. Launcher editables initially were displayed on separate
+ * a property notebook page, which implemented the NautilusPropertyPageProvider
+ * interface.
+ *
+ * Nowadays, they are displayed on the "Basic" page, so just the setup
+ * routines are left.
+ */
+
+GtkWidget *fm_ditem_page_make_box (GtkSizeGroup *label_size_group,
+ GList *files);
+gboolean fm_ditem_page_should_show (GList *files);
G_END_DECLS
Modified: trunk/src/file-manager/fm-properties-window.c
==============================================================================
--- trunk/src/file-manager/fm-properties-window.c (original)
+++ trunk/src/file-manager/fm-properties-window.c Wed May 28 19:11:09 2008
@@ -24,6 +24,7 @@
#include <config.h>
#include "fm-properties-window.h"
+#include "fm-ditem-page.h"
#include "fm-error-reporting.h"
#include "libnautilus-private/nautilus-mime-application-chooser.h"
@@ -3224,6 +3225,25 @@
gtk_widget_grab_focus (GTK_WIDGET (window->details->name_field));
}
+ if (fm_ditem_page_should_show (window->details->target_files)) {
+ GtkSizeGroup *label_size_group;
+ GtkWidget *box;
+
+ row = append_row (table);
+
+ label_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+ gtk_size_group_add_widget (label_size_group,
+ GTK_WIDGET (window->details->name_label));
+ box = fm_ditem_page_make_box (label_size_group,
+ window->details->target_files);
+
+ gtk_table_attach (window->details->basic_table, box,
+ TITLE_COLUMN, VALUE_COLUMN + 1,
+ row, row + 1,
+ GTK_FILL, 0,
+ 0, 0);
+ }
+
if (should_show_file_type (window)) {
append_title_value_pair (window,
table, _("Type:"),
Modified: trunk/src/nautilus-application.c
==============================================================================
--- trunk/src/nautilus-application.c (original)
+++ trunk/src/nautilus-application.c Wed May 28 19:11:09 2008
@@ -29,7 +29,6 @@
#include "nautilus-application.h"
-#include "file-manager/fm-ditem-page.h"
#include "file-manager/fm-desktop-icon-view.h"
#include "file-manager/fm-icon-view.h"
#include "file-manager/fm-list-view.h"
@@ -421,8 +420,6 @@
/* initialize nautilus modules */
nautilus_module_init ();
- nautilus_module_add_type (FM_TYPE_DITEM_PAGE);
-
/* attach menu-provider module callback */
menu_provider_init_callback ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]