Skip to content
Commits on Source (196)
......@@ -2,25 +2,40 @@ include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_
variables:
GIT_SUBMODULE_STRATEGY: normal
BUNDLE: "nautilus-dev.flatpak"
stages:
- image
- test
- deploy
flatpak:
extends: '.flatpak'
.vars-devel:
variables:
MANIFEST_PATH: "build-aux/flatpak/org.gnome.Nautilus.yml"
FLATPAK_MODULE: "nautilus"
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
APP_ID: "org.gnome.NautilusDevel"
BUNDLE: "nautilus-dev.flatpak"
nightly:
flatpak@x86_64:
extends: ['.flatpak@x86_64', '.vars-devel']
flatpak@aarch64:
#don't build for every, MRs to save resources
only:
refs:
- 'master'
- 'main'
- $CI_DEFAULT_BRANCH
extends: ['.flatpak@aarch64', '.vars-devel']
nightly@x86_64:
extends: '.publish_nightly'
needs: ['flatpak@x86_64']
nightly@aarch64:
extends: '.publish_nightly'
dependencies:
- flatpak
needs: ['flatpak@aarch64']
style check:
image: registry.gitlab.gnome.org/gnome/nautilus:latest
......
Major changes in 43.rc
=========================
* Resolving regressions from the GTK 3 to 4 switch:
- Restore accessible labels for view items (Corey Berla)
- HiDPI icons and thumbnails (António Fernandes)
- Restore transient location entry behavior (António Fernandes)
- Restore spacebar shortcut to trigger sushi file previewer (António Fernandes)
- Restore ability to create new file from dropped text (Corey Berla)
- Restore ability to duplicate via DND + Ctrl (Corey Berla)
* Drag-and-drop enhancements:
- Allow dropping files into Starred to star them (Corey Berla)
- Prevent "open on hover" while moving pointer (Corey Berla, António Fernandes)
* Menu enhancements:
- Add menu item to remove files from Starred list (Corey Berla)
- Don't activate menu button when clicking folder name (António Fernandes)
- Don't offer "Properties" and "Add to Bookmarks" actions when they don't make sense (Eric Daigle, Corey Berla, António Fernandes)
* Properties enhancements
- Wrap long filename words in Properties (anarchistcat)
- Refine properties for root directory (Corey Berla)
- Show error state for extensions properties (António Fernandes)
* General enhancements
- Redesign trash infobar (Ignacy Kuchciński, Sam Hewitt)
- Add tooltips to every headerbar control (Ronen Margolin)
- Update and modernize libnautilus-extension documentation (Jan Tojnar)
- Update appdata screenshots (Christopher Davis)
* Bugfixes
- Fix various app chooser issues (Corey Berla)
- Fix various batch rename dialog issues (Corey Berla)
- Fix Highcontrast styles (Ignacy Kuchciński, António Fernandes)
- Fix focus misbehaviours in the new views (Corey Berla)
- Don't show URI escape codes in tooltips (Antonio Teixeira)
- Show sharing infobar in gnome-user-share's fallback location (Corey Berla)
- Fix icon size in file conflict dialog (António Fernandes)
- Fix operations indicator animation (António Fernandes)
- Mark missing translatable strings (Sabri Ünal)
- Fix various memory leaks (Ignacy Kuchciński, Corey Berla)
- Fix compilation errors (Jeremy Bicha, Ondrey Holy, Timo)
* Translation updates (GNOME Translation Project contributors)
Major changes in 43.beta.1
==========================
* Restore view options tooltip (António Fernandes)
......
......@@ -24,6 +24,7 @@
"--filesystem=xdg-run/dconf",
"--filesystem=~/.config/dconf:ro",
"--talk-name=ca.desrt.dconf",
"--talk-name=org.gnome.NautilusPreviewer",
"--talk-name=org.gnome.DiskUtility",
"--talk-name=org.gnome.Settings",
"--talk-name=org.gnome.Console",
......
......@@ -23,6 +23,7 @@ finish-args:
- "--filesystem=xdg-run/dconf"
- "--filesystem=~/.config/dconf:ro"
- "--talk-name=ca.desrt.dconf"
- "--talk-name=org.gnome.NautilusPreviewer"
- "--talk-name=org.gnome.DiskUtility"
- "--talk-name=org.gnome.Settings"
- "--talk-name=org.gnome.Console"
......
......@@ -27,26 +27,26 @@
<url type="translate">https://wiki.gnome.org/TranslationProject</url>
<launchable type="desktop-id">@appid@.desktop</launchable>
<releases>
<release version="43.beta.1" date="2022-08-08" />
<release version="43.rc" date="2022-09-04" />
</releases>
<project_group>GNOME</project_group>
<project_license>GPL-3.0-or-later</project_license>
<developer_name>The GNOME Project</developer_name>
<screenshots>
<screenshot type="default">
<image>https://static.gnome.org/appdata/nautilus/nautilus-201901141.png</image>
<caption>Tile View</caption>
<image>https://static.gnome.org/appdata/gnome-43/files/files-grid.png</image>
<caption>Grid View</caption>
</screenshot>
<screenshot>
<image>https://static.gnome.org/appdata/nautilus/nautilus-201901142.png</image>
<image>https://static.gnome.org/appdata/gnome-43/files/files-list.png</image>
<caption>List View</caption>
</screenshot>
<screenshot>
<image>https://static.gnome.org/appdata/nautilus/nautilus-201901143.png</image>
<image>https://static.gnome.org/appdata/gnome-43/files/files-search.png</image>
<caption>Search</caption>
</screenshot>
<screenshot>
<image>https://static.gnome.org/appdata/nautilus/nautilus-201901144.png</image>
<image>https://static.gnome.org/appdata/gnome-43/files/files-other-locations.png</image>
<caption>Other Locations</caption>
</screenshot>
</screenshots>
......
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "version.xml">
]>
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
<bookinfo>
<title>Nautilus Extension Reference Manual</title>
<releaseinfo>For Nautilus-Extension &version;</releaseinfo>
</bookinfo>
<part>
<title>API Reference</title>
<chapter>
<title>Core Classes</title>
<xi:include href="xml/nautilus-column.xml" />
<xi:include href="xml/nautilus-file-info.xml" />
<xi:include href="xml/nautilus-menu.xml" />
<xi:include href="xml/nautilus-property-page.xml" />
</chapter>
<xi:include href="xml/nautilus-extension.xml" />
<chapter>
<title>Extension Interfaces</title>
<xi:include href="xml/nautilus-column-provider.xml" />
<xi:include href="xml/nautilus-info-provider.xml" />
<xi:include href="xml/nautilus-location-widget-provider.xml" />
<xi:include href="xml/nautilus-menu-provider.xml" />
<xi:include href="xml/nautilus-property-page-provider.xml" />
</chapter>
</part>
<index>
<title id="index-all">Index</title>
</index>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</book>
<INCLUDE>nautilus-extension.h</INCLUDE>
<SECTION>
<FILE>nautilus-extension</FILE>
nautilus_module_initialize
nautilus_module_shutdown
nautilus_module_list_types
</SECTION>
<SECTION>
<FILE>nautilus-location-widget-provider</FILE>
NautilusLocationWidgetProvider
NautilusLocationWidgetProviderInterface
nautilus_location_widget_provider_get_widget
<SUBSECTION Standard>
NAUTILUS_LOCATION_WIDGET_PROVIDER
NAUTILUS_IS_LOCATION_WIDGET_PROVIDER
NAUTILUS_TYPE_LOCATION_WIDGET_PROVIDER
NAUTILUS_LOCATION_WIDGET_PROVIDER_GET_IFACE
<SUBSECTION Private>
nautilus_location_widget_provider_get_type
</SECTION>
<SECTION>
<FILE>nautilus-menu-provider</FILE>
NautilusMenuProvider
NautilusMenuProviderInterface
nautilus_menu_provider_get_file_items
nautilus_menu_provider_get_background_items
nautilus_menu_provider_emit_items_updated_signal
<SUBSECTION Standard>
NAUTILUS_MENU_PROVIDER
NAUTILUS_IS_MENU_PROVIDER
NAUTILUS_TYPE_MENU_PROVIDER
NAUTILUS_PROVIDER_GET_IFACE
<SUBSECTION Private>
nautilus_menu_provider_get_type
</SECTION>
<SECTION>
<FILE>nautilus-menu</FILE>
NautilusMenu
NautilusMenuItem
nautilus_menu_new
nautilus_menu_append_item
nautilus_menu_get_items
nautilus_menu_item_list_free
nautilus_menu_item_new
nautilus_menu_item_activate
nautilus_menu_item_set_submenu
<SUBSECTION Standard>
NAUTILUS_MENU
NAUTILUS_IS_MENU
NAUTILUS_TYPE_MENU
NAUTILUS_MENU_CLASS
NAUTILUS_IS_MENU_CLASS
NAUTILUS_MENU_GET_CLASS
NAUTILUS_MENU_ITEM
NAUTILUS_IS_MENU_ITEM
NAUTILUS_TYPE_MENU_ITEM
NAUTILUS_MENU_ITEM_CLASS
NAUTILUS_IS_MENU_ITEM_CLASS
NAUTILUS_MENU_ITEM_GET_CLASS
<SUBSECTION Private>
nautilus_menu_get_type
nautilus_menu_item_get_type
</SECTION>
<SECTION>
<FILE>nautilus-column-provider</FILE>
NautilusColumnProvider
NautilusColumnProviderInterface
nautilus_column_provider_get_columns
<SUBSECTION Standard>
NAUTILUS_COLUMN_PROVIDER
NAUTILUS_IS_COLUMN_PROVIDER
NAUTILUS_TYPE_COLUMN_PROVIDER
NAUTILUS_COLUMN_PROVIDER_CLASS
NAUTILUS_IS_COLUMN_PROVIDER_CLASS
NAUTILUS_COLUMN_PROVIDER_GET_CLASS
<SUBSECTION Private>
nautilus_column_provider_get_type
</SECTION>
<SECTION>
<FILE>nautilus-property-page-provider</FILE>
NautilusPropertyPageProvider
NautilusPropertyPageProviderInterface
nautilus_property_page_provider_get_pages
<SUBSECTION Standard>
NAUTILUS_PROPERTY_PAGE_PROVIDER
NAUTILUS_IS_PROPERTY_PAGE_PROVIDER
NAUTILUS_TYPE_PROPERTY_PAGE_PROVIDER
NAUTILUS_PROPERTY_PAGE_PROVIDER_GET_IFACE
<SUBSECTION Private>
nautilus_property_page_provider_get_type
</SECTION>
<SECTION>
<FILE>nautilus-file-info</FILE>
NautilusFile
NautilusFileInfo
NautilusFileInfoInterface
nautilus_file_info_create
nautilus_file_info_create_for_uri
nautilus_file_info_lookup
nautilus_file_info_lookup_for_uri
nautilus_file_info_list_copy
nautilus_file_info_list_free
nautilus_file_info_is_gone
nautilus_file_info_get_file_type
nautilus_file_info_get_location
nautilus_file_info_get_name
nautilus_file_info_get_uri
nautilus_file_info_get_activation_uri
nautilus_file_info_get_parent_location
nautilus_file_info_get_parent_uri
nautilus_file_info_get_mount
nautilus_file_info_get_uri_scheme
nautilus_file_info_get_parent_info
nautilus_file_info_get_mime_type
nautilus_file_info_is_mime_type
nautilus_file_info_is_directory
nautilus_file_info_can_write
nautilus_file_info_add_emblem
nautilus_file_info_get_string_attribute
nautilus_file_info_add_string_attribute
nautilus_file_info_invalidate_extension_info
<SUBSECTION Standard>
NAUTILUS_FILE_INFO
NAUTILUS_IS_FILE_INFO
NAUTILUS_TYPE_FILE_INFO
NAUTILUS_FILE_INFO_GET_IFACE
<SUBSECTION Private>
nautilus_file_info_get_type
</SECTION>
<SECTION>
<FILE>nautilus-column</FILE>
NautilusColumn
nautilus_column_new
<SUBSECTION Standard>
NAUTILUS_COLUMN
NAUTILUS_IS_COLUMN
NAUTILUS_TYPE_COLUMN
NAUTILUS_COLUMN_CLASS
NAUTILUS_IS_COLUMN_CLASS
NAUTILUS_COLUMN_GET_CLASS
<SUBSECTION Private>
nautilus_column_get_type
</SECTION>
<SECTION>
<FILE>nautilus-info-provider</FILE>
NautilusInfoProvider
NautilusInfoProviderInterface
NautilusOperationHandle
NautilusOperationResult
nautilus_info_provider_update_file_info
nautilus_info_provider_cancel_update
nautilus_info_provider_update_complete_invoke
<SUBSECTION Standard>
NAUTILUS_INFO_PROVIDER
NAUTILUS_IS_INFO_PROVIDER
NAUTILUS_TYPE_INFO_PROVIDER
NAUTILUS_INFO_PROVIDER_GET_IFACE
<SUBSECTION Private>
nautilus_info_provider_get_type
</SECTION>
<SECTION>
<FILE>nautilus-property-page</FILE>
NautilusPropertyPage
nautilus_property_page_new
<SUBSECTION Standard>
NAUTILUS_PROPERTY_PAGE
NAUTILUS_IS_PROPERTY_PAGE
NAUTILUS_TYPE_PROPERTY_PAGE
NAUTILUS_PROPERTY_PAGE_CLASS
NAUTILUS_IS_PROPERTY_PAGE_CLASS
NAUTILUS_PROPERTY_PAGE_GET_CLASS
<SUBSECTION Private>
nautilus_property_page_get_type
</SECTION>
docs_conf = configuration_data()
docs_conf.set('NAUTILUS_EXTENSION_VERSION_INFO', nautilus_extension_version)
configure_file(
input: 'version.xml.in',
output: 'version.xml',
configuration: docs_conf
)
gnome.gtkdoc(
'libnautilus-extension',
main_xml: 'libnautilus-extension-docs.xml',
src_dir: join_paths(meson.project_source_root(), 'libnautilus-extension'),
dependencies: nautilus_extension,
install: true,
scan_args: [
'--ignore-headers=nautilus-extension-private.h',
'--rebuild-types'
],
)
subdir('libnautilus-extension')
toml_data = configuration_data()
toml_data.set('VERSION', meson.project_version())
nautilus_toml = configure_file(
input: 'nautilus.toml.in',
output: 'nautilus.toml',
configuration: toml_data,
)
custom_target(
'nautilus-doc',
input: [
nautilus_toml,
nautilus_extension_gir[0],
],
output: 'nautilus',
command: [
gi_docgen,
'generate',
'--quiet',
'--add-include-path=@0@'.format(meson.project_source_root() / 'libnautilus-extension'),
'--config=@INPUT0@',
'--output-dir=@OUTPUT@',
'--no-namespace-dir',
'--content-dir=@0@'.format(meson.current_source_dir()),
'@INPUT1@',
],
build_by_default: true,
install: true,
install_dir: docdir,
)
[library]
version = "@VERSION@"
description = "Nautilus Extension API"
license = "GPL-2.0-or-later"
browse_url = "https://gitlab.gnome.org/GNOME/nautilus/"
repository_url = "https://gitlab.gnome.org/GNOME/nautilus.git"
devhelp = true
search_index = true
[theme]
name = "basic"
show_index_summary = true
show_class_hierarchy = true
[source-location]
# The base URL for the web UI
base_url = "https://gitlab.gnome.org/GNOME/nautilus/-/blob/master/"
# The format for links, using "filename" and "line" for the format
file_format = "{filename}#L{line}"
[extra]
urlmap_file = "urlmap.js"
// SPDX-FileCopyrightText: 2021 GNOME Foundation
// SPDX-License-Identifier: LGPL-2.1-or-later
// A map between namespaces and base URLs for their online documentation
baseURLs = [
["GLib", "https://docs.gtk.org/glib/"],
["Gio", "https://docs.gtk.org/gio/"],
["GObject", "https://docs.gtk.org/gobject/"],
];
......@@ -95,16 +95,28 @@ eel_str_double_underscores (const char *string)
char *
eel_str_capitalize (const char *string)
{
char *capitalized;
char *capitalized = NULL;
if (string == NULL)
{
return NULL;
}
capitalized = g_strdup (string);
if (g_utf8_validate (string, -1, NULL))
{
g_autofree gunichar *ucs4 = NULL;
ucs4 = g_utf8_to_ucs4 (string, -1, NULL, NULL, NULL);
if (ucs4 != NULL)
{
ucs4[0] = g_unichar_toupper (ucs4[0]);
capitalized = g_ucs4_to_utf8 (ucs4, -1, NULL, NULL, NULL);
}
}
capitalized[0] = g_ascii_toupper (capitalized[0]);
if (capitalized == NULL)
{
return g_strdup (string);
}
return capitalized;
}
......
......@@ -24,19 +24,3 @@ libtotem_properties_page = shared_module(
install: true,
install_dir: extensiondir
)
# test_properties_page_sources = files(
# 'totem-properties-main.c',
# 'totem-properties-view.c',
# 'totem-gst-helpers.c',
# 'test-properties-page.c'
# )
# executable(
# 'test-properties-page',
# test_properties_page_sources,
# dependencies: libtotem_properties_page_deps + [
# nautilus_extension
# ],
# )
/*
* Copyright (C) 2005 Bastien Nocera <hadess@hadess.net>
*
* This library 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.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include <config.h>
#include <string.h>
#define GST_USE_UNSTABLE_API 1
#include <gst/gst.h>
#include <glib/gi18n-lib.h>
#include "totem-gst-helpers.h"
#include "totem-properties-view.h"
static GtkWidget *window, *props, *label;
static void
create_props (const char *url)
{
label = gtk_label_new ("Audio/Video");
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (gtk_main_quit), NULL);
gtk_window_set_default_size (GTK_WINDOW (window), 450, 550);
props = totem_properties_view_new (url, label);
gtk_container_add (GTK_CONTAINER (window), props);
gtk_widget_show (window);
}
static void
destroy_props (void)
{
gtk_widget_destroy (label);
}
int main (int argc, char **argv)
{
GFile *file;
char *url;
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
totem_gst_disable_display_decoders ();
gst_init (&argc, &argv);
gtk_init ();
if (argc != 2) {
g_print ("Usage: %s [URI]\n", argv[0]);
return 1;
}
file = g_file_new_for_commandline_arg (argv[1]);
url = g_file_get_uri (file);
g_object_unref (file);
create_props (url);
g_free (url);
gtk_main ();
destroy_props ();
return 0;
}
......@@ -296,6 +296,7 @@ discovered_cb (GstDiscoverer *discoverer,
g_warning ("Couldn't get information about '%s': %s",
gst_discoverer_info_get_uri (info),
error->message);
append_item (props, _("Oops! Something went wrong."), error->message);
return;
}
......
......@@ -65,7 +65,7 @@ libnautilus_extension = shared_library(
)
if get_option('introspection')
gnome.generate_gir(
nautilus_extension_gir = gnome.generate_gir(
libnautilus_extension,
export_packages: [
'libnautilus-extension'
......
......@@ -228,6 +228,11 @@ nautilus_column_class_init (NautilusColumnClass *class)
G_OBJECT_CLASS (class)->get_property = nautilus_column_get_property;
G_OBJECT_CLASS (class)->set_property = nautilus_column_set_property;
/**
* NautilusColumn:name:
*
* The identifier for the column.
*/
g_object_class_install_property (G_OBJECT_CLASS (class),
PROP_NAME,
g_param_spec_string ("name",
......@@ -235,6 +240,12 @@ nautilus_column_class_init (NautilusColumnClass *class)
"Name of the column",
NULL,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE | G_PARAM_READABLE));
/**
* NautilusColumn:attribute:
*
* The file attribute to be displayed in the column.
*/
g_object_class_install_property (G_OBJECT_CLASS (class),
PROP_ATTRIBUTE,
g_param_spec_string ("attribute",
......@@ -242,6 +253,12 @@ nautilus_column_class_init (NautilusColumnClass *class)
"The attribute name to display",
NULL,
G_PARAM_READWRITE));
/**
* NautilusColumn:attribute_q:
*
* The name of the attribute to display, in quark form.
*/
g_object_class_install_property (G_OBJECT_CLASS (class),
PROP_ATTRIBUTE_Q,
g_param_spec_uint ("attribute_q",
......@@ -249,6 +266,12 @@ nautilus_column_class_init (NautilusColumnClass *class)
"The attribute name to display, in quark form",
0, G_MAXUINT, 0,
G_PARAM_READABLE));
/**
* NautilusColumn:label:
*
* The label to display in the column.
*/
g_object_class_install_property (G_OBJECT_CLASS (class),
PROP_LABEL,
g_param_spec_string ("label",
......@@ -256,6 +279,12 @@ nautilus_column_class_init (NautilusColumnClass *class)
"Label to display in the column",
NULL,
G_PARAM_READWRITE));
/**
* NautilusColumn:description:
*
* The user-visible description of the column.
*/
g_object_class_install_property (G_OBJECT_CLASS (class),
PROP_DESCRIPTION,
g_param_spec_string ("description",
......@@ -264,6 +293,11 @@ nautilus_column_class_init (NautilusColumnClass *class)
NULL,
G_PARAM_READWRITE));
/**
* NautilusColumn:xalign:
*
* The x-alignment of the column.
*/
g_object_class_install_property (G_OBJECT_CLASS (class),
PROP_XALIGN,
g_param_spec_float ("xalign",
......
......@@ -36,24 +36,27 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (NautilusColumn, nautilus_column, NAUTILUS, COLUMN, GObject)
/**
* SECTION:nautilus-column
* @title: NautilusColumn
* @short_description: List view column descriptor object
* NautilusColumn:
*
* #NautilusColumn is an object that describes a column in the file manager
* list view. Extensions can provide #NautilusColumn by registering a
* #NautilusColumnProvider and returning them from
* nautilus_column_provider_get_columns(), which will be called by the main
* List view column descriptor object.
*
* `NautilusColumn` is an object that describes a column in the file manager
* list view. Extensions can provide `NautilusColumn` by registering a
* [class@ColumnProvider] and returning them from
* [method@ColumnProvider.get_columns], which will be called by the main
* application when creating a view.
*/
/**
* nautilus_column_new:
*
* @name: (not nullable): identifier of the column
* @attribute: (not nullable): the file attribute to be displayed in the column
* @label: (not nullable): the user-visible label for the column
* @description: (not nullable): a user-visible description of the column
*
* Creates a new [class@Column] object.
*
* Returns: (transfer full): a new #NautilusColumn
*/
NautilusColumn *nautilus_column_new (const char *name,
......@@ -61,13 +64,4 @@ NautilusColumn *nautilus_column_new (const char *name,
const char *label,
const char *description);
/* NautilusColumn has the following properties:
* name (string) - the identifier for the column
* attribute (string) - the file attribute to be displayed in the
* column
* label (string) - the user-visible label for the column
* description (string) - a user-visible description of the column
* xalign (float) - x-alignment of the column
*/
G_END_DECLS