summaryrefslogtreecommitdiff
path: root/src/file-manager/fm-properties-window.c
diff options
context:
space:
mode:
authorraveit65 <[email protected]>2015-09-30 14:37:10 +0200
committerWolfgang Ulbrich <[email protected]>2015-12-05 03:02:09 +0100
commita0c71663bbcf89db74eeee61cdf6eaf815af2323 (patch)
tree668ec6fe5ba47acb7d803d22fcb3cf6e09b9be18 /src/file-manager/fm-properties-window.c
parentf54aab0e53880c8e8c65d878ffe06e5e941e16e8 (diff)
downloadcaja-a0c71663bbcf89db74eeee61cdf6eaf815af2323.tar.bz2
caja-a0c71663bbcf89db74eeee61cdf6eaf815af2323.tar.xz
GTK3: fm-properties-window, port GtkTable to GtkGrid
taken from: https://git.gnome.org/browse/nautilus/commit/?h=gnome-3-4&id=0026899 https://git.gnome.org/browse/nautilus/commit/?h=gnome-3-4&id=8b99f1f https://git.gnome.org/browse/nautilus/commit/?h=gnome-3-4&id=b4877e5 https://git.gnome.org/browse/nautilus/commit/?h=gnome-3-16&id=0a5838
Diffstat (limited to 'src/file-manager/fm-properties-window.c')
-rw-r--r--src/file-manager/fm-properties-window.c919
1 files changed, 880 insertions, 39 deletions
diff --git a/src/file-manager/fm-properties-window.c b/src/file-manager/fm-properties-window.c
index 183e467d..4ebdeeeb 100644
--- a/src/file-manager/fm-properties-window.c
+++ b/src/file-manager/fm-properties-window.c
@@ -95,9 +95,13 @@ struct FMPropertiesWindowDetails {
GtkNotebook *notebook;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkGrid *basic_grid;
+#else
GtkTable *basic_table;
GtkTable *permissions_table;
gboolean advanced_permissions;
+#endif
GtkWidget *icon_button;
GtkWidget *icon_image;
@@ -150,6 +154,13 @@ struct FMPropertiesWindowDetails {
GdkColor free_stroke_color;
};
+#if GTK_CHECK_VERSION (3, 0, 0)
+typedef enum {
+ PERMISSIONS_CHECKBOXES_READ,
+ PERMISSIONS_CHECKBOXES_WRITE,
+ PERMISSIONS_CHECKBOXES_EXECUTE
+} CheckboxType;
+#else
enum {
PERMISSIONS_CHECKBOXES_OWNER_ROW,
PERMISSIONS_CHECKBOXES_GROUP_ROW,
@@ -163,6 +174,7 @@ enum {
PERMISSIONS_CHECKBOXES_EXECUTE_COLUMN,
PERMISSIONS_CHECKBOXES_COLUMN_COUNT
};
+#endif
enum {
TITLE_COLUMN,
@@ -239,15 +251,22 @@ static gboolean name_field_focus_out (CajaEntry *name_field,
gpointer callback_data);
static void name_field_activate (CajaEntry *name_field,
gpointer callback_data);
+#if GTK_CHECK_VERSION (3, 0, 0)
+static GtkLabel *attach_ellipsizing_value_label (GtkGrid *grid,
+ GtkWidget *sibling,
+#else
static GtkLabel *attach_ellipsizing_value_label (GtkTable *table,
int row,
int column,
+#endif
const char *initial_text);
static GtkWidget* create_pie_widget (FMPropertiesWindow *window);
G_DEFINE_TYPE (FMPropertiesWindow, fm_properties_window, GTK_TYPE_DIALOG);
+#if !GTK_CHECK_VERSION (3, 0, 0)
#define parent_class fm_properties_window_parent_class
+#endif
static gboolean
is_multi_file_window (FMPropertiesWindow *window)
@@ -578,8 +597,14 @@ create_image_widget (FMPropertiesWindow *window,
}
static void
+#if GTK_CHECK_VERSION (3, 0, 0)
+set_name_field (FMPropertiesWindow *window,
+ const gchar *original_name,
+ const gchar *name)
+#else
set_name_field (FMPropertiesWindow *window, const gchar *original_name,
- const gchar *name)
+ const gchar *name)
+#endif
{
gboolean new_widget;
gboolean use_label;
@@ -599,15 +624,27 @@ set_name_field (FMPropertiesWindow *window, const gchar *original_name,
}
if (use_label) {
+#if GTK_CHECK_VERSION (3, 0, 0)
+ window->details->name_field = GTK_WIDGET
+ (attach_ellipsizing_value_label (window->details->basic_grid,
+ GTK_WIDGET (window->details->name_label),
+ name));
+#else
window->details->name_field =
GTK_WIDGET (attach_ellipsizing_value_label
- (window->details->basic_table,
- window->details->name_row,
- VALUE_COLUMN, name));
+ (window->details->basic_table,
+ window->details->name_row,
+ VALUE_COLUMN, name));
+#endif
} else {
window->details->name_field = caja_entry_new ();
gtk_entry_set_text (GTK_ENTRY (window->details->name_field), name);
gtk_widget_show (window->details->name_field);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ gtk_grid_attach_next_to (window->details->basic_grid, window->details->name_field,
+ GTK_WIDGET (window->details->name_label),
+ GTK_POS_RIGHT, 1, 1);
+#else
gtk_table_attach (window->details->basic_table,
window->details->name_field,
VALUE_COLUMN,
@@ -616,6 +653,7 @@ set_name_field (FMPropertiesWindow *window, const gchar *original_name,
window->details->name_row + 1,
GTK_FILL, 0,
0, 0);
+#endif
gtk_label_set_mnemonic_widget (GTK_LABEL (window->details->name_label), window->details->name_field);
g_signal_connect_object (window->details->name_field, "focus_out_event",
@@ -1367,9 +1405,14 @@ value_field_update (FMPropertiesWindow *window, GtkLabel *label)
}
static GtkLabel *
+#if GTK_CHECK_VERSION (3, 0, 0)
+attach_label (GtkGrid *grid,
+ GtkWidget *sibling,
+#else
attach_label (GtkTable *table,
int row,
int column,
+#endif
const char *initial_text,
gboolean right_aligned,
gboolean bold,
@@ -1403,6 +1446,18 @@ attach_label (GtkTable *table,
gtk_misc_set_alignment (GTK_MISC (label_field), right_aligned ? 1 : 0, 0.5);
#endif
gtk_widget_show (label_field);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ if (ellipsize_text) {
+ gtk_widget_set_hexpand (label_field, TRUE);
+ }
+
+ if (sibling != NULL) {
+ gtk_grid_attach_next_to (grid, label_field, sibling,
+ GTK_POS_RIGHT, 1, 1);
+ } else {
+ gtk_container_add (GTK_CONTAINER (grid), label_field);
+ }
+#else
gtk_table_attach (table, label_field,
column, column + 1,
row, row + 1,
@@ -1411,33 +1466,57 @@ attach_label (GtkTable *table,
: GTK_FILL,
0,
0, 0);
+#endif
return GTK_LABEL (label_field);
}
static GtkLabel *
+#if GTK_CHECK_VERSION (3, 0, 0)
+attach_value_label (GtkGrid *grid,
+ GtkWidget *sibling,
+ const char *initial_text)
+{
+ return attach_label (grid, sibling, initial_text, FALSE, FALSE, FALSE, TRUE, FALSE);
+}
+#else
attach_value_label (GtkTable *table,
- int row,
- int column,
- const char *initial_text)
+ int row,
+ int column,
+ const char *initial_text)
{
return attach_label (table, row, column, initial_text, FALSE, FALSE, FALSE, TRUE, FALSE);
}
+#endif
static GtkLabel *
+#if GTK_CHECK_VERSION (3, 0, 0)
+attach_ellipsizing_value_label (GtkGrid *grid,
+ GtkWidget *sibling,
+ const char *initial_text)
+{
+ return attach_label (grid, sibling, initial_text, FALSE, FALSE, TRUE, TRUE, FALSE);
+}
+#else
attach_ellipsizing_value_label (GtkTable *table,
- int row,
- int column,
- const char *initial_text)
+ int row,
+ int column,
+ const char *initial_text)
{
return attach_label (table, row, column, initial_text, FALSE, FALSE, TRUE, TRUE, FALSE);
}
+#endif
static GtkWidget*
attach_value_field_internal (FMPropertiesWindow *window,
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkGrid *grid,
+ GtkWidget *sibling,
+#else
GtkTable *table,
int row,
int column,
+#endif
const char *file_attribute_name,
const char *inconsistent_string,
gboolean show_original,
@@ -1446,9 +1525,15 @@ attach_value_field_internal (FMPropertiesWindow *window,
GtkLabel *value_field;
if (ellipsize_text) {
+#if GTK_CHECK_VERSION (3, 0, 0)
+ value_field = attach_ellipsizing_value_label (grid, sibling, "");
+ } else {
+ value_field = attach_value_label (grid, sibling, "");
+#else
value_field = attach_ellipsizing_value_label (table, row, column, "");
} else {
value_field = attach_value_label (table, row, column, "");
+#endif
}
/* Stash a copy of the file attribute name in this field for the callback's sake. */
@@ -1467,36 +1552,62 @@ attach_value_field_internal (FMPropertiesWindow *window,
static GtkWidget*
attach_value_field (FMPropertiesWindow *window,
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkGrid *grid,
+ GtkWidget *sibling,
+#else
GtkTable *table,
int row,
int column,
+#endif
const char *file_attribute_name,
const char *inconsistent_string,
gboolean show_original)
{
return attach_value_field_internal (window,
- table, row, column,
- file_attribute_name,
- inconsistent_string,
- show_original,
- FALSE);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ grid, sibling,
+ file_attribute_name,
+ inconsistent_string,
+ show_original,
+ FALSE);
+#else
+ table, row, column,
+ file_attribute_name,
+ inconsistent_string,
+ show_original,
+ FALSE);
+#endif
}
static GtkWidget*
attach_ellipsizing_value_field (FMPropertiesWindow *window,
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkGrid *grid,
+ GtkWidget *sibling,
+#else
GtkTable *table,
int row,
int column,
+#endif
const char *file_attribute_name,
const char *inconsistent_string,
gboolean show_original)
{
return attach_value_field_internal (window,
- table, row, column,
- file_attribute_name,
- inconsistent_string,
- show_original,
- TRUE);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ grid, sibling,
+ file_attribute_name,
+ inconsistent_string,
+ show_original,
+ TRUE);
+#else
+ table, row, column,
+ file_attribute_name,
+ inconsistent_string,
+ show_original,
+ TRUE);
+#endif
}
static void
@@ -1848,9 +1959,14 @@ combo_box_row_separator_func (GtkTreeModel *model,
}
static GtkComboBox *
+#if GTK_CHECK_VERSION (3, 0, 0)
+attach_combo_box (GtkGrid *grid,
+ GtkWidget *sibling,
+#else
attach_combo_box (GtkTable *table,
- int row,
- gboolean two_columns)
+ int row,
+#endif
+ gboolean two_columns)
{
GtkWidget *combo_box;
GtkWidget *aligner;
@@ -1885,23 +2001,37 @@ attach_combo_box (GtkTable *table,
gtk_widget_show (aligner);
gtk_container_add (GTK_CONTAINER (aligner), combo_box);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ gtk_grid_attach_next_to (grid, aligner, sibling,
+ GTK_POS_RIGHT, 1, 1);
+#else
gtk_table_attach (table, aligner,
VALUE_COLUMN, VALUE_COLUMN + 1,
row, row + 1,
GTK_FILL, 0,
0, 0);
+#endif
return GTK_COMBO_BOX (combo_box);
}
static GtkComboBox*
+#if GTK_CHECK_VERSION (3, 0, 0)
+attach_group_combo_box (GtkGrid *grid,
+ GtkWidget *sibling,
+#else
attach_group_combo_box (GtkTable *table,
- int row,
- CajaFile *file)
+ int row,
+#endif
+ CajaFile *file)
{
GtkComboBox *combo_box;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ combo_box = attach_combo_box (grid, sibling, FALSE);
+#else
combo_box = attach_combo_box (table, row, FALSE);
+#endif
synch_groups_combo_box (combo_box, file);
@@ -2179,13 +2309,22 @@ synch_user_menu (GtkComboBox *combo_box, CajaFile *file)
}
static GtkComboBox*
+#if GTK_CHECK_VERSION (3, 0, 0)
+attach_owner_combo_box (GtkGrid *grid,
+ GtkWidget *sibling,
+#else
attach_owner_combo_box (GtkTable *table,
- int row,
- CajaFile *file)
+ int row,
+#endif
+ CajaFile *file)
{
GtkComboBox *combo_box;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ combo_box = attach_combo_box (grid, sibling, TRUE);
+#else
combo_box = attach_combo_box (table, row, TRUE);
+#endif
synch_user_menu (combo_box, file);
@@ -2201,6 +2340,7 @@ attach_owner_combo_box (GtkTable *table,
return combo_box;
}
+#if !GTK_CHECK_VERSION (3, 0, 0)
static guint
append_row (GtkTable *table)
{
@@ -2216,6 +2356,7 @@ append_row (GtkTable *table)
return new_row_count - 1;
}
+#endif
static gboolean
file_has_prefix (CajaFile *file,
@@ -2402,14 +2543,23 @@ schedule_directory_contents_update (FMPropertiesWindow *window)
static GtkLabel *
attach_directory_contents_value_field (FMPropertiesWindow *window,
- GtkTable *table,
- int row)
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkGrid *grid,
+ GtkWidget *sibling)
+#else
+ GtkTable *table,
+ int row)
+#endif
{
GtkLabel *value_field;
GList *l;
CajaFile *file;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ value_field = attach_value_label (grid, sibling, "");
+#else
value_field = attach_value_label (table, row, VALUE_COLUMN, "");
+#endif
g_assert (window->details->directory_contents_value_field == NULL);
window->details->directory_contents_value_field = value_field;
@@ -2433,13 +2583,22 @@ attach_directory_contents_value_field (FMPropertiesWindow *window,
}
static GtkLabel *
+#if GTK_CHECK_VERSION (3, 0, 0)
+attach_title_field (GtkGrid *grid,
+ const char *title)
+{
+ return attach_label (grid, NULL, title, FALSE, FALSE, FALSE, FALSE, TRUE);
+}
+#else
attach_title_field (GtkTable *table,
- int row,
- const char *title)
+ int row,
+ const char *title)
{
return attach_label (table, row, TITLE_COLUMN, title, FALSE, FALSE, FALSE, FALSE, TRUE);
}
+#endif
+#if !GTK_CHECK_VERSION (3, 0, 0)
static guint
append_title_field (GtkTable *table, const char *title, GtkLabel **label)
{
@@ -2455,10 +2614,66 @@ append_title_field (GtkTable *table, const char *title, GtkLabel **label)
return last_row;
}
+#endif
#define INCONSISTENT_STATE_STRING \
"\xE2\x80\x92"
+#if GTK_CHECK_VERSION (3, 0, 0)
+static void
+append_title_value_pair (FMPropertiesWindow *window,
+ GtkGrid *grid,
+ const char *title,
+ const char *file_attribute_name,
+ const char *inconsistent_state,
+ gboolean show_original)
+{
+ GtkLabel *title_label;
+ GtkWidget *value;
+
+ title_label = attach_title_field (grid, title);
+ value = attach_value_field (window, grid, GTK_WIDGET (title_label),
+ file_attribute_name,
+ inconsistent_state,
+ show_original);
+ gtk_label_set_mnemonic_widget (title_label, value);
+}
+
+static void
+append_title_and_ellipsizing_value (FMPropertiesWindow *window,
+ GtkGrid *grid,
+ const char *title,
+ const char *file_attribute_name,
+ const char *inconsistent_state,
+ gboolean show_original)
+{
+ GtkLabel *title_label;
+ GtkWidget *value;
+
+ title_label = attach_title_field (grid, title);
+ value = attach_ellipsizing_value_field (window, grid,
+ GTK_WIDGET (title_label),
+ file_attribute_name,
+ inconsistent_state,
+ show_original);
+ gtk_label_set_mnemonic_widget (title_label, value);
+}
+
+static void
+append_directory_contents_fields (FMPropertiesWindow *window,
+ GtkGrid *grid)
+{
+ GtkLabel *title_field, *value_field;
+ title_field = attach_title_field (grid, "");
+ window->details->directory_contents_title_field = title_field;
+ gtk_label_set_line_wrap (title_field, TRUE);
+
+ value_field = attach_directory_contents_value_field
+ (window, grid, GTK_WIDGET (title_field));
+
+ gtk_label_set_mnemonic_widget (title_field, GTK_WIDGET(value_field));
+}
+#else
static guint
append_title_value_pair (FMPropertiesWindow *window,
GtkTable *table,
@@ -2521,6 +2736,7 @@ append_directory_contents_fields (FMPropertiesWindow *window,
gtk_label_set_mnemonic_widget(title_field, GTK_WIDGET(value_field));
return last_row;
}
+#endif
static GtkWidget *
create_page_with_hbox (GtkNotebook *notebook,
@@ -2558,6 +2774,11 @@ create_page_with_vbox (GtkNotebook *notebook,
}
static GtkWidget *
+#if GTK_CHECK_VERSION (3, 0, 0)
+append_blank_row (GtkGrid *grid)
+{
+ return GTK_WIDGET (attach_title_field (grid, ""));
+#else
append_blank_row (GtkTable *table)
{
GtkWidget *separator;
@@ -2565,16 +2786,52 @@ append_blank_row (GtkTable *table)
append_title_field (table, "", (GtkLabel **) &separator);
return separator;
+#endif
}
static void
+#if GTK_CHECK_VERSION (3, 0, 0)
+append_blank_slim_row (GtkGrid *grid)
+{
+ GtkWidget *w;
+ PangoAttribute *attribute;
+ PangoAttrList *attr_list;
+
+ attr_list = pango_attr_list_new ();
+ attribute = pango_attr_scale_new (0.30);
+ pango_attr_list_insert (attr_list, attribute);
+
+ w = gtk_label_new (NULL);
+ gtk_label_set_attributes (GTK_LABEL (w), attr_list);
+ gtk_widget_show (w);
+
+ pango_attr_list_unref (attr_list);
+
+ gtk_container_add (GTK_CONTAINER (grid), w);
+#else
apply_standard_table_padding (GtkTable *table)
{
gtk_table_set_row_spacings (table, ROW_PAD);
gtk_table_set_col_spacings (table, 12);
+#endif
}
static GtkWidget *
+#if GTK_CHECK_VERSION (3, 0, 0)
+create_grid_with_standard_properties (void)
+{
+ GtkWidget *grid;
+
+ grid = gtk_grid_new ();
+ gtk_container_set_border_width (GTK_CONTAINER (grid), 6);
+ gtk_grid_set_row_spacing (GTK_GRID (grid), ROW_PAD);
+ gtk_grid_set_column_spacing (GTK_GRID (grid), 12);
+ gtk_orientable_set_orientation (GTK_ORIENTABLE (grid), GTK_ORIENTATION_VERTICAL);
+ gtk_widget_show (grid);
+
+ return grid;
+}
+#else
create_attribute_value_table (GtkVBox *vbox, int row_count)
{
GtkWidget *table;
@@ -2586,6 +2843,7 @@ create_attribute_value_table (GtkVBox *vbox, int row_count)
return table;
}
+#endif
static gboolean
is_merged_trash_directory (CajaFile *file)
@@ -3133,7 +3391,11 @@ static GtkWidget*
create_pie_widget (FMPropertiesWindow *window)
{
CajaFile *file;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkGrid *grid;
+#else
GtkTable *table;
+#endif
GtkStyle *style;
GtkWidget *pie_canvas;
GtkWidget *used_canvas;
@@ -3165,9 +3427,16 @@ create_pie_widget (FMPropertiesWindow *window)
uri = caja_file_get_activation_uri (file);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ grid = GTK_GRID (gtk_grid_new ());
+ gtk_container_set_border_width (GTK_CONTAINER (grid), 5);
+ gtk_grid_set_column_spacing (GTK_GRID (grid), 5);
+ style = gtk_widget_get_style_context (GTK_WIDGET (grid));
+#else
table = GTK_TABLE (gtk_table_new (4, 3, FALSE));
style = gtk_rc_get_style (GTK_WIDGET(table));
+#endif
if (!gtk_style_lookup_color (style, "chart_color_1", &window->details->used_color)) {
window->details->used_color.red = USED_FILL_R;
@@ -3188,12 +3457,20 @@ create_pie_widget (FMPropertiesWindow *window)
gtk_widget_set_size_request (pie_canvas, 200, 200);
used_canvas = gtk_drawing_area_new ();
+#if GTK_CHECK_VERSION (3, 0, 0)
+ gtk_widget_set_valign (used_canvas, GTK_ALIGN_CENTER);
+ gtk_widget_set_halign (used_canvas, GTK_ALIGN_CENTER);
+#endif
gtk_widget_set_size_request (used_canvas, 20, 20);
/* Translators: "used" refers to the capacity of the filesystem */
used_label = gtk_label_new (g_strconcat (used, " ", _("used"), NULL));
free_canvas = gtk_drawing_area_new ();
- gtk_widget_set_size_request (free_canvas,20,20);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ gtk_widget_set_valign (free_canvas, GTK_ALIGN_CENTER);
+ gtk_widget_set_halign (free_canvas, GTK_ALIGN_CENTER);
+#endif
+ gtk_widget_set_size_request (free_canvas, 20, 20);
/* Translators: "free" refers to the capacity of the filesystem */
free_label = gtk_label_new (g_strconcat (free, " ", _("free"), NULL));
@@ -3220,6 +3497,25 @@ create_pie_widget (FMPropertiesWindow *window)
g_free (used);
g_free (free);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ gtk_container_add_with_properties (GTK_CONTAINER (grid), pie_canvas,
+ "height", 4,
+ NULL);
+ gtk_grid_attach_next_to (grid, used_canvas, pie_canvas,
+ GTK_POS_RIGHT, 1, 1);
+ gtk_grid_attach_next_to (grid, used_label, used_canvas,
+ GTK_POS_RIGHT, 1, 1);
+
+ gtk_grid_attach_next_to (grid, free_canvas, used_canvas,
+ GTK_POS_BOTTOM, 1, 1);
+ gtk_grid_attach_next_to (grid, free_label, free_canvas,
+ GTK_POS_RIGHT, 1, 1);
+
+ gtk_grid_attach_next_to (grid, capacity_label, free_canvas,
+ GTK_POS_BOTTOM, 2, 1);
+ gtk_grid_attach_next_to (grid, fstype_label, capacity_label,
+ GTK_POS_BOTTOM, 2, 1);
+#else
gtk_table_attach (table, pie_canvas , 0, 1, 0, 4, GTK_FILL, GTK_SHRINK, 5, 5);
gtk_table_attach (table, used_canvas, 1, 2, 0, 1, 0, 0, 5, 5);
@@ -3230,6 +3526,7 @@ create_pie_widget (FMPropertiesWindow *window)
gtk_table_attach (table, capacity_label , 1, 3, 2, 3, GTK_FILL, 0, 5, 5);
gtk_table_attach (table, fstype_label , 1, 3, 3, 4, GTK_FILL, 0, 5, 5);
+#endif
#if GTK_CHECK_VERSION(3,0,0)
g_signal_connect (pie_canvas, "draw",
@@ -3247,7 +3544,11 @@ create_pie_widget (FMPropertiesWindow *window)
G_CALLBACK (paint_free_legend), window);
#endif
+#if GTK_CHECK_VERSION (3, 0, 0)
+ return GTK_WIDGET (grid);
+#else
return GTK_WIDGET (table);
+#endif
}
static GtkWidget*
@@ -3288,13 +3589,19 @@ create_volume_usage_widget (FMPropertiesWindow *window)
static void
create_basic_page (FMPropertiesWindow *window)
{
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkGrid *grid;
+#else
GtkTable *table;
+#endif
GtkWidget *icon_aligner;
GtkWidget *icon_pixmap_widget;
GtkWidget *volume_usage;
GtkWidget *hbox, *vbox;
+#if !GTK_CHECK_VERSION (3, 0, 0)
guint last_row, row;
+#endif
hbox = create_page_with_hbox (window->details->notebook, _("Basic"));
@@ -3312,18 +3619,31 @@ create_basic_page (FMPropertiesWindow *window)
window->details->icon_chooser = NULL;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ /* Grid */
+#else
/* Table */
+#endif
vbox = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox);
gtk_container_add (GTK_CONTAINER (hbox), vbox);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ grid = GTK_GRID (create_grid_with_standard_properties ());
+ gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (grid), FALSE, FALSE, 0);
+ window->details->basic_grid = grid;
+
+ /* Name label. The text will be determined in update_name_field */
+ window->details->name_label = attach_title_field (grid, NULL);
+#else
table = GTK_TABLE (create_attribute_value_table (GTK_VBOX (vbox), 0));
window->details->basic_table = table;
/* Name label. The text will be determined in update_name_field */
row = append_title_field (table, NULL, &window->details->name_label);
window->details->name_row = row;
+#endif
/* Name field */
window->details->name_field = NULL;
@@ -3339,7 +3659,9 @@ create_basic_page (FMPropertiesWindow *window)
GtkSizeGroup *label_size_group;
GtkWidget *box;
+#if !GTK_CHECK_VERSION (3, 0, 0)
row = append_row (table);
+#endif
label_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
gtk_size_group_add_widget (label_size_group,
@@ -3347,6 +3669,82 @@ create_basic_page (FMPropertiesWindow *window)
box = fm_ditem_page_make_box (label_size_group,
window->details->target_files);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ gtk_grid_attach_next_to (window->details->basic_grid, box,
+ GTK_WIDGET (window->details->name_label),
+ GTK_POS_BOTTOM, 2, 1);
+ }
+
+ if (should_show_file_type (window)) {
+ append_title_value_pair (window,
+ grid, _("Type:"),
+ "type",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ }
+
+ if (should_show_link_target (window)) {
+ append_title_and_ellipsizing_value (window, grid,
+ _("Link target:"),
+ "link_target",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ }
+
+ if (is_multi_file_window (window) ||
+ caja_file_is_directory (get_target_file (window))) {
+ append_directory_contents_fields (window, grid);
+ } else {
+ append_title_value_pair (window, grid, _("Size:"),
+ "size_detail",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ }
+
+ append_blank_row (grid);
+
+ if (should_show_location_info (window)) {
+ append_title_and_ellipsizing_value (window, grid, _("Location:"),
+ "where",
+ INCONSISTENT_STATE_STRING,
+ TRUE);
+
+ append_title_and_ellipsizing_value (window, grid,
+ _("Volume:"),
+ "volume",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ }
+
+ if (should_show_accessed_date (window)) {
+ append_blank_row (grid);
+
+ append_title_value_pair (window, grid, _("Accessed:"),
+ "date_accessed",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ append_title_value_pair (window, grid, _("Modified:"),
+ "date_modified",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ }
+
+ if (should_show_free_space (window)) {
+ append_blank_row (grid);
+
+ append_title_value_pair (window, grid, _("Free space:"),
+ "free_space",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ }
+
+ if (should_show_volume_usage (window)) {
+ volume_usage = create_volume_usage_widget (window);
+ gtk_container_add_with_properties (GTK_CONTAINER (grid), volume_usage,
+ "width", 2,
+ NULL);
+ }
+#else
gtk_table_attach (window->details->basic_table, box,
TITLE_COLUMN, VALUE_COLUMN + 1,
row, row + 1,
@@ -3422,6 +3820,7 @@ create_basic_page (FMPropertiesWindow *window)
volume_usage = create_volume_usage_widget (window);
gtk_table_attach_defaults (GTK_TABLE(table), volume_usage, 0, 2, last_row, last_row+1);
}
+#endif
}
static GHashTable *
@@ -3881,25 +4280,41 @@ set_up_permissions_checkbox (FMPropertiesWindow *window,
0);
}
+#if GTK_CHECK_VERSION (3, 0, 0)
+static GtkWidget *
+add_permissions_checkbox_with_label (FMPropertiesWindow *window,
+ GtkGrid *grid,
+ GtkWidget *sibling,
+#else
static void
add_permissions_checkbox_with_label (FMPropertiesWindow *window,
- GtkTable *table,
- int row, int column,
- const char *label,
- guint32 permission_to_check,
- GtkLabel *label_for,
- gboolean is_folder)
+ GtkTable *table,
+ int row, int column,
+#endif
+ const char *label,
+ guint32 permission_to_check,
+ GtkLabel *label_for,
+ gboolean is_folder)
{
GtkWidget *check_button;
gboolean a11y_enabled;
check_button = gtk_check_button_new_with_mnemonic (label);
gtk_widget_show (check_button);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ if (sibling) {
+ gtk_grid_attach_next_to (grid, check_button, sibling,
+ GTK_POS_RIGHT, 1, 1);
+ } else {
+ gtk_container_add (GTK_CONTAINER (grid), check_button);
+ }
+#else
gtk_table_attach (table, check_button,
column, column + 1,
row, row + 1,
GTK_FILL, 0,
0, 0);
+#endif
set_up_permissions_checkbox (window,
check_button,
@@ -3911,8 +4326,39 @@ add_permissions_checkbox_with_label (FMPropertiesWindow *window,
eel_accessibility_set_up_label_widget_relation (GTK_WIDGET (label_for),
check_button);
}
+#if GTK_CHECK_VERSION (3, 0, 0)
+ return check_button;
+#endif
}
+#if GTK_CHECK_VERSION (3, 0, 0)
+static GtkWidget *
+add_permissions_checkbox (FMPropertiesWindow *window,
+ GtkGrid *grid,
+ GtkWidget *sibling,
+ CheckboxType type,
+ guint32 permission_to_check,
+ GtkLabel *label_for,
+ gboolean is_folder)
+{
+ const gchar *label;
+
+ if (type == PERMISSIONS_CHECKBOXES_READ) {
+ label = _("_Read");
+ } else if (type == PERMISSIONS_CHECKBOXES_WRITE) {
+ label = _("_Write");
+ } else {
+ label = _("E_xecute");
+ }
+
+ return add_permissions_checkbox_with_label (window, grid,
+ sibling,
+ label,
+ permission_to_check,
+ label_for,
+ is_folder);
+}
+#else
static void
add_permissions_checkbox (FMPropertiesWindow *window,
GtkTable *table,
@@ -3938,6 +4384,7 @@ add_permissions_checkbox (FMPropertiesWindow *window,
label_for,
is_folder);
}
+#endif
enum {
UNIX_PERM_SUID = S_ISUID,
@@ -4258,7 +4705,11 @@ permission_combo_update (FMPropertiesWindow *window,
}
static void
+#if GTK_CHECK_VERSION (3, 0, 0)
+add_permissions_combo_box (FMPropertiesWindow *window, GtkGrid *grid,
+#else
add_permissions_combo_box (FMPropertiesWindow *window, GtkTable *table,
+#endif
PermissionType type, gboolean is_folder,
gboolean short_label)
{
@@ -4267,14 +4718,24 @@ add_permissions_combo_box (FMPropertiesWindow *window, GtkTable *table,
GtkListStore *store;
GtkCellRenderer *cell;
GtkTreeIter iter;
+#if !GTK_CHECK_VERSION (3, 0, 0)
int row;
+#endif
if (short_label) {
+#if GTK_CHECK_VERSION (3, 0, 0)
+ label = attach_title_field (grid, _("Access:"));
+ } else if (is_folder) {
+ label = attach_title_field (grid, _("Folder access:"));
+ } else {
+ label = attach_title_field (grid, _("File access:"));
+#else
row = append_title_field (table, _("Access:"), &label);
} else if (is_folder) {
row = append_title_field (table, _("Folder access:"), &label);
} else {
row = append_title_field (table, _("File access:"), &label);
+#endif
}
store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN);
@@ -4328,33 +4789,56 @@ add_permissions_combo_box (FMPropertiesWindow *window, GtkTable *table,
gtk_label_set_mnemonic_widget (label, combo);
gtk_widget_show (combo);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ gtk_grid_attach_next_to (grid, combo, GTK_WIDGET (label),
+ GTK_POS_RIGHT, 1, 1);
+#else
gtk_table_attach (table, combo,
VALUE_COLUMN, VALUE_COLUMN + 1,
row, row + 1,
GTK_FILL, 0,
0, 0);
+#endif
}
static GtkWidget *
append_special_execution_checkbox (FMPropertiesWindow *window,
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkGrid *grid,
+ GtkWidget *sibling,
+#else
GtkTable *table,
+#endif
const char *label_text,
guint32 permission_to_check)
{
GtkWidget *check_button;
+#if !GTK_CHECK_VERSION (3, 0, 0)
guint last_row;
last_row = append_row (table);
+#endif
check_button = gtk_check_button_new_with_mnemonic (label_text);
gtk_widget_show (check_button);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ if (sibling != NULL) {
+ gtk_grid_attach_next_to (grid, check_button, sibling,
+ GTK_POS_RIGHT, 1, 1);
+ } else {
+ gtk_container_add_with_properties (GTK_CONTAINER (grid), check_button,
+ "left-attach", 1,
+ NULL);
+ }
+#else
gtk_table_attach (table, check_button,
VALUE_COLUMN, VALUE_COLUMN + 1,
last_row, last_row + 1,
GTK_FILL, 0,
0, 0);
+#endif
set_up_permissions_checkbox (window,
check_button,
@@ -4367,6 +4851,19 @@ append_special_execution_checkbox (FMPropertiesWindow *window,
}
static void
+#if GTK_CHECK_VERSION (3, 0, 0)
+append_special_execution_flags (FMPropertiesWindow *window, GtkGrid *grid)
+{
+ GtkWidget *title;
+
+ append_blank_slim_row (grid);
+ title = GTK_WIDGET (attach_title_field (grid, _("Special flags:")));
+
+ append_special_execution_checkbox (window, grid, title, _("Set _user ID"), UNIX_PERM_SUID);
+ append_special_execution_checkbox (window, grid, NULL, _("Set gro_up ID"), UNIX_PERM_SGID);
+ append_special_execution_checkbox (window, grid, NULL, _("_Sticky"), UNIX_PERM_STICKY);
+}
+#else
append_special_execution_flags (FMPropertiesWindow *window, GtkTable *table)
{
gint nrows;
@@ -4383,6 +4880,7 @@ append_special_execution_flags (FMPropertiesWindow *window, GtkTable *table)
g_object_get (table, "n-rows", &nrows, NULL);
gtk_table_set_row_spacing (table, nrows - 1, 18);
}
+#endif
static gboolean
all_can_get_permissions (GList *file_list)
@@ -4442,6 +4940,106 @@ get_initial_permissions (GList *file_list)
}
static void
+#if GTK_CHECK_VERSION (3, 0, 0)
+create_simple_permissions (FMPropertiesWindow *window, GtkGrid *page_grid)
+{
+ gboolean has_file, has_directory;
+ GtkLabel *group_label;
+ GtkLabel *owner_label;
+ GtkLabel *execute_label;
+ GtkWidget *value;
+ GtkComboBox *group_combo_box;
+ GtkComboBox *owner_combo_box;
+
+ has_file = files_has_file (window);
+ has_directory = files_has_directory (window);
+
+ if (!is_multi_file_window (window) && caja_file_can_set_owner (get_target_file (window))) {
+ owner_label = attach_title_field (page_grid, _("_Owner:"));
+ /* Combo box in this case. */
+ owner_combo_box = attach_owner_combo_box (page_grid,
+ GTK_WIDGET (owner_label),
+ get_target_file (window));
+ gtk_label_set_mnemonic_widget (owner_label,
+ GTK_WIDGET (owner_combo_box));
+ } else {
+ owner_label = attach_title_field (page_grid, _("Owner:"));
+ /* Static text in this case. */
+ value = attach_value_field (window,
+ page_grid, GTK_WIDGET (owner_label),
+ "owner",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ gtk_label_set_mnemonic_widget (owner_label, value);
+ }
+
+ if (has_directory) {
+ add_permissions_combo_box (window, page_grid,
+ PERMISSION_USER, TRUE, FALSE);
+ }
+ if (has_file || window->details->has_recursive_apply) {
+ add_permissions_combo_box (window, page_grid,
+ PERMISSION_USER, FALSE, !has_directory);
+ }
+
+ append_blank_slim_row (page_grid);
+
+ if (!is_multi_file_window (window) && caja_file_can_set_group (get_target_file (window))) {
+ group_label = attach_title_field (page_grid, _("_Group:"));
+
+ /* Combo box in this case. */
+ group_combo_box = attach_group_combo_box (page_grid, GTK_WIDGET (group_label),
+ get_target_file (window));
+ gtk_label_set_mnemonic_widget (group_label,
+ GTK_WIDGET (group_combo_box));
+ } else {
+ group_label = attach_title_field (page_grid, _("Group:"));
+
+ /* Static text in this case. */
+ value = attach_value_field (window, page_grid,
+ GTK_WIDGET (group_label),
+ "group",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ gtk_label_set_mnemonic_widget (group_label, value);
+ }
+
+ if (has_directory) {
+ add_permissions_combo_box (window, page_grid,
+ PERMISSION_GROUP, TRUE,
+ FALSE);
+ }
+ if (has_file || window->details->has_recursive_apply) {
+ add_permissions_combo_box (window, page_grid,
+ PERMISSION_GROUP, FALSE,
+ !has_directory);
+ }
+
+ append_blank_slim_row (page_grid);
+
+ group_label = attach_title_field (page_grid, _("Others"));
+
+ if (has_directory) {
+ add_permissions_combo_box (window, page_grid,
+ PERMISSION_OTHER, TRUE,
+ FALSE);
+ }
+ if (has_file || window->details->has_recursive_apply) {
+ add_permissions_combo_box (window, page_grid,
+ PERMISSION_OTHER, FALSE,
+ !has_directory);
+ }
+
+ append_blank_slim_row (page_grid);
+
+ execute_label = attach_title_field (page_grid, _("Execute:"));
+ add_permissions_checkbox_with_label (window, page_grid,
+ GTK_WIDGET (execute_label),
+ _("Allow _executing file as program"),
+ UNIX_PERM_USER_EXEC|UNIX_PERM_GROUP_EXEC|UNIX_PERM_OTHER_EXEC,
+ execute_label, FALSE);
+}
+#else
create_simple_permissions (FMPropertiesWindow *window, GtkTable *page_table)
{
gboolean has_file, has_directory;
@@ -4550,11 +5148,105 @@ create_simple_permissions (FMPropertiesWindow *window, GtkTable *page_table)
_("Allow _executing file as program"),
UNIX_PERM_USER_EXEC|UNIX_PERM_GROUP_EXEC|UNIX_PERM_OTHER_EXEC,
execute_label, FALSE);
-
}
+#endif
static void
create_permission_checkboxes (FMPropertiesWindow *window,
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkGrid *page_grid,
+ gboolean is_folder)
+{
+ GtkLabel *owner_perm_label;
+ GtkLabel *group_perm_label;
+ GtkLabel *other_perm_label;
+ GtkGrid *check_button_grid;
+ GtkWidget *w;
+
+ owner_perm_label = attach_title_field (page_grid, _("Owner:"));
+ group_perm_label = attach_title_field (page_grid, _("Group:"));
+ other_perm_label = attach_title_field (page_grid, _("Others:"));
+
+ check_button_grid = GTK_GRID (create_grid_with_standard_properties ());
+ gtk_widget_show (GTK_WIDGET (check_button_grid));
+
+ gtk_grid_attach_next_to (page_grid, GTK_WIDGET (check_button_grid),
+ GTK_WIDGET (owner_perm_label),
+ GTK_POS_RIGHT, 1, 3);
+
+ w = add_permissions_checkbox (window,
+ check_button_grid,
+ NULL,
+ PERMISSIONS_CHECKBOXES_READ,
+ UNIX_PERM_USER_READ,
+ owner_perm_label,
+ is_folder);
+
+ w = add_permissions_checkbox (window,
+ check_button_grid,
+ w,
+ PERMISSIONS_CHECKBOXES_WRITE,
+ UNIX_PERM_USER_WRITE,
+ owner_perm_label,
+ is_folder);
+
+ w = add_permissions_checkbox (window,
+ check_button_grid,
+ w,
+ PERMISSIONS_CHECKBOXES_EXECUTE,
+ UNIX_PERM_USER_EXEC,
+ owner_perm_label,
+ is_folder);
+
+ w = add_permissions_checkbox (window,
+ check_button_grid,
+ NULL,
+ PERMISSIONS_CHECKBOXES_READ,
+ UNIX_PERM_GROUP_READ,
+ group_perm_label,
+ is_folder);
+
+ w = add_permissions_checkbox (window,
+ check_button_grid,
+ w,
+ PERMISSIONS_CHECKBOXES_WRITE,
+ UNIX_PERM_GROUP_WRITE,
+ group_perm_label,
+ is_folder);
+
+ w = add_permissions_checkbox (window,
+ check_button_grid,
+ w,
+ PERMISSIONS_CHECKBOXES_EXECUTE,
+ UNIX_PERM_GROUP_EXEC,
+ group_perm_label,
+ is_folder);
+
+ w = add_permissions_checkbox (window,
+ check_button_grid,
+ NULL,
+ PERMISSIONS_CHECKBOXES_READ,
+ UNIX_PERM_OTHER_READ,
+ other_perm_label,
+ is_folder);
+
+ w = add_permissions_checkbox (window,
+ check_button_grid,
+ w,
+ PERMISSIONS_CHECKBOXES_WRITE,
+ UNIX_PERM_OTHER_WRITE,
+ other_perm_label,
+ is_folder);
+
+ add_permissions_checkbox (window,
+ check_button_grid,
+ w,
+ PERMISSIONS_CHECKBOXES_EXECUTE,
+ UNIX_PERM_OTHER_EXEC,
+ other_perm_label,
+ is_folder);
+}
+#else
GtkTable *page_table,
gboolean is_folder)
{
@@ -4652,8 +5344,87 @@ create_permission_checkboxes (FMPropertiesWindow *window,
other_perm_label,
is_folder);
}
+#endif
static void
+#if GTK_CHECK_VERSION (3, 0, 0)
+create_advanced_permissions (FMPropertiesWindow *window, GtkGrid *page_grid)
+{
+ GtkLabel *group_label;
+ GtkLabel *owner_label;
+ GtkComboBox *group_combo_box;
+ GtkComboBox *owner_combo_box;
+ gboolean has_directory, has_file;
+
+ if (!is_multi_file_window (window) && caja_file_can_set_owner (get_target_file (window))) {
+
+ owner_label = attach_title_field (page_grid, _("_Owner:"));
+ /* Combo box in this case. */
+ owner_combo_box = attach_owner_combo_box (page_grid,
+ GTK_WIDGET (owner_label),
+ get_target_file (window));
+ gtk_label_set_mnemonic_widget (owner_label,
+ GTK_WIDGET (owner_combo_box));
+ } else {
+ GtkWidget *value;
+ owner_label = attach_title_field (page_grid, _("Owner:"));
+
+ /* Static text in this case. */
+ value = attach_value_field (window,
+ page_grid,
+ GTK_WIDGET (owner_label),
+ "owner",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ gtk_label_set_mnemonic_widget (owner_label, value);
+ }
+
+ if (!is_multi_file_window (window) && caja_file_can_set_group (get_target_file (window))) {
+ group_label = attach_title_field (page_grid, _("_Group:"));
+
+ /* Combo box in this case. */
+ group_combo_box = attach_group_combo_box (page_grid, GTK_WIDGET (group_label),
+ get_target_file (window));
+ gtk_label_set_mnemonic_widget (group_label,
+ GTK_WIDGET (group_combo_box));
+ } else {
+ group_label = attach_title_field (page_grid, _("Group:"));
+
+ /* Static text in this case. */
+ attach_value_field (window, page_grid, GTK_WIDGET (group_label),
+ "group",
+ INCONSISTENT_STATE_STRING,
+ FALSE);
+ }
+
+ append_blank_slim_row (page_grid);
+
+ has_directory = files_has_directory (window);
+ has_file = files_has_file (window);
+
+ if (has_directory) {
+ if (has_file || window->details->has_recursive_apply) {
+ attach_title_field (page_grid, _("Folder Permissions:"));
+ }
+ create_permission_checkboxes (window, page_grid, TRUE);
+ }
+
+ if (has_file || window->details->has_recursive_apply) {
+ if (has_directory) {
+ attach_title_field (page_grid, _("File Permissions:"));
+ }
+ create_permission_checkboxes (window, page_grid, FALSE);
+ }
+
+ append_blank_slim_row (page_grid);
+ append_special_execution_flags (window, page_grid);
+
+ append_title_value_pair
+ (window, page_grid, _("Text view:"),
+ "permissions", INCONSISTENT_STATE_STRING,
+ FALSE);
+}
+#else
create_advanced_permissions (FMPropertiesWindow *window, GtkTable *page_table)
{
guint last_row;
@@ -4744,6 +5515,7 @@ create_advanced_permissions (FMPropertiesWindow *window, GtkTable *page_table)
"permissions", INCONSISTENT_STATE_STRING,
FALSE);
}
+#endif
static void
set_recursive_permissions_done (gpointer callback_data)
@@ -4868,6 +5640,61 @@ static void
create_permissions_page (FMPropertiesWindow *window)
{
GtkWidget *vbox, *button, *hbox;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkGrid *page_grid;
+ char *file_name, *prompt_text;
+ GList *file_list;
+
+ vbox = create_page_with_vbox (window->details->notebook,
+ _("Permissions"));
+
+ file_list = window->details->original_files;
+
+ window->details->initial_permissions = NULL;
+
+ if (all_can_get_permissions (file_list) && all_can_get_permissions (window->details->target_files)) {
+ window->details->initial_permissions = get_initial_permissions (window->details->target_files);
+ window->details->has_recursive_apply = files_has_changable_permissions_directory (window);
+
+ if (!all_can_set_permissions (file_list)) {
+ add_prompt_and_separator (
+ GTK_VBOX (vbox),
+ _("You are not the owner, so you cannot change these permissions."));
+ }
+
+ page_grid = GTK_GRID (create_grid_with_standard_properties ());
+
+ gtk_widget_show (GTK_WIDGET (page_grid));
+ gtk_box_pack_start (GTK_BOX (vbox),
+ GTK_WIDGET (page_grid),
+ TRUE, TRUE, 0);
+
+ if (g_settings_get_boolean (caja_preferences, CAJA_PREFERENCES_SHOW_ADVANCED_PERMISSIONS)) {
+ create_advanced_permissions (window, page_grid);
+ } else {
+ create_simple_permissions (window, page_grid);
+ }
+
+ append_blank_slim_row (page_grid);
+
+#ifdef HAVE_SELINUX
+ append_title_value_pair
+ (window, page_grid, _("SELinux context:"),
+ "selinux_context", INCONSISTENT_STATE_STRING,
+ FALSE);
+#endif
+ append_title_value_pair
+ (window, page_grid, _("Last changed:"),
+ "date_permissions", INCONSISTENT_STATE_STRING,
+ FALSE);
+
+ if (window->details->has_recursive_apply) {
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox);
+ gtk_container_add_with_properties (GTK_CONTAINER (page_grid), hbox,
+ "width", 2,
+ NULL);
+#else
GtkTable *page_table;
char *file_name, *prompt_text;
GList *file_list;
@@ -4931,6 +5758,7 @@ create_permissions_page (FMPropertiesWindow *window)
last_row, last_row+1,
GTK_FILL, 0,
0, 0);
+#endif
button = gtk_button_new_with_mnemonic (_("Apply Permissions to Enclosed Files"));
gtk_widget_show (button);
@@ -5630,7 +6458,7 @@ real_destroy (GtkObject *object)
}
#if GTK_CHECK_VERSION (3, 0, 0)
- GTK_WIDGET_CLASS (parent_class)->destroy (object);
+ GTK_WIDGET_CLASS (fm_properties_window_parent_class)->destroy (object);
#else
GTK_OBJECT_CLASS (parent_class)->destroy (object);
#endif
@@ -5646,9 +6474,13 @@ real_finalize (GObject *object)
g_list_free_full (window->details->mime_list, g_free);
g_free (window->details->pending_name);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ G_OBJECT_CLASS (fm_properties_window_parent_class)->finalize (object);
+#else
g_free (window->details);
G_OBJECT_CLASS (parent_class)->finalize (object);
+#endif
}
/* converts
@@ -5899,10 +6731,19 @@ fm_properties_window_class_init (FMPropertiesWindowClass *class)
binding_set = gtk_binding_set_by_class (class);
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Escape, 0,
"close", 0);
+#if GTK_CHECK_VERSION (3, 0, 0)
+
+ g_type_class_add_private (class, sizeof (FMPropertiesWindowDetails));
+#endif
}
static void
fm_properties_window_init (FMPropertiesWindow *window)
{
+#if GTK_CHECK_VERSION (3, 0, 0)
+ window->details = G_TYPE_INSTANCE_GET_PRIVATE (window, FM_TYPE_PROPERTIES_WINDOW,
+ FMPropertiesWindowDetails);
+#else
window->details = g_new0 (FMPropertiesWindowDetails, 1);
+#endif
}