...
 
Commits (47)
version 3.35.1
--------------
New features and user visible changes:
* Support for Zstandard compressed files/archives. (Felix Riemann)
* Allow to directly open .tar.lzo files. (Felix Riemann)
* libarchive: implemented read support for 7z. (Peter Keresztes Schmidt)
* Provide a development variant of the app icon. (Jakub Steiner) (!12)
* Converted README to README.md (Roger)
* Remove file-roller from the recommended applications for ePub
files. (Bastien Nocera)
Bugs fixed:
* Removed deprecated functions. (Peter Keresztes Schmidt)
* Add application/x-xar as a supported mime-type. (Bastien Nocera) (!50)
New or updated application translations:
* Basque (Asier Sarasua Garmendia)
* Japanese (Ryuta Fujii)
version 3.32.2
--------------
Bugs fixed:
* Prevents CTRL+F to be activated twice for a single key press.
(Andrea Azzarone) (!37)
New or updated application translations:
* Basque (Asier Sarasua Garmendia)
* Catalan (Gil Forcada)
* Chinese (China) (Dingzhong Chen)
* Danish (Alan Mortensen)
* Icelandic (Sveinn í Felli)
* Persian (Danial Behzadi)
* Spanish - Spain (Daniel Mustieles)
New or updated manual translations:
* français (Charles Monzat)
version 3.32.1
--------------
......
* File Roller *
an archive manager utility for the
GNOME Environment.
* What is it ?
File Roller is an archive manager for the GNOME environment. This means
that you can create and modify archives; view the content of an archive;
view and modify a file contained in the archive; extract files from the
archive.
File Roller is only a front-end (a graphical interface) to archiving programs
like tar and zip. The supported file types are :
* 7-Zip Compressed File (.7z)
* WinAce Compressed File (.ace)
* ALZip Compressed File (.alz)
* AIX Small Indexed Archive (.ar)
* ARJ Compressed Archive (.arj)
* Cabinet File (.cab)
* UNIX CPIO Archive (.cpio)
* Debian Linux Package (.deb) [Read-only mode]
* ISO-9660 CD Disc Image (.iso) [Read-only mode]
* Java Archive (.jar)
* Java Enterprise archive (.ear)
* Java Web Archive (.war)
* LHA Archive (.lzh, .lha)
* WinRAR Compressed Archive (.rar)
* RAR Archived Comic Book (.cbr)
* RPM Linux Package (.rpm) [Read-only mode]
* Tape Archive File:
* uncompressed (.tar)
or compressed with:
* gzip (.tar.gz , .tgz)
* brotli (.tar.br)
* bzip (.tar.bz , .tbz)
* bzip2 (.tar.bz2 , .tbz2)
* compress (.tar.Z , .taz)
* lrzip (.tar.lrz , .tlrz)
* lzip (.tar.lz , .tlz)
* lzop (.tar.lzo , .tzo)
* 7zip (.tar.7z)
* xz (.tar.xz)
* Snap packages (.snap)
* Squashfs images (.sqsh)
* Stuffit Archives (.bin, .sit)
* ZIP Archive (.zip)
* ZIP Archived Comic Book (.cbz)
* ZOO Compressed Archive File (.zoo)
* Single files compressed with gzip (.gz), brotli (.br), bzip (.bz), bzip2 (.bz2), compress (.Z),
lrzip (.lrz), lzip (.lz), lzop (.lzo), rzip(.rz), xz (.xz).
* Home Page
http://fileroller.sourceforge.net
* Licensing
This program is released under the terms of the GNU General Public
License (GNU GPL) version 2 or greater.
You can find a copy of the license in the file COPYING.
* Dependencies
In order to build this program from the source code you need a working
GNOME environment version 2.x, with the development tools installed
properly.
Also you need the following libraries:
* glib >= 2.36
* gtk+ >= 3.13.2
* libnautilus-extension >= 2.22.2 (optional)
* libarchive >= 3.0.0 (optional)
* Install
mkdir build
cd build
meson ..
ninja
ninja install
# File Roller
An archive manager utility for the GNOME Environment.
## What is it ?
File Roller is an archive manager for the GNOME environment. This means
that you can create and modify archives; view the content of an archive;
view and modify a file contained in the archive; extract files from the
archive.
File Roller is only a front-end (a graphical interface) to archiving programs
like tar and zip. The supported file types are:
* 7-Zip Compressed File (.7z)
* WinAce Compressed File (.ace)
* ALZip Compressed File (.alz)
* AIX Small Indexed Archive (.ar)
* ARJ Compressed Archive (.arj)
* Cabinet File (.cab)
* UNIX CPIO Archive (.cpio)
* Debian Linux Package (.deb) [Read-only mode]
* ISO-9660 CD Disc Image (.iso) [Read-only mode]
* Java Archive (.jar)
* Java Enterprise archive (.ear)
* Java Web Archive (.war)
* LHA Archive (.lzh, .lha)
* WinRAR Compressed Archive (.rar)
* RAR Archived Comic Book (.cbr)
* RPM Linux Package (.rpm) [Read-only mode]
* Tape Archive File:
* uncompressed (.tar)
* or compressed with:
* gzip (.tar.gz , .tgz)
* brotli (.tar.br)
* bzip (.tar.bz , .tbz)
* bzip2 (.tar.bz2 , .tbz2)
* compress (.tar.Z , .taz)
* lrzip (.tar.lrz , .tlrz)
* lzip (.tar.lz , .tlz)
* lzop (.tar.lzo , .tzo)
* 7zip (.tar.7z)
* xz (.tar.xz)
* Zstandard (.tar.zst, .tzst)
* Snap packages (.snap)
* Squashfs images (.sqsh)
* Stuffit Archives (.bin, .sit)
* ZIP Archive (.zip)
* ZIP Archived Comic Book (.cbz)
* ZOO Compressed Archive File (.zoo)
* Single files compressed with gzip (.gz), brotli (.br), bzip (.bz),
bzip2 (.bz2), compress (.Z), lrzip (.lrz), lzip (.lz), lzop (.lzo),
rzip(.rz), and xz (.xz), Zstandard (.zst).
## Useful links
* Homepage: https://wiki.gnome.org/Apps/FileRoller
* Report issues: https://gitlab.gnome.org/GNOME/file-roller/issues/
* Donate: https://www.gnome.org/friends/
* Translate: https://wiki.gnome.org/TranslationProject
## Licensing
This program is released under the terms of the GNU General Public
License (GNU GPL) version 2 or greater.
You can find a copy of the license in the file COPYING.
## Dependencies
In order to build this program from the source code you need a working
GNOME environment version 3.x, with the development tools installed
properly.
Also you need the following libraries:
* glib >= 2.38
* gtk+ >= 3.22.0
* libnautilus-extension >= 3.28.0 (optional)
* libarchive >= 3.0.0 (optional)
## Install
```bash
mkdir build
cd build
meson ..
ninja
ninja install
```
......@@ -28,5 +28,5 @@ unstaff=
unzip=
xz=
zip=
zstd=
zoo=
application/epub+zip;
application/bzip2;
application/gzip;
application/vnd.android.package-archive;
application/vnd.ms-cab-compressed;
......@@ -40,7 +40,6 @@ application/x-lzma;
application/x-lzma-compressed-tar;
application/x-lzop;
application/x-lz4-compressed-tar;
application/x-lzop-compressed-tar;
application/x-ms-wim;
application/x-rar;
application/x-rar-compressed;
......@@ -50,11 +49,15 @@ application/x-rzip;
application/x-rzip-compressed-tar;
application/x-tar;
application/x-tarz;
application/x-tzo;
application/x-stuffit;
application/x-war;
application/x-xar;
application/x-xz;
application/x-xz-compressed-tar;
application/x-zip;
application/x-zip-compressed;
application/x-zstd-compressed-tar;
application/x-zoo;
application/zip;
application/zstd;
This diff is collapsed.
project('file-roller', 'c',
license : 'GPL2+',
version : '3.32.1',
meson_version : '>=0.43'
version : '3.35.1',
meson_version : '>=0.50'
)
glib_version = '>=2.36'
gtk_version = '>=3.13.2'
nautilus_version = '>=2.22.2'
glib_version = '>=2.38'
gtk_version = '>=3.22.0'
nautilus_version = '>=3.28.0'
json_glib_version = '>=0.14.0'
libnotify_version = '>=0.4.3'
libarchive_version = '>=3.0.0'
......
......@@ -22,8 +22,7 @@
*/
#include <config.h>
#include <libnautilus-extension/nautilus-extension-types.h>
#include <libnautilus-extension/nautilus-column-provider.h>
#include <nautilus-extension.h>
#include <glib/gi18n-lib.h>
#include "nautilus-fileroller.h"
......
......@@ -127,15 +127,17 @@ static struct {
{ "application/x-java-archive", TRUE },
{ "application/x-lhz", TRUE },
{ "application/x-lzop", TRUE },
{ "application/x-lzop-compressed-tar", TRUE },
{ "application/x-ms-wim", TRUE },
{ "application/x-rar", TRUE },
{ "application/x-rar-compressed", TRUE },
{ "application/x-rpm", TRUE },
{ "application/x-rzip", TRUE },
{ "application/x-stuffit", TRUE },
{ "application/x-tzo", TRUE },
{ "application/x-war", TRUE },
{ "application/x-zoo", TRUE },
{ "application/x-zstd-compressed-tar", TRUE },
{ "application/zstd", TRUE },
{ "multipart/x-zip", TRUE },
{ NULL, FALSE }
};
......
......@@ -409,7 +409,7 @@ msgstr[0] ""
"l'arxiu es perdran tots els canvis que hi hàgiu fet."
msgstr[1] ""
"S'han modificat %d fitxers des d'una aplicació externa. Si no els "
"actualitzeu en l'arxiu es perdran tot els canvis que hi hàgiu fet."
"actualitzeu en l'arxiu es perdran tots els canvis que hi hàgiu fet."
#: src/dlg-update.c:190
#, c-format
......@@ -708,12 +708,13 @@ msgstr "S'està canviant el nom dels fitxers a «%s»"
msgid "Updating the files in “%s”"
msgstr "S'estan actualitzant els fitxers a «%s»"
#. N.T.: Apareix com una frase sola (primer lletra cal que sigui en majúscula)
#: src/fr-window.c:2681
#, c-format
msgid "%d file remaining"
msgid_plural "%'d files remaining"
msgstr[0] "manca %d fitxer"
msgstr[1] "manquen %d fitxers"
msgstr[0] "Manca %d fitxer"
msgstr[1] "Manquen %d fitxers"
#: src/fr-window.c:2685 src/fr-window.c:3309
msgid "Please wait…"
......@@ -1010,7 +1011,7 @@ msgstr "_Enganxa"
#. * explanation of the values.
#: src/glib-utils.c:787
msgid "%d %B %Y, %H:%M"
msgstr "%d %B %Y, %H:%M"
msgstr "%-d %B de %Y, %-H:%M"
#: src/gtk-utils.c:235
msgid "C_ommand Line Output:"
......@@ -1232,7 +1233,7 @@ msgstr "_Contrasenya…"
#: src/ui/gears-menu.ui:60
msgid "_About Archive Manager"
msgstr "Quant al Gestor d'arxius"
msgstr "_Quant al Gestor d'arxius"
#: src/ui/menus.ui:11
msgid "_Open With…"
......
......@@ -5,21 +5,21 @@
# Spanish localization for File Roller.
# Copyright © 2002, 2006, 2007, 2008 the Free Software Foundation, Inc.
# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2009, 2010, 2011, 2012.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010-2019.
#
msgid ""
msgstr ""
"Project-Id-Version: file-roller.master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/file-roller/issues\n"
"POT-Creation-Date: 2018-11-01 09:55+0000\n"
"PO-Revision-Date: 2018-12-04 15:35+0100\n"
"POT-Creation-Date: 2019-03-24 19:31+0000\n"
"PO-Revision-Date: 2019-07-30 09:33+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n"
"Language: es\n"
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Gtranslator 2.91.7\n"
"X-Generator: Gtranslator 3.32.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/org.gnome.FileRoller.appdata.xml.in:9
......@@ -63,7 +63,7 @@ msgid "xz archives (.tar.xz)"
msgstr "archivadores xz (.tar.xz)"
#: data/org.gnome.FileRoller.desktop.in.in:3 src/fr-application.c:455
#: src/fr-window.c:2017 src/fr-window.c:5546
#: src/fr-window.c:2022 src/fr-window.c:5551
msgid "Archive Manager"
msgstr "Gestor de archivadores"
......@@ -76,12 +76,6 @@ msgstr "Cree y modifique un archivador"
msgid "zip;tar;extract;unpack;"
msgstr "zip;tar;extraer;desempaquetar;"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: data/org.gnome.FileRoller.desktop.in.in:13
#| msgid "Archive Manager"
msgid "org.gnome.ArchiveManager"
msgstr "org.gnome.ArchiveManager"
#: data/org.gnome.FileRoller.gschema.xml:58
msgid "How to sort files"
msgstr "Cómo ordenar archivos"
......@@ -223,20 +217,20 @@ msgstr "Tamaño predeterminado del volumen"
msgid "The default size for volumes."
msgstr "El tamaño predeterminado de los volúmenes."
#: nautilus/nautilus-fileroller.c:261
#: nautilus/nautilus-fileroller.c:262
msgid "Extract Here"
msgstr "Extraer aquí"
#. Translators: the current position is the current folder
#: nautilus/nautilus-fileroller.c:263
#: nautilus/nautilus-fileroller.c:264
msgid "Extract the selected archive to the current position"
msgstr "Extraer el archivador seleccionado en la posición actual"
#: nautilus/nautilus-fileroller.c:280
#: nautilus/nautilus-fileroller.c:281
msgid "Extract To…"
msgstr "Extraer en…"
#: nautilus/nautilus-fileroller.c:281
#: nautilus/nautilus-fileroller.c:282
msgid "Extract the selected archive"
msgstr "Extrae el archivador seleccionado"
......@@ -316,7 +310,7 @@ msgstr "Contraseña incorrecta."
msgid "Compress"
msgstr "Comprimir"
#: src/dlg-extract.c:95 src/fr-window.c:6936
#: src/dlg-extract.c:95 src/fr-window.c:6939
#, c-format
msgid ""
"Destination folder “%s” does not exist.\n"
......@@ -327,22 +321,22 @@ msgstr ""
"\n"
"¿Quiere crearla?"
#: src/dlg-extract.c:103 src/fr-window.c:6944
#: src/dlg-extract.c:103 src/fr-window.c:6947
msgid "Create _Folder"
msgstr "Crear _carpeta"
#: src/dlg-extract.c:122 src/dlg-extract.c:139 src/dlg-extract.c:166
#: src/fr-window.c:4420 src/fr-window.c:6860 src/fr-window.c:6865
#: src/fr-window.c:6965 src/fr-window.c:6984 src/fr-window.c:6989
#: src/fr-window.c:4425 src/fr-window.c:6863 src/fr-window.c:6868
#: src/fr-window.c:6968 src/fr-window.c:6987 src/fr-window.c:6992
msgid "Extraction not performed"
msgstr "Extracción no realizada"
#: src/dlg-extract.c:123 src/fr-window.c:6961
#: src/dlg-extract.c:123 src/fr-window.c:6964
#, c-format
msgid "Could not create the destination folder: %s."
msgstr "No se pudo crear la carpeta de destino %s."
#: src/dlg-extract.c:167 src/fr-window.c:4647 src/fr-window.c:4749
#: src/dlg-extract.c:167 src/fr-window.c:4652 src/fr-window.c:4754
#, c-format
msgid ""
"You don’t have the right permissions to extract archives in the folder “%s”"
......@@ -358,8 +352,8 @@ msgid "There was an internal error trying to search for applications:"
msgstr "Hubo un error interno al intentar buscar aplicaciones:"
#: src/dlg-package-installer.c:296 src/dlg-package-installer.c:305
#: src/dlg-package-installer.c:332 src/fr-archive.c:748 src/fr-window.c:4087
#: src/fr-window.c:7667 src/fr-window.c:8024 src/fr-window.c:9539
#: src/dlg-package-installer.c:332 src/fr-archive.c:748 src/fr-window.c:4092
#: src/fr-window.c:7670 src/fr-window.c:8027 src/fr-window.c:9542
msgid "Archive type not supported."
msgstr "Tipo de archivador no soportado."
......@@ -518,19 +512,19 @@ msgid "You can’t add an archive to itself."
msgstr "No puede añadir un archivador a sí mismo."
#. Translators: %s is a filename.
#: src/fr-command-7z.c:306 src/fr-command-rar.c:495 src/fr-command-tar.c:319
#: src/fr-command-7z.c:306 src/fr-command-rar.c:495 src/fr-command-tar.c:322
#, c-format
msgid "Adding “%s”"
msgstr "Añadiendo «%s»"
#. Translators: %s is a filename.
#: src/fr-command-7z.c:458 src/fr-command-rar.c:627 src/fr-command-tar.c:440
#: src/fr-command-7z.c:458 src/fr-command-rar.c:627 src/fr-command-tar.c:443
#, c-format
msgid "Extracting “%s”"
msgstr "Extrayendo «%s»"
#. Translators: %s is a filename.
#: src/fr-command-rar.c:576 src/fr-command-tar.c:385
#: src/fr-command-rar.c:576 src/fr-command-tar.c:388
#, c-format
msgid "Removing “%s”"
msgstr "Quitando «%s»"
......@@ -540,15 +534,15 @@ msgstr "Quitando «%s»"
msgid "Could not find the volume: %s"
msgstr "No se pudo encontrar el volumen: %s"
#: src/fr-command-tar.c:395
#: src/fr-command-tar.c:398
msgid "Deleting files from archive"
msgstr "Borrando archivos del archivador"
msgstr "Eliminando archivos del archivador"
#: src/fr-command-tar.c:500
#: src/fr-command-tar.c:503
msgid "Recompressing archive"
msgstr "Recomprimiendo archivador"
#: src/fr-command-tar.c:779
#: src/fr-command-tar.c:801
msgid "Decompressing archive"
msgstr "Descomprimiendo archivador"
......@@ -564,7 +558,7 @@ msgstr "No se pudo cargar la ubicación"
#: src/fr-new-archive-dialog.c:352 src/fr-new-archive-dialog.c:371
#: src/fr-new-archive-dialog.c:387 src/fr-new-archive-dialog.c:436
#: src/fr-new-archive-dialog.c:454 src/fr-new-archive-dialog.c:476
#: src/fr-window.c:3032
#: src/fr-window.c:3037
msgid "Could not create the archive"
msgstr "No se pudo crear el archivador"
......@@ -577,7 +571,7 @@ msgid "You don’t have permission to create an archive in this folder"
msgstr "No tiene permisos para crear un archivador en esta carpeta"
#. Translators: the name references to a filename. This message can appear when renaming a file.
#: src/fr-new-archive-dialog.c:456 src/fr-window.c:8338
#: src/fr-new-archive-dialog.c:456 src/fr-window.c:8341
msgid "New name is the same as old one, please type other name."
msgstr "El nombre nuevo es el mismo que el antiguo, introduzca otro nombre."
......@@ -593,7 +587,7 @@ msgid ""
msgstr ""
"El archivo ya existe en «%s». Si lo reemplaza sobrescribirá su contenido."
#: src/fr-new-archive-dialog.c:506 src/fr-window.c:6780
#: src/fr-new-archive-dialog.c:506 src/fr-window.c:6783
msgid "_Replace"
msgstr "_Reemplazar"
......@@ -614,185 +608,185 @@ msgstr "Todos los archivadores"
msgid "All files"
msgstr "Todos los archivos"
#: src/fr-window.c:1221
#: src/fr-window.c:1226
msgid "Operation completed"
msgstr "Operación completada"
#: src/fr-window.c:1634
#: src/fr-window.c:1639
msgid "Folder"
msgstr "Carpeta"
#: src/fr-window.c:2024
#: src/fr-window.c:2029
msgid "[read only]"
msgstr "[sólo lectura]"
#: src/fr-window.c:2165
#: src/fr-window.c:2170
#, c-format
msgid "Could not display the folder “%s”"
msgstr "No se pudo mostrar la carpeta «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2338 src/fr-window.c:2376
#: src/fr-window.c:2343 src/fr-window.c:2381
#, c-format
msgid "Creating “%s”"
msgstr "Creando «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2342
#: src/fr-window.c:2347
#, c-format
msgid "Loading “%s”"
msgstr "Cargando «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2346
#: src/fr-window.c:2351
#, c-format
msgid "Reading “%s”"
msgstr "Leyendo «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2350
#: src/fr-window.c:2355
#, c-format
msgid "Deleting the files from “%s”"
msgstr "Eliminando los archivos de «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2354
#: src/fr-window.c:2359
#, c-format
msgid "Testing “%s”"
msgstr "Verificando «%s»"
#: src/fr-window.c:2357
#: src/fr-window.c:2362
msgid "Getting the file list"
msgstr "Obteniendo la lista de archivos"
#. Translators: %s is a filename
#: src/fr-window.c:2361
#: src/fr-window.c:2366
#, c-format
msgid "Copying the files to add to “%s”"
msgstr "Copiando los archivos que añadir a «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2365
#: src/fr-window.c:2370
#, c-format
msgid "Adding the files to “%s”"
msgstr "Añadiendo los archivos a «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2369
#: src/fr-window.c:2374
#, c-format
msgid "Extracting the files from “%s”"
msgstr "Extrayendo los archivos de «%s»"
#: src/fr-window.c:2372
#: src/fr-window.c:2377
msgid "Copying the extracted files to the destination"
msgstr "Copiando los archivos extraídos al destino"
#. Translators: %s is a filename
#: src/fr-window.c:2381
#: src/fr-window.c:2386
#, c-format
msgid "Saving “%s”"
msgstr "Guardando «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2388
#: src/fr-window.c:2393
#, c-format
msgid "Renaming the files in “%s”"
msgstr "Renombrando los archivos en «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2392
#: src/fr-window.c:2397
#, c-format
msgid "Updating the files in “%s”"
msgstr "Actualizando los archivos en «%s»"
#: src/fr-window.c:2681
#: src/fr-window.c:2686
#, c-format
msgid "%d file remaining"
msgid_plural "%'d files remaining"
msgstr[0] "queda %d archivo"
msgstr[1] "quedan %'d archivos"
#: src/fr-window.c:2685 src/fr-window.c:3309
#: src/fr-window.c:2690 src/fr-window.c:3314
msgid "Please wait…"
msgstr "Espere…"
#: src/fr-window.c:2803
#: src/fr-window.c:2808
msgid "Extraction completed successfully"
msgstr "La extracción se completó satisfactoriamente"
#: src/fr-window.c:2806
#: src/fr-window.c:2811
msgid "_Show the Files"
msgstr "_Mostrar los archivos"
#. Translators: %s is a filename
#: src/fr-window.c:2823 src/fr-window.c:6266
#: src/fr-window.c:2828 src/fr-window.c:6269
#, c-format
msgid "“%s” created successfully"
msgstr "«%s» creado con éxito"
#: src/fr-window.c:2830
#: src/fr-window.c:2835
msgid "_Open the Archive"
msgstr "_Abrir el archivador"
#: src/fr-window.c:2918 src/fr-window.c:3088
#: src/fr-window.c:2923 src/fr-window.c:3093
msgid "Command exited abnormally."
msgstr "El comando terminó con error."
#: src/fr-window.c:3037
#: src/fr-window.c:3042
msgid "An error occurred while extracting files."
msgstr "Ha ocurrido un error mientras se extraían los archivos."
#: src/fr-window.c:3043
#: src/fr-window.c:3048
#, c-format
msgid "Could not open “%s”"
msgstr "No se pudo abrir «%s»"
#: src/fr-window.c:3048
#: src/fr-window.c:3053
msgid "An error occurred while loading the archive."
msgstr "Se produjo un error cargando el archivador."
#: src/fr-window.c:3052
#: src/fr-window.c:3057
msgid "An error occurred while deleting files from the archive."
msgstr "Se produjo un error al eliminar archivos del archivador."
#: src/fr-window.c:3058
#: src/fr-window.c:3063
msgid "An error occurred while adding files to the archive."
msgstr "Se produjo un error al añadir archivos al archivador."
#: src/fr-window.c:3062
#: src/fr-window.c:3067
msgid "An error occurred while testing archive."
msgstr "Se produjo un error al comprobar el archivador."
#: src/fr-window.c:3067
#: src/fr-window.c:3072
msgid "An error occurred while saving the archive."
msgstr "Ocurrió un error al guardar el archivador."
#: src/fr-window.c:3071
#: src/fr-window.c:3076
msgid "An error occurred while renaming the files."
msgstr "Ocurrió un error al renombrar los archivos."
#: src/fr-window.c:3075
#: src/fr-window.c:3080
msgid "An error occurred while updating the files."
msgstr "Ocurrió un error al actualizar los archivos."
#: src/fr-window.c:3079
#: src/fr-window.c:3084
msgid "An error occurred."
msgstr "Ocurrió un error."
#: src/fr-window.c:3085
#: src/fr-window.c:3090
msgid "Command not found."
msgstr "Comando no encontrado."
#: src/fr-window.c:3241
#: src/fr-window.c:3246
msgid "Test Result"
msgstr "Resultado de la comprobación"
#: src/fr-window.c:4212 src/fr-window.c:9022 src/fr-window.c:9056
#: src/fr-window.c:9336
#: src/fr-window.c:4217 src/fr-window.c:9025 src/fr-window.c:9059
#: src/fr-window.c:9339
msgid "Could not perform the operation"
msgstr "No se pudo efectuar la operación"
#: src/fr-window.c:4237
#: src/fr-window.c:4242
msgid ""
"Do you want to add this file to the current archive or open it as a new "
"archive?"
......@@ -800,127 +794,126 @@ msgstr ""
"¿Quiere añadir este archivo al archivador actual o prefiere abrirlo como un "
"archivador nuevo ?"
#: src/fr-window.c:4266
#: src/fr-window.c:4271
msgid "Do you want to create a new archive with these files?"
msgstr "¿Quiere crear un nuevo archivador con estos archivos?"
#: src/fr-window.c:4269
#: src/fr-window.c:4274
msgid "Create _Archive"
msgstr "Crear _archivador"
#: src/fr-window.c:4298 src/fr-window.c:7475
#: src/fr-window.c:4303 src/fr-window.c:7478
msgid "New Archive"
msgstr "Nuevo archivador"
#: src/fr-window.c:5016
#: src/fr-window.c:5021
msgid "Folders"
msgstr "Carpetas"
#: src/fr-window.c:5054 src/ui/file-selector.ui:221
#: src/fr-window.c:5059 src/ui/file-selector.ui:221
msgctxt "File"
msgid "Size"
msgstr "Tamaño"
#: src/fr-window.c:5055
#: src/fr-window.c:5060
msgctxt "File"
msgid "Type"
msgstr "Tipo"
#: src/fr-window.c:5056 src/ui/file-selector.ui:237
#: src/fr-window.c:5061 src/ui/file-selector.ui:237
msgctxt "File"
msgid "Modified"
msgstr "Modificado"
#: src/fr-window.c:5057
#: src/fr-window.c:5062
msgctxt "File"
msgid "Location"
msgstr "Ubilación"
#: src/fr-window.c:5066 src/ui/file-selector.ui:190
#: src/fr-window.c:5071 src/ui/file-selector.ui:190
msgctxt "File"
msgid "Name"
msgstr "Nombre"
#: src/fr-window.c:5820 src/ui/extract-dialog-options.ui:20
#: src/fr-window.c:5823 src/ui/extract-dialog-options.ui:20
msgctxt "Action"
msgid "Extract"
msgstr "Extraer"
#: src/fr-window.c:5824
#: src/fr-window.c:5827
msgctxt "Action"
msgid "Add Files"
msgstr "Añadir archivos"
#: src/fr-window.c:5829 src/fr-window.c:5859
#: src/fr-window.c:5832 src/fr-window.c:5862
msgid "Find files by name"
msgstr "Buscar archivos por nombre"
#: src/fr-window.c:5876
#: src/fr-window.c:5879
msgid "Go to the previous visited location"
msgstr "Ir al anterior lugar visitado"
#: src/fr-window.c:5881
#: src/fr-window.c:5884
msgid "Go to the next visited location"
msgstr "Ir al siguiente lugar visitado"
#: src/fr-window.c:5891
#: src/fr-window.c:5894
msgid "Go to the home location"
msgstr "Ir al lugar inicial"
#. Translators: after the colon there is a folder name.
#: src/fr-window.c:5900 src/ui/file-selector.ui:98
#: src/fr-window.c:5903 src/ui/file-selector.ui:98
#: src/ui/new-archive-dialog.ui:93
msgid "_Location:"
msgstr "_Lugar:"
#: src/fr-window.c:6280 src/ui/menus.ui:7 src/ui/menus.ui:47 src/ui/menus.ui:83
#: src/fr-window.c:6283 src/ui/menus.ui:7 src/ui/menus.ui:47 src/ui/menus.ui:83
msgctxt "Action"
msgid "Open"
msgstr "Abrir"
#: src/fr-window.c:6768
#: src/fr-window.c:6771
#, c-format
msgid "Replace file “%s”?"
msgstr "¿Reemplazar el archivo «%s»?"
#: src/fr-window.c:6771
#: src/fr-window.c:6774
#, c-format
msgid "Another file with the same name already exists in “%s”."
msgstr "Ya existe otro archivo con el mismo nombre en «%s»."
#: src/fr-window.c:6777
#: src/fr-window.c:6780
msgid "Replace _All"
msgstr "Reemplazar _todo"
#: src/fr-window.c:6778
#| msgid "Replace _All"
#: src/fr-window.c:6781
msgid "Replace _Nothing"
msgstr "Reemplazar _nada"
#: src/fr-window.c:6779
#: src/fr-window.c:6782
msgid "_Skip"
msgstr "_Omitir"
#: src/fr-window.c:7659 src/fr-window.c:8016
#: src/fr-window.c:7662 src/fr-window.c:8019
#, c-format
msgid "Could not save the archive “%s”"
msgstr "No se pudo guardar el archivador «%s»"
#: src/fr-window.c:7786
#: src/fr-window.c:7789
msgid "Save"
msgstr "Guardar"
#: src/fr-window.c:8110
#: src/fr-window.c:8113
msgid "Last Output"
msgstr "Último resultado"
#. Translators: the name references to a filename. This message can appear when renaming a file.
#: src/fr-window.c:8333
#: src/fr-window.c:8336
msgid "New name is void, please type a name."
msgstr "El nombre nuevo está vacío, introduzca un nombre."
#. Translators: the %s references to a filename. This message can appear when renaming a file.
#: src/fr-window.c:8343
#: src/fr-window.c:8346
#, c-format
msgid ""
"Name “%s” is not valid because it contains at least one of the following "
......@@ -929,7 +922,7 @@ msgstr ""
"El nombre «%s» no es válido porque contiene al menos uno de los siguientes "
"caracteres: %s, introduzca otro nombre."
#: src/fr-window.c:8379
#: src/fr-window.c:8382
#, c-format
msgid ""
"A folder named “%s” already exists.\n"
......@@ -940,11 +933,11 @@ msgstr ""
"\n"
"%s"
#: src/fr-window.c:8379 src/fr-window.c:8381
#: src/fr-window.c:8382 src/fr-window.c:8384
msgid "Please use a different name."
msgstr "Use un nombre diferente."
#: src/fr-window.c:8381
#: src/fr-window.c:8384
#, c-format
msgid ""
"A file named “%s” already exists.\n"
......@@ -955,51 +948,51 @@ msgstr ""
"\n"
"%s"
#: src/fr-window.c:8451
#: src/fr-window.c:8454
msgid "Rename"
msgstr "Renombrar"
#: src/fr-window.c:8452
#: src/fr-window.c:8455
msgid "_New folder name:"
msgstr "_Nombre de carpeta nueva:"
#: src/fr-window.c:8452
#: src/fr-window.c:8455
msgid "_New file name:"
msgstr "_Nombre del archivo nuevo:"
#: src/fr-window.c:8456
#: src/fr-window.c:8459
msgid "_Rename"
msgstr "_Renombrar"
#: src/fr-window.c:8473 src/fr-window.c:8491
#: src/fr-window.c:8476 src/fr-window.c:8494
msgid "Could not rename the folder"
msgstr "No se pudo renombrar la carpeta"
#: src/fr-window.c:8473 src/fr-window.c:8491
#: src/fr-window.c:8476 src/fr-window.c:8494
msgid "Could not rename the file"
msgstr "No se pudo renombrar el archivo"
#. Translators: %s are archive filenames
#: src/fr-window.c:8929
#: src/fr-window.c:8932
#, c-format
msgid "Moving the files from “%s” to “%s”"
msgstr "Moviendo los archivos de «%s» a «%s»"
#. Translators: %s are archive filenames
#: src/fr-window.c:8932
#: src/fr-window.c:8935
#, c-format
msgid "Copying the files from “%s” to “%s”"
msgstr "Copiando los archivos de «%s» a «%s»"
#: src/fr-window.c:8983
#: src/fr-window.c:8986
msgid "Paste Selection"
msgstr "Pegar selección"
#: src/fr-window.c:8984
#: src/fr-window.c:8987
msgid "_Destination folder:"
msgstr "Carpeta de _destino:"
#: src/fr-window.c:8988 src/ui/app-menubar.ui:61
#: src/fr-window.c:8991 src/ui/app-menubar.ui:61
msgid "_Paste"
msgstr "_Pegar"
......@@ -1329,6 +1322,10 @@ msgstr "Número de archivos:"
msgid "S_elect the files you want to update:"
msgstr "S_eleccione los archivos que quiere actualizar:"
#~| msgid "Archive Manager"
#~ msgid "org.gnome.ArchiveManager"
#~ msgstr "org.gnome.ArchiveManager"
#~| msgid "File Roller"
#~ msgid "file-roller"
#~ msgstr "file-roller"
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -73,6 +73,9 @@ file_selector_response_cb (GtkWidget *widget,
const char *exclude_folders;
GList *files;
if (response == GTK_RESPONSE_NONE)
return TRUE;
dlg_add_folder_save_last_options (data);
if ((response == GTK_RESPONSE_CANCEL) || (response == GTK_RESPONSE_DELETE_EVENT)) {
......@@ -207,11 +210,7 @@ dlg_add (FrWindow *window)
/* add the buttons */
if (! use_header)
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG (data->dialog))),
options_button,
FALSE,
FALSE,
0);
gtk_dialog_add_action_widget (GTK_DIALOG (data->dialog), options_button, GTK_RESPONSE_NONE);
gtk_dialog_add_button (GTK_DIALOG (data->dialog),
_GTK_LABEL_CANCEL,
......
......@@ -175,7 +175,7 @@ install_packages (InstallerData *idata)
if (window != NULL) {
GdkCursor *cursor;
cursor = gdk_cursor_new (GDK_WATCH);
cursor = gdk_cursor_new_for_display (gdk_display_get_default(), GDK_WATCH);
gdk_window_set_cursor (window, cursor);
g_object_unref (cursor);
......
......@@ -42,15 +42,15 @@
#define FILE_ATTRIBUTES_NEEDED_BY_ARCHIVE_ENTRY ("standard::*,time::*,access::*,unix::*")
G_DEFINE_TYPE (FrArchiveLibarchive, fr_archive_libarchive, FR_TYPE_ARCHIVE)
struct _FrArchiveLibarchivePrivate {
gssize compressed_size;
gssize uncompressed_size;
};
G_DEFINE_TYPE_WITH_PRIVATE (FrArchiveLibarchive, fr_archive_libarchive, FR_TYPE_ARCHIVE)
static void
fr_archive_libarchive_finalize (GObject *object)
{
......@@ -83,13 +83,16 @@ const char *libarchiver_mime_types[] = {
"application/x-lrzip-compressed-tar",
"application/x-lzip-compressed-tar",
"application/x-lzma-compressed-tar",
"application/x-lzop-compressed-tar",
"application/x-rar",
"application/x-rpm",
"application/x-tar",
"application/x-tarz",
"application/x-tzo",
"application/x-xar",
"application/x-xz-compressed-tar",
#if (ARCHIVE_VERSION_NUMBER >= 3003003)
"application/x-zstd-compressed-tar",
#endif
"application/zip",
NULL
};
......@@ -111,11 +114,15 @@ fr_archive_libarchive_get_capabilities (FrArchive *archive,
capabilities = FR_ARCHIVE_CAN_STORE_MANY_FILES;
/* write-only formats */
/* give priority to 7z* for 7z archives. */
if (strcmp (mime_type, "application/x-7z-compressed") == 0) {
capabilities |= FR_ARCHIVE_CAN_WRITE;
if (_g_program_is_available ("7za", check_command)
|| _g_program_is_available ("7zr", check_command)
|| _g_program_is_available ("7z", check_command))
{
return capabilities;
}
}
/* give priority to 7za that supports CAB files better. */
if ((strcmp (mime_type, "application/vnd.ms-cab-compressed") == 0)
......@@ -274,6 +281,73 @@ load_data_read (struct archive *a,
}
static gint64
load_data_seek (struct archive *a,
void *client_data,
gint64 request,
int whence)
{
GSeekable *seekable;
GSeekType seektype;
off_t new_offset;
LoadData *load_data = client_data;
seekable = (GSeekable*)(load_data->istream);
if ((load_data->error != NULL) || (load_data->istream == NULL))
return -1;
switch (whence) {
case SEEK_SET:
seektype = G_SEEK_SET;
break;
case SEEK_CUR:
seektype = G_SEEK_CUR;
break;
case SEEK_END:
seektype = G_SEEK_END;
break;
default:
return -1;
}
g_seekable_seek (seekable,
request,
seektype,
load_data->cancellable,
&load_data->error);
new_offset = g_seekable_tell (seekable);
if (load_data->error != NULL)
return -1;
return new_offset;
}
static gint64
load_data_skip (struct archive *a,
void *client_data,
gint64 request)
{
GSeekable *seekable;
off_t old_offset, new_offset;
LoadData *load_data = client_data;
seekable = (GSeekable*)(load_data->istream);
if (load_data->error != NULL || load_data->istream == NULL)
return -1;
old_offset = g_seekable_tell (seekable);
new_offset = load_data_seek (a, client_data, request, SEEK_CUR);
if (new_offset > old_offset)
return (new_offset - old_offset);
return 0;
}
static int
load_data_close (struct archive *a,
void *client_data)
......@@ -292,6 +366,25 @@ load_data_close (struct archive *a,
}
static int
create_read_object (LoadData *load_data,
struct archive **a)
{
*a = archive_read_new ();
archive_read_support_filter_all (*a);
archive_read_support_format_all (*a);
archive_read_set_open_callback (*a, load_data_open);
archive_read_set_read_callback (*a, load_data_read);
archive_read_set_close_callback (*a, load_data_close);
archive_read_set_seek_callback (*a, load_data_seek);
archive_read_set_skip_callback (*a, load_data_skip);
archive_read_set_callback_data (*a, load_data);
return archive_read_open1 (*a);
}
/* -- list -- */
......@@ -349,10 +442,12 @@ list_archive_thread (GSimpleAsyncResult *result,
fr_archive_progress_set_total_bytes (load_data->archive,
_g_file_get_size (fr_archive_get_file (load_data->archive), cancellable));
a = archive_read_new ();
archive_read_support_filter_all (a);
archive_read_support_format_all (a);
archive_read_open (a, load_data, load_data_open, load_data_read, load_data_close);
r = create_read_object (load_data, &a);
if (r != ARCHIVE_OK) {
archive_read_free(a);
return;
}
while ((r = archive_read_next_header (a, &entry)) == ARCHIVE_OK) {
FileData *file_data;
const char *pathname;
......@@ -620,15 +715,17 @@ extract_archive_thread (GSimpleAsyncResult *result,
extract_data = g_simple_async_result_get_op_res_gpointer (result);
load_data = LOAD_DATA (extract_data);
r = create_read_object (load_data, &a);
if (r != ARCHIVE_OK) {
archive_read_free(a);
return;
}
checked_folders = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, NULL);
created_files = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, g_object_unref);
folders_created_during_extraction = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, NULL);
fr_archive_progress_set_total_files (load_data->archive, extract_data->n_files_to_extract);
a = archive_read_new ();
archive_read_support_filter_all (a);
archive_read_support_format_all (a);
archive_read_open (a, load_data, load_data_open, load_data_read, load_data_close);
while ((r = archive_read_next_header (a, &entry)) == ARCHIVE_OK) {
const char *pathname;
char *fullpath;
......@@ -1163,7 +1260,7 @@ _archive_write_set_format_from_context (struct archive *a,
archive_write_set_format_pax_restricted (a);
archive_filter = ARCHIVE_FILTER_LZMA;
}
else if (_g_str_equal (mime_type, "application/x-lzop-compressed-tar")) {
else if (_g_str_equal (mime_type, "application/x-tzo")) {
archive_write_set_format_pax_restricted (a);
archive_filter = ARCHIVE_FILTER_LZOP;
}
......@@ -1171,6 +1268,12 @@ _archive_write_set_format_from_context (struct archive *a,
archive_write_set_format_pax_restricted (a);
archive_filter = ARCHIVE_FILTER_XZ;
}
#if (ARCHIVE_VERSION_NUMBER >= 3003003)
else if (_g_str_equal (mime_type, "application/x-zstd-compressed-tar")) {
archive_write_set_format_pax_restricted (a);
archive_filter = ARCHIVE_FILTER_ZSTD;
}
#endif
else if (_g_str_equal (mime_type, "application/x-tar")) {
archive_write_add_filter_none (a);
archive_write_set_format_pax_restricted (a);
......@@ -1225,6 +1328,11 @@ _archive_write_set_format_from_context (struct archive *a,
case ARCHIVE_FILTER_XZ:
archive_write_add_filter_xz (a);
break;
#if (ARCHIVE_VERSION_NUMBER >= 3003003)
case ARCHIVE_FILTER_ZSTD:
archive_write_add_filter_zstd (a);
break;
#endif
default:
break;
}
......@@ -1232,6 +1340,26 @@ _archive_write_set_format_from_context (struct archive *a,
/* set the compression level */
compression_level = NULL;
#if (ARCHIVE_VERSION_NUMBER >= 3003003)
if (archive_filter == ARCHIVE_FILTER_ZSTD) {
switch (save_data->compression) {
case FR_COMPRESSION_VERY_FAST:
compression_level = "1";
break;
case FR_COMPRESSION_FAST:
compression_level = "2";
break;
case FR_COMPRESSION_NORMAL:
compression_level = "3";
break;
case FR_COMPRESSION_MAXIMUM:
compression_level = "22";
break;
}
}
else
#endif
{
switch (save_data->compression) {
case FR_COMPRESSION_VERY_FAST:
compression_level = "1";
......@@ -1246,6 +1374,7 @@ _archive_write_set_format_from_context (struct archive *a,
compression_level = "9";
break;
}
}
if (compression_level != NULL)
archive_write_set_filter_option (a, NULL, "compression-level", compression_level);
}
......@@ -1436,10 +1565,7 @@ save_archive_thread (GSimpleAsyncResult *result,
archive_write_open (b, save_data, save_data_open, save_data_write, save_data_close);
archive_write_set_bytes_in_last_block (b, 1);
a = archive_read_new ();
archive_read_support_filter_all (a);
archive_read_support_format_all (a);
archive_read_open (a, load_data, load_data_open, load_data_read, load_data_close);
create_read_object (load_data, &a);
if (save_data->begin_operation != NULL)
save_data->begin_operation (save_data, save_data->user_data);
......@@ -2161,7 +2287,6 @@ fr_archive_libarchive_class_init (FrArchiveLibarchiveClass *klass)
FrArchiveClass *archive_class;
fr_archive_libarchive_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (FrArchiveLibarchivePrivate));
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->finalize = fr_archive_libarchive_finalize;
......@@ -2186,7 +2311,7 @@ fr_archive_libarchive_init (FrArchiveLibarchive *self)
{
FrArchive *base = FR_ARCHIVE (self);
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, FR_TYPE_ARCHIVE_LIBARCHIVE, FrArchiveLibarchivePrivate);
self->priv = fr_archive_libarchive_get_instance_private (self);
base->propAddCanReplace = TRUE;
base->propAddCanUpdate = TRUE;
......
......@@ -65,9 +65,6 @@ char *action_names[] = { "NONE",
"UPDATING_FILES" };
G_DEFINE_TYPE (FrArchive, fr_archive, G_TYPE_OBJECT)
typedef struct _DroppedItemsData DroppedItemsData;
......@@ -97,6 +94,9 @@ struct _FrArchivePrivate {
};
G_DEFINE_TYPE_WITH_PRIVATE (FrArchive, fr_archive, G_TYPE_OBJECT)
enum {
START,
PROGRESS,
......@@ -301,7 +301,6 @@ fr_archive_class_init (FrArchiveClass *klass)
GObjectClass *gobject_class;
fr_archive_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (FrArchivePrivate));
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->finalize = fr_archive_finalize;
......@@ -430,7 +429,7 @@ fr_archive_class_init (FrArchiveClass *klass)
static void
fr_archive_init (FrArchive *self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, FR_TYPE_ARCHIVE, FrArchivePrivate);
self->priv = fr_archive_get_instance_private (self);
self->mime_type = NULL;
self->files = g_ptr_array_sized_new (FILE_ARRAY_INITIAL_SIZE);
......
......@@ -314,6 +314,14 @@ fr_command_cfile_add (FrCommand *comm,
fr_process_add_arg (comm->process, compressed_filename);
fr_process_end_command (comm->process);
}
else if (_g_mime_type_matches (archive->mime_type, "application/zstd")) {
fr_process_begin_command (comm->process, "zstd");
fr_process_set_working_dir (comm->process, temp_dir);
fr_process_add_arg (comm->process, "--");
fr_process_add_arg (comm->process, filename);
fr_process_end_command (comm->process);
compressed_filename = g_strconcat (filename, ".zst", NULL);
}
else {
g_warning ("Unhandled mime type: '%s'", archive->mime_type);
g_warn_if_reached ();
......@@ -478,6 +486,14 @@ fr_command_cfile_extract (FrCommand *comm,
fr_process_add_arg (comm->process, uncompr_file);
fr_process_end_command (comm->process);
}
else if (_g_mime_type_matches (archive->mime_type, "application/zstd")) {
fr_process_begin_command (comm->process, "zstd");
fr_process_set_working_dir (comm->process, temp_dir);
fr_process_add_arg (comm->process, "-f");
fr_process_add_arg (comm->process, "-d");
fr_process_add_arg (comm->process, temp_file);
fr_process_end_command (comm->process);
}
/* copy uncompress file to the dest dir */
......@@ -521,6 +537,7 @@ const char *cfile_mime_type[] = { "application/x-gzip",
"application/x-lzop",
"application/x-rzip",
"application/x-xz",
"application/zstd",
NULL };
......@@ -582,6 +599,10 @@ fr_command_cfile_get_capabilities (FrArchive *archive,
if (_g_program_is_available ("lz4", check_command))
capabilities |= FR_ARCHIVE_CAN_READ_WRITE;
}
else if (_g_mime_type_matches (mime_type, "application/zstd")) {
if (_g_program_is_available ("zstd", check_command))
capabilities |= FR_ARCHIVE_CAN_READ_WRITE;
}
return capabilities;
}
......@@ -610,6 +631,8 @@ fr_command_cfile_get_packages (FrArchive *archive,
return PACKAGES ("rzip");
else if (_g_mime_type_matches (mime_type, "application/x-lz4"))
return PACKAGES ("lz4");
else if (_g_mime_type_matches (mime_type, "application/zstd"))
return PACKAGES ("zstd");
return NULL;
}
......
This diff is collapsed.
This diff is collapsed.
......@@ -574,13 +574,7 @@ files_treeview_button_press_event_cb (GtkWidget *widget,
FrFileSelectorDialog *self = user_data;
if (event->button == 3) {
gtk_menu_popup (GTK_MENU (GET_WIDGET ("file_list_context_menu")),
NULL,
NULL,
NULL,
NULL,
event->button,
event->time);
gtk_menu_popup_at_pointer (GTK_MENU (GET_WIDGET ("file_list_context_menu")), (GdkEvent *) event);
return TRUE;
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -1227,6 +1227,7 @@ _g_mime_type_get_from_content (char *buffer,
{ 0, 4, "PK\003\004", "application/zip" },
{ 0, 8, "PK00PK\003\004", "application/zip" },
{ 0, 4, "LRZI", "application/x-lrzip" },
{ 0, 4, "\x28\xB5\x2F\xFD", "application/zstd" },
};
int i;
......
This diff is collapsed.