thunar 4.20.7 upstream
Tree of tag thunar-4.20.7 (commit df0e054) from https://gitlab.xfce.org/xfce/thunar. Upstream history is not included here to keep the repository small.
36
.clang-format
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
---
|
||||
Language: Cpp
|
||||
BasedOnStyle: GNU
|
||||
|
||||
AlignEscapedNewlines: DontAlign
|
||||
AlignTrailingComments: true
|
||||
AlignConsecutiveDeclarations: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AlwaysBreakAfterReturnType: All
|
||||
BinPackParameters: false
|
||||
AlignAfterOpenBracket: true
|
||||
BreakBeforeBinaryOperators: NonAssignment
|
||||
ColumnLimit: 0
|
||||
ContinuationIndentWidth: 0
|
||||
IncludeBlocks: Regroup
|
||||
IndentGotoLabels: false
|
||||
InsertNewlineAtEOF: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
MaxEmptyLinesToKeep: 3
|
||||
SpaceAfterCStyleCast: true
|
||||
|
||||
WhitespaceSensitiveMacros:
|
||||
# Avoid breaking formatting in the code parameter
|
||||
- G_DEFINE_TYPE_WITH_CODE
|
||||
- G_DEFINE_TYPE_EXTENDED
|
||||
- G_DEFINE_ABSTRACT_TYPE_WITH_CODE
|
||||
# Buggy workaround to add exceptions to 'SpaceBeforeParens: Always' (see below)
|
||||
- _
|
||||
# Workaround to avoid some alignment bugs when adding a macro to WhitespaceSensitiveMacros,
|
||||
# see https://github.com/llvm/llvm-project/issues/55443#issuecomment-1953268337
|
||||
# This doesn't fix all alignment bugs though, so I'd rather make an exception only for '_',
|
||||
# and not also for 'N_' or 'I_' for example.
|
||||
# See also https://github.com/llvm/llvm-project/issues/82288
|
||||
Macros:
|
||||
- _(x)=x
|
||||
...
|
||||
178
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
ChangeLog
|
||||
Thunar.pot
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
compile
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
configure.in
|
||||
depcomp
|
||||
install-sh
|
||||
intltool-*
|
||||
libtool
|
||||
ltmain.sh
|
||||
mkinstalldirs
|
||||
missing
|
||||
stamp-h1
|
||||
.*.swp
|
||||
[Tt]hunar-*.tar.bz2
|
||||
[Tt]hunar-*.tar.gz
|
||||
core.*
|
||||
core
|
||||
*.core
|
||||
*.desktop
|
||||
*.desktop.in
|
||||
*.service
|
||||
*.policy
|
||||
org.xfce.thunar.appdata.xml
|
||||
thunar.appdata.xml
|
||||
gtk-doc.make
|
||||
Thunar.spec
|
||||
docs/.*.swp
|
||||
docs/*.1
|
||||
docs/design/.*.swp
|
||||
docs/manual/.*.swp
|
||||
docs/manual/*/.*.swp
|
||||
docs/manual/*/Thunar.xml
|
||||
docs/manual/*/html
|
||||
docs/manual/*/*.stamp
|
||||
docs/manual/*/images/.*.swp
|
||||
docs/papers/.*.swp
|
||||
docs/reference/.*.swp
|
||||
docs/reference/thunarx/xml
|
||||
docs/reference/thunarx/html
|
||||
docs/reference/thunarx/*.stamp
|
||||
docs/reference/thunarx/.*.swp
|
||||
docs/reference/thunarx/*.bak
|
||||
docs/reference/thunarx/thunarx-decl-list.txt
|
||||
docs/reference/thunarx/thunarx-decl.txt
|
||||
docs/reference/thunarx/thunarx-overrides.txt
|
||||
docs/reference/thunarx/thunarx-undeclared.txt
|
||||
docs/reference/thunarx/thunarx-undocumented.txt
|
||||
docs/reference/thunarx/thunarx-unused.txt
|
||||
docs/reference/thunarx/thunarx.args
|
||||
docs/reference/thunarx/thunarx.actions
|
||||
docs/reference/thunarx/thunarx.hierarchy
|
||||
docs/reference/thunarx/thunarx.interfaces
|
||||
docs/reference/thunarx/thunarx.prerequisites
|
||||
docs/reference/thunarx/thunarx.signals
|
||||
docs/reference/thunarx/version.xml
|
||||
docs/reference/thunarx/tmpl/*.bak
|
||||
docs/reference/thunarx/tmpl/.*.swp
|
||||
docs/reference/thunarx/tmpl/thunarx-unused.sgml
|
||||
docs/reference/thunar/xml
|
||||
docs/reference/thunar/html
|
||||
docs/reference/thunar/*.stamp
|
||||
docs/reference/thunar/.*.swp
|
||||
docs/reference/thunar/*.bak
|
||||
docs/reference/thunar/thunar-decl-list.txt
|
||||
docs/reference/thunar/thunar-decl.txt
|
||||
docs/reference/thunar/thunar-header.txt
|
||||
docs/reference/thunar/thunar-overrides.txt
|
||||
docs/reference/thunar/thunar-scan.c
|
||||
docs/reference/thunar/thunar-sections.txt
|
||||
docs/reference/thunar/thunar-undeclared.txt
|
||||
docs/reference/thunar/thunar-undocumented.txt
|
||||
docs/reference/thunar/thunar-unused.txt
|
||||
docs/reference/thunar/thunar.args
|
||||
docs/reference/thunar/thunar.actions
|
||||
docs/reference/thunar/thunar.hierarchy
|
||||
docs/reference/thunar/thunar.interfaces
|
||||
docs/reference/thunar/thunar.prerequisites
|
||||
docs/reference/thunar/thunar.signals
|
||||
docs/reference/thunar/thunar.types
|
||||
docs/reference/thunar/version.xml
|
||||
docs/reference/thunar/tmpl/*.bak
|
||||
docs/reference/thunar/tmpl/.*.swp
|
||||
docs/reference/thunar/tmpl/thunar-unused.sgml
|
||||
examples/.*.swp
|
||||
examples/tex-open-terminal/.*.swp
|
||||
icons/.*.swp
|
||||
icons/16x16/.*.swp
|
||||
icons/24x24/.*.swp
|
||||
icons/48x48/.*.swp
|
||||
icons/scalable/.*.swp
|
||||
pixmaps/.*.swp
|
||||
plugins/.*.swp
|
||||
plugins/thunar-apr/.*.swp
|
||||
plugins/thunar-sbr/.*.swp
|
||||
plugins/thunar-sendto-email/thunar-sendto-email
|
||||
plugins/thunar-sendto-email/thunar-sendto-email.desktop
|
||||
plugins/thunar-sendto-email/.*.swp
|
||||
plugins/thunar-tpa/thunar-tpa-bindings.*
|
||||
plugins/thunar-tpa/thunar-tpa.desktop
|
||||
plugins/thunar-tpa/thunar-tpa.desktop.in
|
||||
plugins/thunar-tpa/.*.swp
|
||||
plugins/thunar-tpa/thunar-tpa
|
||||
plugins/thunar-uca/.*.swp
|
||||
plugins/thunar-uca/uca.xml
|
||||
plugins/thunar-uca/thunar-uca.gresource.c
|
||||
po-doc/.*.swp
|
||||
po-doc/.xml2po.mo
|
||||
po/Makefile.in.in
|
||||
po/.*.swp
|
||||
po/*.gmo
|
||||
po/*.mo
|
||||
po/POTFILES
|
||||
po/.intltool-merge-cache*
|
||||
po/stamp-*
|
||||
tests/*.loT
|
||||
tests/.*.swp
|
||||
tests/core.*
|
||||
tests/*.core
|
||||
tests/data/.*.swp
|
||||
thunar/*.loT
|
||||
thunar/.*.swp
|
||||
thunar/thunar
|
||||
thunar/thunar.a
|
||||
thunar/thunar-dbus-freedesktop-interfaces.[ch]
|
||||
thunar/thunar-dbus-service-infos.[ch]
|
||||
thunar/thunar-fallback-icon.c
|
||||
thunar/thunar-thumbnail-cache-proxy.[ch]
|
||||
thunar/thunar-thumbnail-frame.c
|
||||
thunar/thunar-thumbnailer-manager-proxy.h
|
||||
thunar/thunar-thumbnailer-proxy.[ch]
|
||||
thunar/thunar-marshal.[ch]
|
||||
thunar/thunar-resources.[ch]
|
||||
thunar/Thunar
|
||||
thunar/core.*
|
||||
thunar/*.core
|
||||
thunar/thunar-*-ui.h
|
||||
thunar/stamp-thunar-*.*
|
||||
thunarx/.*.swp
|
||||
thunarx/*.pc
|
||||
thunarx/*.gir
|
||||
thunarx/*.typelib
|
||||
thunarx/thunarx-alias*.[ch]
|
||||
thunarx/thunarx-config.h
|
||||
*~
|
||||
*.o
|
||||
*.lo
|
||||
*.la
|
||||
.libs
|
||||
.deps
|
||||
thunar-vfs
|
||||
gtk-doc.m4
|
||||
test-driver
|
||||
m4/*
|
||||
!m4/introspection.m4
|
||||
ABOUT-NLS
|
||||
config.rpath
|
||||
po/Makevars.template
|
||||
po/Rules-quot
|
||||
po/boldquot.sed
|
||||
po/en@boldquot.header
|
||||
po/en@quot.header
|
||||
po/insert-header.sin
|
||||
po/quot.sed
|
||||
po/remove-potcdate.sin
|
||||
thunar/libthunar.a
|
||||
po/remove-potcdate.sed
|
||||
po/thunar.pot
|
||||
4
.gitlab-ci.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
include:
|
||||
- project: 'xfce/xfce4-dev-tools'
|
||||
file: '/ci/build_project.yml'
|
||||
|
||||
35
.gitlab/issue_templates/Default.md
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<!-- Please drop all sections which are not relevant for your concrete use-case -->
|
||||
<!-- For enhancements and new features only the section 'Version information' might be relevant -->
|
||||
|
||||
## Version information
|
||||
<!-- Which version of this software are you using? -->
|
||||
<!-- Which distribution are you using? -->
|
||||
|
||||
## Steps to reproduce
|
||||
<!-- Please, explain as detailed as possible the sequence of actions necessary to reproduce the issue -->
|
||||
|
||||
1. ...
|
||||
2. ...
|
||||
3. ...
|
||||
|
||||
## Current behavior
|
||||
<!-- Please describe the current behaviour -->
|
||||
|
||||
## Expected outcome
|
||||
<!-- Please describe the expected outcome -->
|
||||
|
||||
## Backtrace
|
||||
<!--
|
||||
For crashes, it's best to get a backtrace to see which method failed to execute.
|
||||
|
||||
To get a meaningful backtrace, you will need to install debug symbols. Check the Xfce wiki to see how to do so:
|
||||
https://docs.xfce.org/contribute/bugs/start#backtraces
|
||||
|
||||
It's basically `ulimit -c unlimited` to produce coredumps on crashes and then using gdb on it to get the backtrace out of the coredump.
|
||||
-->
|
||||
|
||||
## Additional information
|
||||
<!--
|
||||
- Screenshots are useful for visual errors
|
||||
- Please report any warning or message printed on the terminal
|
||||
-->
|
||||
13
AUTHORS
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
Benedikt Meurer <benny@xfce.org>
|
||||
Jannis Pohlmann <jannis@xfce.org>
|
||||
Jeffs Franks <jcfranks@xfce.org>
|
||||
Nick Schermer <nick@xfce.org>
|
||||
Harald Judt <hjudt@xfce.org>
|
||||
Andre Miranda <andreldm@xfce.org>
|
||||
Alexander Schwinn <alexxcons@xfce.org>
|
||||
|
||||
The stock_folder-copy and stock_folder-move icons where taken from
|
||||
gnome-icon-theme 2.18.0 whose authors are Lapo Calamandrei <calamandrei@gmail.com>,
|
||||
Rodney Dawes <dobey@novell.com>, Luca Ferretti <elle.uca@libero.it>,
|
||||
Tuomas Kuosmanen <tigert@gimp.org>, Andreas Nilsson <nisses.mail@home.se>
|
||||
and Jakub Steiner <jimmac@novell.com>. The icons are licensed under GPL.
|
||||
339
COPYING
Normal file
|
|
@ -0,0 +1,339 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program 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 program 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 program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
437
COPYING.LIB
Normal file
|
|
@ -0,0 +1,437 @@
|
|||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the library GPL. It is
|
||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Library General Public License, applies to some
|
||||
specially designated Free Software Foundation software, and to any
|
||||
other libraries whose authors decide to use it. You can use it for
|
||||
your libraries, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if
|
||||
you distribute copies of the library, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link a program with the library, you must provide
|
||||
complete object files to the recipients so that they can relink them
|
||||
with the library, after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
Our method of protecting your rights has two steps: (1) copyright
|
||||
the library, and (2) offer you this license which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
Also, for each distributor's protection, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
library. If the library is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original
|
||||
version, so that any problems introduced by others will not reflect on
|
||||
the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that companies distributing free
|
||||
software will individually obtain patent licenses, thus in effect
|
||||
transforming the program into proprietary software. To prevent this,
|
||||
we have made it clear that any patent must be licensed for everyone's
|
||||
free use or not licensed at all.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the ordinary
|
||||
GNU General Public License, which was designed for utility programs. This
|
||||
license, the GNU Library General Public License, applies to certain
|
||||
designated libraries. This license is quite different from the ordinary
|
||||
one; be sure to read it in full, and don't assume that anything in it is
|
||||
the same as in the ordinary license.
|
||||
|
||||
The reason we have a separate public license for some libraries is that
|
||||
they blur the distinction we usually make between modifying or adding to a
|
||||
program and simply using it. Linking a program with a library, without
|
||||
changing the library, is in some sense simply using the library, and is
|
||||
analogous to running a utility program or application program. However, in
|
||||
a textual and legal sense, the linked executable is a combined work, a
|
||||
derivative of the original library, and the ordinary General Public License
|
||||
treats it as such.
|
||||
|
||||
Because of this blurred distinction, using the ordinary General
|
||||
Public License for libraries did not effectively promote software
|
||||
sharing, because most developers did not use the libraries. We
|
||||
concluded that weaker conditions might promote sharing better.
|
||||
|
||||
However, unrestricted linking of non-free programs would deprive the
|
||||
users of those programs of all benefit from the free status of the
|
||||
libraries themselves. This Library General Public License is intended to
|
||||
permit developers of non-free programs to use free libraries, while
|
||||
preserving your freedom as a user of such programs to change the free
|
||||
libraries that are incorporated in them. (We have not seen how to achieve
|
||||
this as regards changes in header files, but we have achieved it as regards
|
||||
changes in the actual functions of the Library.) The hope is that this
|
||||
will lead to faster development of free libraries.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, while the latter only
|
||||
works together with the library.
|
||||
|
||||
Note that it is possible for a library to be covered by the ordinary
|
||||
General Public License rather than by this special one.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library which
|
||||
contains a notice placed by the copyright holder or other authorized
|
||||
party saying it may be distributed under the terms of this Library
|
||||
General Public License (also called "this License"). Each licensee is
|
||||
addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also compile or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
c) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
d) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the source code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Library General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
1990
ChangeLog.gio-migration
Normal file
103
FAQ
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
This file contains a list of frequently asked questions about Thunar and the
|
||||
appropriate answers to these questions.
|
||||
|
||||
|
||||
1. What is Thunar?
|
||||
==================
|
||||
|
||||
Thunar is a fast and easy-to-use file manager for the X Window System, with a
|
||||
special focus on the Xfce Desktop Environment.
|
||||
|
||||
|
||||
2. Why doesn't Thunar execute files marked as executable?
|
||||
=========================================================
|
||||
|
||||
For security reasons Thunar only executes files of type application/x-desktop,
|
||||
application/x-executable and application/x-shellscript. For desktop files
|
||||
the execution feature will only be enabled if the desktop file is of type
|
||||
Application and a valid Exec line is given. For the other types the feature
|
||||
is available if the file is marked executable for the current user.
|
||||
|
||||
Also note that for application/x-executable and application/x-shellscript, the
|
||||
types of the file don't really need to match these types exactly, but it is
|
||||
suffice if the detected type has a parent that matches one of the two types
|
||||
listed above, or if the MIME-type is an alias for one of the above.
|
||||
|
||||
|
||||
3. Where does Thunar store the metadata associated with files?
|
||||
==============================================================
|
||||
|
||||
Thunar uses the metadata daemon provided by GVFS.
|
||||
|
||||
|
||||
4. Where does Thunar store its preferences?
|
||||
===========================================
|
||||
|
||||
Thunar stores the user configurable preferences (and hidden settings) in
|
||||
an .ini file, which is located at
|
||||
|
||||
$XDG_CONFIG_HOME/Thunar/thunarrc
|
||||
|
||||
and can be examined using a text editor. See docs/README.thunarrc for an
|
||||
overview of the various preferences.
|
||||
|
||||
|
||||
5. How to use mouse gestures in Thunar?
|
||||
=======================================
|
||||
|
||||
Thunar currently features basic support for so called "mouse gestures" in its
|
||||
icon view. You can use these "mouse gestures" by holding down the middle
|
||||
mouse button (usually the mouse wheel) while the mouse pointer is on the
|
||||
background area of the icon view component (any area that is not covered by
|
||||
an icon or a text). Now you can move the cursor into four directions to
|
||||
perform certain actions, which are described below.
|
||||
|
||||
* Left - opens the previous visited folder
|
||||
* Up - opens the parent folder
|
||||
* Right - opens the next visited folder
|
||||
* Down - reload the current folder
|
||||
|
||||
|
||||
6. How do I assign different keyboard shortcuts?
|
||||
================================================
|
||||
|
||||
If you want to rebind a shortcut, Thunar supports the standard GTK+ way
|
||||
of changing shortcuts: simply hover over the menu option with the mouse
|
||||
pointer and press the keyboard shortcut you want to rebind it to.
|
||||
|
||||
To delete a keyboard assignment, press the Backspace key while you are
|
||||
on the menu entry.
|
||||
|
||||
If the shortcut doesn't change, then you need to enable the feature in
|
||||
GTK+. This can be achieved in 3 ways:
|
||||
|
||||
1. If you are running Xfce 4.3 or above then you can enable "Editable
|
||||
menu accelerators" in the "User Interface Preferences" dialog.
|
||||
2. If you are running GNOME then you can enable "Editable menu
|
||||
accelerators" in the "Menu and Toolbars" control center dialog.
|
||||
3. Otherwise put the following in your ~/.gtkrc-2.0 file (create the
|
||||
file if it doesn't exist):
|
||||
|
||||
gtk-can-change-accels=1
|
||||
|
||||
|
||||
7. Where does Thunar store the keyboard shortcuts?
|
||||
==================================================
|
||||
|
||||
The custom keyboard shortcuts are stored in the standard Gtk accel map
|
||||
format in a file located at
|
||||
|
||||
$XDG_CONFIG_HOME/Thunar/accels.scm
|
||||
|
||||
Lines starting with ; are comments. See the GTK+ documentation for details
|
||||
about the file format. If you are a packager or a system administrator and
|
||||
want to provide a system-wide default for the keyboard shortcuts, that is
|
||||
different from the default shortcuts in Thunar, you can create a file
|
||||
Thunar/accels.scm in one of the $XDG_CONFIG_DIRS. For example, if /etc/xdg
|
||||
is part of $XDG_CONFIG_DIRS (most likely for most Linux distributions), you
|
||||
can install system-wide defaults to
|
||||
|
||||
/etc/xdg/Thunar/accels.scm
|
||||
|
||||
Thunar will then load shortcuts from this file on first startup.
|
||||
|
||||
63
HACKING
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
Bug tracking system
|
||||
===================
|
||||
|
||||
Thunar uses the Xfce bug tracking system at https://gitlab.xfce.org/xfce/thunar,
|
||||
hosted and maintained by the Xfce project.
|
||||
|
||||
|
||||
Patches
|
||||
=======
|
||||
|
||||
Please submit merge requests to the Xfce GitLab instance.
|
||||
Your code must comply with the coding style described below.
|
||||
|
||||
Please base on work against the master branch of this package. You can always
|
||||
clone the Thunar repository from
|
||||
|
||||
https://gitlab.xfce.org/xfce/thunar
|
||||
|
||||
|
||||
Feature requests
|
||||
================
|
||||
|
||||
Please file feature requests to the Xfce's GitLab
|
||||
(https://gitlab.xfce.org/xfce/thunar).
|
||||
Make sure that your feature request wasn't reported already before; requesting
|
||||
a feature several times won't increase the changed that it gets added!
|
||||
|
||||
|
||||
Coding Style
|
||||
============
|
||||
|
||||
- GNU coding conventions, with GLib-like extensions, mostly the same
|
||||
as GTK+.
|
||||
- Always expand tabs. This differs from the GNU suggestion, but it is
|
||||
necessary to be independent from a given tab setting.
|
||||
- Do NOT ever misuse debugging macros like g_return_val_if_fail() or
|
||||
g_return_if_fail() to control program flow. They are solely useful
|
||||
to discover bugs, the final binary won't include code for these
|
||||
statements, and so any use of these macros to control program
|
||||
flow presents a bug!
|
||||
- Do NOT follow the philosophy "If it works, it's right" that most
|
||||
other open source projects follow, instead Thunar's philosophy is
|
||||
"It doesn't work unless it's right". Think carefully of what you want
|
||||
to do, don't just fire up your favourite editor and start hacking
|
||||
in the hope that it will evolve into something useful one day.
|
||||
- Maintainability goes over performance. If you have to choose between
|
||||
a maintainable and a fast solution, always prefer the former, as it's
|
||||
quite easy to optimize well-designed modules, but very hard and costly
|
||||
to make spaghetti-code readable.
|
||||
- Write ChangeLog entries. Whenever you commit a change or send a patch,
|
||||
write a good entry per change to the ChangeLog file, see the libexo
|
||||
ChangeLog for the exact format; it's very important to be descriptive
|
||||
and correct here, else you'll loose your commit bits or your patches
|
||||
won't be considered for inclusion.
|
||||
- Use GObject whenever possible. Object-oriented design and programming
|
||||
makes it easier to separate functionality and also aids in verification
|
||||
and testing, and GObject provides a very solid base.
|
||||
|
||||
|
||||
Release process
|
||||
===============
|
||||
|
||||
Refer to https://www.xfce.org/about/releasemodel
|
||||
389
INSTALL
Normal file
|
|
@ -0,0 +1,389 @@
|
|||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
|
||||
Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell command `./autogen.sh && make && make install'
|
||||
should configure, build, and install this package.
|
||||
|
||||
Note that './autogen.sh' creates a './configure' script from
|
||||
'configure.ac.in' and runs it automatically.
|
||||
You will not need to run './configure' yourself.
|
||||
Autotools has be installed on your system in order to run './autogen.sh'
|
||||
|
||||
The following text originally referred to './configure' ... usually you
|
||||
can just replace all calls of './configure' directly with './autogen.sh'.
|
||||
|
||||
The following more-detailed instructions are generic; see the `README.md'
|
||||
file for instructions specific to this package. Some packages provide
|
||||
this `INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README.md' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./autogen.sh' to configure the package for your system.
|
||||
|
||||
Running `./autogen.sh' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
Probably ./autogen.sh will list some/many missing packages.
|
||||
Install the related packages in dev-version and run ./autogen.sh again,
|
||||
until all required dependencies are resolved.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. After that it is possible to run thunar directly from the source-folder:
|
||||
./thunar/thunar -q;./thunar/thunar
|
||||
The -q argument will quit any running thunar-daemon.
|
||||
However if you want to make use of thunar-plugin, you will need to
|
||||
run 'make install':
|
||||
|
||||
5. Type `make install' to install the programs and any data files and
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the `make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
6. Optionally, type `make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior `make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
7. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
8. Often, you can also type `make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
9. Some packages, particularly those that use Automake, provide `make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like `make install' and `make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'. This
|
||||
is known as a "VPATH" build.
|
||||
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple `-arch' options to the
|
||||
compiler but only a single `-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the `lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them. In general, the
|
||||
default for these options is expressed in terms of `${prefix}', so that
|
||||
specifying just `--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to `configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
`make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, `make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
`${prefix}'. Any directories that were specified during `configure',
|
||||
but not in terms of `${prefix}', must each be overridden at install
|
||||
time for the entire installation to be relocated. The approach of
|
||||
makefile variable overrides for each directory variable is required by
|
||||
the GNU Coding Standards, and ideally causes no recompilation.
|
||||
However, some platforms have known limitations with the semantics of
|
||||
shared libraries that end up requiring recompilation when using this
|
||||
method, particularly noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the `DESTDIR' variable. For
|
||||
example, `make install DESTDIR=/alternate/directory' will prepend
|
||||
`/alternate/directory' before all installation names. The approach of
|
||||
`DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of `${prefix}'
|
||||
at `configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README.md' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of `make' will be. For these packages, running `./configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with `make V=1'; while running `./configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with `make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||
CC is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./autogen.sh CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
HP-UX `make' updates targets which have the same time stamps as
|
||||
their prerequisites, which makes it generally unusable when shipped
|
||||
generated files such as `configure' are involved. Use GNU `make'
|
||||
instead.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||
to try
|
||||
|
||||
./autogen.sh CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./autogen.sh CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
|
||||
in your `PATH', put it _after_ `/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in `/boot/common',
|
||||
not `/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./autogen.sh --prefix=/boot/common
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./autogen.sh CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf limitation. Until the limitation is lifted, you can use
|
||||
this workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash ./autogen.sh CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of all of the options to `configure', and exit.
|
||||
|
||||
`--help=short'
|
||||
`--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
`configure', and exit. The `short' variant lists options used
|
||||
only in the top level, while the `recursive' variant lists options
|
||||
also present in any nested packages.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names::
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
`--no-create'
|
||||
`-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`./autogen.sh --help' for more details.
|
||||
121
Makefile.am
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
# -
|
||||
# Copyright (c) 2010 Jannis Pohlmann <jannis@xfce.org>
|
||||
#
|
||||
# This program 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 program 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 program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||
|
||||
SUBDIRS = \
|
||||
icons \
|
||||
thunarx \
|
||||
thunar \
|
||||
docs \
|
||||
examples \
|
||||
plugins \
|
||||
po
|
||||
|
||||
distclean-local:
|
||||
rm -rf *.cache *~
|
||||
find . -type f -name Makefile -delete
|
||||
find . -type f -name Makefile.in -delete
|
||||
|
||||
distuninstallcheck_listfiles = \
|
||||
find . -type f -print | grep -v ./share/icons/hicolor/icon-theme.cache
|
||||
|
||||
.PHONY: ChangeLog
|
||||
|
||||
ChangeLog: Makefile
|
||||
(GIT_DIR=$(top_srcdir)/.git git log > .changelog.tmp \
|
||||
&& mv .changelog.tmp ChangeLog; rm -f .changelog.tmp) \
|
||||
|| (touch ChangeLog; echo 'Git directory not found: installing possibly empty changelog.' >&2)
|
||||
|
||||
dist-hook: ChangeLog
|
||||
|
||||
desktopdir = $(datadir)/applications
|
||||
desktop_in_in_files = \
|
||||
thunar.desktop.in.in \
|
||||
thunar-bulk-rename.desktop.in.in
|
||||
desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
|
||||
%.desktop.in: %.desktop.in.in Makefile
|
||||
$(AM_V_GEN) $(SED) -e "s,\@HELPERDIR\@,$(HELPER_PATH_PREFIX),g" < $< > $@
|
||||
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
|
||||
%.desktop: %.desktop.in Makefile
|
||||
$(AM_V_GEN)$(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@
|
||||
|
||||
#
|
||||
# .appdata
|
||||
#
|
||||
appdatadir = $(datadir)/metainfo
|
||||
appdata_DATA = $(appdata_in_files:.xml.in=.xml)
|
||||
appdata_in_files = org.xfce.thunar.appdata.xml.in
|
||||
%.appdata.xml: %.appdata.xml.in Makefile
|
||||
$(AM_V_GEN)$(MSGFMT) --xml --template $< -d $(top_srcdir)/po -o $@
|
||||
|
||||
servicedir = $(datadir)/dbus-1/services
|
||||
service_in_files = org.xfce.FileManager.service.in \
|
||||
org.xfce.Thunar.service.in \
|
||||
org.xfce.Thunar.FileManager1.service.in
|
||||
service_DATA = $(service_in_files:.service.in=.service)
|
||||
|
||||
systemd_userdir = $(prefix)/lib/systemd/user
|
||||
systemd_user_in_files = thunar.service.in
|
||||
systemd_user_DATA = $(systemd_user_in_files:.service.in=.service)
|
||||
|
||||
%.service: %.service.in Makefile
|
||||
$(AM_V_GEN) $(SED) -e "s,\@bindir\@,$(bindir),g" < $< > $@
|
||||
|
||||
polkit_policydir = $(datadir)/polkit-1/actions
|
||||
polkit_in_in_files = \
|
||||
org.xfce.thunar.policy.in.in
|
||||
polkit_in_files = $(polkit_in_in_files:.policy.in.in=.policy.in)
|
||||
%.policy.in: %.policy.in.in Makefile
|
||||
sed -e "s,\@bindir\@,$(bindir),g" < $< > $@
|
||||
polkit_policy_DATA = $(polkit_in_files:.policy.in=.policy)
|
||||
# Not using HAVE_POLKIT because a lot of distributions put
|
||||
# polkit.{its,loc} in binary package instead of development package.
|
||||
# E.g. Debian puts in polkitd instead of libpolkit-gobject-1-dev
|
||||
%.policy: %.policy.in Makefile
|
||||
$(AM_V_GEN)$(MSGFMT) --xml --template $< -d $(top_srcdir)/po -o $@ || \
|
||||
cp $< $@
|
||||
|
||||
EXTRA_DIST = \
|
||||
FAQ \
|
||||
HACKING \
|
||||
README.md \
|
||||
$(desktop_in_in_files) \
|
||||
$(service_in_files) \
|
||||
$(systemd_user_in_files) \
|
||||
$(appdata_in_files) \
|
||||
$(polkit_in_in_files) \
|
||||
its/xfce.loc \
|
||||
its/xfce.its \
|
||||
m4/introspection.m4
|
||||
|
||||
CLEANFILES = $(appdata_DATA)
|
||||
|
||||
DISTCLEANFILES = \
|
||||
$(desktop_in_files) \
|
||||
$(desktop_DATA) \
|
||||
$(service_DATA) \
|
||||
$(systemd_user_DATA) \
|
||||
$(polkit_in_files) \
|
||||
$(polkit_policy_DATA)
|
||||
|
||||
AM_DISTCHECK_CONFIGURE_FLAGS = \
|
||||
--enable-gtk-doc \
|
||||
--enable-gen-doc \
|
||||
--enable-introspection
|
||||
56
README.md
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
[](https://gitlab.xfce.org/xfce/thunar/COPYING)
|
||||
|
||||
# thunar
|
||||
|
||||
|
||||
Thunar is a modern file manager for the Xfce Desktop Environment. Thunar has been designed from the ground up to be fast and easy to use. Its user interface is clean and intuitive and does not include any confusing or useless options by default. Thunar starts up quickly and navigating through files and folders is fast and responsive.
|
||||
|
||||
----
|
||||
|
||||
### Homepage
|
||||
|
||||
[Thunar documentation](https://docs.xfce.org/xfce/thunar/start)
|
||||
|
||||
### Changelog
|
||||
|
||||
See [NEWS](https://gitlab.xfce.org/xfce/thunar/-/blob/master/NEWS) for details on changes and fixes made in the current release.
|
||||
|
||||
### Source Code Repository
|
||||
|
||||
[Thunar source code](https://gitlab.xfce.org/xfce/thunar)
|
||||
|
||||
### Download a Release Tarball
|
||||
|
||||
[Thunar archive](https://archive.xfce.org/src/xfce/thunar)
|
||||
or
|
||||
[Thunar tags](https://gitlab.xfce.org/xfce/thunar/-/tags)
|
||||
|
||||
### Installation
|
||||
|
||||
From source:
|
||||
|
||||
% git clone https://gitlab.xfce.org/xfce/thunar
|
||||
% git checkout <branch|tag> #optional step. Per default master is checked out
|
||||
% cd thunar
|
||||
% ./autogen.sh
|
||||
% make
|
||||
# make install
|
||||
|
||||
From release tarball:
|
||||
|
||||
% tar xf thunar-<version>.tar.bz2
|
||||
% cd thunar-<version>
|
||||
% ./configure
|
||||
% make
|
||||
# make install
|
||||
|
||||
Both autogen.sh and configure will list missing dependencies.
|
||||
If your distribution provides development versions of the related packages,
|
||||
install them. Otherwise you will need to build and install the missing dependencies from source.
|
||||
|
||||
For additional build & debug hints, check the [Thunar wiki pages](https://wiki.xfce.org/thunar/dev) and the [detailed building wiki manual](https://docs.xfce.org/xfce/building).
|
||||
|
||||
### Reporting Bugs
|
||||
|
||||
Visit the [reporting bugs](https://docs.xfce.org/xfce/thunar/bugs) page to view currently open bug reports and instructions on reporting new bugs or submitting bugfixes.
|
||||
|
||||
244
THANKS
Normal file
|
|
@ -0,0 +1,244 @@
|
|||
What's this file about?
|
||||
-----------------------
|
||||
This file lists all external people that have contributed to this project and
|
||||
thereby helped to make Thunar such a successful project.
|
||||
|
||||
|
||||
|
||||
Testers (sorted by name):
|
||||
--------------------------
|
||||
These people have contributed to Thunar by testing the software,
|
||||
reporting problems and making useful suggestions.
|
||||
|
||||
|
||||
|
||||
Translators (sorted by language):
|
||||
----------------------------------
|
||||
These people have translated Thunar to foreign languages.
|
||||
|
||||
Mohamed Magdy <mohamed.m.k@gmail.com>
|
||||
* ar translations
|
||||
|
||||
Alexander Nyakhaychyk <nyakhaychyk@gmail.com>
|
||||
* be translations
|
||||
|
||||
Carles Muñoz Gorriz <carlesmu@internautas.org>
|
||||
* ca translations
|
||||
|
||||
Pau Rul·lan Ferragut <paurullan@bulma.net>
|
||||
* ca translations
|
||||
|
||||
Michal Várady <miko.vaji@gmail.com>
|
||||
* cs translations
|
||||
|
||||
Benedikt Meurer <benny@xfce.org>
|
||||
* de translations
|
||||
|
||||
Fabian Nowak <timystery@arcor.de>
|
||||
* de translations
|
||||
|
||||
Jannis Pohlmann <jannis@xfce.org>
|
||||
* de translations
|
||||
|
||||
Sonam Pelden <sonaa_peldn@yahoo.com>
|
||||
* dz translations
|
||||
|
||||
Stathis Kamperis <ekamperi@auth.gr>
|
||||
* el translations
|
||||
|
||||
Stavros Giannouris <stavrosg2002@freemail.gr>
|
||||
* el translations
|
||||
|
||||
Jeff Bailes <thepizzaking@gmail.com>
|
||||
* en_GB translations
|
||||
|
||||
Antono Vasiljev <antono.vasiljev@gmail.com>
|
||||
* eo translations
|
||||
|
||||
Sylvain Vedrenne <gnu_sylvain@xfce.org>
|
||||
* eo translations
|
||||
|
||||
Daniel Fuertes Pérez <danifp25@yahoo.es>
|
||||
* es translations
|
||||
|
||||
Miguel Angel Ruiz Manzano <debianized@gmail.com>
|
||||
* es translations
|
||||
|
||||
Pablo Hernández-M. Saiz <homeless3d@gmail.com>
|
||||
* es translations
|
||||
|
||||
Peeter Vois <Peeter.Vois@proekspert.ee>
|
||||
* et translations
|
||||
|
||||
Piarres Beobide <pi@beobide.net>
|
||||
* eu translations
|
||||
|
||||
Jari Rahkonen <jari.rahkonen@pp1.inet.fi>
|
||||
* fi translations
|
||||
|
||||
Gérald Barré <g.barre@free.fr>
|
||||
* fr translations
|
||||
|
||||
Maximilian Schleiss <maxschleiss@bluewin.ch>
|
||||
* fr translations
|
||||
|
||||
Rafaël Carré <wavael@yahoo.fr>
|
||||
* fr translations
|
||||
|
||||
Stephane Roy <sroy@j2n.net>
|
||||
* fr translations
|
||||
|
||||
Iván Seoane Pardo <talivan.ivan@gmail.com>
|
||||
* gl translations
|
||||
|
||||
Yo'av Moshe <bjesus@gmail.com>
|
||||
* he translations
|
||||
|
||||
Yuval Tanny <tanai@int.gov.il>
|
||||
* he translations
|
||||
|
||||
Szervác Attila <sas@321.hu>
|
||||
* hu translations
|
||||
|
||||
Roberto Pariset <r.pariset@gmail.com>
|
||||
* it translations
|
||||
|
||||
Daichi Kawahata <daichi@xfce.org>
|
||||
* ja translations
|
||||
|
||||
Dimitri Gogelia <delphi.knight@gmail.com>
|
||||
* ka translations
|
||||
|
||||
ByungHyun Choi <byunghyun.choi@debianusers.org>
|
||||
* ko translations
|
||||
|
||||
Mantas Zapolskas <mantaz@users.sourceforge.net>
|
||||
* lt translations
|
||||
|
||||
Rihards Prieditis <rprieditis@inbox.lv>
|
||||
* lv translations
|
||||
|
||||
Vincent Tunru <imnotb@gmail.com>
|
||||
* nl translations
|
||||
|
||||
Jovan Naumovski <jovan@lugola.net>
|
||||
* mk translations
|
||||
|
||||
Viktor Stojanovski <viktor@lugola.net>
|
||||
* mk translations
|
||||
|
||||
Terje Uriansrud <ter@operamail.com>
|
||||
* nb_NO translations
|
||||
|
||||
Stephan Arts <psybsd@gmail.com>
|
||||
* nl translations
|
||||
|
||||
Vincent Tunru <imnotb@gmail.com>
|
||||
* nl translations
|
||||
|
||||
Amanpreet Singh Alam <aalam@users.sf.net>
|
||||
* pa translations
|
||||
|
||||
Piotr Maliński <admin@rk.edu.pl>
|
||||
* pl translations
|
||||
|
||||
Szymon Kałasz <szymon_maestro@gazeta.pl>
|
||||
* pl translations
|
||||
|
||||
Tomasz Michał Łukaszewski <T.Lukaszewski@aster.pl>
|
||||
* pl translations
|
||||
|
||||
Adriano Winter Bess <awbess@gmail.com>
|
||||
* pt_BR translations
|
||||
|
||||
William Koch <wkromani@gmail.com>
|
||||
* pt_BR translations
|
||||
|
||||
Fábio Nogueira <deb-user-ba@ubuntu.com>
|
||||
* pt_BR translations
|
||||
|
||||
Joao Pedrosa <joaopedrosa@gmail.com>
|
||||
* pt_BR translations
|
||||
|
||||
Rodrigo Coacci <rcoacci@gmail.com>
|
||||
* pt_BR translations
|
||||
|
||||
Nuno Miguel <nunis@netcabo.pt>
|
||||
* pt_PT translations
|
||||
|
||||
Misu Moldovan <dumol@gnome.ro>
|
||||
* ro translations
|
||||
|
||||
Andrey Fedoseev <andrey.fedoseev@gmail.com>
|
||||
* ru translations
|
||||
|
||||
Sergey Fedoseev <fedoseev.sergey@gmail.com>
|
||||
* ru translations
|
||||
|
||||
Ivan Masár <helix84@centrum.sk>
|
||||
* sk translations
|
||||
|
||||
Besnik Bleta <besnik@programeshqip.org>
|
||||
* sq translations
|
||||
|
||||
Alexander Toresson <alexander.toresson@gmail.com>
|
||||
* sv translations
|
||||
|
||||
Daniel Nylander <po@danielnylander.se>
|
||||
* sv translations
|
||||
|
||||
Türker Sezer <turkersezer@tsdesign.info>
|
||||
* tr translations
|
||||
|
||||
Eren Türkay <turkay.eren@gmail.com>
|
||||
* tr translations
|
||||
|
||||
Cem Ünal <admincemunal@gmail.com>
|
||||
* tr translations
|
||||
|
||||
Maxim V. Dziumanenko <mvd@mylinux.ua>
|
||||
* uk translations
|
||||
|
||||
Dmitry Nikitin <luckas_fb@mail.ru>
|
||||
* uk translations
|
||||
|
||||
Muhammad Ali Makki <makki.ma@gmail.com>
|
||||
* ur translations
|
||||
|
||||
kangkang <kanger@gmail.com>
|
||||
* zh_CN translations
|
||||
|
||||
Li Linxiao <linxiao.li@gmail.com>
|
||||
* zh_CN translations
|
||||
|
||||
Hydonsingore Cia <hydonsingore@mail.educities.edu.tw>
|
||||
* zh_TW translations
|
||||
|
||||
Cosmo Chene <cosmolax@gmail.com>
|
||||
* zh_TW translations
|
||||
|
||||
|
||||
|
||||
Other contributors (sorted by name):
|
||||
------------------------------------
|
||||
|
||||
Young Hahn <youngjin.hahn@gmail.com>
|
||||
* icon designer
|
||||
|
||||
Daichi Kawahata <daichi@xfce.org>
|
||||
* i18n coordinator
|
||||
|
||||
Laurent Meunier <meunier.laurent@laposte.net>
|
||||
* patches
|
||||
|
||||
Danny Milosavljevic <danny.milo@gmx.net>
|
||||
* patches
|
||||
|
||||
Matt McClinch <mattmcclinch@gmail.com>
|
||||
* patches
|
||||
|
||||
Nick Schermer <nick@xfce.org>
|
||||
* patches
|
||||
|
||||
Peter de Ridder <peter@xfce.org>
|
||||
* patches
|
||||
111
acinclude.m4
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
dnl Copyright (c) 2004-2006
|
||||
dnl The Thunar development team. All rights reserved.
|
||||
dnl
|
||||
dnl Written for Thunar by Benedikt Meurer <benny@xfce.org>.
|
||||
dnl
|
||||
|
||||
|
||||
|
||||
dnl # BM_THUNAR_PLUGIN_APR()
|
||||
dnl #
|
||||
dnl # Check whether the "Advanced Properties" plugin
|
||||
dnl # should be built and installed.
|
||||
dnl #
|
||||
AC_DEFUN([BM_THUNAR_PLUGIN_APR],
|
||||
[
|
||||
AC_ARG_ENABLE([apr-plugin], [AS_HELP_STRING([--disable-apr-plugin], [Don't build the thunar-apr plugin, see plugins/thunar-apr/README.md])],
|
||||
[ac_bm_thunar_plugin_apr=$enableval], [ac_bm_thunar_plugin_apr=yes])
|
||||
AC_MSG_CHECKING([whether to build the thunar-apr plugin])
|
||||
AM_CONDITIONAL([THUNAR_PLUGIN_APR], [test x"$ac_bm_thunar_plugin_apr" = x"yes"])
|
||||
AC_MSG_RESULT([$ac_bm_thunar_plugin_apr])
|
||||
|
||||
dnl Check for libexif (for the "Image" properties page)
|
||||
XDT_CHECK_OPTIONAL_PACKAGE([EXIF], [libexif], [0.6.0], [exif], [Exif support])
|
||||
])
|
||||
|
||||
|
||||
|
||||
dnl # BM_THUNAR_PLUGIN_SBR()
|
||||
dnl #
|
||||
dnl # Check whether the "Simple Builtin Renamers" plugin
|
||||
dnl # should be built and installed.
|
||||
dnl #
|
||||
AC_DEFUN([BM_THUNAR_PLUGIN_SBR],
|
||||
[
|
||||
AC_ARG_ENABLE([sbr-plugin], AS_HELP_STRING([--disable-sbr-plugin], [Don't build the thunar-sbr plugin, see plugins/thunar-sbr/README.md]),
|
||||
[ac_bm_thunar_plugin_sbr=$enableval], [ac_bm_thunar_plugin_sbr=yes])
|
||||
AC_MSG_CHECKING([whether to build the thunar-sbr plugin])
|
||||
AM_CONDITIONAL([THUNAR_PLUGIN_SBR], [test x"$ac_bm_thunar_plugin_sbr" = x"yes"])
|
||||
AC_MSG_RESULT([$ac_bm_thunar_plugin_sbr])
|
||||
|
||||
dnl Check for PCRE2 (for the "Search & Replace" renamer)
|
||||
XDT_CHECK_OPTIONAL_PACKAGE([PCRE2], [libpcre2-8], [10.0], [pcre2], [Regular expression support])
|
||||
])
|
||||
|
||||
|
||||
|
||||
dnl # BM_THUNAR_PLUGIN_TPA()
|
||||
dnl #
|
||||
dnl # Check whether the "Trash Panel Applet" plugin should
|
||||
dnl # be built and installed (this is actually a plugin
|
||||
dnl # for the Xfce panel, not for Thunar).
|
||||
dnl #
|
||||
AC_DEFUN([BM_THUNAR_PLUGIN_TPA],
|
||||
[
|
||||
AC_ARG_ENABLE([tpa-plugin], AS_HELP_STRING([--disable-tpa-plugin], [Don't build the thunar-tpa plugin, see plugins/thunar-tpa/README.md]),
|
||||
[ac_bm_thunar_plugin_tpa=$enableval], [ac_bm_thunar_plugin_tpa=yes])
|
||||
if test x"$ac_bm_thunar_plugin_tpa" = x"yes"; then
|
||||
XDT_CHECK_PACKAGE([LIBXFCE4PANEL], [libxfce4panel-2.0], [4.12.0],
|
||||
[
|
||||
ac_bm_thunar_plugin_tpa=yes
|
||||
],
|
||||
[
|
||||
dnl # Cannot build thunar-tpa if xfce4-panel is not installed
|
||||
ac_bm_thunar_plugin_tpa=no
|
||||
])
|
||||
else
|
||||
ac_bm_thunar_plugin_tpa=no
|
||||
fi
|
||||
AC_MSG_CHECKING([whether to build the thunar-tpa plugin])
|
||||
AM_CONDITIONAL([THUNAR_PLUGIN_TPA], [test x"$ac_bm_thunar_plugin_tpa" = x"yes"])
|
||||
AC_MSG_RESULT([$ac_bm_thunar_plugin_tpa])
|
||||
])
|
||||
|
||||
|
||||
|
||||
dnl # BM_THUNAR_PLUGIN_UCA()
|
||||
dnl #
|
||||
dnl # Check whether the "User Customizable Actions" plugin
|
||||
dnl # should be built and installed.
|
||||
dnl #
|
||||
AC_DEFUN([BM_THUNAR_PLUGIN_UCA],
|
||||
[
|
||||
AC_ARG_ENABLE([uca-plugin], AS_HELP_STRING([--disable-uca-plugin], [Don't build the thunar-uca plugin, see plugins/thunar-uca/README.md]),
|
||||
[ac_bm_thunar_plugin_uca=$enableval], [ac_bm_thunar_plugin_uca=yes])
|
||||
AC_MSG_CHECKING([whether to build the thunar-uca plugin])
|
||||
AM_CONDITIONAL([THUNAR_PLUGIN_UCA], [test x"$ac_bm_thunar_plugin_uca" = x"yes"])
|
||||
AC_MSG_RESULT([$ac_bm_thunar_plugin_uca])
|
||||
])
|
||||
|
||||
dnl # BM_THUNAR_PLUGIN_WALLPAPER()
|
||||
dnl #
|
||||
dnl # Check whether the "Wallpaper" plugin
|
||||
dnl # should be built and installed.
|
||||
dnl #
|
||||
AC_DEFUN([BM_THUNAR_PLUGIN_WALLPAPER],
|
||||
[
|
||||
AC_ARG_ENABLE([wallpaper-plugin], AS_HELP_STRING([--disable-wallpaper-plugin], [Don't build the thunar-wallpaper plugin, see plugins/thunar-wallpaper/README.md]),
|
||||
[ac_bm_thunar_plugin_wallpaper=$enableval], [ac_bm_thunar_plugin_wallpaper=yes])
|
||||
AC_MSG_CHECKING([whether to build the thunar-wallpaper plugin])
|
||||
AM_CONDITIONAL([THUNAR_PLUGIN_WALLPAPER], [test x"$ac_bm_thunar_plugin_wallpaper" = x"yes"])
|
||||
AC_MSG_RESULT([$ac_bm_thunar_plugin_wallpaper])
|
||||
if test x"$ac_bm_thunar_plugin_wallpaper" = x"yes"; then
|
||||
AC_CHECK_PROG([xfconf_query_found], [xfconf-query], [yes], [no])
|
||||
if test x"$xfconf_query_found" = x"no"; then
|
||||
echo "***"
|
||||
echo "*** xfconf-query was not found on your system."
|
||||
echo "*** The wallpaper won't work without it installed."
|
||||
echo "***"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
32
autogen.sh
Executable file
|
|
@ -0,0 +1,32 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# vi:set et ai sw=2 sts=2 ts=2: */
|
||||
#-
|
||||
# Copyright (c) 2009 Jannis Pohlmann <jannis@xfce.org>
|
||||
#
|
||||
# This program 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 program 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 program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
|
||||
(type xdt-autogen) >/dev/null 2>&1 || {
|
||||
cat >&2 <<EOF
|
||||
autogen.sh: You don't seem to have the Xfce development tools installed on
|
||||
your system, which are required to build this software.
|
||||
Please install the xfce4-dev-tools package first, it is available
|
||||
from your distribution or https://www.xfce.org/.
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
XDT_AUTOGEN_REQUIRED_VERSION="4.19.0" exec xdt-autogen $@
|
||||
306
configure.ac
Normal file
|
|
@ -0,0 +1,306 @@
|
|||
# vi:set et ai sw=2 sts=2 ts=2: */
|
||||
#-
|
||||
# Copyright (c) 2004-2007 Benedikt Meurer <benny@xfce.org>
|
||||
# Copyright (c) 2009-2011 Jannis Pohlmann <jannis@xfce.org>
|
||||
# Copyright (c) 2004-2024 Xfce Development Team <xfce4-dev@xfce.org>
|
||||
#
|
||||
# This program 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 program 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 program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
|
||||
dnl ***************************
|
||||
dnl *** Version information ***
|
||||
dnl ***************************
|
||||
m4_define([thunarx_verinfo], [0:0:0])
|
||||
m4_define([thunarx_version_api], [3])
|
||||
|
||||
XDT_VERSION_INIT([4.20.7])
|
||||
|
||||
dnl ***************************
|
||||
dnl *** Initialize autoconf ***
|
||||
dnl ***************************
|
||||
AC_COPYRIGHT([Copyright (c) 2004-2024 The Thunar development team. All rights reserved.])
|
||||
AC_INIT([thunar], [xdt_version], [https://gitlab.xfce.org/xfce/thunar], [thunar])
|
||||
AC_PREREQ([2.69])
|
||||
AC_CONFIG_MACRO_DIRS([m4])
|
||||
AC_CANONICAL_TARGET()
|
||||
AC_REVISION([xdt_version_build])
|
||||
|
||||
dnl ***************************
|
||||
dnl *** Initialize automake ***
|
||||
dnl ***************************
|
||||
AM_INIT_AUTOMAKE([1.11 dist-bzip2 tar-ustar no-dist-gzip foreign])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AM_MAINTAINER_MODE()
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
dnl *******************************
|
||||
dnl *** Check for UNIX variants ***
|
||||
dnl *******************************
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
AC_SEARCH_LIBS([strerror],[cposix])
|
||||
|
||||
if test "x$target_os" = "xlinux-gnu"; then
|
||||
AC_DEFINE([HAVE_LINUX], [], [Whether we are building on Linux or not])
|
||||
fi
|
||||
|
||||
dnl ********************************
|
||||
dnl *** Check for basic programs ***
|
||||
dnl ********************************
|
||||
AC_PROG_CC()
|
||||
LT_PATH_LD()
|
||||
AM_PROG_CC_C_O()
|
||||
AC_PROG_INSTALL()
|
||||
AC_CHECK_PROGS([PERL], [perl5 perl])
|
||||
m4_ifdef([AC_PROG_SED], [AC_PROG_SED], [AC_CHECK_PROG(SED, sed, sed)])
|
||||
|
||||
dnl **************************
|
||||
dnl *** Initialize libtool ***
|
||||
dnl **************************
|
||||
LT_PREREQ([2.4])
|
||||
LT_INIT([disable-static])
|
||||
|
||||
dnl **************************************
|
||||
dnl *** Substitute version information ***
|
||||
dnl **************************************
|
||||
THUNARX_VERINFO=thunarx_verinfo()
|
||||
THUNARX_VERSION_API=thunarx_version_api()
|
||||
THUNAR_VERSION_MAJOR=xdt_version_major()
|
||||
THUNAR_VERSION_MINOR=xdt_version_minor()
|
||||
THUNAR_VERSION_MICRO=xdt_version_micro()
|
||||
AC_SUBST([THUNARX_VERINFO])
|
||||
AC_SUBST([THUNARX_VERSION_API])
|
||||
AC_SUBST([THUNAR_VERSION_MAJOR])
|
||||
AC_SUBST([THUNAR_VERSION_MINOR])
|
||||
AC_SUBST([THUNAR_VERSION_MICRO])
|
||||
|
||||
dnl ******************************
|
||||
dnl *** Set helper path prefix ***
|
||||
dnl ******************************
|
||||
AC_ARG_WITH([helper-path-prefix],
|
||||
[AS_HELP_STRING([--with-helper-path-prefix=PATH],
|
||||
[Path prefix under which helper executables will be installed (default: $libdir)])],
|
||||
[HELPER_PATH_PREFIX="$withval"],
|
||||
[HELPER_PATH_PREFIX="$libdir"])
|
||||
AC_SUBST([HELPER_PATH_PREFIX])
|
||||
|
||||
dnl ***************************************
|
||||
dnl *** Set default thunarx directories ***
|
||||
dnl ***************************************
|
||||
AC_ARG_WITH([thunarx-dirs],
|
||||
[AS_HELP_STRING([--with-thunarx-dirs=PATH],
|
||||
[Used to set different default paths (separated by colon) for thunarx plugin lookup])],
|
||||
[DEFAULT_THUNARX_DIRS="$withval"],
|
||||
[DEFAULT_THUNARX_DIRS="$libdir/thunarx-$THUNARX_VERSION_API"])
|
||||
AC_SUBST([DEFAULT_THUNARX_DIRS])
|
||||
|
||||
dnl *******************************************************
|
||||
dnl *** Optional support for custom thunarx directories ***
|
||||
dnl *******************************************************
|
||||
AC_ARG_WITH([custom-thunarx-dirs-enabled],
|
||||
[AS_HELP_STRING([--with-custom-thunarx-dirs-enabled],
|
||||
[Enables the posibillity to set custom thunarx directories by using the environment variable THUNARX_DIRS])],
|
||||
[CUSTOM_THUNARX_DIRS_ENABLED="TRUE"],
|
||||
[CUSTOM_THUNARX_DIRS_ENABLED="FALSE"])
|
||||
AC_SUBST([CUSTOM_THUNARX_DIRS_ENABLED])
|
||||
|
||||
dnl ***********************************************
|
||||
dnl *** Work-around system-specific limitations ***
|
||||
dnl ***********************************************
|
||||
AC_SYS_LARGEFILE()
|
||||
|
||||
dnl **********************************
|
||||
dnl *** Check for standard headers ***
|
||||
dnl **********************************
|
||||
AC_CHECK_HEADERS([ctype.h errno.h fcntl.h grp.h limits.h locale.h malloc.h memory.h \
|
||||
paths.h pwd.h sched.h signal.h stdarg.h stdlib.h string.h \
|
||||
sys/mman.h sys/param.h sys/stat.h sys/time.h sys/types.h \
|
||||
sys/uio.h sys/wait.h time.h])
|
||||
|
||||
dnl ************************************
|
||||
dnl *** Check for standard functions ***
|
||||
dnl ************************************
|
||||
AC_FUNC_MMAP()
|
||||
AC_CHECK_FUNCS([localeconv mkdtemp pread pwrite sched_yield setgroupent \
|
||||
setpassent strcoll strlcpy strptime symlink atexit realpath \
|
||||
statx])
|
||||
|
||||
dnl ******************************
|
||||
dnl *** Check for i18n support ***
|
||||
dnl ******************************
|
||||
GETTEXT_PACKAGE="$PACKAGE"
|
||||
AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [Name of default gettext domain])
|
||||
AC_SUBST([GETTEXT_PACKAGE])
|
||||
AM_GNU_GETTEXT([external])
|
||||
AM_GNU_GETTEXT_VERSION([0.19.8])
|
||||
AC_SEARCH_LIBS([bind_textdomain_codeset], [intl],
|
||||
[AC_DEFINE([HAVE_BIND_TEXTDOMAIN_CODESET], [1], [Define to 1 if you have the 'bind_textdomain_codeset' function.])],
|
||||
[])
|
||||
|
||||
dnl *********************
|
||||
dnl *** Check for X11 ***
|
||||
dnl *********************
|
||||
XDT_CHECK_LIBX11_REQUIRE()
|
||||
|
||||
dnl *************************
|
||||
dnl *** Check for gtk-doc ***
|
||||
dnl *************************
|
||||
GTK_DOC_CHECK([1.9])
|
||||
|
||||
dnl ***********************************
|
||||
dnl *** Check for required packages ***
|
||||
dnl ***********************************
|
||||
XDT_CHECK_PACKAGE([EXO], [exo-2], [4.19.0])
|
||||
XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.72.0])
|
||||
XDT_CHECK_PACKAGE([GIO], [gio-2.0], [2.72.0])
|
||||
XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.72.0])
|
||||
XDT_CHECK_PACKAGE([GMODULE], [gmodule-2.0], [2.72.0])
|
||||
XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.24.0])
|
||||
XDT_CHECK_PACKAGE([GDK_PIXBUF], [gdk-pixbuf-2.0], [2.42.8])
|
||||
XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.17.2])
|
||||
XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [4.17.6])
|
||||
XDT_CHECK_PACKAGE([LIBXFCE4KBD_PRIVATE], [libxfce4kbd-private-3], [4.17.2])
|
||||
XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [4.12.0])
|
||||
XDT_CHECK_PACKAGE([PANGO], [pango], [1.38.0])
|
||||
|
||||
dnl ******************************
|
||||
dnl *** GObject Instrospection ***
|
||||
dnl ******************************
|
||||
GOBJECT_INTROSPECTION_CHECK([1.72.0])
|
||||
|
||||
dnl ********************************************
|
||||
dnl *** Check for session management support ***
|
||||
dnl ********************************************
|
||||
XDT_CHECK_LIBSM()
|
||||
|
||||
dnl **********************************
|
||||
dnl *** Optional GIO UNIX features ***
|
||||
dnl **********************************
|
||||
XDT_CHECK_OPTIONAL_PACKAGE([GIO_UNIX], [gio-unix-2.0],
|
||||
[2.72.0], [gio-unix], [GIO UNIX features])
|
||||
|
||||
dnl ***************************************************************
|
||||
dnl *** Optional support for GUDev (required for thunar-volman) ***
|
||||
dnl ***************************************************************
|
||||
XDT_CHECK_OPTIONAL_PACKAGE([GUDEV], [gudev-1.0], [145], [gudev],
|
||||
[GUDev (required for thunar-volman)])
|
||||
|
||||
dnl **************************************
|
||||
dnl *** Optional support for libnotify ***
|
||||
dnl **************************************
|
||||
XDT_CHECK_OPTIONAL_PACKAGE([LIBNOTIFY], [libnotify], [0.4.0], [notifications],
|
||||
[Mount notification support], [yes])
|
||||
|
||||
dnl ***********************************
|
||||
dnl *** Check for debugging support ***
|
||||
dnl ***********************************
|
||||
XDT_FEATURE_DEBUG([xdt_debug_default])
|
||||
|
||||
dnl **************************************
|
||||
dnl *** Check for linker optimizations ***
|
||||
dnl **************************************
|
||||
XDT_FEATURE_LINKER_OPTS()
|
||||
|
||||
dnl dnl ****************************************
|
||||
dnl dnl *** Check for ELF visibility support ***
|
||||
dnl dnl ****************************************
|
||||
dnl XDT_FEATURE_VISIBILITY()
|
||||
|
||||
dnl *********************************
|
||||
dnl *** Substitute platform flags ***
|
||||
dnl *********************************
|
||||
AC_MSG_CHECKING([PLATFORM_CPPFLAGS])
|
||||
AC_MSG_RESULT([$PLATFORM_CPPFLAGS])
|
||||
AC_SUBST([PLATFORM_CPPFLAGS])
|
||||
AC_MSG_CHECKING([PLATFORM_CFLAGS])
|
||||
AC_MSG_RESULT([$PLATFORM_CFLAGS])
|
||||
AC_SUBST([PLATFORM_CFLAGS])
|
||||
AC_MSG_CHECKING([PLATFORM_LDFLAGS])
|
||||
AC_MSG_RESULT([$PLATFORM_LDFLAGS])
|
||||
AC_SUBST([PLATFORM_LDFLAGS])
|
||||
|
||||
dnl ************************************
|
||||
dnl *** Check for additional plugins ***
|
||||
dnl ************************************
|
||||
BM_THUNAR_PLUGIN_APR()
|
||||
BM_THUNAR_PLUGIN_SBR()
|
||||
BM_THUNAR_PLUGIN_TPA()
|
||||
BM_THUNAR_PLUGIN_UCA()
|
||||
BM_THUNAR_PLUGIN_WALLPAPER()
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
docs/Makefile
|
||||
docs/design/Makefile
|
||||
docs/papers/Makefile
|
||||
docs/reference/Makefile
|
||||
docs/reference/thunarx/Makefile
|
||||
docs/reference/thunarx/version.xml
|
||||
docs/reference/thunar/Makefile
|
||||
docs/reference/thunar/version.xml
|
||||
examples/Makefile
|
||||
examples/tex-open-terminal/Makefile
|
||||
icons/Makefile
|
||||
icons/16x16/Makefile
|
||||
icons/24x24/Makefile
|
||||
icons/48x48/Makefile
|
||||
icons/128x128/Makefile
|
||||
icons/scalable/Makefile
|
||||
plugins/Makefile
|
||||
plugins/thunar-apr/Makefile
|
||||
plugins/thunar-sbr/Makefile
|
||||
plugins/thunar-sendto-email/Makefile
|
||||
plugins/thunar-tpa/Makefile
|
||||
plugins/thunar-uca/Makefile
|
||||
plugins/thunar-wallpaper/Makefile
|
||||
po/Makefile.in
|
||||
thunar/Makefile
|
||||
thunarx/Makefile
|
||||
thunarx/thunarx-3.pc
|
||||
thunarx/thunarx-config.h
|
||||
])
|
||||
AC_OUTPUT
|
||||
|
||||
dnl ***************************
|
||||
dnl *** Print configuration ***
|
||||
dnl ***************************
|
||||
echo
|
||||
echo "Build Configuration:"
|
||||
echo
|
||||
if test x"$GIO_UNIX_FOUND" = x"yes"; then
|
||||
echo "* GIO UNIX features: yes"
|
||||
else
|
||||
echo "* GIO UNIX features: no"
|
||||
fi
|
||||
if test x"$GUDEV_FOUND" = x"yes"; then
|
||||
echo "* GUDev (required for thunar-volman): yes"
|
||||
else
|
||||
echo "* GUDev (required for thunar-volman): no"
|
||||
fi
|
||||
if test x"$LIBNOTIFY_FOUND" = x"yes"; then
|
||||
echo "* Mount notification support: yes"
|
||||
else
|
||||
echo "* Mount notification support: no"
|
||||
fi
|
||||
echo "* Debug Support: $enable_debug"
|
||||
echo "* GObject Instrospection support: $enable_introspection"
|
||||
echo
|
||||
echo "Additional Plugins:"
|
||||
echo
|
||||
echo "* Advanced Properties: $ac_bm_thunar_plugin_apr"
|
||||
echo "* Simple Builtin Renamers: $ac_bm_thunar_plugin_sbr"
|
||||
echo "* Trash Panel Applet: $ac_bm_thunar_plugin_tpa"
|
||||
echo "* User Customizable Actions: $ac_bm_thunar_plugin_uca"
|
||||
echo "* Wallpaper support: $ac_bm_thunar_plugin_wallpaper"
|
||||
echo
|
||||
22
docs/Makefile.am
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
SUBDIRS = \
|
||||
design \
|
||||
papers \
|
||||
reference
|
||||
|
||||
doc_DATA = \
|
||||
README.gtkrc
|
||||
|
||||
man_MANS = \
|
||||
Thunar.1
|
||||
|
||||
if MAINTAINER_MODE
|
||||
%.1: %.xml
|
||||
xsltproc -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
|
||||
endif
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(doc_DATA) \
|
||||
$(man_MANS) \
|
||||
Thunar.xml
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
83
docs/README.gtkrc
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
Thunar GTK Style Properties
|
||||
===========================
|
||||
|
||||
Several user interface elements in Thunar are customizable via the standard
|
||||
GTK style mechanism. Besides the customization provided by the GTK widgets,
|
||||
that are used in Thunar, there are a bunch of additional settings that can
|
||||
be customized via the GTK theme or the ~/.gtkrc-2.0 file in the users home
|
||||
directory.
|
||||
|
||||
The following list includes the customizable widgets and the settings that
|
||||
can be customized for this widgets.
|
||||
|
||||
|
||||
ThunarAbstractIconView
|
||||
----------------------
|
||||
|
||||
The ThunarAbstractIconView widget class is the base class for both the
|
||||
ThunarIconView (the "Icon View") and the ThunarCompactView (the "Compact
|
||||
List View"). It provides two additional settings that can be customized:
|
||||
|
||||
* column-spacing (0...)
|
||||
|
||||
The additional space inserted between columns in the icon and
|
||||
compact view. Defaults to 6 for both the icon and the compact
|
||||
view.
|
||||
|
||||
* row-spacing (0...)
|
||||
|
||||
The additional space inserted between rows in the icon and
|
||||
compact view. Defaults to 6 for the icon view and 0 for the
|
||||
compact view.
|
||||
|
||||
For example, say you want to reduce the additional spacing for the icon view
|
||||
to 3 pixel, then you can put the following lines in the file ~/.gtkrc-2.0 in
|
||||
your home directory (just create the file if it is not already present):
|
||||
|
||||
style "thunar-icon-view-reduced-style"
|
||||
{
|
||||
ThunarIconView::column-spacing = 3
|
||||
ThunarIconView::row-spacing = 3
|
||||
}
|
||||
|
||||
class "ThunarIconView" style "thunar-icon-view-reduced-style"
|
||||
|
||||
|
||||
ThunarPathEntry
|
||||
---------------
|
||||
|
||||
The ThunarPathEntry widget class is used for the location bar, both in the
|
||||
traditional location selector and the "Open Location" dialog. The path entry
|
||||
displays an icon right before the path, whose size can be customized via the
|
||||
|
||||
* icon-size (16/22/24/33/36/48/64/72/96/128/192)
|
||||
|
||||
style property. For example to increase the size to 24 pixel, you can put the
|
||||
following lines in the file ~/.gtkrc-2.0:
|
||||
|
||||
style "thunar-path-entry-increased-style"
|
||||
{
|
||||
ThunarPathEntry::icon-size = 24
|
||||
}
|
||||
|
||||
class "ThunarPathEntry" style "thunar-path-entry-increased-style"
|
||||
|
||||
You should however make sure that your icon theme supports the icon size,
|
||||
otherwise you might end up with ugly up/down-scaled icons.
|
||||
|
||||
|
||||
ThunarLocationButtons
|
||||
---------------------
|
||||
|
||||
The ThunarLocationButtons widget class is used for the path bar style loca-
|
||||
tion selector. It provides the following customizable style properties:
|
||||
|
||||
* spacing (0...)
|
||||
|
||||
The amount of space inserted between the path buttons. Defaults to
|
||||
3 pixels.
|
||||
|
||||
|
||||
|
||||
Additional information can be found on the Thunar Project Wiki:
|
||||
https://docs.xfce.org/xfce/thunar/hidden-settings
|
||||
133
docs/Thunar.xml
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
<!--
|
||||
Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
|
||||
-->
|
||||
|
||||
<refentry id="Thunar">
|
||||
<refmeta>
|
||||
<refentrytitle>Thunar</refentrytitle>
|
||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
||||
<refmiscinfo class="source"> </refmiscinfo>
|
||||
<manvolnum>1</manvolnum>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>Thunar</refname>
|
||||
<refpurpose>File Manager for the Xfce Desktop Environment</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>Thunar</command>
|
||||
<arg choice="opt">options</arg>
|
||||
<arg rep="repeat">
|
||||
<arg>URI</arg>
|
||||
</arg>
|
||||
</cmdsynopsis>
|
||||
<cmdsynopsis>
|
||||
<command>Thunar</command>
|
||||
<arg choice="opt">options</arg>
|
||||
<arg choice="plain">--bulk-rename</arg>
|
||||
<arg rep="repeat">
|
||||
<arg>URI</arg>
|
||||
</arg>
|
||||
</cmdsynopsis>
|
||||
<cmdsynopsis>
|
||||
<command>Thunar</command>
|
||||
<arg choice="opt">options</arg>
|
||||
<arg choice="plain">--quit</arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
<para>
|
||||
<command>Thunar</command> is a fast and easy to use file manager for the Xfce Desktop Environment. It
|
||||
has been designed from the ground up to be lighweight with special focus on usability. Its user
|
||||
interface is clean and intuitive, and does not include any confusing or useless options.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Invocation</title>
|
||||
<para>
|
||||
<command>Thunar</command> takes a list of <replaceable>URI</replaceable>s for folders that should be
|
||||
opened in new file manager windows or files that should be selected in new file manager windows.
|
||||
The <replaceable>URI</replaceable>s may be specified as either <emphasis role="bold">file:</emphasis>
|
||||
or <emphasis role="bold">trash:</emphasis> URIs, absolute paths or paths relative to the current directory
|
||||
from which <command>Thunar</command> is being invoked. If no <replaceable>URI</replaceable>s are specified,
|
||||
the current folder will be opened in a new file manager window.
|
||||
</para>
|
||||
<para>
|
||||
When the <option>--bulk-rename</option> option is specified no file managers windows will be opened, but instead
|
||||
the <replaceable>URI</replaceable>s will be passed to the bulk renamer. The bulk renamer allows one to
|
||||
rename several files or folders at once using different renamer modules.
|
||||
</para>
|
||||
|
||||
<refsect2>
|
||||
<title>Options</title>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>-?</option>, <option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print brief help and exit.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-V</option>, <option>--version</option></term>
|
||||
<listitem>
|
||||
<para>Print version information and exit.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-B</option>, <option>--bulk-rename</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Open the <replaceable>URI</replaceable>s in a standalone window of the bulk renamer.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--daemon</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Do not terminate the <command>Thunar</command> instance when the last window is closed, but keep
|
||||
it running to speed up opening new windows later on. This is the default when spawning <command>Thunar</command>
|
||||
as part of the default Xfce session or when using D-Bus activation.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--display=DISPLAY</option></term>
|
||||
<listitem>
|
||||
<para>Use the specified X <option>DISPLAY</option> for the user interface.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-q</option>, <option>--quit</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Terminate any <command>Thunar</command> instance running in the background (spawned using the
|
||||
<option>--daemon</option> option). This command should be used whenever <command>Thunar</command>
|
||||
is upgraded to a new version to ensure that no old instance is reused.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect2>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Author</title>
|
||||
<para>
|
||||
<command>Thunar</command> was written by Benedikt Meurer <email>benny@xfce.org</email>.
|
||||
</para>
|
||||
<para>
|
||||
This manual page was written by Benedikt Meurer <email>benny@xfce.org</email>.
|
||||
</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
5
docs/design/Makefile.am
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
EXTRA_DIST = \
|
||||
mime.xmi \
|
||||
overview.xmi
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
2118
docs/design/mime.xmi
Normal file
15653
docs/design/overview.xmi
Normal file
BIN
docs/papers/HackingOnThunar.odt
Normal file
4
docs/papers/Makefile.am
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
EXTRA_DIST = \
|
||||
HackingOnThunar.odt
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
5
docs/reference/Makefile.am
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
SUBDIRS = \
|
||||
thunar \
|
||||
thunarx
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
82
docs/reference/thunar/Makefile.am
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
# The name of the module.
|
||||
DOC_MODULE=thunar
|
||||
|
||||
# The top-level SGML file.
|
||||
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
|
||||
|
||||
# Extra options to supply to gtkdoc-scan
|
||||
SCAN_OPTIONS=--deprecated-guards="EXO_DISABLE_DEPRECATED" --rebuild-sections --rebuild-types
|
||||
|
||||
# The directory containing the source code. Relative to $(srcdir)
|
||||
DOC_SOURCE_DIR=$(top_srcdir)/thunar
|
||||
|
||||
# Extra options to supply to gtkdoc-mkdb
|
||||
MKDB_OPTIONS=--xml-mode --output-format=xml
|
||||
|
||||
# Extra options to supply to gtkdoc-fixref
|
||||
FIXXREF_OPTIONS=
|
||||
|
||||
# Used for dependencies
|
||||
HFILE_GLOB=$(top_srcdir)/thunar/*.h
|
||||
CFILE_GLOB=$(top_srcdir)/thunar/*.c
|
||||
|
||||
# Header files to ignore when scanning
|
||||
IGNORE_HFILES= \
|
||||
thunar-private.h \
|
||||
thunar-dbus-freedesktop-interfaces.h \
|
||||
thunar-dbus-service-infos.h \
|
||||
thunar-marshal.h \
|
||||
stamp-thunar-marshal.h \
|
||||
thunar-thumbnailer-proxy.h \
|
||||
thunar-thumbnail-cache-proxy.h \
|
||||
thunar-resources.h
|
||||
|
||||
|
||||
# Extra files to add when scanning (relative to $srcdir)
|
||||
EXTRA_HFILES=
|
||||
|
||||
# Images to copy into HTML directory
|
||||
HTML_IMAGES =
|
||||
|
||||
# Extra SGML files that are included by DOC_MAIN_SGML_FILE
|
||||
content_files =
|
||||
|
||||
# CFLAGS and LDFLAGS for compiling scan program. Only needed
|
||||
# if $(DOC_MODULE).types is non-empty.
|
||||
GTKDOC_CFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_srcdir)/thunar \
|
||||
-I$(top_builddir) \
|
||||
$(GTK_CFLAGS) \
|
||||
$(GTK_DOC_EXTRA_CFLAGS) \
|
||||
$(EXO_CFLAGS) \
|
||||
$(GIO_CFLAGS) \
|
||||
$(GTHREAD_CFLAGS) \
|
||||
$(GUDEV_CFLAGS) \
|
||||
$(LIBNOTIFY_CFLAGS) \
|
||||
$(LIBSM_CFLAGS) \
|
||||
$(LIBXFCE4UI_CFLAGS) \
|
||||
$(LIBXFCE4KBD_PRIVATE_CFLAGS) \
|
||||
$(XFCONF_CFLAGS) \
|
||||
$(PANGO_CFLAGS) \
|
||||
$(PLATFORM_CFLAGS)
|
||||
|
||||
GTKDOC_LIBS = \
|
||||
$(GTK_LIBS) \
|
||||
$(top_builddir)/thunarx/libthunarx-$(THUNARX_VERSION_API).la \
|
||||
$(top_builddir)/thunar/libthunar.a \
|
||||
$(EXO_LIBS) \
|
||||
$(GIO_LIBS) \
|
||||
$(GTHREAD_LIBS) \
|
||||
$(GMODULE_LIBS) \
|
||||
$(GUDEV_LIBS) \
|
||||
$(LIBNOTIFY_LIBS) \
|
||||
$(LIBSM_LIBS) \
|
||||
$(LIBXFCE4UI_LIBS) \
|
||||
$(LIBXFCE4KBD_PRIVATE_LIBS) \
|
||||
$(XFCONF_LIBS) \
|
||||
$(PANGO_LIBS)
|
||||
|
||||
include $(top_srcdir)/gtk-doc.make
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
275
docs/reference/thunar/thunar-docs.xml
Normal file
|
|
@ -0,0 +1,275 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
||||
[
|
||||
<!ENTITY ThunarNotify SYSTEM "xml/thunar-notify.xml">
|
||||
<!ENTITY ThunarMenu SYSTEM "xml/thunar-menu.xml">
|
||||
<!ENTITY ThunarDbusService SYSTEM "xml/thunar-dbus-service.xml">
|
||||
<!ENTITY ThunarRenamerProgress SYSTEM "xml/thunar-renamer-progress.xml">
|
||||
<!ENTITY ThunarGioExtensions SYSTEM "xml/thunar-gio-extensions.xml">
|
||||
<!ENTITY ThunarPropertiesDialog SYSTEM "xml/thunar-properties-dialog.xml">
|
||||
<!ENTITY ThunarShortcutsModel SYSTEM "xml/thunar-shortcuts-model.xml">
|
||||
<!ENTITY ThunarIconRenderer SYSTEM "xml/thunar-icon-renderer.xml">
|
||||
<!ENTITY ThunarIoScanDirectory SYSTEM "xml/thunar-io-scan-directory.xml">
|
||||
<!ENTITY ThunarShortcutsIconRenderer SYSTEM "xml/thunar-shortcuts-icon-renderer.xml">
|
||||
<!ENTITY ThunarPreferencesDialog SYSTEM "xml/thunar-preferences-dialog.xml">
|
||||
<!ENTITY ThunarTreePane SYSTEM "xml/thunar-tree-pane.xml">
|
||||
<!ENTITY ThunarApplication SYSTEM "xml/thunar-application.xml">
|
||||
<!ENTITY ThunarRenamerPair SYSTEM "xml/thunar-renamer-pair.xml">
|
||||
<!ENTITY ThunarShortcutsView SYSTEM "xml/thunar-shortcuts-view.xml">
|
||||
<!ENTITY ThunarLocationButtons SYSTEM "xml/thunar-location-buttons.xml">
|
||||
<!ENTITY ThunarBrowser SYSTEM "xml/thunar-browser.xml">
|
||||
<!ENTITY ThunarSendtoModel SYSTEM "xml/thunar-sendto-model.xml">
|
||||
<!ENTITY ThunarUtil SYSTEM "xml/thunar-util.xml">
|
||||
<!ENTITY ThunarPreferences SYSTEM "xml/thunar-preferences.xml">
|
||||
<!ENTITY ThunarStandardView SYSTEM "xml/thunar-standard-view.xml">
|
||||
<!ENTITY ThunarHistory SYSTEM "xml/thunar-history.xml">
|
||||
<!ENTITY ThunarSidePane SYSTEM "xml/thunar-side-pane.xml">
|
||||
<!ENTITY ThunarEnumTypes SYSTEM "xml/thunar-enum-types.xml">
|
||||
<!ENTITY ThunarGobjectExtensions SYSTEM "xml/thunar-gobject-extensions.xml">
|
||||
<!ENTITY ThunarDetailsView SYSTEM "xml/thunar-details-view.xml">
|
||||
<!ENTITY ThunarDialogs SYSTEM "xml/thunar-dialogs.xml">
|
||||
<!ENTITY ThunarImage SYSTEM "xml/thunar-image.xml">
|
||||
<!ENTITY ThunarUser SYSTEM "xml/thunar-user.xml">
|
||||
<!ENTITY ThunarLocationButton SYSTEM "xml/thunar-location-button.xml">
|
||||
<!ENTITY ThunarRenamerModel SYSTEM "xml/thunar-renamer-model.xml">
|
||||
<!ENTITY ThunarSizeLabel SYSTEM "xml/thunar-size-label.xml">
|
||||
<!ENTITY ThunarClipboardManager SYSTEM "xml/thunar-clipboard-manager.xml">
|
||||
<!ENTITY ThunarAbstractDialog SYSTEM "xml/thunar-abstract-dialog.xml">
|
||||
<!ENTITY ThunarAbstractIconView SYSTEM "xml/thunar-abstract-icon-view.xml">
|
||||
<!ENTITY ThunarDeviceMonitor SYSTEM "xml/thunar-device-monitor.xml">
|
||||
<!ENTITY ThunarIoJobs SYSTEM "xml/thunar-io-jobs.xml">
|
||||
<!ENTITY ThunarDeepCountJob SYSTEM "xml/thunar-deep-count-job.xml">
|
||||
<!ENTITY ThunarIconView SYSTEM "xml/thunar-icon-view.xml">
|
||||
<!ENTITY ThunarChooserButton SYSTEM "xml/thunar-chooser-button.xml">
|
||||
<!ENTITY ThunarPermissionsChooser SYSTEM "xml/thunar-permissions-chooser.xml">
|
||||
<!ENTITY ThunarFolder SYSTEM "xml/thunar-folder.xml">
|
||||
<!ENTITY ThunarIoJobsUtil SYSTEM "xml/thunar-io-jobs-util.xml">
|
||||
<!ENTITY ThunarRenamerDialog SYSTEM "xml/thunar-renamer-dialog.xml">
|
||||
<!ENTITY ThunarGtkExtensions SYSTEM "xml/thunar-gtk-extensions.xml">
|
||||
<!ENTITY ThunarLocationEntry SYSTEM "xml/thunar-location-entry.xml">
|
||||
<!ENTITY ThunarDnd SYSTEM "xml/thunar-dnd.xml">
|
||||
<!ENTITY ThunarActionManager SYSTEM "xml/thunar-action-manager.xml">
|
||||
<!ENTITY ThunarEmblemChooser SYSTEM "xml/thunar-emblem-chooser.xml">
|
||||
<!ENTITY ThunarSessionClient SYSTEM "xml/thunar-session-client.xml">
|
||||
<!ENTITY ThunarShortcutsPane SYSTEM "xml/thunar-shortcuts-pane.xml">
|
||||
<!ENTITY ThunarJob SYSTEM "xml/thunar-job.xml">
|
||||
<!ENTITY ThunarJobOperation SYSTEM "xml/thunar-job-operation.xml">
|
||||
<!ENTITY ThunarJobOperation SYSTEM "xml/thunar-job-operation-history.xml">
|
||||
<!ENTITY ThunarPangoExtensions SYSTEM "xml/thunar-pango-extensions.xml">
|
||||
<!ENTITY ThunarStatusbar SYSTEM "xml/thunar-statusbar.xml">
|
||||
<!ENTITY ThunarLocationBar SYSTEM "xml/thunar-location-bar.xml">
|
||||
<!ENTITY ThunarColumnEditor SYSTEM "xml/thunar-column-editor.xml">
|
||||
<!ENTITY ThunarListModel SYSTEM "xml/thunar-list-model.xml">
|
||||
<!ENTITY ThunarIce SYSTEM "xml/thunar-ice.xml">
|
||||
<!ENTITY ThunarWindow SYSTEM "xml/thunar-window.xml">
|
||||
<!ENTITY ThunarFile SYSTEM "xml/thunar-file.xml">
|
||||
<!ENTITY ThunarIconFactory SYSTEM "xml/thunar-icon-factory.xml">
|
||||
<!ENTITY ThunarPathEntry SYSTEM "xml/thunar-path-entry.xml">
|
||||
<!ENTITY ThunarSimpleJob SYSTEM "xml/thunar-simple-job.xml">
|
||||
<!ENTITY ThunarChooserDialog SYSTEM "xml/thunar-chooser-dialog.xml">
|
||||
<!ENTITY ThunarComponent SYSTEM "xml/thunar-component.xml">
|
||||
<!ENTITY ThunarTransferJob SYSTEM "xml/thunar-transfer-job.xml">
|
||||
<!ENTITY ThunarTreeView SYSTEM "xml/thunar-tree-view.xml">
|
||||
<!ENTITY ThunarDevice SYSTEM "xml/thunar-device.xml">
|
||||
<!ENTITY ThunarView SYSTEM "xml/thunar-view.xml">
|
||||
<!ENTITY ThunarChooserModel SYSTEM "xml/thunar-chooser-model.xml">
|
||||
<!ENTITY ThunarNavigator SYSTEM "xml/thunar-navigator.xml">
|
||||
<!ENTITY ThunarCompactView SYSTEM "xml/thunar-compact-view.xml">
|
||||
<!ENTITY ThunarColumnModel SYSTEM "xml/thunar-column-model.xml">
|
||||
<!ENTITY ThunarTreeModel SYSTEM "xml/thunar-tree-model.xml">
|
||||
<!ENTITY ThunarProgressDialog SYSTEM "xml/thunar-progress-dialog.xml">
|
||||
<!ENTITY ThunarGdkExtensions SYSTEM "xml/thunar-gdk-extensions.xml">
|
||||
<!ENTITY ThunarProgressView SYSTEM "xml/thunar-progress-view.xml">
|
||||
|
||||
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
|
||||
<!ENTITY % gtkdocentities SYSTEM "xml/gtkdocentities.ent">
|
||||
%gtkdocentities;
|
||||
]>
|
||||
|
||||
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
|
||||
<bookinfo>
|
||||
<title>Thunar Internal Functions Reference Manual</title>
|
||||
<releaseinfo>
|
||||
For &package_string;.
|
||||
The latest version of this documentation can be found on-line at
|
||||
<ulink role="online-location" url="https://developer.xfce.org/&package_name;/index.html">https://developer.xfce.org/&package_name;/</ulink>.
|
||||
</releaseinfo>
|
||||
<copyright>
|
||||
<year>2024</year>
|
||||
<holder>The Xfce Development Team</holder>
|
||||
</copyright>
|
||||
</bookinfo>
|
||||
|
||||
<part id="glib-gtk-extensions">
|
||||
<title>Glib/GTK Extensions</title>
|
||||
<xi:include href="xml/thunar-gobject-extensions.xml"/>
|
||||
<xi:include href="xml/thunar-gio-extensions.xml"/>
|
||||
<xi:include href="xml/thunar-gtk-extensions.xml"/>
|
||||
<xi:include href="xml/thunar-gdk-extensions.xml"/>
|
||||
<xi:include href="xml/thunar-pango-extensions.xml"/>
|
||||
</part>
|
||||
<part id="thunar-objects">
|
||||
<title>Thunar Backend Objects</title>
|
||||
|
||||
<chapter>
|
||||
<title>File Abstraction</title>
|
||||
<xi:include href="xml/thunar-file.xml"/>
|
||||
<xi:include href="xml/thunar-folder.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Device Management</title>
|
||||
<xi:include href="xml/thunar-device.xml"/>
|
||||
<xi:include href="xml/thunar-device-monitor.xml"/>
|
||||
<xi:include href="xml/thunar-notify.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Parallel Tasks</title>
|
||||
<xi:include href="xml/thunar-job.xml"/>
|
||||
<xi:include href="xml/thunar-simple-job.xml"/>
|
||||
<xi:include href="xml/thunar-io-jobs.xml"/>
|
||||
<xi:include href="xml/thunar-io-jobs-util.xml"/>
|
||||
<xi:include href="xml/thunar-io-scan-directory.xml"/>
|
||||
<xi:include href="xml/thunar-deep-count-job.xml"/>
|
||||
<xi:include href="xml/thunar-transfer-job.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>X Session / DBus Management</title>
|
||||
<xi:include href="xml/thunar-session-client.xml"/>
|
||||
<xi:include href="xml/thunar-ice.xml"/>
|
||||
<xi:include href="xml/thunar-dbus-service.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Miscellaneous</title>
|
||||
<xi:include href="xml/thunar-util.xml"/>
|
||||
<xi:include href="xml/thunar-enum-types.xml"/>
|
||||
<xi:include href="xml/thunar-preferences.xml"/>
|
||||
<xi:include href="xml/thunar-user.xml"/>
|
||||
<xi:include href="xml/thunar-job-operation.xml"/>
|
||||
<xi:include href="xml/thunar-job-operation-history.xml"/>
|
||||
</chapter>
|
||||
</part>
|
||||
|
||||
<part id="thunar-view">
|
||||
<title>Main Screen UI Widgets</title>
|
||||
<chapter>
|
||||
<title>Navigation Control</title>
|
||||
<xi:include href="xml/thunar-window.xml"/>
|
||||
<xi:include href="xml/thunar-navigator.xml"/>
|
||||
<xi:include href="xml/thunar-browser.xml"/>
|
||||
<xi:include href="xml/thunar-history.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Main View</title>
|
||||
<xi:include href="xml/thunar-view.xml"/>
|
||||
<xi:include href="xml/thunar-standard-view.xml"/>
|
||||
<xi:include href="xml/thunar-abstract-icon-view.xml"/>
|
||||
<xi:include href="xml/thunar-icon-view.xml"/>
|
||||
<xi:include href="xml/thunar-details-view.xml"/>
|
||||
<xi:include href="xml/thunar-compact-view.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Side Pane</title>
|
||||
<xi:include href="xml/thunar-side-pane.xml"/>
|
||||
<xi:include href="xml/thunar-shortcuts-pane.xml"/>
|
||||
<xi:include href="xml/thunar-shortcuts-view.xml"/>
|
||||
<xi:include href="xml/thunar-tree-pane.xml"/>
|
||||
<xi:include href="xml/thunar-tree-view.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Location Bar</title>
|
||||
<xi:include href="xml/thunar-location-bar.xml"/>
|
||||
<xi:include href="xml/thunar-location-buttons.xml"/>
|
||||
<xi:include href="xml/thunar-location-button.xml"/>
|
||||
<xi:include href="xml/thunar-location-entry.xml"/>
|
||||
<xi:include href="xml/thunar-path-entry.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Status Bar</title>
|
||||
<xi:include href="xml/thunar-statusbar.xml"/>
|
||||
</chapter>
|
||||
</part>
|
||||
|
||||
<part id="thunar-widgets">
|
||||
<title>Other Thunar UI Widgets</title>
|
||||
<chapter>
|
||||
<title>Chooser</title>
|
||||
<xi:include href="xml/thunar-emblem-chooser.xml"/>
|
||||
<xi:include href="xml/thunar-chooser-dialog.xml"/>
|
||||
<xi:include href="xml/thunar-permissions-chooser.xml"/>
|
||||
<xi:include href="xml/thunar-chooser-button.xml"/>
|
||||
<xi:include href="xml/thunar-chooser-model.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Dialog</title>
|
||||
<xi:include href="xml/thunar-dialogs.xml"/>
|
||||
<xi:include href="xml/thunar-abstract-dialog.xml"/>
|
||||
<xi:include href="xml/thunar-column-editor.xml"/>
|
||||
<xi:include href="xml/thunar-preferences-dialog.xml"/>
|
||||
<xi:include href="xml/thunar-progress-dialog.xml"/> <!-- Duplicated on purpose -->
|
||||
<xi:include href="xml/thunar-properties-dialog.xml"/>
|
||||
<xi:include href="xml/thunar-renamer-dialog.xml"/> <!-- Duplicated on purpose -->
|
||||
<xi:include href="xml/thunar-size-label.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Entry Model</title>
|
||||
<xi:include href="xml/thunar-column-model.xml"/>
|
||||
<xi:include href="xml/thunar-list-model.xml"/>
|
||||
<xi:include href="xml/thunar-renamer-model.xml"/> <!-- Duplicated on purpose -->
|
||||
<xi:include href="xml/thunar-shortcuts-model.xml"/>
|
||||
<xi:include href="xml/thunar-sendto-model.xml"/>
|
||||
<xi:include href="xml/thunar-tree-model.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>File Selection</title>
|
||||
<xi:include href="xml/thunar-clipboard-manager.xml"/>
|
||||
<xi:include href="xml/thunar-dnd.xml"/>
|
||||
<xi:include href="xml/thunar-component.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Applicaton</title>
|
||||
<xi:include href="xml/thunar-application.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Menu Entries</title>
|
||||
<xi:include href="xml/thunar-menu.xml"/>
|
||||
<xi:include href="xml/thunar-action-manager.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Image/Icon</title>
|
||||
<xi:include href="xml/thunar-image.xml"/>
|
||||
<xi:include href="xml/thunar-icon-factory.xml"/>
|
||||
<xi:include href="xml/thunar-icon-renderer.xml"/>
|
||||
<xi:include href="xml/thunar-shortcuts-icon-renderer.xml"/>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Progress</title>
|
||||
<xi:include href="xml/thunar-progress-view.xml"/>
|
||||
<xi:include href="xml/thunar-progress-dialog.xml"/> <!-- Duplicated on purpose -->
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Renamer</title>
|
||||
<xi:include href="xml/thunar-renamer-progress.xml"/>
|
||||
<xi:include href="xml/thunar-renamer-model.xml"/> <!-- Duplicated on purpose -->
|
||||
<xi:include href="xml/thunar-renamer-dialog.xml"/> <!-- Duplicated on purpose -->
|
||||
<xi:include href="xml/thunar-renamer-pair.xml"/>
|
||||
</chapter>
|
||||
</part>
|
||||
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||
</book>
|
||||
0
docs/reference/thunar/thunar-overrides.txt
Normal file
1
docs/reference/thunar/version.xml.in
Normal file
|
|
@ -0,0 +1 @@
|
|||
@PACKAGE_VERSION@
|
||||
53
docs/reference/thunarx/Makefile.am
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# The name of the module.
|
||||
DOC_MODULE=thunarx
|
||||
|
||||
# The top-level SGML file.
|
||||
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
|
||||
|
||||
# Extra options to supply to gtkdoc-scan
|
||||
SCAN_OPTIONS=--deprecated-guards="EXO_DISABLE_DEPRECATED"
|
||||
|
||||
# The directory containing the source code. Relative to $(srcdir)
|
||||
DOC_SOURCE_DIR=$(top_srcdir)/thunarx
|
||||
|
||||
# Extra options to supply to gtkdoc-mkdb
|
||||
MKDB_OPTIONS=--xml-mode --output-format=xml
|
||||
|
||||
# Extra options to supply to gtkdoc-fixref
|
||||
FIXXREF_OPTIONS=
|
||||
|
||||
# Used for dependencies
|
||||
HFILE_GLOB=
|
||||
CFILE_GLOB=
|
||||
|
||||
# Header files to ignore when scanning
|
||||
IGNORE_HFILES=thunarx-alias.h
|
||||
|
||||
# Extra files to add when scanning (relative to $srcdir)
|
||||
EXTRA_HFILES=
|
||||
|
||||
# Images to copy into HTML directory
|
||||
HTML_IMAGES = \
|
||||
$(srcdir)/images/abstraction.png \
|
||||
$(srcdir)/images/bulk-rename.png \
|
||||
$(srcdir)/images/menu-provider.png \
|
||||
$(srcdir)/images/say-hello.png
|
||||
|
||||
# Extra SGML files that are included by DOC_MAIN_SGML_FILE
|
||||
content_files =
|
||||
|
||||
# CFLAGS and LDFLAGS for compiling scan program. Only needed
|
||||
# if $(DOC_MODULE).types is non-empty.
|
||||
GTKDOC_CFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_builddir) \
|
||||
$(GTK_CFLAGS) \
|
||||
$(GTK_DOC_EXTRA_CFLAGS)
|
||||
|
||||
GTKDOC_LIBS = \
|
||||
$(top_builddir)/thunarx/libthunarx-$(THUNARX_VERSION_API).la \
|
||||
$(GTK_LIBS)
|
||||
|
||||
include $(top_srcdir)/gtk-doc.make
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
BIN
docs/reference/thunarx/images/abstraction.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
docs/reference/thunarx/images/bulk-rename.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
docs/reference/thunarx/images/menu-provider.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
docs/reference/thunarx/images/say-hello.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
470
docs/reference/thunarx/thunarx-docs.xml
Normal file
|
|
@ -0,0 +1,470 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
||||
[
|
||||
<!ENTITY ThunarxFileInfo SYSTEM "xml/thunarx-file-info.xml">
|
||||
<!ENTITY ThunarxMenu SYSTEM "xml/thunarx-menu.xml">
|
||||
<!ENTITY ThunarxMenuItem SYSTEM "xml/thunarx-menu-item.xml">
|
||||
<!ENTITY ThunarxMenuProvider SYSTEM "xml/thunarx-menu-provider.xml">
|
||||
<!ENTITY ThunarxPreferencesProvider SYSTEM "xml/thunarx-preferences-provider.xml">
|
||||
<!ENTITY ThunarxPropertyPage SYSTEM "xml/thunarx-property-page.xml">
|
||||
<!ENTITY ThunarxPropertyPageProvider SYSTEM "xml/thunarx-property-page-provider.xml">
|
||||
<!ENTITY ThunarxProviderFactory SYSTEM "xml/thunarx-provider-factory.xml">
|
||||
<!ENTITY ThunarxProviderPlugin SYSTEM "xml/thunarx-provider-plugin.xml">
|
||||
<!ENTITY ThunarxRenamer SYSTEM "xml/thunarx-renamer.xml">
|
||||
<!ENTITY ThunarxRenamerProvider SYSTEM "xml/thunarx-renamer-provider.xml">
|
||||
|
||||
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
|
||||
<!ENTITY % gtkdocentities SYSTEM "xml/gtkdocentities.ent">
|
||||
%gtkdocentities;
|
||||
]>
|
||||
|
||||
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
|
||||
<bookinfo>
|
||||
<title>thunarx Reference Manual</title>
|
||||
<releaseinfo>
|
||||
For &package_string;.
|
||||
The latest version of this documentation can be found on-line at
|
||||
<ulink role="online-location" url="https://developer.xfce.org/&package_name;/index.html">https://developer.xfce.org/&package_name;/</ulink>.
|
||||
</releaseinfo>
|
||||
<copyright>
|
||||
<year>2024</year>
|
||||
<holder>The Xfce Development Team</holder>
|
||||
</copyright>
|
||||
</bookinfo>
|
||||
|
||||
<part id="thunarx-overview">
|
||||
<title>Overview</title>
|
||||
|
||||
<para>
|
||||
The Thunar Extension Framework (<systemitem class="library">thunarx</systemitem>) provides
|
||||
developers with an easy way to extend the basic functionality provided by
|
||||
the <ulink type="http" url="https://docs.xfce.org/xfce/thunar/start">Thunar File Manager</ulink>.
|
||||
The <systemitem class="library">thunarx</systemitem> library includes interfaces that can
|
||||
be implemented by extensions for various purposes.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
It is based on the <ulink type="http"
|
||||
url="https://developer.gnome.org/gobject/unstable/chapter-gtype.html">GLib Dynamic Type
|
||||
System</ulink> and loads the extensions on demand to reduce the system resources
|
||||
allocated for the file manager process.
|
||||
</para>
|
||||
|
||||
<sect1 id="thunarx-overview-goals">
|
||||
<title>Goals</title>
|
||||
|
||||
<para>
|
||||
The Thunar Extension Framework was developed with the following goals in mind:
|
||||
</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
It should be easy to extend the functionality of the file manager in certain
|
||||
ways.
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
The internals of the file manager should be hidden from the extensions to be
|
||||
able to maintain API/ABI compatibility for extensions over various major
|
||||
releases of the file manager.
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
Provide basic compatibility with the <ulink type="http"
|
||||
url="https://www.gnome.org/projects/nautilus/">Nautilus</ulink> Extension Framework,
|
||||
so vendors don't need to write several versions of their extensions for the various
|
||||
file managers. With the current implementation it should be easy to write a small
|
||||
wrapper library for generic extensions that can be loaded into both Thunar and
|
||||
Nautilus.
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
Extensions should not be loaded into memory until they are actually required to
|
||||
save system resources. This differs from the way Nautilus handles extensions and
|
||||
therefore people that already know how to write Nautilus extensions must be
|
||||
careful when writing extensions for Thunar, because Thunar actually unloads the
|
||||
extension when it's no longer needed. The <ulink type="http"
|
||||
url="https://developer.gnome.org/gobject/unstable/GTypePlugin.html">GTypePlugin</ulink>
|
||||
and <ulink type="http"
|
||||
url="https://developer.gnome.org/gobject/unstable/GTypeModule.html">GTypeModule</ulink>
|
||||
sections in the <ulink type="http" url="https://developer.gnome.org/gobject/unstable/">GObject
|
||||
Reference Manual</ulink> provide details about the handling of dynamic type plugins.
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
Permit developers to write extensions in languages other than C.
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</sect1>
|
||||
</part>
|
||||
|
||||
<part id="thunarx-writing-extensions">
|
||||
<title>Writing Extensions</title>
|
||||
|
||||
<para>
|
||||
This section explains the basic steps required to write an extension for the <ulink type="http"
|
||||
url="https://docs.xfce.org/xfce/thunar/start">Thunar File Manager</ulink> using the C language interface. It is
|
||||
just a short introduction and not meant to provide extensive details about the internal workings
|
||||
of the file manager.
|
||||
</para>
|
||||
|
||||
<sect1 id="thunarx-writing-extensions-basic-concepts">
|
||||
<title>Basic Concepts</title>
|
||||
|
||||
<sect2 id="thunarx-writing-extensions-extensions-and-providers">
|
||||
<title>Extensions and Providers</title>
|
||||
|
||||
<para>
|
||||
<emphasis>Thunar Extensions</emphasis> are shared libraries that extend the basic functionality
|
||||
provided by the Thunar File Manager. An extension exports one or more <link
|
||||
linkend="GObject"><type>GObject</type></link>s, called <emphasis>providers</emphasis>, to Thunar.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Providers implement one or more of the <link linkend="GInterface"><type>GInterface</type></link>s included with
|
||||
the <systemitem class="library">thunarx</systemitem> library. The currently exported interfaces
|
||||
include the <link linkend="ThunarxMenuProvider"><type>ThunarxMenuProvider</type></link> for adding context menu
|
||||
items to the file views, the <link
|
||||
linkend="ThunarxPropertyPageProvider"><type>ThunarxPropertyPageProvider</type></link> for adding pages to the
|
||||
file properties dialog, the <link
|
||||
linkend="ThunarxPreferencesProvider"><type>ThunarxPreferencesProvider</type></link> for adding items to the
|
||||
preferences section of the main menu, and the <link
|
||||
linkend="ThunarxRenamerProvider"><type>ThunarxRenamerProvider</type></link> for adding renamers to the bulk
|
||||
rename dialog.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="thunarx-writing-extensions-thunarxfileinfo">
|
||||
<title>ThunarxFileInfo</title>
|
||||
|
||||
<para>
|
||||
Thunar passes file references to the provider using <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>
|
||||
objects. The <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> interface provides access to the file
|
||||
information that Thunar has already read - mime type, URI, name, etc. Extensions should use the data from
|
||||
the <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> rather than reading it themselves, to
|
||||
prevent excessive I/O.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
There is exactly one <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> per file, and it is kept around
|
||||
for as long as Thunar is interested in the file. Extensions can use this information to manage lifecycles of
|
||||
its own data - e.g. when the <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> goes away, it is safe
|
||||
for the extension to forget any private data for that file.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="thunarx-writing-extensions-names">
|
||||
<title>Names</title>
|
||||
|
||||
<para>
|
||||
Most objects created by the extensions need names, e.g. the <link linkend="ThunarxMenuItem"><type>ThunarxMenuItem</type></link>s
|
||||
returned from the <link linkend="ThunarxMenuProvider"><type>ThunarxMenuProvider</type></link>s. These names must be
|
||||
namespaced with the name of the extension. For example the main item returned from the
|
||||
<application>TexOpenTerminal</application> extension (which can be found in the <filename
|
||||
role="directory">examples/tex-open-terminal</filename> subdirectory of the Thunar distribution) should be called
|
||||
<literal>TexOpenTerminal::open-terminal</literal>. The namespace must be global among the providers exported by
|
||||
a certain extension.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="thunarx-writing-extensions-types">
|
||||
<title>Types</title>
|
||||
|
||||
<para>
|
||||
Thunar extensions are loaded as <link linkend="GTypeModule"><type>GTypeModule</type></link>s. This means that all GTypes
|
||||
created by the extension must be registered with the <link linkend="GTypeModule"><type>GTypeModule</type></link>, using
|
||||
<link linkend="thunarx-provider-plugin-register-type"><function>thunarx_provider_plugin_register_type()</function></link>
|
||||
function (or one of the convenience macros like <link linkend="THUNARX-DEFINE-TYPE:CAPS"><function>THUNARX_DEFINE_TYPE()</function></link>)
|
||||
rather than <link linked="g-type-register-static"><function>g_type_register_static()</function></link>. All types
|
||||
exported by an extension must be registered in
|
||||
<link linkend="thunar-extension-initialize"><function>thunar_extension_initialize()</function></link>.
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="thunarx-writing-extensions-getting-started">
|
||||
<title>Getting Started</title>
|
||||
|
||||
<para>
|
||||
Providers are <link linkend="ThunarxProviderPlugin"><type>ThunarxProviderPlugin</type></link>s loaded from shared libraries
|
||||
installed in <filename role="directory">$libdir/thunarx-2/</filename>. The shared libraries are linked against the
|
||||
<systemitem class="library">thunarx-2</systemitem> library.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The extensions must provide three public functions, <function>thunar_extension_initialize()</function>,
|
||||
<function>thunar_extension_shutdown()</function> and <function>thunar_extension_list_types()</function>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<function>thunar_extension_initialize()</function> is passed a <link linkend="ThunarxProviderPlugin"><type>ThunarxProviderPlugin</type></link>
|
||||
object, and is responsible to register all GTypes required by the extension. <function>thunar_extension_shutdown()</function> should
|
||||
perform any extension-specific shutdown required prior to unloading the extension. <function>thunar_extension_list_types()</function>
|
||||
returns an array of GTypes that represent the types of the providers exported by the extension. Thunar will instantiate
|
||||
objects of those types when needed.
|
||||
</para>
|
||||
|
||||
<example>
|
||||
<title>Basic Structure of an extension</title>
|
||||
|
||||
<programlisting>
|
||||
#include <gmodule.h>
|
||||
#include <thunarx/thunarx.h>
|
||||
|
||||
static GType type_list[1];
|
||||
|
||||
static void
|
||||
foo_extension_register_type (ThunarxProviderPlugin *plugin)
|
||||
{
|
||||
static const GTypeInfo info =
|
||||
{
|
||||
sizeof (FooExtensionClass),
|
||||
NULL,
|
||||
NULL,
|
||||
(GClassInitFunc) foo_extension_class_init,
|
||||
NULL,
|
||||
NULL,
|
||||
sizeof (FooExtension),
|
||||
0,
|
||||
(GInstanceInitFunc) foo_extension_init,
|
||||
NULL,
|
||||
};
|
||||
|
||||
type_list[0] = thunarx_provider_plugin_register_type (plugin,
|
||||
G_TYPE_OBJECT,
|
||||
"FooExtension",
|
||||
&info, 0);
|
||||
|
||||
/* implement the desired provider interfaces */
|
||||
}
|
||||
|
||||
static GType
|
||||
foo_extension_get_type (void)
|
||||
{
|
||||
return type_list[0];
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_initialize (ThunarxProviderPlugin *plugin)
|
||||
{
|
||||
const gchar *mismatch;
|
||||
|
||||
/* verify the versions */
|
||||
mismatch = thunarx_check_version (THUNARX_MAJOR_VERSION,
|
||||
THUNARX_MINOR_VERSION,
|
||||
THUNARX_MICRO_VERSION);
|
||||
if (G_UNLIKELY (mismatch != NULL))
|
||||
{
|
||||
g_warning ("Version mismatch: %s", mismatch);
|
||||
return;
|
||||
}
|
||||
|
||||
foo_extension_register_type (plugin);
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_shutdown (void)
|
||||
{
|
||||
/* any extension-specific shutdown */
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_list_types (const GType **types,
|
||||
gint *n_types)
|
||||
{
|
||||
*types = type_list;
|
||||
*n_types = G_N_ELEMENTS (type_list);
|
||||
}</programlisting>
|
||||
</example>
|
||||
|
||||
<para>
|
||||
You should check the <application>TexOpenTerminal</application> extension, which is included in the Thunar
|
||||
distribution in the <filename role="directory">examples/tex-open-terminal</filename> directory, for a more
|
||||
complete example of how to write a Thunar extension.
|
||||
</para>
|
||||
|
||||
<sect2 id="thunarx-writing-extensions-compiling-thunar-extensions">
|
||||
<title>Compiling Thunar Extensions</title>
|
||||
|
||||
<para>
|
||||
To compile a Thunar extension, you need to tell the compiler where to find the
|
||||
<systemitem class="library">thunarx</systemitem> header files and library. This
|
||||
is done with the <literal>pkg-config</literal> utility.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The following interactive shell session demonstrates how <literal>pkg-config</literal>
|
||||
is used (the actual output on your system will be different):
|
||||
<screen>
|
||||
$ pkg-config --cflags thunarx-2
|
||||
-DXTHREADS -DXUSE_MTSAFE_API -I/opt/local/include/thunarx-2 -I/usr/local/include/atk-1.0 \
|
||||
-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/X11R6/include/gtk-2.0 \
|
||||
-I/usr/X11R6/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/X11R6/include/pango-1.0 \
|
||||
-I/usr/local/include/freetype2 -I/usr/local/include
|
||||
$ pkg-config --libs thunarx-2
|
||||
-Wl,--rpath -Wl,/usr/local/lib -L/usr/local/lib -L/usr/X11R6/lib -L/opt/local/lib -lthunarx-2</screen>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The easiest way to compile an extension is to use the <emphasis>backticks</emphasis>
|
||||
feature of the shell. If you enclose a command in backticks (<emphasis>not single
|
||||
quotes</emphasis>), then its output will be substituted into the command line before
|
||||
execution. So to compile an extension, you would type the following:
|
||||
<screen>
|
||||
$ gcc -shared -fPIC -DPIC `pkg-config --cflags --libs thunarx-2` foo.c -o foo.so</screen>
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="thunarx-writing-extensions-installing-thunar-extensions">
|
||||
<title>Installing Thunar Extensions</title>
|
||||
|
||||
<para>
|
||||
To determine the directory where extensions must be installed on your local system,
|
||||
you can use the following command (as mentioned above, the output will be different
|
||||
on your system):
|
||||
<screen>
|
||||
$ pkg-config --variable=extensionsdir thunarx-2
|
||||
/opt/local/lib/thunarx-2</screen>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For example, to install the extension <filename>foo.so</filename> on your system,
|
||||
you would type the following:
|
||||
<screen>
|
||||
$ install -d `pkg-config --variable=extensionsdir thunarx-2`
|
||||
$ install -c -m 0755 foo.so `pkg-config --variable=extensionsdir thunarx-2`/foo.so</screen>
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="thunarx-writing-extensions-advanced-topics">
|
||||
<title>Advanced topics</title>
|
||||
|
||||
<para>
|
||||
This section provides a short introduction to some of the advanced topics in the
|
||||
Thunar Extension Framework.
|
||||
</para>
|
||||
|
||||
<sect2 id="thunarx-writing-extensions-memory-resident-extensions">
|
||||
<title>Memory-Resident Extensions</title>
|
||||
|
||||
<para>
|
||||
Some extensions may not play well with Thunar's on-demand loading and unloading
|
||||
of extensions. For example, an extension that uses a desktop library, which in
|
||||
turn registers additional static GTypes will not work after being loaded and
|
||||
unloaded for the first time. For these kind of extensions, Thunar provides the
|
||||
option to make extensions <emphasis>memory resident</emphasis>, which means the
|
||||
extension will be loaded once and afterwards will never be unloaded again until
|
||||
Thunar exits.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Such extensions must set the <literal>resident</literal> property of the provider plugin in its
|
||||
<function>thunar_extension_initialize()</function> function to <literal>TRUE</literal>, using the <link
|
||||
linkend="thunarx-provider-plugin-set-resident"><function>thunarx_provider_plugin_set_resident()</function></link>
|
||||
method.
|
||||
</para>
|
||||
|
||||
<example>
|
||||
<title>Making an extension memory resident</title>
|
||||
<programlisting>
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_initialize (ThunarxProviderPlugin *plugin)
|
||||
{
|
||||
/* setup the types for the extension */
|
||||
...
|
||||
|
||||
/* ensure that the extension will never be unloaded */
|
||||
thunarx_provider_plugin_set_resident (plugin, TRUE);
|
||||
}</programlisting>
|
||||
</example>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</part>
|
||||
|
||||
<part id="thunarx-fundamentals">
|
||||
<title>Fundamentals</title>
|
||||
|
||||
<xi:include href="xml/thunarx-version-information.xml"/>
|
||||
</part>
|
||||
|
||||
<part id="thunarx-abstraction-layer">
|
||||
<title>Abstraction Layer</title>
|
||||
|
||||
<para>
|
||||
In order to hide the internals of the file manager from the extensions, the <systemitem
|
||||
class="library">thunarx</systemitem> library provides an abstraction layer, which includes
|
||||
interfaces accessible to the extension, that are implemented by the file manager at runtime.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<inlinegraphic fileref="abstraction.png" format="PNG" />
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Currently the abstraction layer consists of the interface <link
|
||||
linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>, which provides
|
||||
extensions with a way to access information about a file handled within
|
||||
the file manager, the class <link
|
||||
linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link>, which
|
||||
is the base class for widgets that can be added to the properties dialog by
|
||||
extensions, the interface <link
|
||||
linkend="ThunarxProviderPlugin"><type>ThunarxProviderPlugin</type></link>, which
|
||||
hides the details of dynamic type registration from the extensions, and the
|
||||
class <link linkend="ThunarxRenamer"><type>ThunarxRenamer</type></link>, which
|
||||
is the abstract base class for renamers that can be used in the bulk rename
|
||||
dialog provided by Thunar to rename multiple files at once.
|
||||
</para>
|
||||
|
||||
<xi:include href="xml/thunarx-file-info.xml"/>
|
||||
<xi:include href="xml/thunarx-menu.xml"/>
|
||||
<xi:include href="xml/thunarx-menu-item.xml"/>
|
||||
<xi:include href="xml/thunarx-property-page.xml"/>
|
||||
<xi:include href="xml/thunarx-provider-plugin.xml"/>
|
||||
<xi:include href="xml/thunarx-renamer.xml"/>
|
||||
</part>
|
||||
|
||||
<part id="thunarx-providers">
|
||||
<title>Providers</title>
|
||||
|
||||
<para>
|
||||
The extensions interact with the file manager by implementing so called
|
||||
<emphasis>providers</emphasis>. This is a concept adopted from the Nautilus
|
||||
Extension Framework.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Providers are interfaces in the <systemitem class="library">thunarx</systemitem>
|
||||
library that describe the functionality provided by a certain extension. For
|
||||
example, when the file manager pops up the file context menu, it'll first lookup
|
||||
all extensions that implement the interface <interface>ThunarxMenuProvider</interface>
|
||||
ask those extensions for the list of additional menu items.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<inlinegraphic fileref="menu-provider.png" format="PNG" />
|
||||
</para>
|
||||
|
||||
<xi:include href="xml/thunarx-menu-provider.xml"/>
|
||||
<xi:include href="xml/thunarx-property-page-provider.xml"/>
|
||||
<xi:include href="xml/thunarx-preferences-provider.xml"/>
|
||||
<xi:include href="xml/thunarx-renamer-provider.xml"/>
|
||||
</part>
|
||||
|
||||
<part id="thunarx-using-extensions">
|
||||
<title>Using Thunar extensions in applications</title>
|
||||
|
||||
<xi:include href="xml/thunarx-provider-factory.xml"/>
|
||||
</part>
|
||||
|
||||
<index>
|
||||
<title>Index</title>
|
||||
</index>
|
||||
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||
|
||||
</book>
|
||||
|
||||
<!--
|
||||
vi:set ts=2 sw=2 et ai syntax=docbkxml:
|
||||
-->
|
||||
1
docs/reference/thunarx/thunarx-overrides.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
243
docs/reference/thunarx/thunarx-sections.txt
Normal file
|
|
@ -0,0 +1,243 @@
|
|||
<INCLUDE>thunarx/thunarx.h</INCLUDE>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-file-info</FILE>
|
||||
<TITLE>ThunarxFileInfo</TITLE>
|
||||
ThunarxFileInfoIface
|
||||
ThunarxFileInfo
|
||||
thunarx_file_info_get_name
|
||||
thunarx_file_info_get_uri
|
||||
thunarx_file_info_get_parent_uri
|
||||
thunarx_file_info_get_uri_scheme
|
||||
thunarx_file_info_get_mime_type
|
||||
thunarx_file_info_has_mime_type
|
||||
thunarx_file_info_is_directory
|
||||
thunarx_file_info_get_file_info
|
||||
thunarx_file_info_get_filesystem_info
|
||||
thunarx_file_info_get_location
|
||||
thunarx_file_info_changed
|
||||
thunarx_file_info_renamed
|
||||
THUNARX_TYPE_FILE_INFO_LIST
|
||||
thunarx_file_info_list_copy
|
||||
thunarx_file_info_list_free
|
||||
<SUBSECTION Standard>
|
||||
THUNARX_TYPE_FILE_INFO
|
||||
THUNARX_FILE_INFO
|
||||
THUNARX_IS_FILE_INFO
|
||||
THUNARX_FILE_INFO_GET_IFACE
|
||||
<SUBSECTION Private>
|
||||
thunarx_file_info_get_type
|
||||
thunarx_file_info_list_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-menu</FILE>
|
||||
<TITLE>ThunarxMenu</TITLE>
|
||||
ThunarxMenu
|
||||
thunarx_menu_new
|
||||
thunarx_menu_append_item
|
||||
thunarx_menu_prepend_item
|
||||
thunarx_menu_get_items
|
||||
<SUBSECTION Standard>
|
||||
ThunarxMenuClass
|
||||
THUNARX_TYPE_MENU
|
||||
THUNARX_MENU
|
||||
THUNARX_MENU_CLASS
|
||||
THUNARX_IS_MENU
|
||||
THUNARX_IS_MENU_CLASS
|
||||
THUNARX_MENU_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
ThunarxMenuPrivate
|
||||
thunarx_menu_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-menu-item</FILE>
|
||||
<TITLE>ThunarxMenuItem</TITLE>
|
||||
ThunarxMenuItem
|
||||
thunarx_menu_item_new
|
||||
thunarx_menu_item_activate
|
||||
thunarx_menu_item_get_sensitive
|
||||
thunarx_menu_item_set_sensitive
|
||||
thunarx_menu_item_set_menu
|
||||
thunarx_menu_item_list_free
|
||||
<SUBSECTION Standard>
|
||||
ThunarxMenuItemClass
|
||||
THUNARX_TYPE_MENU_ITEM
|
||||
THUNARX_MENU_ITEM
|
||||
THUNARX_MENU_ITEM_CLASS
|
||||
THUNARX_IS_MENU_ITEM
|
||||
THUNARX_IS_MENU_ITEM_CLASS
|
||||
THUNARX_MENU_ITEM_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
ThunarxMenuItemPrivate
|
||||
thunarx_menu_item_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-menu-provider</FILE>
|
||||
<TITLE>ThunarxMenuProvider</TITLE>
|
||||
ThunarxMenuProviderIface
|
||||
ThunarxMenuProvider
|
||||
thunarx_menu_provider_get_file_menu_items
|
||||
thunarx_menu_provider_get_folder_menu_items
|
||||
thunarx_menu_provider_get_dnd_menu_items
|
||||
<SUBSECTION Standard>
|
||||
THUNARX_TYPE_MENU_PROVIDER
|
||||
THUNARX_MENU_PROVIDER
|
||||
THUNARX_IS_MENU_PROVIDER
|
||||
THUNARX_MENU_PROVIDER_GET_IFACE
|
||||
<SUBSECTION Private>
|
||||
thunarx_menu_provider_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-preferences-provider</FILE>
|
||||
<TITLE>ThunarxPreferencesProvider</TITLE>
|
||||
ThunarxPreferencesProviderIface
|
||||
ThunarxPreferencesProvider
|
||||
thunarx_preferences_provider_get_menu_items
|
||||
<SUBSECTION Standard>
|
||||
THUNARX_TYPE_PREFERENCES_PROVIDER
|
||||
THUNARX_PREFERENCES_PROVIDER
|
||||
THUNARX_IS_PREFERENCES_PROVIDER
|
||||
THUNARX_PREFERENCES_PROVIDER_GET_IFACE
|
||||
<SUBSECTION Private>
|
||||
thunarx_preferences_provider_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-property-page</FILE>
|
||||
<TITLE>ThunarxPropertyPage</TITLE>
|
||||
ThunarxPropertyPage
|
||||
thunarx_property_page_new
|
||||
thunarx_property_page_new_with_label_widget
|
||||
thunarx_property_page_get_label
|
||||
thunarx_property_page_set_label
|
||||
thunarx_property_page_get_label_widget
|
||||
thunarx_property_page_set_label_widget
|
||||
<SUBSECTION Standard>
|
||||
ThunarxPropertyPageClass
|
||||
THUNARX_TYPE_PROPERTY_PAGE
|
||||
THUNARX_PROPERTY_PAGE
|
||||
THUNARX_PROPERTY_PAGE_CLASS
|
||||
THUNARX_IS_PROPERTY_PAGE
|
||||
THUNARX_IS_PROPERTY_PAGE_CLASS
|
||||
THUNARX_PROPERTY_PAGE_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
ThunarxPropertyPagePrivate
|
||||
thunarx_property_page_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-property-page-provider</FILE>
|
||||
<TITLE>ThunarxPropertyPageProvider</TITLE>
|
||||
ThunarxPropertyPageProvider
|
||||
ThunarxPropertyPageProviderIface
|
||||
thunarx_property_page_provider_get_pages
|
||||
<SUBSECTION Standard>
|
||||
THUNARX_TYPE_PROPERTY_PAGE_PROVIDER
|
||||
THUNARX_PROPERTY_PAGE_PROVIDER
|
||||
THUNARX_IS_PROPERTY_PAGE_PROVIDER
|
||||
THUNARX_PROPERTY_PAGE_PROVIDER_GET_IFACE
|
||||
<SUBSECTION Private>
|
||||
thunarx_property_page_provider_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-provider-factory</FILE>
|
||||
<TITLE>ThunarxProviderFactory</TITLE>
|
||||
ThunarxProviderFactory
|
||||
thunarx_provider_factory_get_default
|
||||
thunarx_provider_factory_list_providers
|
||||
<SUBSECTION Standard>
|
||||
ThunarxProviderFactoryClass
|
||||
THUNARX_TYPE_PROVIDER_FACTORY
|
||||
THUNARX_PROVIDER_FACTORY
|
||||
THUNARX_PROVIDER_FACTORY_CLASS
|
||||
THUNARX_IS_PROVIDER_FACTORY
|
||||
THUNARX_IS_PROVIDER_FACTORY_CLASS
|
||||
THUNARX_PROVIDER_FACTORY_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
thunarx_provider_factory_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-provider-plugin</FILE>
|
||||
<TITLE>ThunarxProviderPlugin</TITLE>
|
||||
ThunarxProviderPlugin
|
||||
ThunarxProviderPluginIface
|
||||
thunarx_provider_plugin_get_resident
|
||||
thunarx_provider_plugin_set_resident
|
||||
thunarx_provider_plugin_register_type
|
||||
thunarx_provider_plugin_add_interface
|
||||
thunarx_provider_plugin_register_enum
|
||||
thunarx_provider_plugin_register_flags
|
||||
THUNARX_DEFINE_TYPE
|
||||
THUNARX_DEFINE_TYPE_WITH_CODE
|
||||
THUNARX_DEFINE_ABSTRACT_TYPE
|
||||
THUNARX_DEFINE_ABSTRACT_TYPE_WITH_CODE
|
||||
THUNARX_DEFINE_TYPE_EXTENDED
|
||||
THUNARX_IMPLEMENT_INTERFACE
|
||||
<SUBSECTION Standard>
|
||||
THUNARX_TYPE_PROVIDER_PLUGIN
|
||||
THUNARX_PROVIDER_PLUGIN
|
||||
THUNARX_IS_PROVIDER_PLUGIN
|
||||
THUNARX_PROVIDER_PLUGIN_GET_IFACE
|
||||
<SUBSECTION Private>
|
||||
thunarx_provider_plugin_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-renamer</FILE>
|
||||
<TITLE>ThunarxRenamer</TITLE>
|
||||
ThunarxRenamer
|
||||
ThunarxRenamerClass
|
||||
thunarx_renamer_get_help_url
|
||||
thunarx_renamer_set_help_url
|
||||
thunarx_renamer_get_name
|
||||
thunarx_renamer_set_name
|
||||
thunarx_renamer_process
|
||||
thunarx_renamer_load
|
||||
thunarx_renamer_save
|
||||
thunarx_renamer_get_menu_items
|
||||
thunarx_renamer_changed
|
||||
<SUBSECTION Standard>
|
||||
THUNARX_TYPE_RENAMER
|
||||
THUNARX_RENAMER
|
||||
THUNARX_RENAMER_CLASS
|
||||
THUNARX_IS_RENAMER
|
||||
THUNARX_IS_RENAMER_CLASS
|
||||
THUNARX_RENAMER_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
thunarx_renamer_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-renamer-provider</FILE>
|
||||
<TITLE>ThunarxRenamerProvider</TITLE>
|
||||
ThunarxRenamerProvider
|
||||
ThunarxRenamerProviderIface
|
||||
thunarx_renamer_provider_get_renamers
|
||||
<SUBSECTION Standard>
|
||||
THUNARX_TYPE_RENAMER_PROVIDER
|
||||
THUNARX_RENAMER_PROVIDER
|
||||
THUNARX_IS_RENAMER_PROVIDER
|
||||
THUNARX_RENAMER_PROVIDER_GET_IFACE
|
||||
<SUBSECTION Private>
|
||||
thunarx_renamer_provider_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>thunarx-version-information</FILE>
|
||||
<TITLE>Variables and functions to check the library version</TITLE>
|
||||
thunarx_major_version
|
||||
thunarx_minor_version
|
||||
thunarx_micro_version
|
||||
thunarx_check_version
|
||||
THUNARX_MAJOR_VERSION
|
||||
THUNARX_MINOR_VERSION
|
||||
THUNARX_MICRO_VERSION
|
||||
THUNARX_CHECK_VERSION
|
||||
</SECTION>
|
||||
|
||||
14
docs/reference/thunarx/thunarx.types
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#include <thunarx/thunarx.h>
|
||||
|
||||
thunarx_file_info_get_type
|
||||
thunarx_menu_get_type
|
||||
thunarx_menu_item_get_type
|
||||
thunarx_menu_provider_get_type
|
||||
thunarx_preferences_provider_get_type
|
||||
thunarx_property_page_get_type
|
||||
thunarx_property_page_provider_get_type
|
||||
thunarx_provider_factory_get_type
|
||||
thunarx_provider_plugin_get_type
|
||||
thunarx_renamer_get_type
|
||||
thunarx_renamer_provider_get_type
|
||||
|
||||
1
docs/reference/thunarx/version.xml.in
Normal file
|
|
@ -0,0 +1 @@
|
|||
@PACKAGE_VERSION@
|
||||
9
examples/Makefile.am
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
SUBDIRS = \
|
||||
tex-open-terminal
|
||||
|
||||
EXTRA_DIST = \
|
||||
nautilus-bulk-rename.py \
|
||||
thunar-file-manager.py \
|
||||
xfce-file-manager.py
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
65
examples/nautilus-bulk-rename.py
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
|
||||
#
|
||||
# This program 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 program 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 program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||
# Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
# --------------------------------------------------------------- #
|
||||
# This example demonstrates how to integrate Thunar's Bulk Rename #
|
||||
# functionality into Nautilus. You'll need the nautilus-python #
|
||||
# bindings to actually try this example. #
|
||||
# #
|
||||
# Just copy this file to #
|
||||
# #
|
||||
# ~/.nautilus/python-extensions/ #
|
||||
# #
|
||||
# creating the directory if it does not already exist, and re- #
|
||||
# start Nautilus. Afterwards you'll see an action labeled "Bulk #
|
||||
# Rename" in the file context menu, which can be used to rename #
|
||||
# the selected files. #
|
||||
# #
|
||||
# Thunar must be compiled with D-BUS support for this to work. #
|
||||
# --------------------------------------------------------------- #
|
||||
|
||||
|
||||
import gtk
|
||||
import nautilus
|
||||
|
||||
import dbus
|
||||
import dbus.service
|
||||
if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
|
||||
import dbus.glib
|
||||
|
||||
class NautilusBulkRename(nautilus.MenuProvider):
|
||||
def __init__(self):
|
||||
bus = dbus.SessionBus()
|
||||
thunar_object = bus.get_object('org.xfce.Thunar', '/org/xfce/FileManager')
|
||||
self.thunar = dbus.Interface(thunar_object, 'org.xfce.Thunar')
|
||||
|
||||
def menu_activate_cb(self, item, files):
|
||||
uris = []
|
||||
for file in files:
|
||||
uris.append(file.get_uri())
|
||||
self.thunar.BulkRename(files[0].get_parent_uri(), uris, False, item.get_data('display'))
|
||||
|
||||
def get_file_items(self, window, files):
|
||||
if len(files) == 0:
|
||||
return
|
||||
|
||||
item = nautilus.MenuItem('NautilusBulkRename::bulk-rename', 'Bulk Rename', 'Rename all selected files at once')
|
||||
item.set_data('display', window.get_screen().make_display_name())
|
||||
item.connect('activate', self.menu_activate_cb, files)
|
||||
return item,
|
||||
44
examples/tex-open-terminal/Makefile.am
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
AM_CPPFLAGS = \
|
||||
-I$(top_builddir) \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_srcdir)/examples \
|
||||
-DG_LOG_DOMAIN=\"TexOpenTerminal\" \
|
||||
$(PLATFORM_CPPFLAGS)
|
||||
|
||||
extensionsdir = $(libdir)/thunarx-$(THUNARX_VERSION_API)
|
||||
extensions_LTLIBRARIES = \
|
||||
tex-open-terminal.la
|
||||
|
||||
tex_open_terminal_la_SOURCES = \
|
||||
tex-open-terminal-plugin.c \
|
||||
tex-open-terminal.c \
|
||||
tex-open-terminal.h
|
||||
|
||||
tex_open_terminal_la_CFLAGS = \
|
||||
$(GTK_CFLAGS) \
|
||||
$(LIBXFCE4UI_CFLAGS) \
|
||||
$(PLATFORM_CFLAGS)
|
||||
|
||||
tex_open_terminal_la_DEPENDENCIES = \
|
||||
$(top_builddir)/thunarx/libthunarx-$(THUNARX_VERSION_API).la
|
||||
|
||||
tex_open_terminal_la_LIBADD = \
|
||||
$(top_builddir)/thunarx/libthunarx-$(THUNARX_VERSION_API).la \
|
||||
$(LIBXFCE4UI_LIBS) \
|
||||
$(GTK_LIBS)
|
||||
|
||||
tex_open_terminal_la_LDFLAGS = \
|
||||
-avoid-version \
|
||||
-export-dynamic \
|
||||
-export-symbols-regex="^thunar_extension_(shutdown|initialize|list_types)" \
|
||||
-module \
|
||||
$(PLATFORM_LDFLAGS)
|
||||
|
||||
EXTRA_DIST = \
|
||||
README.md
|
||||
|
||||
# Don't install/uninstall examples by default
|
||||
install:
|
||||
uninstall:
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
9
examples/tex-open-terminal/README.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
This is an example for a Thunar Extension that provides additional context menu items.
|
||||
|
||||
It adds an "Open Terminal Here" action to the folder context menu and to the file context menu of directories, and thereby allows you to open a new Terminal instance in the given folder.
|
||||
|
||||
The example is mainly provided for developers to get an idea about how to write an extension that implements the ThunarxMenuProvider interface.
|
||||
|
||||
The extension is not installed by default, as every installed extension increases the resources required to run Thunar. If you want to install this extension, you can use the command `make install-extensionsLTLIBRARIES` in this directory. If you want to uninstall it, you can use the command `make uninstall-extensionsLTLIBRARIES` in this directory.
|
||||
|
||||
Please note that this extension is not meant for daily use, but should just serve as an example of how to write a simple Thunar extension. If you want to be able to open a terminal in a specific folder, you should consider installing the thunar-uca extension (see thunar-uca/README.md) and adding an "Open Terminal Here" action there (there's already such an action available by default).
|
||||
81
examples/tex-open-terminal/tex-open-terminal-plugin.c
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <tex-open-terminal/tex-open-terminal.h>
|
||||
|
||||
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_initialize (ThunarxProviderPlugin *plugin);
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_shutdown (void);
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_list_types (const GType **types,
|
||||
gint *n_types);
|
||||
|
||||
|
||||
|
||||
static GType type_list[1];
|
||||
|
||||
|
||||
|
||||
void
|
||||
thunar_extension_initialize (ThunarxProviderPlugin *plugin)
|
||||
{
|
||||
const gchar *mismatch;
|
||||
|
||||
/* verify that the thunarx versions are compatible */
|
||||
mismatch = thunarx_check_version (THUNARX_MAJOR_VERSION, THUNARX_MINOR_VERSION, THUNARX_MICRO_VERSION);
|
||||
if (G_UNLIKELY (mismatch != NULL))
|
||||
{
|
||||
g_warning ("Version mismatch: %s", mismatch);
|
||||
return;
|
||||
}
|
||||
|
||||
g_message ("Initializing TexOpenTerminal extension");
|
||||
|
||||
/* register the types provided by this plugin */
|
||||
tex_open_terminal_register_type (plugin);
|
||||
|
||||
/* setup the plugin type list */
|
||||
type_list[0] = TEX_TYPE_OPEN_TERMINAL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
thunar_extension_shutdown (void)
|
||||
{
|
||||
g_message ("Shutting down TexOpenTerminal extension");
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
thunar_extension_list_types (const GType **types,
|
||||
gint *n_types)
|
||||
{
|
||||
*types = type_list;
|
||||
*n_types = G_N_ELEMENTS (type_list);
|
||||
}
|
||||
172
examples/tex-open-terminal/tex-open-terminal.c
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MEMORY_H
|
||||
#include <memory.h>
|
||||
#endif
|
||||
#ifdef HAVE_STRING_H
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
#include <libxfce4ui/libxfce4ui.h>
|
||||
#include <tex-open-terminal/tex-open-terminal.h>
|
||||
|
||||
|
||||
|
||||
static void
|
||||
tex_open_terminal_menu_provider_init (ThunarxMenuProviderIface *iface);
|
||||
static GList *
|
||||
tex_open_terminal_get_file_menu_items (ThunarxMenuProvider *provider,
|
||||
GtkWidget *window,
|
||||
GList *files);
|
||||
static GList *
|
||||
tex_open_terminal_get_folder_menu_items (ThunarxMenuProvider *provider,
|
||||
GtkWidget *window,
|
||||
ThunarxFileInfo *folder);
|
||||
static void
|
||||
tex_open_terminal_activated (ThunarxMenuItem *item,
|
||||
GtkWidget *window);
|
||||
|
||||
|
||||
|
||||
struct _TexOpenTerminalClass
|
||||
{
|
||||
GObjectClass __parent__;
|
||||
};
|
||||
|
||||
struct _TexOpenTerminal
|
||||
{
|
||||
GObject __parent__;
|
||||
};
|
||||
|
||||
|
||||
|
||||
THUNARX_DEFINE_TYPE_WITH_CODE (TexOpenTerminal,
|
||||
tex_open_terminal,
|
||||
G_TYPE_OBJECT,
|
||||
THUNARX_IMPLEMENT_INTERFACE (THUNARX_TYPE_MENU_PROVIDER,
|
||||
tex_open_terminal_menu_provider_init));
|
||||
|
||||
|
||||
|
||||
static void
|
||||
tex_open_terminal_class_init (TexOpenTerminalClass *klass)
|
||||
{
|
||||
/* nothing to do here */
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
tex_open_terminal_init (TexOpenTerminal *open_terminal)
|
||||
{
|
||||
/* nothing to do here */
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
tex_open_terminal_menu_provider_init (ThunarxMenuProviderIface *iface)
|
||||
{
|
||||
iface->get_file_menu_items = tex_open_terminal_get_file_menu_items;
|
||||
iface->get_folder_menu_items = tex_open_terminal_get_folder_menu_items;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static GList *
|
||||
tex_open_terminal_get_file_menu_items (ThunarxMenuProvider *provider,
|
||||
GtkWidget *window,
|
||||
GList *files)
|
||||
{
|
||||
/* check if we have a directory here */
|
||||
if (G_LIKELY (files != NULL && files->next == NULL && thunarx_file_info_is_directory (files->data)))
|
||||
return tex_open_terminal_get_folder_menu_items (provider, window, files->data);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static GList *
|
||||
tex_open_terminal_get_folder_menu_items (ThunarxMenuProvider *provider,
|
||||
GtkWidget *window,
|
||||
ThunarxFileInfo *folder)
|
||||
{
|
||||
ThunarxMenuItem *item = NULL;
|
||||
gchar *scheme;
|
||||
gchar *path;
|
||||
gchar *uri;
|
||||
|
||||
/* determine the uri scheme of the folder and check if we support it */
|
||||
scheme = thunarx_file_info_get_uri_scheme (folder);
|
||||
if (G_LIKELY (strcmp (scheme, "file") == 0))
|
||||
{
|
||||
/* determine the local path to the folder */
|
||||
uri = thunarx_file_info_get_uri (folder);
|
||||
path = g_filename_from_uri (uri, NULL, NULL);
|
||||
g_free (uri);
|
||||
|
||||
/* check if we have a valid path here */
|
||||
if (G_LIKELY (path != NULL))
|
||||
{
|
||||
item = thunarx_menu_item_new ("TexOpenTerminal::open-terminal-here", "Open Terminal Here", "Open Terminal in this folder", "utilities-terminal");
|
||||
g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (tex_open_terminal_activated), window);
|
||||
g_object_set_data_full (G_OBJECT (item), "open-terminal-here-path", path, g_free);
|
||||
}
|
||||
}
|
||||
g_free (scheme);
|
||||
|
||||
return (item != NULL) ? g_list_prepend (NULL, item) : NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
tex_open_terminal_activated (ThunarxMenuItem *item,
|
||||
GtkWidget *window)
|
||||
{
|
||||
const gchar *path;
|
||||
GError *error = NULL;
|
||||
gchar *command;
|
||||
|
||||
/* determine the folder path */
|
||||
path = g_object_get_data (G_OBJECT (item), "open-terminal-here-path");
|
||||
if (G_UNLIKELY (path == NULL))
|
||||
return;
|
||||
|
||||
/* build up the command line for the terminal */
|
||||
command = g_strdup_printf ("exo-open --launch TerminalEmulator --working-directory \"%s\"", path);
|
||||
|
||||
/* try to run the terminal command */
|
||||
if (!xfce_spawn_command_line (NULL, command, FALSE, FALSE, TRUE, &error))
|
||||
{
|
||||
/* display an error dialog */
|
||||
xfce_dialog_show_error (GTK_WINDOW (window), error, "Failed to open terminal in folder %s.", path);
|
||||
g_error_free (error);
|
||||
}
|
||||
|
||||
/* cleanup */
|
||||
g_free (command);
|
||||
}
|
||||
45
examples/tex-open-terminal/tex-open-terminal.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifndef __TEX_OPEN_TERMINAL_H__
|
||||
#define __TEX_OPEN_TERMINAL_H__
|
||||
|
||||
#include <thunarx/thunarx.h>
|
||||
|
||||
G_BEGIN_DECLS;
|
||||
|
||||
typedef struct _TexOpenTerminalClass TexOpenTerminalClass;
|
||||
typedef struct _TexOpenTerminal TexOpenTerminal;
|
||||
|
||||
#define TEX_TYPE_OPEN_TERMINAL (tex_open_terminal_get_type ())
|
||||
#define TEX_OPEN_TERMINAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEX_TYPE_OPEN_TERMINAL, TexOpenTerminal))
|
||||
#define TEX_OPEN_TERMINAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEX_TYPE_OPEN_TERMINAL, TexOpenTerminalClass))
|
||||
#define TEX_IS_OPEN_TERMINAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEX_TYPE_OPEN_TERMINAL))
|
||||
#define TEX_IS_OPEN_TERMINAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEX_TYPE_OPEN_TERMINAL))
|
||||
#define TEX_OPEN_TERMINAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEX_TYPE_OPEN_TERMINAL, TexOpenTerminalClass))
|
||||
|
||||
GType
|
||||
tex_open_terminal_get_type (void) G_GNUC_CONST;
|
||||
void
|
||||
tex_open_terminal_register_type (ThunarxProviderPlugin *plugin);
|
||||
|
||||
G_END_DECLS;
|
||||
|
||||
#endif /* !__TEX_OPEN_TERMINAL_H__ */
|
||||
56
examples/thunar-file-manager.py
Executable file
|
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
|
||||
#
|
||||
# This program 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 program 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 program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||
# Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# Simple example of how to communicate with Thunar using the #
|
||||
# org.xfce.Thunar D-BUS interface. #
|
||||
# #
|
||||
# Thunar must be compiled with D-BUS support for this to work. #
|
||||
# ------------------------------------------------------------ #
|
||||
|
||||
import gtk
|
||||
import dbus
|
||||
import dbus.service
|
||||
if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
|
||||
import dbus.glib
|
||||
|
||||
# acquire a reference to the Thunar object
|
||||
bus = dbus.SessionBus()
|
||||
thunar_object = bus.get_object('org.xfce.Thunar', '/org/xfce/FileManager')
|
||||
thunar = dbus.Interface(thunar_object, 'org.xfce.Thunar')
|
||||
|
||||
# You can now invoke methods on the thunar object, for
|
||||
# example, to terminate a running Thunar instance (just
|
||||
# like Thunar -q), you can use:
|
||||
#
|
||||
# thunar.Terminate()
|
||||
#
|
||||
# or, if you want to open the bulk rename dialog in the
|
||||
# standalone version with an empty file list and /tmp
|
||||
# as default folder for the "Add Files" dialog, use:
|
||||
#
|
||||
# thunar.BulkRename('/tmp', [], True, '', '')
|
||||
#
|
||||
# See the thunar-dbus-service-infos.xml file for the exact
|
||||
# interface definition.
|
||||
#
|
||||
|
||||
# We just popup the bulk rename dialog to
|
||||
# demonstrate that it works. ;-)
|
||||
thunar.BulkRename('/tmp', [], True, '', '')
|
||||
69
examples/xfce-file-manager.py
Executable file
|
|
@ -0,0 +1,69 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
|
||||
#
|
||||
# This program 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 program 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 program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||
# Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Simple example of how to communicate with Thunar (and any other Xfce file #
|
||||
# file manager) using the org.xfce.FileManager D-BUS interface. #
|
||||
# #
|
||||
# Thunar must be compiled with D-BUS support for this to work. #
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
import gtk
|
||||
import dbus
|
||||
import dbus.service
|
||||
if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
|
||||
import dbus.glib
|
||||
|
||||
# acquire a reference to the FileManager object
|
||||
bus = dbus.SessionBus()
|
||||
xfce_file_manager_object = bus.get_object('org.xfce.FileManager', '/org/xfce/FileManager')
|
||||
xfce_file_manager = dbus.Interface(xfce_file_manager_object, 'org.xfce.FileManager')
|
||||
|
||||
# You can now invoke methods on the xfce_file_manager object,
|
||||
# for example, to open a new file manager window for /tmp, you
|
||||
# would use the following method:
|
||||
#
|
||||
# xfce_file_manager.DisplayFolder('/tmp', '', '')
|
||||
#
|
||||
# or, if you also want to pre-select a file in the folder, you
|
||||
# can use:
|
||||
#
|
||||
# xfce_file_manager.DisplayFolderAndSelect('/tmp', 'file.txt', '', '')
|
||||
#
|
||||
# else if you want to display the file managers preferences
|
||||
# dialog, you'd use
|
||||
#
|
||||
# xfce_file_manager.DisplayPreferencesDialog('', '')
|
||||
#
|
||||
# and to open the file properties dialog of a given file, use
|
||||
#
|
||||
# xfce_file_manager.DisplayFileProperties('/path/to/file', '', '')
|
||||
#
|
||||
# and last but not least, to launch a given file (or open
|
||||
# a folder), use
|
||||
#
|
||||
# xfce_file_manager.Launch('/path/to/file', '', '')
|
||||
#
|
||||
# See the thunar-dbus-service-infos.xml file for the exact
|
||||
# interface definition.
|
||||
#
|
||||
|
||||
# We just popup a new window for the root directory here to
|
||||
# demonstrate that it works. ;-)
|
||||
xfce_file_manager.Launch('/', '', '')
|
||||
8
icons/128x128/Makefile.am
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
iconsdir = $(datadir)/icons/hicolor/128x128/apps
|
||||
icons_DATA = \
|
||||
org.xfce.thunar.png
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(icons_DATA)
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
BIN
icons/128x128/org.xfce.thunar.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
14
icons/16x16/Makefile.am
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
appsdir = $(datadir)/icons/hicolor/16x16/apps
|
||||
apps_DATA = \
|
||||
org.xfce.thunar.png
|
||||
|
||||
stockdir = $(datadir)/icons/hicolor/16x16/stock/navigation
|
||||
stock_DATA = \
|
||||
stock_folder-copy.png \
|
||||
stock_folder-move.png
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(apps_DATA) \
|
||||
$(stock_DATA)
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
BIN
icons/16x16/org.xfce.thunar.png
Normal file
|
After Width: | Height: | Size: 634 B |
252
icons/16x16/org.xfce.thunar.svg
Normal file
|
|
@ -0,0 +1,252 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
viewBox="0 0 16 16"
|
||||
style="display:inline;enable-background:new"
|
||||
version="1.0"
|
||||
id="svg11300"
|
||||
height="16"
|
||||
width="16"
|
||||
sodipodi:docname="org.xfce.thunar.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
inkscape:export-filename="/home/ochosi/Nerdstuff/xfce/thunar/icons/16x16/org.xfce.thunar.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1387"
|
||||
id="namedview35"
|
||||
showgrid="true"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="2.142207"
|
||||
inkscape:cy="0.9226059"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="29"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g3547"
|
||||
showguides="false"
|
||||
inkscape:lockguides="true"
|
||||
inkscape:pagecheckerboard="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid842"
|
||||
empspacing="4" />
|
||||
</sodipodi:namedview>
|
||||
<title
|
||||
id="title4162">Adwaita Icon Template</title>
|
||||
<defs
|
||||
id="defs3">
|
||||
<linearGradient
|
||||
id="linearGradient854">
|
||||
<stop
|
||||
id="stop848"
|
||||
offset="0"
|
||||
style="stop-color:#79503c;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#ad7702;stop-opacity:1"
|
||||
offset="0.50000006"
|
||||
id="stop850" />
|
||||
<stop
|
||||
id="stop852"
|
||||
offset="1"
|
||||
style="stop-color:#79503c;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1257"
|
||||
id="linearGradient1259-9"
|
||||
x1="37.378735"
|
||||
y1="61.646938"
|
||||
x2="39.902897"
|
||||
y2="65.362389"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.0248301,0,0,0.0500901,507.1174,348.39423)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1257">
|
||||
<stop
|
||||
style="stop-color:#bcc5ca;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop1253" />
|
||||
<stop
|
||||
style="stop-color:#bcc5ca;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop1255" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient854"
|
||||
id="linearGradient1197-6"
|
||||
x1="52.303093"
|
||||
y1="83.351303"
|
||||
x2="80.691933"
|
||||
y2="83.351303"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.02818007,0,0,0.02573999,506.83686,350.05454)" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="89.643501"
|
||||
x2="76.094429"
|
||||
y1="89.643501"
|
||||
x1="51.999992"
|
||||
id="linearGradient1222-1"
|
||||
xlink:href="#linearGradient1220"
|
||||
gradientTransform="matrix(0.07794078,0,0,0.0745119,501.11852,345.81586)" />
|
||||
<linearGradient
|
||||
id="linearGradient1220">
|
||||
<stop
|
||||
style="stop-color:#79503c;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1215" />
|
||||
<stop
|
||||
id="stop1224"
|
||||
offset="0.51465631"
|
||||
style="stop-color:#ad7702;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#79503c;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop1218" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>GNOME Design Team</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source />
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
|
||||
<dc:title>Adwaita Icon Template</dc:title>
|
||||
<dc:subject>
|
||||
<rdf:Bag />
|
||||
</dc:subject>
|
||||
<dc:date />
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title />
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<dc:publisher>
|
||||
<cc:Agent>
|
||||
<dc:title />
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:identifier />
|
||||
<dc:relation />
|
||||
<dc:language />
|
||||
<dc:coverage />
|
||||
<dc:description />
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title />
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
style="display:inline;enable-background:new"
|
||||
id="g3547"
|
||||
transform="matrix(5.0000031,0,0,5.0000031,-2535.5554,-1750.0011)"
|
||||
inkscape:label="emoji-symbols-alt">
|
||||
<rect
|
||||
ry="0.23935749"
|
||||
rx="0.28078926"
|
||||
y="351.49655"
|
||||
x="508.41705"
|
||||
height="1.6898036"
|
||||
width="0.59712142"
|
||||
id="rect1245-8"
|
||||
style="opacity:1;fill:#603f2f;fill-opacity:1;fill-rule:nonzero;stroke:#603f2f;stroke-width:0.02726839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#c02700;fill-opacity:1;fill-rule:evenodd;stroke:#c02700;stroke-width:0.08388707;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 508.92155,352.08471 c 0.17302,-0.11621 0.30805,-0.0452 0.30805,-0.0452 0,0 -0.77679,0.53415 -1.45302,0.51819 l 0.11445,-0.23932 c 0.72823,0.0107 1.02227,-0.43589 1.02227,-0.43589 0.1461,-0.055 0.3154,-0.09 0.35246,0.14826 l -0.0821,0.0133 c -0.053,0.0171 -0.22351,0.11454 -0.26206,0.0404 z"
|
||||
id="path1229-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="opacity:1;fill:url(#linearGradient1197-6);fill-opacity:1;fill-rule:nonzero;stroke:#603f2f;stroke-width:0.20830667;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 508.68968,351.50416 h 0.0422 c 0.1522,0 0.27475,0.0306 0.27475,0.12305 v 1.2934 c 0,0.0925 -0.12255,0.17524 -0.27475,0.17524 h -0.0422 c -0.15221,0 -0.27476,-0.0828 -0.27476,-0.17524 v -1.2934 c 0,-0.0924 0.12255,-0.12305 0.27476,-0.12305 z"
|
||||
id="rect1178-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sssssssss" />
|
||||
<rect
|
||||
ry="0.1740209"
|
||||
style="opacity:1;fill:#485e6b;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect1185-9"
|
||||
width="2.7999983"
|
||||
height="1.1999992"
|
||||
x="507.31076"
|
||||
y="350.39999" />
|
||||
<rect
|
||||
ry="0.15954697"
|
||||
style="opacity:1;fill:#a7b0b7;fill-opacity:1;stroke:#758087;stroke-width:0.19999988;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect1243-2"
|
||||
width="2.600208"
|
||||
height="1.2002088"
|
||||
x="507.41077"
|
||||
y="350.09979" />
|
||||
<path
|
||||
style="fill:#c02700;fill-rule:evenodd;stroke:none;stroke-width:0.09017574;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 508.31076,352.35879 0.8,-0.37143 v 0.22857 l -0.8,0.37143 z"
|
||||
id="path1189-2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#c02700;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.08433907;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 508.31076,351.8 0.8,0.6 v 0.2 l -0.8,-0.6 z"
|
||||
id="path1187-3"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#485e6b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.02434334px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 509.31076,351.4 c 0,0 0,-0.0542 0,-0.2 0.0754,0.11049 0.2,0.2 0.2,0.2 z"
|
||||
id="path1227-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="fill:url(#linearGradient1259-9);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.03526673px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 507.91077,351.6 0.2,-0.2 v 0.2 z"
|
||||
id="path1251-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.3 KiB |
BIN
icons/16x16/stock_folder-copy.png
Normal file
|
After Width: | Height: | Size: 505 B |
258
icons/16x16/stock_folder-copy.svg
Normal file
|
|
@ -0,0 +1,258 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 4.2333332 4.2333332"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="stock_folder-copy.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10005"
|
||||
id="linearGradient2224"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="572"
|
||||
y1="-6.8130836"
|
||||
x2="572"
|
||||
y2="2.1187184" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient10005">
|
||||
<stop
|
||||
style="stop-color:#e3d0b5;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop10007" />
|
||||
<stop
|
||||
id="stop10009"
|
||||
offset="0.92004764"
|
||||
style="stop-color:#e5d3ba;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#d3b58b;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop10011" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="linearGradient2226"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="568.01355"
|
||||
y1="2.2283287"
|
||||
x2="568.01355"
|
||||
y2="-4.9999499" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8316">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop8318" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8320" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="radialGradient2228"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.8345188,0,0,0.64220385,-1042.8817,-2.3256749)"
|
||||
cx="566.83136"
|
||||
cy="-6.5"
|
||||
fx="566.83136"
|
||||
fy="-6.5"
|
||||
r="7.0071211" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10005"
|
||||
id="linearGradient993"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="572"
|
||||
y1="-6.8130836"
|
||||
x2="572"
|
||||
y2="2.1187184" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="linearGradient995"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="568.01355"
|
||||
y1="2.2283287"
|
||||
x2="568.01355"
|
||||
y2="-4.9999499" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="radialGradient997"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.8345188,0,0,0.64220385,-1042.8817,-2.3256749)"
|
||||
cx="566.83136"
|
||||
cy="-6.5"
|
||||
fx="566.83136"
|
||||
fy="-6.5"
|
||||
r="7.0071211" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="22.4"
|
||||
inkscape:cx="3.4011673"
|
||||
inkscape:cy="12.098214"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1029"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid815" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-292.76667)">
|
||||
<g
|
||||
transform="translate(-0.52916674,-1.0583333)"
|
||||
id="g991">
|
||||
<g
|
||||
id="g989"
|
||||
transform="translate(-17.991664,3.4395833)">
|
||||
<g
|
||||
id="g979"
|
||||
style="display:inline;enable-background:new"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccc"
|
||||
id="path973"
|
||||
d="m 560.5,-8.3754874 v 6.8755001 h 11.00048 V -7.34375 c -6e-5,-0.62129 -0.50371,-1.12494 -1.125,-1.125 h -2.84387 c -0.3334,0 -0.20853,0.0527 -0.40625,-0.21875 l -0.96875,-0.3442374 c -0.2098,-0.29211 -0.54661,-0.46632 -0.90625,-0.46875 H 561.5 c -0.99615,0.0162 -1,1.125 -1,1.125 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c3b08d;fill-opacity:1;fill-rule:evenodd;stroke:#bca780;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccsssccccc"
|
||||
id="path975"
|
||||
d="m 561.5,1.272441e-5 h 8.99998 V -7.5 l -1.96873,-0.0312 c -0.0587,0 -0.0805,-10e-4 -0.15625,0 -0.0757,0.001 -0.29559,0.0325 -0.5625,-0.125 -0.26691,-0.15754 -0.34468,-0.32772 -0.375,-0.375 -0.0303,-0.0473 -0.0322,-0.0522 -0.0625,-0.0937 l -0.96875,-0.2808224 c -0.0355,-0.0494 -0.0954,-0.0933 -0.15625,-0.0937 l -4.75,-8.3e-4 z"
|
||||
style="display:inline;opacity:0.072;fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path977"
|
||||
d="m 561.49288,-8.4999874 h 4.0001"
|
||||
style="opacity:0.17300002;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g987"
|
||||
style="display:inline;enable-background:new"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)">
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient993);fill-opacity:1;fill-rule:nonzero;stroke:#beab8b;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new"
|
||||
d="m 566.92188,-8.5 c -0.34915,0 -0.55954,0.2095926 -0.73438,0.34375 l -1.45228,0.4743601 c -0.17551,0.057329 -0.24265,0.18168 -0.54772,0.18168 h -2.5625 c -0.65057,0 -1.12499,0.433425 -1.125,1.078125 l -10e-6,4.5220976 c 0,1.33755002 0.68182,2.40000001 1.5,2.40000001 h 7.99998 c 0.81819,0 1.5,-1.06244999 1.5,-2.40000001 L 571.49998,-7.5 c -0.0156,-0.96881 -1,-1 -1,-1 z"
|
||||
id="path981"
|
||||
sodipodi:nodetypes="ccscccccccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.32400004;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient995);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new"
|
||||
d="m 566.92188,-7.5 c 0.051,0 0.14153,-0.067801 -0.125,0.1367188 l 0.10351,-0.091797 -1.45312,1.4746093 c -0.12156,0.1234147 -0.34139,0.2961474 -0.58789,0.3828126 C 564.61287,-5.5109911 564.39477,-5.5 564.1875,-5.5 h -2.5625 c -0.20642,0 -0.125,-0.075997 -0.125,0.078125 v 3.4218877 c 0,0.4988574 0.14105,0.9688306 0.30273,1.24023441 0.16169,0.2714037 0.26177,0.2597656 0.19727,0.2597656 h 8.00038 c -0.0645,0 0.0356,0.011637 0.19727,-0.2597656 0.16168,-0.27140241 0.30273,-0.74137451 0.30273,-1.24023441 V -7.484375 c -0.002,-0.1460121 0.0557,0.019531 0.0332,0.00781 -0.0116,-0.00602 -0.0196,-0.007 -0.0332,-0.011719 -0.0128,-0.00447 -0.0312,-0.011719 -0.0312,-0.011719 z"
|
||||
id="path983"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccssssccccsccccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path985"
|
||||
d="m 570.49998,-7.5 h -3.5207 l -2.00555,1.0000126 H 561.5"
|
||||
style="opacity:0.67099998;fill:none;fill-rule:evenodd;stroke:url(#radialGradient997);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g919"
|
||||
transform="translate(0.52916659,0.26458334)">
|
||||
<g
|
||||
transform="translate(-17.991664,3.4395833)"
|
||||
id="g868">
|
||||
<g
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)"
|
||||
style="display:inline;enable-background:new"
|
||||
id="g8715">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c3b08d;fill-opacity:1;fill-rule:evenodd;stroke:#bca780;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 560.5,-8.3754874 v 6.8755001 h 11.00048 V -7.34375 c -6e-5,-0.62129 -0.50371,-1.12494 -1.125,-1.125 h -2.84387 c -0.3334,0 -0.20853,0.0527 -0.40625,-0.21875 l -0.96875,-0.3442374 c -0.2098,-0.29211 -0.54661,-0.46632 -0.90625,-0.46875 H 561.5 c -0.99615,0.0162 -1,1.125 -1,1.125 z"
|
||||
id="path11539"
|
||||
sodipodi:nodetypes="ccccccccccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="display:inline;opacity:0.072;fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
|
||||
d="m 561.5,1.272441e-5 h 8.99998 V -7.5 l -1.96873,-0.0312 c -0.0587,0 -0.0805,-10e-4 -0.15625,0 -0.0757,0.001 -0.29559,0.0325 -0.5625,-0.125 -0.26691,-0.15754 -0.34468,-0.32772 -0.375,-0.375 -0.0303,-0.0473 -0.0322,-0.0522 -0.0625,-0.0937 l -0.96875,-0.2808224 c -0.0355,-0.0494 -0.0954,-0.0933 -0.15625,-0.0937 l -4.75,-8.3e-4 z"
|
||||
id="path11541"
|
||||
sodipodi:nodetypes="ccccsssccccc" />
|
||||
<path
|
||||
style="opacity:0.17300002;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 561.49288,-8.4999874 h 4.0001"
|
||||
id="path8086"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)"
|
||||
style="display:inline;enable-background:new"
|
||||
id="g8720">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccscccccccccc"
|
||||
id="path11543"
|
||||
d="m 566.92188,-8.5 c -0.34915,0 -0.55954,0.2095926 -0.73438,0.34375 l -1.45228,0.4743601 c -0.17551,0.057329 -0.24265,0.18168 -0.54772,0.18168 h -2.5625 c -0.65057,0 -1.12499,0.433425 -1.125,1.078125 l -10e-6,4.5220976 c 0,1.33755002 0.68182,2.40000001 1.5,2.40000001 h 7.99998 c 0.81819,0 1.5,-1.06244999 1.5,-2.40000001 L 571.49998,-7.5 c -0.0156,-0.96881 -1,-1 -1,-1 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient2224);fill-opacity:1;fill-rule:nonzero;stroke:#beab8b;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccssssccccsccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path8314"
|
||||
d="m 566.92188,-7.5 c 0.051,0 0.14153,-0.067801 -0.125,0.1367188 l 0.10351,-0.091797 -1.45312,1.4746093 c -0.12156,0.1234147 -0.34139,0.2961474 -0.58789,0.3828126 C 564.61287,-5.5109911 564.39477,-5.5 564.1875,-5.5 h -2.5625 c -0.20642,0 -0.125,-0.075997 -0.125,0.078125 v 3.4218877 c 0,0.4988574 0.14105,0.9688306 0.30273,1.24023441 0.16169,0.2714037 0.26177,0.2597656 0.19727,0.2597656 h 8.00038 c -0.0645,0 0.0356,0.011637 0.19727,-0.2597656 0.16168,-0.27140241 0.30273,-0.74137451 0.30273,-1.24023441 V -7.484375 c -0.002,-0.1460121 0.0557,0.019531 0.0332,0.00781 -0.0116,-0.00602 -0.0196,-0.007 -0.0332,-0.011719 -0.0128,-0.00447 -0.0312,-0.011719 -0.0312,-0.011719 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.32400004;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2226);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" />
|
||||
<path
|
||||
style="opacity:0.67099998;fill:none;fill-rule:evenodd;stroke:url(#radialGradient2228);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 570.49998,-7.5 h -3.5207 l -2.00555,1.0000126 H 561.5"
|
||||
id="path11571"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
BIN
icons/16x16/stock_folder-move.png
Normal file
|
After Width: | Height: | Size: 589 B |
190
icons/16x16/stock_folder-move.svg
Normal file
|
|
@ -0,0 +1,190 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 4.2333332 4.2333332"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="stock_folder-move.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10005"
|
||||
id="linearGradient2224"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="572"
|
||||
y1="-6.8130836"
|
||||
x2="572"
|
||||
y2="2.1187184" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient10005">
|
||||
<stop
|
||||
style="stop-color:#e3d0b5;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop10007" />
|
||||
<stop
|
||||
id="stop10009"
|
||||
offset="0.92004764"
|
||||
style="stop-color:#e5d3ba;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#d3b58b;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop10011" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="linearGradient2226"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="568.01355"
|
||||
y1="2.2283287"
|
||||
x2="568.01355"
|
||||
y2="-4.9999499" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8316">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop8318" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8320" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="radialGradient2228"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.8345188,0,0,0.64220385,-1042.8817,-2.3256749)"
|
||||
cx="566.83136"
|
||||
cy="-6.5"
|
||||
fx="566.83136"
|
||||
fy="-6.5"
|
||||
r="7.0071211" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="22.4"
|
||||
inkscape:cx="3.4011673"
|
||||
inkscape:cy="8.5267857"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1029"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid815" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-292.76667)">
|
||||
<g
|
||||
id="g979"
|
||||
style="display:inline;fill:#bca780;stroke:#beab8b;stroke-width:1.00157475;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new;fill-opacity:0.15686275"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-148.16664,295.4125)">
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bca780;fill-opacity:0.15686275;fill-rule:evenodd;stroke:#beab8b;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.00314964, 1.00157480999999993;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m -10.5,0.5 c -0.99615,0.0162 -1,1.125 -1,1.125 V 3.578125 8.0996094 8.5 h 0.02539 c 0.120299,1.1424193 0.740289,2 1.474609,2 h 8 c 0.7343286,0 1.3543117,-0.8575807 1.47460938,-2 H -0.5 V 8.0996094 2.65625 2.5 c -0.0156,-0.96881 -1,-1 -1,-1 H -4.7402344 C -4.7691564,1.474271 -4.7872693,1.4329456 -4.875,1.3125 L -5.84375,0.96875 C -6.05355,0.67664 -6.39036,0.50243 -6.75,0.5 Z"
|
||||
transform="translate(571.99998,-9.9999875)"
|
||||
id="path973"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
id="g987"
|
||||
style="display:inline;fill:none;enable-background:new"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-151.34166,295.4125)" />
|
||||
<g
|
||||
id="g919"
|
||||
transform="translate(0.52916659,0.26458334)">
|
||||
<g
|
||||
transform="translate(-17.991664,3.4395833)"
|
||||
id="g868">
|
||||
<g
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)"
|
||||
style="display:inline;enable-background:new"
|
||||
id="g8715">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c3b08d;fill-opacity:1;fill-rule:evenodd;stroke:#bca780;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 560.5,-8.3754874 v 6.8755001 h 11.00048 V -7.34375 c -6e-5,-0.62129 -0.50371,-1.12494 -1.125,-1.125 h -2.84387 c -0.3334,0 -0.20853,0.0527 -0.40625,-0.21875 l -0.96875,-0.3442374 c -0.2098,-0.29211 -0.54661,-0.46632 -0.90625,-0.46875 H 561.5 c -0.99615,0.0162 -1,1.125 -1,1.125 z"
|
||||
id="path11539"
|
||||
sodipodi:nodetypes="ccccccccccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="display:inline;opacity:0.072;fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
|
||||
d="m 561.5,1.272441e-5 h 8.99998 V -7.5 l -1.96873,-0.0312 c -0.0587,0 -0.0805,-10e-4 -0.15625,0 -0.0757,0.001 -0.29559,0.0325 -0.5625,-0.125 -0.26691,-0.15754 -0.34468,-0.32772 -0.375,-0.375 -0.0303,-0.0473 -0.0322,-0.0522 -0.0625,-0.0937 l -0.96875,-0.2808224 c -0.0355,-0.0494 -0.0954,-0.0933 -0.15625,-0.0937 l -4.75,-8.3e-4 z"
|
||||
id="path11541"
|
||||
sodipodi:nodetypes="ccccsssccccc" />
|
||||
<path
|
||||
style="opacity:0.17300002;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 561.49288,-8.4999874 h 4.0001"
|
||||
id="path8086"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)"
|
||||
style="display:inline;enable-background:new"
|
||||
id="g8720">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccscccccccccc"
|
||||
id="path11543"
|
||||
d="m 566.92188,-8.5 c -0.34915,0 -0.55954,0.2095926 -0.73438,0.34375 l -1.45228,0.4743601 c -0.17551,0.057329 -0.24265,0.18168 -0.54772,0.18168 h -2.5625 c -0.65057,0 -1.12499,0.433425 -1.125,1.078125 l -10e-6,4.5220976 c 0,1.33755002 0.68182,2.40000001 1.5,2.40000001 h 7.99998 c 0.81819,0 1.5,-1.06244999 1.5,-2.40000001 L 571.49998,-7.5 c -0.0156,-0.96881 -1,-1 -1,-1 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient2224);fill-opacity:1;fill-rule:nonzero;stroke:#beab8b;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccssssccccsccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path8314"
|
||||
d="m 566.92188,-7.5 c 0.051,0 0.14153,-0.067801 -0.125,0.1367188 l 0.10351,-0.091797 -1.45312,1.4746093 c -0.12156,0.1234147 -0.34139,0.2961474 -0.58789,0.3828126 C 564.61287,-5.5109911 564.39477,-5.5 564.1875,-5.5 h -2.5625 c -0.20642,0 -0.125,-0.075997 -0.125,0.078125 v 3.4218877 c 0,0.4988574 0.14105,0.9688306 0.30273,1.24023441 0.16169,0.2714037 0.26177,0.2597656 0.19727,0.2597656 h 8.00038 c -0.0645,0 0.0356,0.011637 0.19727,-0.2597656 0.16168,-0.27140241 0.30273,-0.74137451 0.30273,-1.24023441 V -7.484375 c -0.002,-0.1460121 0.0557,0.019531 0.0332,0.00781 -0.0116,-0.00602 -0.0196,-0.007 -0.0332,-0.011719 -0.0128,-0.00447 -0.0312,-0.011719 -0.0312,-0.011719 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.32400004;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2226);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" />
|
||||
<path
|
||||
style="opacity:0.67099998;fill:none;fill-rule:evenodd;stroke:url(#radialGradient2228);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 570.49998,-7.5 h -3.5207 l -2.00555,1.0000126 H 561.5"
|
||||
id="path11571"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
9
icons/24x24/Makefile.am
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
stockdir = $(datadir)/icons/hicolor/24x24/stock/navigation
|
||||
stock_DATA = \
|
||||
stock_folder-copy.png \
|
||||
stock_folder-move.png
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(stock_DATA)
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
BIN
icons/24x24/stock_folder-copy.png
Normal file
|
After Width: | Height: | Size: 614 B |
250
icons/24x24/stock_folder-copy.svg
Normal file
|
|
@ -0,0 +1,250 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 6.3499998 6.3499998"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="stock_folder-copy.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10005"
|
||||
id="linearGradient2224"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="572"
|
||||
y1="-6.8130836"
|
||||
x2="572"
|
||||
y2="2.1187184" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient10005">
|
||||
<stop
|
||||
style="stop-color:#e3d0b5;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop10007" />
|
||||
<stop
|
||||
id="stop10009"
|
||||
offset="0.92004764"
|
||||
style="stop-color:#e5d3ba;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#d3b58b;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop10011" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="linearGradient2226"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="568.01355"
|
||||
y1="2.2283287"
|
||||
x2="568.01355"
|
||||
y2="-4.9999499" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8316">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop8318" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8320" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="radialGradient2228"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.8345188,0,0,0.64220385,-1042.8817,-2.3256749)"
|
||||
cx="566.83136"
|
||||
cy="-6.5"
|
||||
fx="566.83136"
|
||||
fy="-6.5"
|
||||
r="7.0071211" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10005"
|
||||
id="linearGradient888"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="572"
|
||||
y1="-6.8130836"
|
||||
x2="572"
|
||||
y2="2.1187184" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="linearGradient890"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="568.01355"
|
||||
y1="2.2283287"
|
||||
x2="568.01355"
|
||||
y2="-4.9999499" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="radialGradient892"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.8345188,0,0,0.64220385,-1042.8817,-2.3256749)"
|
||||
cx="566.83136"
|
||||
cy="-6.5"
|
||||
fx="566.83136"
|
||||
fy="-6.5"
|
||||
r="7.0071211" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="22.4"
|
||||
inkscape:cx="11.302953"
|
||||
inkscape:cy="14.082663"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1029"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid815" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-290.65)">
|
||||
<g
|
||||
transform="translate(-18.256247,0.79375001)"
|
||||
id="g886">
|
||||
<g
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)"
|
||||
style="display:inline;enable-background:new"
|
||||
id="g876">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c3b08d;fill-opacity:1;fill-rule:evenodd;stroke:#bca780;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="M 560.5,-9.375 V 0.5 h 15 v -7.84375 c -6e-5,-0.62129 -0.50371,-1.12494 -1.125,-1.125 h -5.84375 c -0.3334,0 -0.20853,0.0527 -0.40625,-0.21875 l -0.96875,-1.34375 c -0.2098,-0.29211 -0.54661,-0.46632 -0.90625,-0.46875 h -4.75 c -0.99615,0.0162 -1,1.125 -1,1.125 z"
|
||||
id="path870"
|
||||
sodipodi:nodetypes="ccccccccccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="display:inline;opacity:0.072;fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
|
||||
d="m 561.5,1 h 13 v -8.5 l -5.96875,-0.0312 c -0.0587,0 -0.0805,-10e-4 -0.15625,0 -0.0757,0.001 -0.29559,0.0325 -0.5625,-0.125 -0.26691,-0.15754 -0.34468,-0.32772 -0.375,-0.375 -0.0303,-0.0473 -0.0322,-0.0522 -0.0625,-0.0937 l -0.96875,-1.28057 c -0.0355,-0.0494 -0.0954,-0.0933 -0.15625,-0.0937 L 561.5,-9.5 Z"
|
||||
id="path872"
|
||||
sodipodi:nodetypes="ccccsssccccc" />
|
||||
<path
|
||||
style="opacity:0.17300002;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 561.49288,-9.49995 h 5"
|
||||
id="path874"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)"
|
||||
style="display:inline;enable-background:new"
|
||||
id="g884">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccscccccccccc"
|
||||
id="path878"
|
||||
d="m 566.92188,-8.5 c -0.34915,0 -0.55954,0.2095926 -0.73438,0.34375 l -1.45228,1.47457 C 564.60566,-6.5501267 564.49257,-6.5 564.1875,-6.5 h -2.5625 c -0.65057,0 -1.12499,0.433425 -1.125,1.078125 V 1 c 0,1.33755 0.68182,2.5 1.5,2.5 h 12 c 0.81819,0 1.5,-1.16245 1.5,-2.5 v -8.5 c -0.0156,-0.96881 -1,-1 -1,-1 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient888);fill-opacity:1;fill-rule:nonzero;stroke:#beab8b;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" />
|
||||
<path
|
||||
sodipodi:type="inkscape:offset"
|
||||
inkscape:radius="-1"
|
||||
inkscape:original="M 566.92188 -8.5 C 566.57272 -8.5 566.36234 -8.29041 566.1875 -8.15625 L 564.73438 -6.6816406 C 564.60481 -6.5500906 564.49257 -6.5 564.1875 -6.5 L 561.625 -6.5 C 560.97443 -6.5 560.50001 -6.066575 560.5 -5.421875 L 560.5 1 C 560.5 2.33755 561.18182 3.5 562 3.5 L 574 3.5 C 574.81819 3.5 575.5 2.33755 575.5 1 L 575.5 -7.5 C 575.4844 -8.46881 574.5 -8.5 574.5 -8.5 L 566.92188 -8.5 z "
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.32400004;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient890);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new"
|
||||
id="path880"
|
||||
d="m 566.92188,-7.5 c 0.051,0 0.14153,-0.067801 -0.125,0.1367188 l 0.10351,-0.091797 -1.45312,1.4746093 c -0.12156,0.1234147 -0.34139,0.2961474 -0.58789,0.3828126 C 564.61287,-5.5109911 564.39477,-5.5 564.1875,-5.5 h -2.5625 c -0.20642,0 -0.125,-0.075997 -0.125,0.078125 V 1 c 0,0.4988574 0.14105,0.9688306 0.30273,1.2402344 C 561.96442,2.5116381 562.0645,2.5 562,2.5 h 12 c -0.0645,0 0.0356,0.011637 0.19727,-0.2597656 C 574.35895,1.968832 574.5,1.4988599 574.5,1 v -8.484375 c -0.002,-0.1460121 0.0557,0.019531 0.0332,0.00781 -0.0116,-0.00602 -0.0196,-0.007 -0.0332,-0.011719 -0.0128,-0.00447 -0.0312,-0.011719 -0.0312,-0.011719 z" />
|
||||
<path
|
||||
style="opacity:0.67099998;fill:none;fill-rule:evenodd;stroke:url(#radialGradient892);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 574.5,-7.5 h -7.52072 l -2.00555,2 H 561.5"
|
||||
id="path882"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g868"
|
||||
transform="translate(-16.668747,2.6458333)">
|
||||
<g
|
||||
id="g8715"
|
||||
style="display:inline;enable-background:new"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccc"
|
||||
id="path11539"
|
||||
d="M 560.5,-9.375 V 0.5 h 15 v -7.84375 c -6e-5,-0.62129 -0.50371,-1.12494 -1.125,-1.125 h -5.84375 c -0.3334,0 -0.20853,0.0527 -0.40625,-0.21875 l -0.96875,-1.34375 c -0.2098,-0.29211 -0.54661,-0.46632 -0.90625,-0.46875 h -4.75 c -0.99615,0.0162 -1,1.125 -1,1.125 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c3b08d;fill-opacity:1;fill-rule:evenodd;stroke:#bca780;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccsssccccc"
|
||||
id="path11541"
|
||||
d="m 561.5,1 h 13 v -8.5 l -5.96875,-0.0312 c -0.0587,0 -0.0805,-10e-4 -0.15625,0 -0.0757,0.001 -0.29559,0.0325 -0.5625,-0.125 -0.26691,-0.15754 -0.34468,-0.32772 -0.375,-0.375 -0.0303,-0.0473 -0.0322,-0.0522 -0.0625,-0.0937 l -0.96875,-1.28057 c -0.0355,-0.0494 -0.0954,-0.0933 -0.15625,-0.0937 L 561.5,-9.5 Z"
|
||||
style="display:inline;opacity:0.072;fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path8086"
|
||||
d="m 561.49288,-9.49995 h 5"
|
||||
style="opacity:0.17300002;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g8720"
|
||||
style="display:inline;enable-background:new"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)">
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient2224);fill-opacity:1;fill-rule:nonzero;stroke:#beab8b;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new"
|
||||
d="m 566.92188,-8.5 c -0.34915,0 -0.55954,0.2095926 -0.73438,0.34375 l -1.45228,1.47457 C 564.60566,-6.5501267 564.49257,-6.5 564.1875,-6.5 h -2.5625 c -0.65057,0 -1.12499,0.433425 -1.125,1.078125 V 1 c 0,1.33755 0.68182,2.5 1.5,2.5 h 12 c 0.81819,0 1.5,-1.16245 1.5,-2.5 v -8.5 c -0.0156,-0.96881 -1,-1 -1,-1 z"
|
||||
id="path11543"
|
||||
sodipodi:nodetypes="ccscccccccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 566.92188,-7.5 c 0.051,0 0.14153,-0.067801 -0.125,0.1367188 l 0.10351,-0.091797 -1.45312,1.4746093 c -0.12156,0.1234147 -0.34139,0.2961474 -0.58789,0.3828126 C 564.61287,-5.5109911 564.39477,-5.5 564.1875,-5.5 h -2.5625 c -0.20642,0 -0.125,-0.075997 -0.125,0.078125 V 1 c 0,0.4988574 0.14105,0.9688306 0.30273,1.2402344 C 561.96442,2.5116381 562.0645,2.5 562,2.5 h 12 c -0.0645,0 0.0356,0.011637 0.19727,-0.2597656 C 574.35895,1.968832 574.5,1.4988599 574.5,1 v -8.484375 c -0.002,-0.1460121 0.0557,0.019531 0.0332,0.00781 -0.0116,-0.00602 -0.0196,-0.007 -0.0332,-0.011719 -0.0128,-0.00447 -0.0312,-0.011719 -0.0312,-0.011719 z"
|
||||
id="path8314"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.32400004;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2226);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new"
|
||||
inkscape:original="M 566.92188 -8.5 C 566.57272 -8.5 566.36234 -8.29041 566.1875 -8.15625 L 564.73438 -6.6816406 C 564.60481 -6.5500906 564.49257 -6.5 564.1875 -6.5 L 561.625 -6.5 C 560.97443 -6.5 560.50001 -6.066575 560.5 -5.421875 L 560.5 1 C 560.5 2.33755 561.18182 3.5 562 3.5 L 574 3.5 C 574.81819 3.5 575.5 2.33755 575.5 1 L 575.5 -7.5 C 575.4844 -8.46881 574.5 -8.5 574.5 -8.5 L 566.92188 -8.5 z "
|
||||
inkscape:radius="-1"
|
||||
sodipodi:type="inkscape:offset" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path11571"
|
||||
d="m 574.5,-7.5 h -7.52072 l -2.00555,2 H 561.5"
|
||||
style="opacity:0.67099998;fill:none;fill-rule:evenodd;stroke:url(#radialGradient2228);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
BIN
icons/24x24/stock_folder-move.png
Normal file
|
After Width: | Height: | Size: 731 B |
176
icons/24x24/stock_folder-move.svg
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 6.3499998 6.3499998"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="stock_folder-move.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10005"
|
||||
id="linearGradient2224"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="572"
|
||||
y1="-6.8130836"
|
||||
x2="572"
|
||||
y2="2.1187184" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient10005">
|
||||
<stop
|
||||
style="stop-color:#e3d0b5;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop10007" />
|
||||
<stop
|
||||
id="stop10009"
|
||||
offset="0.92004764"
|
||||
style="stop-color:#e5d3ba;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#d3b58b;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop10011" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="linearGradient2226"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="568.01355"
|
||||
y1="2.2283287"
|
||||
x2="568.01355"
|
||||
y2="-4.9999499" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8316">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop8318" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8320" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8316"
|
||||
id="radialGradient2228"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.8345188,0,0,0.64220385,-1042.8817,-2.3256749)"
|
||||
cx="566.83136"
|
||||
cy="-6.5"
|
||||
fx="566.83136"
|
||||
fy="-6.5"
|
||||
r="7.0071211" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="22.4"
|
||||
inkscape:cx="11.302953"
|
||||
inkscape:cy="14.082663"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1029"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid815" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-290.65)">
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#bca780;fill-opacity:0.1563981;fill-rule:evenodd;stroke:#bca780;stroke-width:1.00157476;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.00314954, 1.00157476000000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="M 2.5 1.5 C 1.50385 1.5151181 1.5 2.625 1.5 2.625 L 1.5 6.578125 L 1.5 12.5 L 1.5 13 C 1.5 14.337575 2.18182 15.5 3 15.5 L 15 15.5 C 15.81819 15.5 16.5 14.337575 16.5 13 L 16.5 12.5 L 16.5 4.65625 L 16.5 4.5 C 16.484391 3.5311559 15.5 3.5 15.5 3.5 L 9.2597656 3.5 C 9.2308438 3.4742459 9.2127315 3.4329102 9.125 3.3125 L 8.15625 1.96875 C 7.9464484 1.6765925 7.6096402 1.5024189 7.25 1.5 L 2.5 1.5 z "
|
||||
transform="matrix(0.26458333,0,0,0.26458333,0,290.65)"
|
||||
id="path870" />
|
||||
<g
|
||||
id="g868"
|
||||
transform="translate(-16.668747,2.6458333)">
|
||||
<g
|
||||
id="g8715"
|
||||
style="display:inline;enable-background:new"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccc"
|
||||
id="path11539"
|
||||
d="M 560.5,-9.375 V 0.5 h 15 v -7.84375 c -6e-5,-0.62129 -0.50371,-1.12494 -1.125,-1.125 h -5.84375 c -0.3334,0 -0.20853,0.0527 -0.40625,-0.21875 l -0.96875,-1.34375 c -0.2098,-0.29211 -0.54661,-0.46632 -0.90625,-0.46875 h -4.75 c -0.99615,0.0162 -1,1.125 -1,1.125 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c3b08d;fill-opacity:1;fill-rule:evenodd;stroke:#bca780;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccsssccccc"
|
||||
id="path11541"
|
||||
d="m 561.5,1 h 13 v -8.5 l -5.96875,-0.0312 c -0.0587,0 -0.0805,-10e-4 -0.15625,0 -0.0757,0.001 -0.29559,0.0325 -0.5625,-0.125 -0.26691,-0.15754 -0.34468,-0.32772 -0.375,-0.375 -0.0303,-0.0473 -0.0322,-0.0522 -0.0625,-0.0937 l -0.96875,-1.28057 c -0.0355,-0.0494 -0.0954,-0.0933 -0.15625,-0.0937 L 561.5,-9.5 Z"
|
||||
style="display:inline;opacity:0.072;fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path8086"
|
||||
d="m 561.49288,-9.49995 h 5"
|
||||
style="opacity:0.17300002;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g8720"
|
||||
style="display:inline;enable-background:new"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-129.64583,293.03125)">
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient2224);fill-opacity:1;fill-rule:nonzero;stroke:#beab8b;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new"
|
||||
d="m 566.92188,-8.5 c -0.34915,0 -0.55954,0.2095926 -0.73438,0.34375 l -1.45228,1.47457 C 564.60566,-6.5501267 564.49257,-6.5 564.1875,-6.5 h -2.5625 c -0.65057,0 -1.12499,0.433425 -1.125,1.078125 V 1 c 0,1.33755 0.68182,2.5 1.5,2.5 h 12 c 0.81819,0 1.5,-1.16245 1.5,-2.5 v -8.5 c -0.0156,-0.96881 -1,-1 -1,-1 z"
|
||||
id="path11543"
|
||||
sodipodi:nodetypes="ccscccccccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 566.92188,-7.5 c 0.051,0 0.14153,-0.067801 -0.125,0.1367188 l 0.10351,-0.091797 -1.45312,1.4746093 c -0.12156,0.1234147 -0.34139,0.2961474 -0.58789,0.3828126 C 564.61287,-5.5109911 564.39477,-5.5 564.1875,-5.5 h -2.5625 c -0.20642,0 -0.125,-0.075997 -0.125,0.078125 V 1 c 0,0.4988574 0.14105,0.9688306 0.30273,1.2402344 C 561.96442,2.5116381 562.0645,2.5 562,2.5 h 12 c -0.0645,0 0.0356,0.011637 0.19727,-0.2597656 C 574.35895,1.968832 574.5,1.4988599 574.5,1 v -8.484375 c -0.002,-0.1460121 0.0557,0.019531 0.0332,0.00781 -0.0116,-0.00602 -0.0196,-0.007 -0.0332,-0.011719 -0.0128,-0.00447 -0.0312,-0.011719 -0.0312,-0.011719 z"
|
||||
id="path8314"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.32400004;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2226);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new"
|
||||
inkscape:original="M 566.92188 -8.5 C 566.57272 -8.5 566.36234 -8.29041 566.1875 -8.15625 L 564.73438 -6.6816406 C 564.60481 -6.5500906 564.49257 -6.5 564.1875 -6.5 L 561.625 -6.5 C 560.97443 -6.5 560.50001 -6.066575 560.5 -5.421875 L 560.5 1 C 560.5 2.33755 561.18182 3.5 562 3.5 L 574 3.5 C 574.81819 3.5 575.5 2.33755 575.5 1 L 575.5 -7.5 C 575.4844 -8.46881 574.5 -8.5 574.5 -8.5 L 566.92188 -8.5 z "
|
||||
inkscape:radius="-1"
|
||||
sodipodi:type="inkscape:offset" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path11571"
|
||||
d="m 574.5,-7.5 h -7.52072 l -2.00555,2 H 561.5"
|
||||
style="opacity:0.67099998;fill:none;fill-rule:evenodd;stroke:url(#radialGradient2228);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.8 KiB |
8
icons/48x48/Makefile.am
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
iconsdir = $(datadir)/icons/hicolor/48x48/apps
|
||||
icons_DATA = \
|
||||
org.xfce.thunar.png
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(icons_DATA)
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
BIN
icons/48x48/org.xfce.thunar.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
450
icons/48x48/org.xfce.thunar.svg
Normal file
|
|
@ -0,0 +1,450 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48"
|
||||
height="48"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="org.xfce.thunar.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
inkscape:export-filename="/home/ochosi/Nerdstuff/xfce/thunar/icons/48x48/org.xfce.thunar.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<metadata
|
||||
id="metadata14">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs12">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2415">
|
||||
<stop
|
||||
style="stop-color:#eeeeec;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2417" />
|
||||
<stop
|
||||
style="stop-color:#eeeeec;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2419" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2970">
|
||||
<stop
|
||||
style="stop-color:#fcaf3e;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2972" />
|
||||
<stop
|
||||
style="stop-color:#fcaf3e;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2974" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2396">
|
||||
<stop
|
||||
style="stop-color:#e1e2df;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2398" />
|
||||
<stop
|
||||
style="stop-color:#888a85;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop2400" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4114"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4116"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4118"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2415"
|
||||
id="linearGradient1275"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.79356749,0.04132263,-0.04278223,0.76649288,5.6966536,5.512212)"
|
||||
x1="23.906006"
|
||||
y1="6.0466475"
|
||||
x2="24.746471"
|
||||
y2="21.63644" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2415"
|
||||
id="linearGradient1277"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.79089169,-0.01015506,-0.04647258,0.70928756,44.13532,6.4752965)"
|
||||
x1="12.254768"
|
||||
y1="14.820889"
|
||||
x2="20.264099"
|
||||
y2="8.1485271" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2415"
|
||||
id="linearGradient1279"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.79089169,-0.01015506,0.04647258,0.70928756,4.7575526,6.5048715)"
|
||||
x1="12.900058"
|
||||
y1="12.908146"
|
||||
x2="18.573477"
|
||||
y2="9.7130737" />
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient1220"
|
||||
id="linearGradient1222"
|
||||
x1="51.999992"
|
||||
y1="89.643501"
|
||||
x2="76.094429"
|
||||
y2="89.643501"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-6.2595495,-53.250217)" />
|
||||
<linearGradient
|
||||
id="linearGradient1220">
|
||||
<stop
|
||||
style="stop-color:#79503c;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1215" />
|
||||
<stop
|
||||
id="stop1224"
|
||||
offset="0.51465631"
|
||||
style="stop-color:#ad7702;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#79503c;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop1218" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="89.643501"
|
||||
x2="76.094429"
|
||||
y1="89.643501"
|
||||
x1="51.999992"
|
||||
id="linearGradient1222-1"
|
||||
xlink:href="#linearGradient1220"
|
||||
gradientTransform="matrix(0.38970414,0,0,0.3725597,-0.95946209,0.73553403)" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="81.370674"
|
||||
x2="76.077408"
|
||||
y1="81.370674"
|
||||
x1="52"
|
||||
id="linearGradient1071"
|
||||
xlink:href="#linearGradient1089"
|
||||
gradientTransform="matrix(0.3899918,0,0,0.36397441,-0.97456973,3.7858815)" />
|
||||
<linearGradient
|
||||
id="linearGradient1089">
|
||||
<stop
|
||||
style="stop-color:#c02700;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1083" />
|
||||
<stop
|
||||
id="stop1085"
|
||||
offset="0.50248575"
|
||||
style="stop-color:#e6461d;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#c02700;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop1087" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="81.370674"
|
||||
x2="76.077408"
|
||||
y1="81.370674"
|
||||
x1="52"
|
||||
id="linearGradient1097"
|
||||
xlink:href="#linearGradient1095"
|
||||
gradientTransform="matrix(0.3899918,0,0,0.36397441,-0.97456973,3.7858815)" />
|
||||
<linearGradient
|
||||
id="linearGradient1095">
|
||||
<stop
|
||||
id="stop1091"
|
||||
offset="0"
|
||||
style="stop-color:#c02700;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop1093"
|
||||
offset="1"
|
||||
style="stop-color:#c02700;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="86.870674"
|
||||
x2="76.077408"
|
||||
y1="86.870674"
|
||||
x1="52"
|
||||
id="linearGradient1081"
|
||||
xlink:href="#linearGradient1089"
|
||||
gradientTransform="matrix(0.3899918,0,0,0.36769224,-0.974569,3.3640087)" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="83.241028"
|
||||
x2="85.771179"
|
||||
y1="96.206978"
|
||||
x1="41.101963"
|
||||
id="linearGradient1177"
|
||||
xlink:href="#linearGradient1185"
|
||||
gradientTransform="translate(-24.907937,-57.871601)" />
|
||||
<linearGradient
|
||||
id="linearGradient1185">
|
||||
<stop
|
||||
id="stop1179"
|
||||
offset="0"
|
||||
style="stop-color:#e6461d;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#c02700;stop-opacity:1;"
|
||||
offset="0.26479611"
|
||||
id="stop1189" />
|
||||
<stop
|
||||
style="stop-color:#c02700;stop-opacity:1"
|
||||
offset="0.80811173"
|
||||
id="stop1187" />
|
||||
<stop
|
||||
style="stop-color:#e6461d;stop-opacity:1"
|
||||
offset="0.87515253"
|
||||
id="stop1181" />
|
||||
<stop
|
||||
id="stop1183"
|
||||
offset="1"
|
||||
style="stop-color:#c02700;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient4114"
|
||||
id="linearGradient1221"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="67.620171"
|
||||
y1="86.940636"
|
||||
x2="67.185326"
|
||||
y2="88.324181"
|
||||
gradientTransform="matrix(0.41649112,0,0,0.41649112,-2.6552142,-0.484625)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1046-5"
|
||||
id="linearGradient1050"
|
||||
x1="65.96611"
|
||||
y1="60.927975"
|
||||
x2="66.508476"
|
||||
y2="70.690681"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.41666681,0,0,0.41666681,-2.666675,-2.416677)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1046-5">
|
||||
<stop
|
||||
style="stop-color:#2e1e17;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop1042" />
|
||||
<stop
|
||||
id="stop1057"
|
||||
offset="0.52789009"
|
||||
style="stop-color:#2e1e17;stop-opacity:0.51372549;" />
|
||||
<stop
|
||||
style="stop-color:#2e1e17;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop1044" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
gradientTransform="matrix(-1,0,0,1,132.94163,-84.738896)"
|
||||
xlink:href="#linearGradient4114"
|
||||
id="linearGradient1063-3"
|
||||
x1="58.330563"
|
||||
y1="98.761681"
|
||||
x2="53.73632"
|
||||
y2="98.438408"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="96.45739"
|
||||
x2="49.692238"
|
||||
y1="96.319893"
|
||||
x1="53.703209"
|
||||
id="linearGradient1063"
|
||||
xlink:href="#linearGradient4114"
|
||||
gradientTransform="translate(0.98154217,-68.738789)" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="83.241028"
|
||||
x2="85.771179"
|
||||
y1="96.206978"
|
||||
x1="41.101963"
|
||||
id="linearGradient1177-9"
|
||||
xlink:href="#linearGradient1185"
|
||||
gradientTransform="translate(0.98154217,-68.738789)" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="85.574959"
|
||||
x2="81.084084"
|
||||
y1="84.150307"
|
||||
x1="80.177971"
|
||||
id="linearGradient1169"
|
||||
xlink:href="#linearGradient1167"
|
||||
gradientTransform="translate(0.98154217,-68.738789)" />
|
||||
<linearGradient
|
||||
id="linearGradient1167">
|
||||
<stop
|
||||
id="stop1161"
|
||||
offset="0"
|
||||
style="stop-color:#c02700;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#e6461d;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop1163" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1387"
|
||||
id="namedview10"
|
||||
showgrid="true"
|
||||
inkscape:zoom="9.386052"
|
||||
inkscape:cx="3.9378253"
|
||||
inkscape:cy="18.267574"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="29"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg8"
|
||||
inkscape:lockguides="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:pagecheckerboard="false"
|
||||
inkscape:snap-global="false"
|
||||
inkscape:document-rotation="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid821"
|
||||
empspacing="4" />
|
||||
</sodipodi:namedview>
|
||||
<g
|
||||
id="g1105"
|
||||
transform="matrix(0.41911618,0,0,0.40591193,-3.3448011,27.509891)"
|
||||
style="stroke-width:2.42447042">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 77.021244,15.95863 c -2.039702,4.870276 10.082883,1.008375 8.590524,-1.162793 -2.027019,-0.429446 -5.879029,0.06472 -8.590524,1.162793 z"
|
||||
style="fill:url(#linearGradient1169);fill-opacity:1;stroke:none;stroke-width:2.42447042px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path1071" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1229-4"
|
||||
d="m 76.532895,17.047114 c 5.879888,-3.862121 10.469038,-1.5 10.469038,-1.5 0,0 -26.398548,17.754581 -49.379518,17.224251 l 3.889087,-7.95496 C 66.260239,25.169958 76.252565,10.327759 76.252565,10.327759 81.217386,8.5005557 86.971573,7.3332187 88.230487,15.25606 l -3.98461,2.005151 1.07913,-1.350355 c -1.798672,0.56937 -7.482406,3.598008 -8.792112,1.136258 z"
|
||||
style="fill:url(#linearGradient1177-9);fill-opacity:1;fill-rule:evenodd;stroke:#c02700;stroke-width:2.42447042px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect1053"
|
||||
style="opacity:0.5;fill:url(#linearGradient1063);fill-opacity:1;stroke:none;stroke-width:9.6978817"
|
||||
d="m 49.890903,23.863142 0.699969,8.026203 5.730885,-1.43228 -0.314626,-7.674392 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 79.418243,8.7796687 79.608258,20.481054 74.99482,23.321729 75.798271,9.8929497 Z"
|
||||
style="opacity:0.5;fill:url(#linearGradient1063-3);fill-opacity:1;stroke:none;stroke-width:9.6978817"
|
||||
id="rect1053-5" />
|
||||
</g>
|
||||
<rect
|
||||
ry="3.0667698"
|
||||
rx="3.5976148"
|
||||
y="23.17469"
|
||||
x="20.174688"
|
||||
height="21.650623"
|
||||
width="7.6506238"
|
||||
id="rect1245"
|
||||
style="opacity:1;fill:#603f2f;fill-opacity:1;fill-rule:nonzero;stroke:#603f2f;stroke-width:0.3493765;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<rect
|
||||
ry="2.6103148"
|
||||
style="opacity:1;fill:#485e6b;fill-opacity:1;stroke:#263742;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect1185"
|
||||
width="35"
|
||||
height="18"
|
||||
x="6.5"
|
||||
y="8.5" />
|
||||
<path
|
||||
style="opacity:1;fill:url(#linearGradient1222-1);fill-opacity:1;fill-rule:nonzero;stroke:#603f2f;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 23.698288,24.5 h 0.640229 C 26.643978,24.5 28.5,24.890409 28.5,26.069593 l -0.0368,16.19505 C 28.460409,43.443824 26.607176,44.5 24.301715,44.5 h -0.640229 c -2.305462,0 -4.164163,-1.056176 -4.161483,-2.235357 l 0.0368,-16.19505 C 19.536804,24.890409 21.392825,24.5 23.698288,24.5 Z"
|
||||
id="rect1178-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="csccssscsc" />
|
||||
<path
|
||||
style="fill:url(#linearGradient1081);fill-opacity:1;fill-rule:evenodd;stroke:#c02700;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 19.5,36.226502 9,-4.78318 v 2.941538 l -9,4.78318 z"
|
||||
id="path1189-2"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
ry="2.3927879"
|
||||
style="opacity:1;fill:#a7b0b7;fill-opacity:1;stroke:#758087;stroke-width:0.99999994;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect1243"
|
||||
width="35"
|
||||
height="18"
|
||||
x="6.5"
|
||||
y="4.5" />
|
||||
<path
|
||||
style="fill:#485e6b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.36607143px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 30.944196,23 c 0,0 0,-0.793046 0,-2.928572 C 32.109029,21.68925 34.032924,23 34.032924,23 Z"
|
||||
id="path1227"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="fill:#263742;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52901px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 13,26 3,-3 v 3 z"
|
||||
id="path1251"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="fill:url(#linearGradient1277);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.14642857;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 26.597826,9.4889689 c 1.013759,1.3293821 3.540616,2.7353721 4.793543,3.1007401 0.02171,0.0064 0.05323,-0.0047 0.07415,9.88e-4 0.0053,-2.66e-4 0.01937,6.23e-4 0.02471,3.18e-4 0.316095,-0.01851 0.643875,-0.130867 1.038017,-0.363798 1.154505,-0.6823 0.685304,-0.500628 1.945168,-0.995483 0.01314,-0.0051 0.03723,-0.01684 0.05089,-0.02153 0.790908,-0.254415 2.373549,0.234955 2.650379,0.32242 -0.268206,0.03406 -1.40004,0.221704 -2.187969,0.925814 -0.005,0.0045 -0.02105,0.01744 -0.02617,0.02185 -0.0052,0.0043 -0.02079,0.01756 -0.02617,0.02185 -0.230522,0.177453 -0.584349,0.306268 -0.99004,0.386599 0.611072,0.04596 1.248161,0.114978 1.914729,0.224239 1.24431,0.203961 2.014145,0.646715 2.368396,1.228339 0.354251,0.581624 0.237475,1.293784 -0.239758,1.771632 -1.384967,1.386752 -5.089112,0.675361 -5.073961,-0.708481 7.33e-4,-0.02355 0.0029,-0.06473 0.0058,-0.08866 0.0044,-0.03003 0.02405,-0.07991 0.03199,-0.110508 0.0087,-0.03071 0.01966,-0.07927 0.03199,-0.110509 0.0052,-0.01254 0.02178,-0.03139 0.0276,-0.04401 0.735167,-1.590009 2.516456,-0.631542 3.11123,0.08431 -0.639333,-0.383747 -1.529981,-0.457502 -1.842035,-0.201121 -0.0059,0.0051 -0.02072,0.01643 -0.02617,0.02185 -0.0079,0.0083 -0.02083,0.03511 -0.0276,0.04401 -0.0018,0.0031 -0.02427,0.01868 -0.02617,0.02185 -0.0018,0.0033 1.91e-4,0.01887 -0.0015,0.02217 -0.0015,0.0033 -7e-5,0.01874 -0.0015,0.02217 -0.0037,0.01046 -0.02508,0.03295 -0.0276,0.04401 -7.32e-4,0.0037 -7.32e-4,0.01835 -0.0015,0.02217 -3.66e-4,0.0039 -0.0011,0.01822 -0.0015,0.02217 -1.46e-4,0.004 -0.0015,0.01808 -0.0015,0.02217 -0.0011,1.143187 2.974938,1.157902 3.230452,0.152398 0.06208,-0.244292 0.05769,-0.454194 0.01596,-0.620944 -0.0048,-0.01761 -0.0145,-0.04998 -0.02035,-0.06681 -0.0062,-0.01659 -0.0131,-0.05096 -0.02035,-0.06681 -0.0051,-0.01041 -0.01633,-0.03456 -0.02182,-0.04465 -0.250807,-0.437301 -0.925198,-0.584818 -1.684972,-0.709356 -1.556616,-0.255149 -3.220147,-0.0059 -4.589814,-0.169851 -2.072148,-0.248021 -2.988263,-0.540848 -4.12179,-2.027288 z"
|
||||
id="path1271"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path1273"
|
||||
d="m 22.295042,9.5185439 c -1.013759,1.3293811 -3.540615,2.7353711 -4.793542,3.1007391 -0.0217,0.0064 -0.05323,-0.0047 -0.07415,9.88e-4 -0.0053,-2.66e-4 -0.01936,6.23e-4 -0.02472,3.18e-4 -0.316094,-0.01851 -0.643877,-0.130867 -1.038017,-0.363799 -1.154506,-0.6823 -0.685303,-0.500627 -1.94517,-0.995483 -0.01315,-0.0051 -0.03723,-0.01684 -0.05089,-0.02153 -0.790908,-0.254413 -2.37355,0.234956 -2.650377,0.322421 0.268203,0.03406 1.400039,0.221704 2.187966,0.925814 0.005,0.0045 0.02104,0.01744 0.02617,0.02185 0.0052,0.0043 0.0208,0.01756 0.02617,0.02185 0.230524,0.177453 0.584349,0.306268 0.99004,0.386599 -0.611071,0.04596 -1.248158,0.114978 -1.914726,0.224239 -1.244312,0.203962 -2.014147,0.646715 -2.368398,1.228339 -0.354251,0.581625 -0.237476,1.293785 0.239758,1.771633 1.384969,1.386753 5.089112,0.675362 5.073961,-0.708481 -8.05e-4,-0.02355 -0.0029,-0.06473 -0.0058,-0.08866 -0.0044,-0.03003 -0.02404,-0.07991 -0.03198,-0.110508 -0.0087,-0.03071 -0.01965,-0.07927 -0.03198,-0.110509 -0.0052,-0.01254 -0.02178,-0.03139 -0.02762,-0.04401 -0.735167,-1.59001 -2.516455,-0.631544 -3.111229,0.08432 0.639331,-0.383748 1.529979,-0.457503 1.842033,-0.201123 0.0059,0.0051 0.02072,0.01644 0.02617,0.02185 0.0079,0.0083 0.02084,0.03511 0.02762,0.04401 0.002,0.0031 0.02428,0.01868 0.02617,0.02185 0.0018,0.0033 -1.89e-4,0.01887 0.0014,0.02217 0.0015,0.0033 6.9e-5,0.01874 0.0014,0.02217 0.0037,0.01046 0.02507,0.03295 0.02762,0.04401 7.32e-4,0.0037 8.79e-4,0.01835 0.0014,0.02217 4.39e-4,0.0039 0.0012,0.01822 0.0014,0.02216 1.48e-4,0.004 0.0014,0.01808 0.0014,0.02217 10e-4,1.143188 -2.974936,1.157902 -3.230449,0.152398 -0.06208,-0.244292 -0.05769,-0.454195 -0.01595,-0.620945 0.0048,-0.01761 0.01448,-0.04997 0.02036,-0.06681 0.0062,-0.01659 0.01312,-0.05096 0.02036,-0.06681 0.005,-0.01041 0.01632,-0.03456 0.02181,-0.04465 0.250891,-0.437282 0.92528,-0.584799 1.685054,-0.709337 1.556594,-0.25515 3.220126,-0.0059 4.589794,-0.169851 2.072146,-0.248021 2.988261,-0.540848 4.121789,-2.027288 z"
|
||||
style="fill:url(#linearGradient1279);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.14642857;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#e1e3e2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13673;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 24.297229,8 -0.349305,0.3784743 c -0.308139,0.3338722 -1.057836,0.9167631 -1.558979,1.8795057 -0.315939,0.606948 -0.421299,1.434747 -0.375386,2.357727 -0.848009,0.306827 -1.535975,0.762627 -1.97389,1.40115 -0.733435,1.069422 -1.062166,2.321776 -1.594103,3.130985 L 18,17.820957 l 0.707655,-0.02916 c 1.204243,-0.0505 2.505084,-0.0075 3.715164,-0.385135 0.314258,-0.09804 0.60312,-0.255726 0.89236,-0.44344 -0.344192,-0.282179 -0.558465,-0.570106 -0.691518,-0.797256 -0.0027,-0.0046 -0.370149,0.225095 -0.573819,0.28864 -0.886704,0.276654 -1.309848,0.01606 -2.308282,0.0504 0.403544,-0.81641 0.336337,-1.279401 0.815477,-1.978035 0.363779,-0.530427 1.240578,-0.859441 2.0271,-1.197087 0.78652,-0.337644 1.955922,-0.15556 2.103369,-0.113885 l -0.02528,-0.829131 c -0.194911,-0.05645 -0.415232,-0.102245 -0.659525,-0.118141 -0.732881,-0.04769 -1.144984,0.17102 -1.193031,0.198197 -0.02802,-0.71446 0.102132,-1.329926 0.350816,-1.807669 0.310749,-0.596976 1.038767,-1.0067438 1.127427,-1.0550258 0.349987,0.6689328 0.671015,0.8344158 0.90771,1.5385078 0.143494,0.426856 0.410243,1.06743 0.02997,2.584704 -0.236843,0.945022 -0.541674,1.174387 -0.853055,1.423934 l 0.577278,0.564145 c 0.18615,-0.159752 0.398368,-0.385957 0.569858,-0.665026 0.430444,-0.700472 0.400448,-1.328731 0.395091,-1.403583 0,0 0.811359,0.791112 1.144507,1.353313 0.432055,0.729102 0.590177,1.204015 0.991181,1.995293 -0.889849,-0.06971 -1.469256,0.19152 -2.422522,-0.18271 -0.257784,-0.1012 -0.79499,-0.516666 -1.433449,-1.222706 -0.638462,-0.706041 -0.954724,-1.141125 -1.12039,-1.601454 l -0.82128,0.247462 c 0.0096,0.0294 0.958696,2.148358 1.910597,2.701734 0.951901,0.553373 4.034392,0.944898 5.028705,1.009597 L 29.999994,18 29.470851,17.288534 c -0.553231,-0.743842 -0.977995,-1.697439 -1.640153,-2.814855 -0.39484,-0.666305 -1.045194,-1.18993 -1.860592,-1.600512 0,0 0.08587,-1.17905 -0.197317,-2.094089 C 25.469284,9.7983602 24.733672,9.2127021 24.482051,8.5135345 Z"
|
||||
id="path1269-6" />
|
||||
<path
|
||||
id="path1212"
|
||||
d="M 25.576701,32.902181 19.066886,31.299695 19,34.255604 29,38 28.9981,34.778019 v -0.685747 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient1221);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:url(#linearGradient1071);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient1097);stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 19.5,30.492504 9,2.908646 v 2.911795 l -9,-2.908646 z"
|
||||
id="path1187-1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1040"
|
||||
d="m 23.664765,24.041665 h 0.711366 c 2.561625,0 4.623872,0.443275 4.623872,1.782132 L 28.959113,28 c 0,0 -3.331893,-0.849474 -5.015611,-0.847458 C 22.259783,27.154542 19,28 19,28 l 0.04089,-2.176203 c 0,-1.338857 2.062248,-1.782132 4.623873,-1.782132 z"
|
||||
style="opacity:0.75499998;fill:url(#linearGradient1050);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
sodipodi:nodetypes="cscczccsc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#758087;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 30.882166,19.936923 2.080363,4.72009 -2.080363,-1.550014 z"
|
||||
id="path1037" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 23 KiB |
21
icons/Makefile.am
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
SUBDIRS = \
|
||||
16x16 \
|
||||
24x24 \
|
||||
48x48 \
|
||||
128x128 \
|
||||
scalable
|
||||
|
||||
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
|
||||
|
||||
install-data-hook:
|
||||
@-if test -z "$(DESTDIR)"; then \
|
||||
echo "Updating Gtk icon cache."; \
|
||||
$(gtk_update_icon_cache); \
|
||||
else \
|
||||
echo "*** Icon cache not updated. Remember to run:"; \
|
||||
echo "***"; \
|
||||
echo "*** $(gtk_update_icon_cache)"; \
|
||||
echo "***"; \
|
||||
fi
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
8
icons/scalable/Makefile.am
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
iconsdir = $(datadir)/icons/hicolor/scalable/apps
|
||||
icons_DATA = \
|
||||
org.xfce.thunar.svg
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(icons_DATA)
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
1079
icons/scalable/org.xfce.thunar.svg
Normal file
|
After Width: | Height: | Size: 43 KiB |
9
its/xfce.its
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<its:rules xmlns:its="http://www.w3.org/2005/11/its"
|
||||
version="2.0">
|
||||
<its:translateRule selector="//*" translate="no"/>
|
||||
<its:translateRule selector="//actions/action/description |
|
||||
//actions/action/name |
|
||||
//actions/action/commands/command/name"
|
||||
translate="yes"/>
|
||||
</its:rules>
|
||||
7
its/xfce.loc
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<locatingRules>
|
||||
<locatingRule name="xfce-action" pattern="*-actions.xml">
|
||||
<documentRule localName="actions" target="xfce.its"/>
|
||||
</locatingRule>
|
||||
<locatingRule name="xfce-action" pattern="uca.xml" target="xfce.its" />
|
||||
</locatingRules>
|
||||
96
m4/introspection.m4
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
dnl -*- mode: autoconf -*-
|
||||
dnl Copyright 2009 Johan Dahlin
|
||||
dnl
|
||||
dnl This file is free software; the author(s) gives unlimited
|
||||
dnl permission to copy and/or distribute it, with or without
|
||||
dnl modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
|
||||
# serial 1
|
||||
|
||||
m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
|
||||
[
|
||||
AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||
AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||
AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
|
||||
|
||||
dnl enable/disable introspection
|
||||
m4_if([$2], [require],
|
||||
[dnl
|
||||
enable_introspection=yes
|
||||
],[dnl
|
||||
AC_ARG_ENABLE(introspection,
|
||||
AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
|
||||
[Enable introspection for this build]),,
|
||||
[enable_introspection=auto])
|
||||
])dnl
|
||||
|
||||
AC_MSG_CHECKING([for gobject-introspection])
|
||||
|
||||
dnl presence/version checking
|
||||
AS_CASE([$enable_introspection],
|
||||
[no], [dnl
|
||||
found_introspection="no (disabled, use --enable-introspection to enable)"
|
||||
],dnl
|
||||
[yes],[dnl
|
||||
PKG_CHECK_EXISTS([gobject-introspection-1.0],,
|
||||
AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
|
||||
PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
|
||||
found_introspection=yes,
|
||||
AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
|
||||
],dnl
|
||||
[auto],[dnl
|
||||
PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
|
||||
dnl Canonicalize enable_introspection
|
||||
enable_introspection=$found_introspection
|
||||
],dnl
|
||||
[dnl
|
||||
AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
|
||||
])dnl
|
||||
|
||||
AC_MSG_RESULT([$found_introspection])
|
||||
|
||||
INTROSPECTION_SCANNER=
|
||||
INTROSPECTION_COMPILER=
|
||||
INTROSPECTION_GENERATE=
|
||||
INTROSPECTION_GIRDIR=
|
||||
INTROSPECTION_TYPELIBDIR=
|
||||
if test "x$found_introspection" = "xyes"; then
|
||||
INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
|
||||
INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
|
||||
INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
|
||||
INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
|
||||
INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
|
||||
INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
|
||||
INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
|
||||
INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
|
||||
fi
|
||||
AC_SUBST(INTROSPECTION_SCANNER)
|
||||
AC_SUBST(INTROSPECTION_COMPILER)
|
||||
AC_SUBST(INTROSPECTION_GENERATE)
|
||||
AC_SUBST(INTROSPECTION_GIRDIR)
|
||||
AC_SUBST(INTROSPECTION_TYPELIBDIR)
|
||||
AC_SUBST(INTROSPECTION_CFLAGS)
|
||||
AC_SUBST(INTROSPECTION_LIBS)
|
||||
AC_SUBST(INTROSPECTION_MAKEFILE)
|
||||
|
||||
AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
|
||||
])
|
||||
|
||||
|
||||
dnl Usage:
|
||||
dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
|
||||
|
||||
AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
|
||||
[
|
||||
_GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
|
||||
])
|
||||
|
||||
dnl Usage:
|
||||
dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
|
||||
|
||||
|
||||
AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
|
||||
[
|
||||
_GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
|
||||
])
|
||||
4
org.xfce.FileManager.service.in
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[D-BUS Service]
|
||||
Name=org.xfce.FileManager
|
||||
Exec=@bindir@/Thunar --gapplication-service
|
||||
SystemdService=thunar.service
|
||||
4
org.xfce.Thunar.FileManager1.service.in
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[D-BUS Service]
|
||||
Name=org.freedesktop.FileManager1
|
||||
Exec=@bindir@/Thunar --gapplication-service
|
||||
SystemdService=thunar.service
|
||||
4
org.xfce.Thunar.service.in
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[D-BUS Service]
|
||||
Name=org.xfce.Thunar
|
||||
Exec=@bindir@/Thunar --gapplication-service
|
||||
SystemdService=thunar.service
|
||||
38
org.xfce.thunar.appdata.xml.in
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright 2014 Ryan Lerch <rlerch@redhat.com> -->
|
||||
|
||||
<component type="desktop-application">
|
||||
<id>org.xfce.thunar</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-2.0</project_license>
|
||||
<launchable type="desktop-id">thunar.desktop</launchable>
|
||||
<name>Thunar</name>
|
||||
<summary>File Browser</summary>
|
||||
<description>
|
||||
<p>
|
||||
Thunar is a file browser specifically designed for the Xfce Desktop, but also can
|
||||
serve as an alternate file browser for other Desktop environments. It has a simple,
|
||||
clean two-pane design for browsing all your files.
|
||||
</p>
|
||||
</description>
|
||||
<url type="homepage">https://xfce.org</url>
|
||||
<url type="bugtracker">https://gitlab.xfce.org/xfce/thunar</url>
|
||||
<url type="help">https://docs.xfce.org/xfce/thunar/start</url>
|
||||
<url type="contact">https://docs.xfce.org/contribute/dev/start#communication_with_the_xfce_development_team</url>
|
||||
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image width="759" height="424">https://docs.xfce.org/_media/xfce/thunar/file-manager-window.png</image>
|
||||
<caption>Screenshot of the XFCE Thunar File Browser User Interface</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
||||
<categories>
|
||||
<category>System</category>
|
||||
</categories>
|
||||
|
||||
<project_group>Xfce</project_group>
|
||||
<update_contact>xfce4-dev@xfce.org</update_contact>
|
||||
<translation type="gettext">Thunar</translation>
|
||||
<content_rating type="oars-1.1"/>
|
||||
</component>
|
||||
37
org.xfce.thunar.policy.in.in
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE policyconfig PUBLIC
|
||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
|
||||
<policyconfig>
|
||||
|
||||
<!--
|
||||
Policy definitions for Thunar.
|
||||
Copyright (c) 2014 Benedikt Meurer <benny@xfce.org>
|
||||
Jannis Pohlmann <jannis@xfce.org>
|
||||
Jeffs Franks <jcfranks@xfce.org>
|
||||
Nick Schermer <nick@xfce.org>
|
||||
-->
|
||||
|
||||
<vendor>Thunar</vendor>
|
||||
<vendor_url>https://xfce.org/</vendor_url>
|
||||
<icon_name>org.xfce.thunar</icon_name>
|
||||
|
||||
|
||||
<action id="org.xfce.thunar">
|
||||
<!-- SECURITY:
|
||||
- A normal active user can run thunar without elevated rights. They
|
||||
may wish to modify files they normally do not have read/write access
|
||||
to. This isn't a good idea, but is common on single user systems.
|
||||
-->
|
||||
<description>Run Thunar as root</description>
|
||||
<message>Authentication is required to run Thunar as root.</message>
|
||||
<defaults>
|
||||
<allow_any>no</allow_any>
|
||||
<allow_inactive>auth_admin</allow_inactive>
|
||||
<allow_active>auth_admin</allow_active>
|
||||
</defaults>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">@bindir@/thunar</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
||||
</action>
|
||||
|
||||
</policyconfig>
|
||||
29
plugins/Makefile.am
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
if THUNAR_PLUGIN_APR
|
||||
THUNAR_APR_SUBDIRS = thunar-apr
|
||||
endif
|
||||
|
||||
if THUNAR_PLUGIN_SBR
|
||||
THUNAR_SBR_SUBDIRS = thunar-sbr
|
||||
endif
|
||||
|
||||
if THUNAR_PLUGIN_TPA
|
||||
THUNAR_TPA_SUBDIRS = thunar-tpa
|
||||
endif
|
||||
|
||||
if THUNAR_PLUGIN_UCA
|
||||
THUNAR_UCA_SUBDIRS = thunar-uca
|
||||
endif
|
||||
|
||||
if THUNAR_PLUGIN_WALLPAPER
|
||||
THUNAR_WALLPAPER_SUBDIRS = thunar-wallpaper
|
||||
endif
|
||||
|
||||
SUBDIRS = \
|
||||
$(THUNAR_APR_SUBDIRS) \
|
||||
$(THUNAR_SBR_SUBDIRS) \
|
||||
$(THUNAR_TPA_SUBDIRS) \
|
||||
$(THUNAR_UCA_SUBDIRS) \
|
||||
$(THUNAR_WALLPAPER_SUBDIRS) \
|
||||
thunar-sendto-email
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
60
plugins/thunar-apr/Makefile.am
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
AM_CPPFLAGS = \
|
||||
-I$(top_builddir) \
|
||||
-I$(top_builddir)/plugins \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_srcdir)/plugins \
|
||||
-DG_LOG_DOMAIN=\"thunar-apr\" \
|
||||
-DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
|
||||
$(PLATFORM_CPPFLAGS)
|
||||
|
||||
extensionsdir = $(libdir)/thunarx-$(THUNARX_VERSION_API)
|
||||
extensions_LTLIBRARIES = \
|
||||
thunar-apr.la
|
||||
|
||||
thunar_apr_la_SOURCES = \
|
||||
thunar-apr-abstract-page.c \
|
||||
thunar-apr-abstract-page.h \
|
||||
thunar-apr-desktop-page.c \
|
||||
thunar-apr-desktop-page.h \
|
||||
thunar-apr-image-page.c \
|
||||
thunar-apr-image-page.h \
|
||||
thunar-apr-plugin.c \
|
||||
thunar-apr-private.c \
|
||||
thunar-apr-private.h \
|
||||
thunar-apr-provider.c \
|
||||
thunar-apr-provider.h
|
||||
|
||||
thunar_apr_la_CFLAGS = \
|
||||
$(EXIF_CFLAGS) \
|
||||
$(EXO_CFLAGS) \
|
||||
$(LIBXFCE4UTIL_CFLAGS) \
|
||||
$(LIBXFCE4UI_CFLAGS) \
|
||||
$(GLIB_CFLAGS) \
|
||||
$(GTK_CFLAGS) \
|
||||
$(PLATFORM_CFLAGS)
|
||||
|
||||
thunar_apr_la_LDFLAGS = \
|
||||
-avoid-version \
|
||||
-export-dynamic \
|
||||
-no-undefined \
|
||||
-export-symbols-regex "^thunar_extension_(shutdown|initialize|list_types)" \
|
||||
-module \
|
||||
$(PLATFORM_LDFLAGS)
|
||||
|
||||
thunar_apr_la_LIBADD = \
|
||||
$(top_builddir)/thunarx/libthunarx-$(THUNARX_VERSION_API).la \
|
||||
$(EXIF_LIBS) \
|
||||
$(EXO_LIBS) \
|
||||
$(LIBXFCE4UTIL_LIBS) \
|
||||
$(LIBXFCE4UI_LIBS) \
|
||||
$(GLIB_LIBS) \
|
||||
$(GTK_LIBS)
|
||||
|
||||
thunar_apr_la_DEPENDENCIES = \
|
||||
$(top_builddir)/thunarx/libthunarx-$(THUNARX_VERSION_API).la
|
||||
|
||||
|
||||
EXTRA_DIST = \
|
||||
README.md
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
13
plugins/thunar-apr/README.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
Thunar Advanced Properties (thunar-apr)
|
||||
=======================================
|
||||
|
||||
Thunar-apr is an extension to Thunar, which provides additional pages forthe file properties dialog, that are displayed for certain kinds of files:
|
||||
|
||||
* Launcher/Link
|
||||
* Image
|
||||
|
||||
The Launcher/Link page is displayed for .desktop files and allows users to easily edit the most important values (i.e. the command for a launcher and the URL for a link).
|
||||
|
||||
The Image page is displayed for all kinds of image files supported by the GTK+ version used by Thunar. The page displays atleast the exact format of the image and the dimensions in pixels. If the plugin is build with support for libexif (you can explicitly disable this using the `--disable-exif` configure option) and the image file includes Exif tags, the most important Exif tags found in the image file will also be displayed.
|
||||
|
||||
By default the thunar-apr extension will be installed, but as with every extension, it will slightly increase the resource usage of Thunar (this shouldn't be a real problem unless you're targeting an embedded system), and so you can pass `--disable-apr-plugin` to configure and the plugin won't be built and installed. Since it is an extension, you can also easily uninstall it afterwards by removing the thunar-apr.so file from the lib/thunarx-2/ directory of your installation (be sure to quit Thunar before removing files though).
|
||||
254
plugins/thunar-apr/thunar-apr-abstract-page.c
Normal file
|
|
@ -0,0 +1,254 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <thunar-apr/thunar-apr-abstract-page.h>
|
||||
#include <thunar-apr/thunar-apr-private.h>
|
||||
|
||||
|
||||
|
||||
/* Property identifiers */
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_FILE,
|
||||
};
|
||||
|
||||
/* Signal identifiers */
|
||||
enum
|
||||
{
|
||||
FILE_CHANGED,
|
||||
LAST_SIGNAL,
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_abstract_page_dispose (GObject *object);
|
||||
static void
|
||||
thunar_apr_abstract_page_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static void
|
||||
thunar_apr_abstract_page_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static void
|
||||
thunar_apr_abstract_page_file_changed (ThunarAprAbstractPage *abstract_page,
|
||||
ThunarxFileInfo *file);
|
||||
|
||||
|
||||
|
||||
static guint abstract_page_signals[LAST_SIGNAL];
|
||||
|
||||
|
||||
|
||||
THUNARX_DEFINE_ABSTRACT_TYPE (ThunarAprAbstractPage,
|
||||
thunar_apr_abstract_page,
|
||||
THUNARX_TYPE_PROPERTY_PAGE);
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_abstract_page_class_init (ThunarAprAbstractPageClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
|
||||
gobject_class = G_OBJECT_CLASS (klass);
|
||||
gobject_class->dispose = thunar_apr_abstract_page_dispose;
|
||||
gobject_class->get_property = thunar_apr_abstract_page_get_property;
|
||||
gobject_class->set_property = thunar_apr_abstract_page_set_property;
|
||||
|
||||
/**
|
||||
* ThunarAprAbstractPage:file:
|
||||
*
|
||||
* The #ThunarxFileInfo for the file being displayed by
|
||||
* this property page.
|
||||
**/
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_FILE,
|
||||
g_param_spec_object ("file", "file", "file",
|
||||
THUNARX_TYPE_FILE_INFO,
|
||||
G_PARAM_READWRITE));
|
||||
|
||||
/**
|
||||
* ThunarAprAbstractPage::file-changed:
|
||||
* @abstract_page : a #ThunarAprAbstractPage.
|
||||
* @file : a #ThunarxFileInfo.
|
||||
*
|
||||
* Emitted by @abstract_page whenever the associated
|
||||
* @file changes.
|
||||
**/
|
||||
abstract_page_signals[FILE_CHANGED] =
|
||||
g_signal_new ("file-changed",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (ThunarAprAbstractPageClass, file_changed),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1,
|
||||
THUNARX_TYPE_FILE_INFO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_abstract_page_init (ThunarAprAbstractPage *abstract_page)
|
||||
{
|
||||
/* be sure to setup the i18n support for the thunar-apr plugin */
|
||||
thunar_apr_i18n_init ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_abstract_page_dispose (GObject *object)
|
||||
{
|
||||
ThunarAprAbstractPage *abstract_page = THUNAR_APR_ABSTRACT_PAGE (object);
|
||||
|
||||
/* disconnect from the file */
|
||||
thunar_apr_abstract_page_set_file (abstract_page, NULL);
|
||||
|
||||
(*G_OBJECT_CLASS (thunar_apr_abstract_page_parent_class)->dispose) (object);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_abstract_page_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
ThunarAprAbstractPage *abstract_page = THUNAR_APR_ABSTRACT_PAGE (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_FILE:
|
||||
g_value_set_object (value, thunar_apr_abstract_page_get_file (abstract_page));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_abstract_page_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
ThunarAprAbstractPage *abstract_page = THUNAR_APR_ABSTRACT_PAGE (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_FILE:
|
||||
thunar_apr_abstract_page_set_file (abstract_page, g_value_get_object (value));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_abstract_page_file_changed (ThunarAprAbstractPage *abstract_page,
|
||||
ThunarxFileInfo *file)
|
||||
{
|
||||
/* emit the "file-changed" signal */
|
||||
g_signal_emit (G_OBJECT (abstract_page), abstract_page_signals[FILE_CHANGED], 0, file);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_apr_abstract_page_get_file:
|
||||
* @abstract_page : a #ThunarAprAbstractPage.
|
||||
*
|
||||
* Returns the #ThunarxFileInfo for the file being
|
||||
* displayed by the @abstract_page.
|
||||
*
|
||||
* Return value: the file for @abstract_page.
|
||||
**/
|
||||
ThunarxFileInfo *
|
||||
thunar_apr_abstract_page_get_file (ThunarAprAbstractPage *abstract_page)
|
||||
{
|
||||
g_return_val_if_fail (THUNAR_APR_IS_ABSTRACT_PAGE (abstract_page), NULL);
|
||||
return abstract_page->file;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_apr_abstract_page_set_file:
|
||||
* @abstract_page : a #ThunarAprAbstractPage.
|
||||
* @file : a #ThunarxFileInfo or %NULL.
|
||||
*
|
||||
* Sets the #ThunarxFileInfo being displayed by the
|
||||
* @abstract_page to @file. If @file is %NULL, the
|
||||
* property will be reset.
|
||||
**/
|
||||
void
|
||||
thunar_apr_abstract_page_set_file (ThunarAprAbstractPage *abstract_page,
|
||||
ThunarxFileInfo *file)
|
||||
{
|
||||
g_return_if_fail (THUNAR_APR_IS_ABSTRACT_PAGE (abstract_page));
|
||||
g_return_if_fail (file == NULL || THUNARX_IS_FILE_INFO (file));
|
||||
|
||||
/* verify that we don't already display that file */
|
||||
if (G_UNLIKELY (abstract_page->file == file))
|
||||
return;
|
||||
|
||||
/* disconnect from the previous file */
|
||||
if (G_UNLIKELY (abstract_page->file != NULL))
|
||||
{
|
||||
g_signal_handlers_disconnect_by_func (G_OBJECT (abstract_page->file), thunar_apr_abstract_page_file_changed, abstract_page);
|
||||
g_object_unref (G_OBJECT (abstract_page->file));
|
||||
}
|
||||
|
||||
/* activate the new file */
|
||||
abstract_page->file = file;
|
||||
|
||||
/* connect to the new file */
|
||||
if (G_LIKELY (file != NULL))
|
||||
{
|
||||
/* connect "changed" signal and take a reference */
|
||||
g_signal_connect_swapped (G_OBJECT (file), "changed", G_CALLBACK (thunar_apr_abstract_page_file_changed), abstract_page);
|
||||
g_object_ref (G_OBJECT (file));
|
||||
|
||||
/* update the initial state */
|
||||
thunar_apr_abstract_page_file_changed (abstract_page, file);
|
||||
}
|
||||
|
||||
/* notify listeners */
|
||||
g_object_notify (G_OBJECT (abstract_page), "file");
|
||||
}
|
||||
66
plugins/thunar-apr/thunar-apr-abstract-page.h
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifndef __THUNAR_APR_ABSTRACT_PAGE_H__
|
||||
#define __THUNAR_APR_ABSTRACT_PAGE_H__
|
||||
|
||||
#include <thunarx/thunarx.h>
|
||||
|
||||
G_BEGIN_DECLS;
|
||||
|
||||
typedef struct _ThunarAprAbstractPageClass ThunarAprAbstractPageClass;
|
||||
typedef struct _ThunarAprAbstractPage ThunarAprAbstractPage;
|
||||
|
||||
#define THUNAR_APR_TYPE_ABSTRACT_PAGE (thunar_apr_abstract_page_get_type ())
|
||||
#define THUNAR_APR_ABSTRACT_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_APR_TYPE_ABSTRACT_PAGE, ThunarAprAbstractPage))
|
||||
#define THUNAR_APR_ABSTRACT_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_APR_TYPE_ABSTRACT_PAGE, ThunarAprAbstractPageClass))
|
||||
#define THUNAR_APR_IS_ABSTRACT_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_APR_TYPE_ABSTRACT_PAGE))
|
||||
#define THUNAR_APR_IS_ABSTRACT_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_APR_TYPE_ABSTRACT_PAGE))
|
||||
#define THUNAR_APR_ABSTRACT_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_APR_TYPE_ABSTRACT_PAGE, ThunarAprAbstractPageClass))
|
||||
|
||||
struct _ThunarAprAbstractPageClass
|
||||
{
|
||||
ThunarxPropertyPageClass __parent__;
|
||||
|
||||
/* signals */
|
||||
void (*file_changed) (ThunarAprAbstractPage *abstract_page,
|
||||
ThunarxFileInfo *file);
|
||||
};
|
||||
|
||||
struct _ThunarAprAbstractPage
|
||||
{
|
||||
ThunarxPropertyPage __parent__;
|
||||
ThunarxFileInfo *file;
|
||||
};
|
||||
|
||||
GType
|
||||
thunar_apr_abstract_page_get_type (void) G_GNUC_CONST;
|
||||
void
|
||||
thunar_apr_abstract_page_register_type (ThunarxProviderPlugin *plugin);
|
||||
|
||||
ThunarxFileInfo *
|
||||
thunar_apr_abstract_page_get_file (ThunarAprAbstractPage *abstract_page);
|
||||
void
|
||||
thunar_apr_abstract_page_set_file (ThunarAprAbstractPage *abstract_page,
|
||||
ThunarxFileInfo *file);
|
||||
|
||||
G_END_DECLS;
|
||||
|
||||
#endif /* !__THUNAR_APR_ABSTRACT_PAGE_H__ */
|
||||
1123
plugins/thunar-apr/thunar-apr-desktop-page.c
Normal file
45
plugins/thunar-apr/thunar-apr-desktop-page.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifndef __THUNAR_APR_DESKTOP_PAGE_H__
|
||||
#define __THUNAR_APR_DESKTOP_PAGE_H__
|
||||
|
||||
#include <thunar-apr/thunar-apr-abstract-page.h>
|
||||
|
||||
G_BEGIN_DECLS;
|
||||
|
||||
typedef struct _ThunarAprDesktopPageClass ThunarAprDesktopPageClass;
|
||||
typedef struct _ThunarAprDesktopPage ThunarAprDesktopPage;
|
||||
|
||||
#define THUNAR_APR_TYPE_DESKTOP_PAGE (thunar_apr_desktop_page_get_type ())
|
||||
#define THUNAR_APR_DESKTOP_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_APR_TYPE_DESKTOP_PAGE, ThunarAprDesktopPage))
|
||||
#define THUNAR_APR_DESKTOP_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_APR_TYPE_DESKTOP_PAGE, ThunarAprDesktopPageClass))
|
||||
#define THUNAR_APR_IS_DESKTOP_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_APR_TYPE_DESKTOP_PAGE))
|
||||
#define THUNAR_APR_IS_DESKTOP_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_APR_TYPE_DESKTOP_PAGE))
|
||||
#define THUNAR_APR_DESKTOP_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_APR_TYPE_DESKTOP_PAGE, ThunarAprDesktopPageClass))
|
||||
|
||||
GType
|
||||
thunar_apr_desktop_page_get_type (void) G_GNUC_CONST;
|
||||
void
|
||||
thunar_apr_desktop_page_register_type (ThunarxProviderPlugin *plugin);
|
||||
|
||||
G_END_DECLS;
|
||||
|
||||
#endif /* !__THUNAR_APR_DESKTOP_PAGE_H__ */
|
||||
319
plugins/thunar-apr/thunar-apr-image-page.c
Normal file
|
|
@ -0,0 +1,319 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <exo/exo.h>
|
||||
#include <thunar-apr/thunar-apr-image-page.h>
|
||||
|
||||
#ifdef HAVE_EXIF
|
||||
#include <libexif/exif-data.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_image_page_file_changed (ThunarAprAbstractPage *abstract_page,
|
||||
ThunarxFileInfo *file);
|
||||
|
||||
|
||||
|
||||
#ifdef HAVE_EXIF
|
||||
static const struct
|
||||
{
|
||||
const gchar *name;
|
||||
ExifTag tag;
|
||||
}
|
||||
|
||||
/* clang-format off */
|
||||
TAIP_EXIF[] =
|
||||
{
|
||||
{ N_ ("Date Taken:"), EXIF_TAG_DATE_TIME_ORIGINAL, },
|
||||
{ N_ ("Camera Brand:"), EXIF_TAG_MAKE, },
|
||||
{ N_ ("Camera Model:"), EXIF_TAG_MODEL, },
|
||||
{ N_ ("Exposure Time:"), EXIF_TAG_EXPOSURE_TIME, },
|
||||
{ N_ ("Exposure Program:"), EXIF_TAG_EXPOSURE_PROGRAM, },
|
||||
{ N_ ("Aperture Value:"), EXIF_TAG_APERTURE_VALUE, },
|
||||
{ N_ ("Metering Mode:"), EXIF_TAG_METERING_MODE, },
|
||||
{ N_ ("Flash Fired:"), EXIF_TAG_FLASH, },
|
||||
{ N_ ("Focal Length:"), EXIF_TAG_FOCAL_LENGTH, },
|
||||
{ N_ ("Shutter Speed:"), EXIF_TAG_SHUTTER_SPEED_VALUE, },
|
||||
{ N_ ("ISO Speed Ratings:"), EXIF_TAG_ISO_SPEED_RATINGS, },
|
||||
{ N_ ("Software:"), EXIF_TAG_SOFTWARE, },
|
||||
{ N_ ("Description:"), EXIF_TAG_IMAGE_DESCRIPTION, },
|
||||
{ N_ ("Comment:"), EXIF_TAG_USER_COMMENT, },
|
||||
};
|
||||
/* clang-format on */
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
struct _ThunarAprImagePageClass
|
||||
{
|
||||
ThunarAprAbstractPageClass __parent__;
|
||||
};
|
||||
|
||||
struct _ThunarAprImagePage
|
||||
{
|
||||
ThunarAprAbstractPage __parent__;
|
||||
GtkWidget *type_label;
|
||||
GtkWidget *dimensions_label;
|
||||
|
||||
#ifdef HAVE_EXIF
|
||||
GtkWidget *exif_labels[G_N_ELEMENTS (TAIP_EXIF)];
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
||||
THUNARX_DEFINE_TYPE (ThunarAprImagePage,
|
||||
thunar_apr_image_page,
|
||||
THUNAR_APR_TYPE_ABSTRACT_PAGE);
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_image_page_class_init (ThunarAprImagePageClass *klass)
|
||||
{
|
||||
ThunarAprAbstractPageClass *thunarapr_abstract_page_class;
|
||||
|
||||
thunarapr_abstract_page_class = THUNAR_APR_ABSTRACT_PAGE_CLASS (klass);
|
||||
thunarapr_abstract_page_class->file_changed = thunar_apr_image_page_file_changed;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_image_page_init (ThunarAprImagePage *image_page)
|
||||
{
|
||||
AtkRelationSet *relations;
|
||||
PangoAttribute *attribute;
|
||||
PangoAttrList *attr_list;
|
||||
AtkRelation *relation;
|
||||
AtkObject *object;
|
||||
GtkWidget *label;
|
||||
GtkWidget *grid;
|
||||
#ifdef HAVE_EXIF
|
||||
GtkWidget *spacer;
|
||||
guint n;
|
||||
#endif
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (image_page), 12);
|
||||
thunarx_property_page_set_label (THUNARX_PROPERTY_PAGE (image_page), _("Image"));
|
||||
|
||||
/* allocate shared bold Pango attributes */
|
||||
attr_list = pango_attr_list_new ();
|
||||
attribute = pango_attr_weight_new (PANGO_WEIGHT_BOLD);
|
||||
attribute->start_index = 0;
|
||||
attribute->end_index = -1;
|
||||
pango_attr_list_insert (attr_list, attribute);
|
||||
|
||||
grid = gtk_grid_new ();
|
||||
gtk_grid_set_column_spacing (GTK_GRID (grid), 12);
|
||||
gtk_grid_set_row_spacing (GTK_GRID (grid), 6);
|
||||
gtk_container_add (GTK_CONTAINER (image_page), grid);
|
||||
gtk_widget_show (grid);
|
||||
|
||||
label = gtk_label_new (_("Image Type:"));
|
||||
gtk_label_set_xalign (GTK_LABEL (label), 1.0f);
|
||||
gtk_label_set_attributes (GTK_LABEL (label), attr_list);
|
||||
gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);
|
||||
gtk_widget_show (label);
|
||||
|
||||
image_page->type_label = gtk_label_new ("");
|
||||
gtk_label_set_selectable (GTK_LABEL (image_page->type_label), TRUE);
|
||||
gtk_label_set_xalign (GTK_LABEL (image_page->type_label), 0.0f);
|
||||
gtk_label_set_ellipsize (GTK_LABEL (image_page->type_label), PANGO_ELLIPSIZE_END);
|
||||
gtk_widget_set_hexpand (image_page->type_label, TRUE);
|
||||
gtk_grid_attach (GTK_GRID (grid), image_page->type_label, 1, 0, 1, 1);
|
||||
gtk_widget_show (image_page->type_label);
|
||||
|
||||
/* set Atk label relation for the label */
|
||||
object = gtk_widget_get_accessible (image_page->type_label);
|
||||
relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
|
||||
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
|
||||
atk_relation_set_add (relations, relation);
|
||||
g_object_unref (G_OBJECT (relation));
|
||||
g_object_unref (relations);
|
||||
|
||||
label = gtk_label_new (_("Image Size:"));
|
||||
gtk_label_set_xalign (GTK_LABEL (label), 1.0f);
|
||||
gtk_label_set_attributes (GTK_LABEL (label), attr_list);
|
||||
gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1);
|
||||
gtk_widget_show (label);
|
||||
|
||||
image_page->dimensions_label = gtk_label_new ("");
|
||||
gtk_label_set_selectable (GTK_LABEL (image_page->dimensions_label), TRUE);
|
||||
gtk_label_set_xalign (GTK_LABEL (image_page->dimensions_label), 0.0f);
|
||||
gtk_label_set_ellipsize (GTK_LABEL (image_page->dimensions_label), PANGO_ELLIPSIZE_END);
|
||||
gtk_widget_set_hexpand (image_page->dimensions_label, TRUE);
|
||||
gtk_grid_attach (GTK_GRID (grid), image_page->dimensions_label, 1, 1, 1, 1);
|
||||
gtk_widget_show (image_page->dimensions_label);
|
||||
|
||||
/* set Atk label relation for the label */
|
||||
object = gtk_widget_get_accessible (image_page->dimensions_label);
|
||||
relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
|
||||
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
|
||||
atk_relation_set_add (relations, relation);
|
||||
g_object_unref (G_OBJECT (relation));
|
||||
g_object_unref (relations);
|
||||
|
||||
#ifdef HAVE_EXIF
|
||||
/* some spacing between the General info and the Exif info */
|
||||
spacer = g_object_new (GTK_TYPE_BOX, "orientation", GTK_ORIENTATION_VERTICAL, "height-request", 6, NULL);
|
||||
gtk_grid_attach (GTK_GRID (grid), spacer, 0, 2, 2, 1);
|
||||
gtk_widget_show (spacer);
|
||||
|
||||
/* add labels for the Exif info */
|
||||
for (n = 0; n < G_N_ELEMENTS (TAIP_EXIF); ++n)
|
||||
{
|
||||
label = gtk_label_new (_(TAIP_EXIF[n].name));
|
||||
gtk_label_set_xalign (GTK_LABEL (label), 1.0f);
|
||||
gtk_label_set_attributes (GTK_LABEL (label), attr_list);
|
||||
gtk_grid_attach (GTK_GRID (grid), label, 0, n + 3, 1, 1);
|
||||
gtk_widget_show (label);
|
||||
|
||||
image_page->exif_labels[n] = gtk_label_new ("");
|
||||
gtk_label_set_selectable (GTK_LABEL (image_page->exif_labels[n]), TRUE);
|
||||
gtk_label_set_xalign (GTK_LABEL (image_page->exif_labels[n]), 0.0f);
|
||||
gtk_label_set_ellipsize (GTK_LABEL (image_page->exif_labels[n]), PANGO_ELLIPSIZE_END);
|
||||
gtk_widget_set_hexpand (image_page->exif_labels[n], TRUE);
|
||||
gtk_grid_attach (GTK_GRID (grid), image_page->exif_labels[n], 1, n + 3, 1, 1);
|
||||
gtk_widget_show (image_page->exif_labels[n]);
|
||||
|
||||
g_object_bind_property (G_OBJECT (image_page->exif_labels[n]), "visible", G_OBJECT (label), "visible", G_BINDING_SYNC_CREATE);
|
||||
|
||||
/* set Atk label relation for the label */
|
||||
object = gtk_widget_get_accessible (image_page->exif_labels[n]);
|
||||
relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
|
||||
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
|
||||
atk_relation_set_add (relations, relation);
|
||||
g_object_unref (G_OBJECT (relation));
|
||||
g_object_unref (relations);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* release shared bold Pango attributes */
|
||||
pango_attr_list_unref (attr_list);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_image_page_file_changed (ThunarAprAbstractPage *abstract_page,
|
||||
ThunarxFileInfo *file)
|
||||
{
|
||||
ThunarAprImagePage *image_page = THUNAR_APR_IMAGE_PAGE (abstract_page);
|
||||
GdkPixbufFormat *format;
|
||||
gchar *filename;
|
||||
gchar *text;
|
||||
gchar *uri;
|
||||
gint height;
|
||||
gint width;
|
||||
#ifdef HAVE_EXIF
|
||||
ExifEntry *exif_entry;
|
||||
ExifData *exif_data;
|
||||
gchar exif_buffer[1024];
|
||||
guint n;
|
||||
#endif
|
||||
|
||||
/* determine the URI for the file */
|
||||
uri = thunarx_file_info_get_uri (file);
|
||||
if (G_UNLIKELY (uri == NULL))
|
||||
return;
|
||||
|
||||
/* determine the local path of the file */
|
||||
filename = g_filename_from_uri (uri, NULL, NULL);
|
||||
if (G_LIKELY (filename != NULL))
|
||||
{
|
||||
/* determine the pixbuf format */
|
||||
format = gdk_pixbuf_get_file_info (filename, &width, &height);
|
||||
if (G_LIKELY (format != NULL))
|
||||
{
|
||||
/* update the "Image Type" label */
|
||||
gchar *name = gdk_pixbuf_format_get_name (format);
|
||||
gchar *desc = gdk_pixbuf_format_get_description (format);
|
||||
text = g_strdup_printf ("%s (%s)", name, desc);
|
||||
|
||||
gtk_label_set_text (GTK_LABEL (image_page->type_label), text);
|
||||
g_free (name);
|
||||
g_free (desc);
|
||||
g_free (text);
|
||||
|
||||
/* update the "Image Size" label */
|
||||
text = g_strdup_printf (ngettext ("%dx%d pixel", "%dx%d pixels", width + height), width, height);
|
||||
gtk_label_set_text (GTK_LABEL (image_page->dimensions_label), text);
|
||||
g_free (text);
|
||||
|
||||
#ifdef HAVE_EXIF
|
||||
/* hide all Exif labels (will be shown again if data is available) */
|
||||
for (n = 0; n < G_N_ELEMENTS (TAIP_EXIF); ++n)
|
||||
gtk_widget_hide (image_page->exif_labels[n]);
|
||||
|
||||
/* try to load the Exif data for the file */
|
||||
exif_data = exif_data_new_from_file (filename);
|
||||
if (G_LIKELY (exif_data != NULL))
|
||||
{
|
||||
/* update all Exif labels */
|
||||
for (n = 0; n < G_N_ELEMENTS (TAIP_EXIF); ++n)
|
||||
{
|
||||
/* lookup the entry for the tag */
|
||||
exif_entry = exif_data_get_entry (exif_data, TAIP_EXIF[n].tag);
|
||||
if (G_LIKELY (exif_entry != NULL))
|
||||
{
|
||||
/* determine the value */
|
||||
if (exif_entry_get_value (exif_entry, exif_buffer, sizeof (exif_buffer)) != NULL)
|
||||
{
|
||||
/* setup the label text */
|
||||
text = (g_utf8_validate (exif_buffer, -1, NULL)) ? g_strdup (exif_buffer) : g_filename_display_name (exif_buffer);
|
||||
gtk_label_set_text (GTK_LABEL (image_page->exif_labels[n]), text);
|
||||
g_free (text);
|
||||
|
||||
/* show the label */
|
||||
gtk_widget_show (image_page->exif_labels[n]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* cleanup */
|
||||
exif_data_free (exif_data);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
/* tell the user that we're unable to determine the file info */
|
||||
gtk_label_set_text (GTK_LABEL (image_page->type_label), _("Unknown"));
|
||||
gtk_label_set_text (GTK_LABEL (image_page->dimensions_label), _("Unknown"));
|
||||
|
||||
#ifdef HAVE_EXIF
|
||||
/* hide all Exif labels */
|
||||
for (n = 0; n < G_N_ELEMENTS (TAIP_EXIF); ++n)
|
||||
gtk_widget_hide (image_page->exif_labels[n]);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/* cleanup */
|
||||
g_free (filename);
|
||||
g_free (uri);
|
||||
}
|
||||
45
plugins/thunar-apr/thunar-apr-image-page.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifndef __THUNAR_APR_IMAGE_PAGE_H__
|
||||
#define __THUNAR_APR_IMAGE_PAGE_H__
|
||||
|
||||
#include <thunar-apr/thunar-apr-abstract-page.h>
|
||||
|
||||
G_BEGIN_DECLS;
|
||||
|
||||
typedef struct _ThunarAprImagePageClass ThunarAprImagePageClass;
|
||||
typedef struct _ThunarAprImagePage ThunarAprImagePage;
|
||||
|
||||
#define THUNAR_APR_TYPE_IMAGE_PAGE (thunar_apr_image_page_get_type ())
|
||||
#define THUNAR_APR_IMAGE_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_APR_TYPE_IMAGE_PAGE, ThunarAprImagePage))
|
||||
#define THUNAR_APR_IMAGE_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_APR_TYPE_IMAGE_PAGE, ThunarAprImagePageClass))
|
||||
#define THUNAR_APR_IS_IMAGE_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_APR_TYPE_IMAGE_PAGE))
|
||||
#define THUNAR_APR_IS_IMAGE_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_APR_TYPE_IMAGE_PAGE))
|
||||
#define THUNAR_APR_IMAGE_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_APR_TYPE_IMAGE_PAGE, ThunarAprImagePageClass))
|
||||
|
||||
GType
|
||||
thunar_apr_image_page_get_type (void) G_GNUC_CONST;
|
||||
void
|
||||
thunar_apr_image_page_register_type (ThunarxProviderPlugin *plugin);
|
||||
|
||||
G_END_DECLS;
|
||||
|
||||
#endif /* !__THUNAR_APR_IMAGE_PAGE_H__ */
|
||||
91
plugins/thunar-apr/thunar-apr-plugin.c
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <thunar-apr/thunar-apr-abstract-page.h>
|
||||
#include <thunar-apr/thunar-apr-desktop-page.h>
|
||||
#include <thunar-apr/thunar-apr-image-page.h>
|
||||
#include <thunar-apr/thunar-apr-provider.h>
|
||||
|
||||
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_initialize (ThunarxProviderPlugin *plugin);
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_shutdown (void);
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_list_types (const GType **types,
|
||||
gint *n_types);
|
||||
|
||||
|
||||
|
||||
static GType type_list[1];
|
||||
|
||||
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_initialize (ThunarxProviderPlugin *plugin)
|
||||
{
|
||||
const gchar *mismatch;
|
||||
|
||||
/* verify that the thunarx versions are compatible */
|
||||
mismatch = thunarx_check_version (THUNARX_MAJOR_VERSION, THUNARX_MINOR_VERSION, THUNARX_MICRO_VERSION);
|
||||
if (G_UNLIKELY (mismatch != NULL))
|
||||
{
|
||||
g_warning ("Version mismatch: %s", mismatch);
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
g_message ("Initializing ThunarApr extension");
|
||||
#endif
|
||||
|
||||
/* register the types provided by this plugin */
|
||||
thunar_apr_abstract_page_register_type (plugin);
|
||||
thunar_apr_desktop_page_register_type (plugin);
|
||||
thunar_apr_image_page_register_type (plugin);
|
||||
thunar_apr_provider_register_type (plugin);
|
||||
|
||||
/* setup the plugin provider type list */
|
||||
type_list[0] = THUNAR_APR_TYPE_PROVIDER;
|
||||
}
|
||||
|
||||
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_shutdown (void)
|
||||
{
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
g_message ("Shutting down ThunarApr extension");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
thunar_extension_list_types (const GType **types,
|
||||
gint *n_types)
|
||||
{
|
||||
*types = type_list;
|
||||
*n_types = G_N_ELEMENTS (type_list);
|
||||
}
|
||||
49
plugins/thunar-apr/thunar-apr-private.c
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBINTL_H
|
||||
#include <libintl.h>
|
||||
#endif
|
||||
#ifdef HAVE_LOCALE_H
|
||||
#include <locale.h>
|
||||
#endif
|
||||
|
||||
#include <exo/exo.h>
|
||||
#include <thunar-apr/thunar-apr-private.h>
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_apr_i18n_init:
|
||||
*
|
||||
* Sets up i18n support for the thunar-apr plugin.
|
||||
**/
|
||||
void
|
||||
thunar_apr_i18n_init (void)
|
||||
{
|
||||
bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
|
||||
#ifdef HAVE_BIND_TEXTDOMAIN_CODESET
|
||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||
#endif
|
||||
}
|
||||
33
plugins/thunar-apr/thunar-apr-private.h
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifndef __THUNAR_APR_PRIVATE_H__
|
||||
#define __THUNAR_APR_PRIVATE_H__
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
G_BEGIN_DECLS;
|
||||
|
||||
void
|
||||
thunar_apr_i18n_init (void);
|
||||
|
||||
G_END_DECLS;
|
||||
|
||||
#endif /* !__THUNAR_APR_PRIVATE_H__ */
|
||||
135
plugins/thunar-apr/thunar-apr-provider.c
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MEMORY_H
|
||||
#include <memory.h>
|
||||
#endif
|
||||
#ifdef HAVE_STRING_H
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
#include <thunar-apr/thunar-apr-desktop-page.h>
|
||||
#include <thunar-apr/thunar-apr-image-page.h>
|
||||
#include <thunar-apr/thunar-apr-provider.h>
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_provider_property_page_provider_init (ThunarxPropertyPageProviderIface *iface);
|
||||
static GList *
|
||||
thunar_apr_provider_get_pages (ThunarxPropertyPageProvider *property_page_provider,
|
||||
GList *files);
|
||||
|
||||
|
||||
|
||||
struct _ThunarAprProviderClass
|
||||
{
|
||||
GObjectClass __parent__;
|
||||
};
|
||||
|
||||
struct _ThunarAprProvider
|
||||
{
|
||||
GObject __parent__;
|
||||
};
|
||||
|
||||
|
||||
|
||||
THUNARX_DEFINE_TYPE_WITH_CODE (ThunarAprProvider,
|
||||
thunar_apr_provider,
|
||||
G_TYPE_OBJECT,
|
||||
THUNARX_IMPLEMENT_INTERFACE (THUNARX_TYPE_PROPERTY_PAGE_PROVIDER,
|
||||
thunar_apr_provider_property_page_provider_init));
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_provider_class_init (ThunarAprProviderClass *klass)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_provider_property_page_provider_init (ThunarxPropertyPageProviderIface *iface)
|
||||
{
|
||||
iface->get_pages = thunar_apr_provider_get_pages;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_apr_provider_init (ThunarAprProvider *apr_provider)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
static GList *
|
||||
thunar_apr_provider_get_pages (ThunarxPropertyPageProvider *property_page_provider,
|
||||
GList *files)
|
||||
{
|
||||
GSList *formats;
|
||||
GSList *lp;
|
||||
gchar **mime_types;
|
||||
gchar *scheme;
|
||||
GList *pages = NULL;
|
||||
gint n;
|
||||
|
||||
/* we can handle only property pages for a single file */
|
||||
if (G_UNLIKELY (files == NULL || files->next != NULL))
|
||||
return NULL;
|
||||
|
||||
/* determine the URI scheme of the file (works only for local files) */
|
||||
scheme = thunarx_file_info_get_uri_scheme (files->data);
|
||||
if (G_LIKELY (strcmp (scheme, "file") == 0))
|
||||
{
|
||||
/* ThunarAprDesktopPage case */
|
||||
if (G_LIKELY (pages == NULL))
|
||||
{
|
||||
/* check if we have a .desktop file here */
|
||||
if (thunarx_file_info_has_mime_type (files->data, "application/x-desktop"))
|
||||
pages = g_list_append (pages, g_object_new (THUNAR_APR_TYPE_DESKTOP_PAGE, "file", files->data, NULL));
|
||||
}
|
||||
|
||||
/* ThunarAprImagePage case */
|
||||
if (G_LIKELY (pages == NULL))
|
||||
{
|
||||
/* determine the supported GdkPixbuf formats */
|
||||
formats = gdk_pixbuf_get_formats ();
|
||||
for (lp = formats; lp != NULL && pages == NULL; lp = lp->next)
|
||||
{
|
||||
/* check if any of the mime types of this format matches */
|
||||
mime_types = gdk_pixbuf_format_get_mime_types (lp->data);
|
||||
for (n = 0; mime_types[n] != NULL && pages == NULL; ++n)
|
||||
if (thunarx_file_info_has_mime_type (files->data, mime_types[n]))
|
||||
pages = g_list_append (pages, g_object_new (THUNAR_APR_TYPE_IMAGE_PAGE, "file", files->data, NULL));
|
||||
g_strfreev (mime_types);
|
||||
}
|
||||
g_slist_free (formats);
|
||||
}
|
||||
}
|
||||
g_free (scheme);
|
||||
|
||||
return pages;
|
||||
}
|
||||
45
plugins/thunar-apr/thunar-apr-provider.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifndef __THUNAR_APR_PROVIDER_H__
|
||||
#define __THUNAR_APR_PROVIDER_H__
|
||||
|
||||
#include <thunarx/thunarx.h>
|
||||
|
||||
G_BEGIN_DECLS;
|
||||
|
||||
typedef struct _ThunarAprProviderClass ThunarAprProviderClass;
|
||||
typedef struct _ThunarAprProvider ThunarAprProvider;
|
||||
|
||||
#define THUNAR_APR_TYPE_PROVIDER (thunar_apr_provider_get_type ())
|
||||
#define THUNAR_APR_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_APR_TYPE_PROVIDER, ThunarAprProvider))
|
||||
#define THUNAR_APR_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_APR_TYPE_PROVIDER, ThunarAprProviderClass))
|
||||
#define THUNAR_APR_IS_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_APR_TYPE_PROVIDER))
|
||||
#define THUNAR_APR_IS_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_APR_TYPE_PROVIDER))
|
||||
#define THUNAR_APR_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_APR_TYPE_PROVIDER, ThunarAprProviderClass))
|
||||
|
||||
GType
|
||||
thunar_apr_provider_get_type (void) G_GNUC_CONST;
|
||||
void
|
||||
thunar_apr_provider_register_type (ThunarxProviderPlugin *plugin);
|
||||
|
||||
G_END_DECLS;
|
||||
|
||||
#endif /* !__THUNAR_APR_PROVIDER_H__ */
|
||||
60
plugins/thunar-sbr/Makefile.am
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
AM_CPPFLAGS = \
|
||||
-I$(top_builddir) \
|
||||
-I$(top_builddir)/plugins \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_srcdir)/plugins \
|
||||
-DG_LOG_DOMAIN=\"thunar-sbr\" \
|
||||
$(PLATFORM_CPPFLAGS)
|
||||
|
||||
extensionsdir = $(libdir)/thunarx-$(THUNARX_VERSION_API)
|
||||
extensions_LTLIBRARIES = \
|
||||
thunar-sbr.la
|
||||
|
||||
thunar_sbr_la_SOURCES = \
|
||||
thunar-sbr-case-renamer.c \
|
||||
thunar-sbr-case-renamer.h \
|
||||
thunar-sbr-date-renamer.c \
|
||||
thunar-sbr-date-renamer.h \
|
||||
thunar-sbr-enum-types.c \
|
||||
thunar-sbr-enum-types.h \
|
||||
thunar-sbr-insert-renamer.c \
|
||||
thunar-sbr-insert-renamer.h \
|
||||
thunar-sbr-number-renamer.c \
|
||||
thunar-sbr-number-renamer.h \
|
||||
thunar-sbr-plugin.c \
|
||||
thunar-sbr-provider.c \
|
||||
thunar-sbr-provider.h \
|
||||
thunar-sbr-remove-renamer.c \
|
||||
thunar-sbr-remove-renamer.h \
|
||||
thunar-sbr-replace-renamer.c \
|
||||
thunar-sbr-replace-renamer.h
|
||||
|
||||
thunar_sbr_la_CFLAGS = \
|
||||
$(EXIF_CFLAGS) \
|
||||
$(EXO_CFLAGS) \
|
||||
$(GLIB_CFLAGS) \
|
||||
$(PCRE2_CFLAGS) \
|
||||
$(PLATFORM_CFLAGS)
|
||||
|
||||
thunar_sbr_la_LDFLAGS = \
|
||||
-avoid-version \
|
||||
-export-dynamic \
|
||||
-no-undefined \
|
||||
-export-symbols-regex "^thunar_extension_(shutdown|initialize|list_types)" \
|
||||
-module \
|
||||
$(PLATFORM_LDFLAGS)
|
||||
|
||||
thunar_sbr_la_LIBADD = \
|
||||
$(top_builddir)/thunarx/libthunarx-$(THUNARX_VERSION_API).la \
|
||||
$(EXIF_LIBS) \
|
||||
$(EXO_LIBS) \
|
||||
$(GLIB_LIBS) \
|
||||
$(PCRE2_LIBS)
|
||||
|
||||
thunar_sbr_la_DEPENDENCIES = \
|
||||
$(top_builddir)/thunarx/libthunarx-$(THUNARX_VERSION_API).la
|
||||
|
||||
EXTRA_DIST = \
|
||||
README.md
|
||||
|
||||
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
|
||||
24
plugins/thunar-sbr/README.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
Thunar Simple Builtin Renamers (thunar-sbr)
|
||||
===========================================
|
||||
|
||||
Thunar-sbr is an extension to Thunar, which includes a bunch of simple renamers for the bulk rename dialog:
|
||||
|
||||
* Insert / Overwrite
|
||||
* Insert Date / Time
|
||||
* Numbering
|
||||
* Remove Characters
|
||||
* Search & Replace
|
||||
* Uppercase / Lowercase
|
||||
|
||||
By default the thunar-sbr extension will be installed, but as with every extension, it will slightly increase the resource usage of Thunar (this shouldn't be a real problem unless you're targeting an embedded system), and so you can pass `--disable-sbr-plugin` to configure and the plugin won't be built and installed. Since it is an extension, you can also easily uninstall it afterwards by removing the thunar-sbr.so file from the lib/thunarx-2/ directory of your installation (be sure to quit Thunar before removing files though).
|
||||
|
||||
|
||||
Regular Expressions
|
||||
-------------------
|
||||
|
||||
The "Search & Replace" renamer can be built with support for regular expressions using the Perl-compatible regular expression (PCRE) library version 6.0 or above. The reasons to use PCRE instead of the POSIX regular expressions, that are part of the system C library, are:
|
||||
|
||||
* PCRE supports UTF-8, which Thunar uses internally for all user visible texts (be sure to enable this when installing PCRE using the `--enable-utf8` configure switch).
|
||||
* PCRE uses a more consistent syntax, which is easier to understand for most people.
|
||||
|
||||
|
||||
319
plugins/thunar-sbr/thunar-sbr-case-renamer.c
Normal file
|
|
@ -0,0 +1,319 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <exo/exo.h>
|
||||
#include <thunar-sbr/thunar-sbr-case-renamer.h>
|
||||
|
||||
|
||||
|
||||
/* Property identifiers */
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_MODE,
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_case_renamer_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static void
|
||||
thunar_sbr_case_renamer_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static gchar *
|
||||
thunar_sbr_case_renamer_process (ThunarxRenamer *renamer,
|
||||
ThunarxFileInfo *file,
|
||||
const gchar *text,
|
||||
guint idx);
|
||||
|
||||
|
||||
|
||||
struct _ThunarSbrCaseRenamerClass
|
||||
{
|
||||
ThunarxRenamerClass __parent__;
|
||||
};
|
||||
|
||||
struct _ThunarSbrCaseRenamer
|
||||
{
|
||||
ThunarxRenamer __parent__;
|
||||
ThunarSbrCaseRenamerMode mode;
|
||||
};
|
||||
|
||||
|
||||
|
||||
THUNARX_DEFINE_TYPE (ThunarSbrCaseRenamer, thunar_sbr_case_renamer, THUNARX_TYPE_RENAMER);
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_case_renamer_class_init (ThunarSbrCaseRenamerClass *klass)
|
||||
{
|
||||
ThunarxRenamerClass *thunarxrenamer_class;
|
||||
GObjectClass *gobject_class;
|
||||
|
||||
gobject_class = G_OBJECT_CLASS (klass);
|
||||
gobject_class->get_property = thunar_sbr_case_renamer_get_property;
|
||||
gobject_class->set_property = thunar_sbr_case_renamer_set_property;
|
||||
|
||||
thunarxrenamer_class = THUNARX_RENAMER_CLASS (klass);
|
||||
thunarxrenamer_class->process = thunar_sbr_case_renamer_process;
|
||||
|
||||
/**
|
||||
* ThunarSbrCaseRenamer:mode:
|
||||
*
|
||||
* The #ThunarSbrCaseRenamerMode for this
|
||||
* #ThunarSbrCaseRenamer instance.
|
||||
**/
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_MODE,
|
||||
g_param_spec_enum ("mode", "mode", "mode",
|
||||
THUNAR_SBR_TYPE_CASE_RENAMER_MODE,
|
||||
THUNAR_SBR_CASE_RENAMER_MODE_LOWER,
|
||||
G_PARAM_READWRITE));
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_case_renamer_init (ThunarSbrCaseRenamer *case_renamer)
|
||||
{
|
||||
AtkRelationSet *relations;
|
||||
AtkRelation *relation;
|
||||
GEnumClass *klass;
|
||||
AtkObject *object;
|
||||
GtkWidget *combo;
|
||||
GtkWidget *label;
|
||||
GtkWidget *hbox;
|
||||
guint n;
|
||||
|
||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
|
||||
gtk_box_pack_start (GTK_BOX (case_renamer), hbox, FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
label = gtk_label_new_with_mnemonic (_("Con_vert to:"));
|
||||
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
combo = gtk_combo_box_text_new ();
|
||||
klass = g_type_class_ref (THUNAR_SBR_TYPE_CASE_RENAMER_MODE);
|
||||
for (n = 0; n < klass->n_values; ++n)
|
||||
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _(klass->values[n].value_nick));
|
||||
g_object_bind_property (G_OBJECT (case_renamer), "mode", G_OBJECT (combo), "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo);
|
||||
g_type_class_unref (klass);
|
||||
gtk_widget_show (combo);
|
||||
|
||||
/* set Atk label relation for the combo */
|
||||
object = gtk_widget_get_accessible (combo);
|
||||
relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
|
||||
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
|
||||
atk_relation_set_add (relations, relation);
|
||||
g_object_unref (G_OBJECT (relation));
|
||||
g_object_unref (relations);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_case_renamer_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
ThunarSbrCaseRenamer *case_renamer = THUNAR_SBR_CASE_RENAMER (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_MODE:
|
||||
g_value_set_enum (value, thunar_sbr_case_renamer_get_mode (case_renamer));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_case_renamer_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
ThunarSbrCaseRenamer *case_renamer = THUNAR_SBR_CASE_RENAMER (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_MODE:
|
||||
thunar_sbr_case_renamer_set_mode (case_renamer, g_value_get_enum (value));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static gchar *
|
||||
tscr_utf8_strcase (const gchar *text,
|
||||
gboolean title_case)
|
||||
{
|
||||
const gchar *t;
|
||||
gboolean upper = TRUE;
|
||||
gunichar c;
|
||||
GString *result;
|
||||
|
||||
/* allocate a new string for the result */
|
||||
result = g_string_sized_new (32);
|
||||
|
||||
/* convert the input text */
|
||||
for (t = text; *t != '\0'; t = g_utf8_next_char (t))
|
||||
{
|
||||
/* check the next char */
|
||||
c = g_utf8_get_char (t);
|
||||
if (title_case && g_unichar_isspace (c))
|
||||
{
|
||||
upper = TRUE;
|
||||
}
|
||||
else if (upper && g_unichar_isalpha (c))
|
||||
{
|
||||
c = g_unichar_toupper (c);
|
||||
upper = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
c = g_unichar_tolower (c);
|
||||
}
|
||||
|
||||
/* append the char to the result */
|
||||
g_string_append_unichar (result, c);
|
||||
}
|
||||
|
||||
return g_string_free (result, FALSE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static gchar *
|
||||
thunar_sbr_case_renamer_process (ThunarxRenamer *renamer,
|
||||
ThunarxFileInfo *file,
|
||||
const gchar *text,
|
||||
guint idx)
|
||||
{
|
||||
ThunarSbrCaseRenamer *case_renamer = THUNAR_SBR_CASE_RENAMER (renamer);
|
||||
|
||||
switch (case_renamer->mode)
|
||||
{
|
||||
case THUNAR_SBR_CASE_RENAMER_MODE_LOWER:
|
||||
return g_utf8_strdown (text, -1);
|
||||
|
||||
case THUNAR_SBR_CASE_RENAMER_MODE_UPPER:
|
||||
return g_utf8_strup (text, -1);
|
||||
|
||||
case THUNAR_SBR_CASE_RENAMER_MODE_TITLE:
|
||||
return tscr_utf8_strcase (text, TRUE);
|
||||
|
||||
case THUNAR_SBR_CASE_RENAMER_MODE_FIRST_UPPER:
|
||||
return tscr_utf8_strcase (text, FALSE);
|
||||
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_case_renamer_new:
|
||||
*
|
||||
* Allocates a new #ThunarSbrCaseRenamer instance.
|
||||
*
|
||||
* Return value: the newly allocated #ThunarSbrCaseRenamer.
|
||||
**/
|
||||
ThunarSbrCaseRenamer *
|
||||
thunar_sbr_case_renamer_new (void)
|
||||
{
|
||||
return g_object_new (THUNAR_SBR_TYPE_CASE_RENAMER,
|
||||
"name", _("Uppercase / Lowercase"),
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_case_renamer_get_mode:
|
||||
* @case_renamer : a #ThunarSbrCaseRenamer.
|
||||
*
|
||||
* Returns the current #ThunarSbrCaseRenamerMode
|
||||
* for the @case_renamer.
|
||||
*
|
||||
* Return value: the current mode of @case_renamer.
|
||||
**/
|
||||
ThunarSbrCaseRenamerMode
|
||||
thunar_sbr_case_renamer_get_mode (ThunarSbrCaseRenamer *case_renamer)
|
||||
{
|
||||
g_return_val_if_fail (THUNAR_SBR_IS_CASE_RENAMER (case_renamer), THUNAR_SBR_CASE_RENAMER_MODE_LOWER);
|
||||
return case_renamer->mode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_case_renamer_set_mode:
|
||||
* @case_renamer : a #ThunarSbrCaseRenamer.
|
||||
* @mode : the new #ThunarSbrCaseRenamerMode.
|
||||
*
|
||||
* Sets the #ThunarSbrCaseRenamerMode of the @case_renamer
|
||||
* to the specified @mode.
|
||||
**/
|
||||
void
|
||||
thunar_sbr_case_renamer_set_mode (ThunarSbrCaseRenamer *case_renamer,
|
||||
ThunarSbrCaseRenamerMode mode)
|
||||
{
|
||||
g_return_if_fail (THUNAR_SBR_IS_CASE_RENAMER (case_renamer));
|
||||
|
||||
/* check if we already use that mode */
|
||||
if (G_UNLIKELY (case_renamer->mode == mode))
|
||||
return;
|
||||
|
||||
/* apply the new mode */
|
||||
case_renamer->mode = mode;
|
||||
|
||||
/* notify listeners */
|
||||
g_object_notify (G_OBJECT (case_renamer), "mode");
|
||||
|
||||
/* emit the "changed" signal */
|
||||
thunarx_renamer_changed (THUNARX_RENAMER (case_renamer));
|
||||
}
|
||||
54
plugins/thunar-sbr/thunar-sbr-case-renamer.h
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifndef __THUNAR_SBR_CASE_RENAMER_H__
|
||||
#define __THUNAR_SBR_CASE_RENAMER_H__
|
||||
|
||||
#include <thunar-sbr/thunar-sbr-enum-types.h>
|
||||
|
||||
G_BEGIN_DECLS;
|
||||
|
||||
typedef struct _ThunarSbrCaseRenamerClass ThunarSbrCaseRenamerClass;
|
||||
typedef struct _ThunarSbrCaseRenamer ThunarSbrCaseRenamer;
|
||||
|
||||
#define THUNAR_SBR_TYPE_CASE_RENAMER (thunar_sbr_case_renamer_get_type ())
|
||||
#define THUNAR_SBR_CASE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_CASE_RENAMER, ThunarSbrCaseRenamer))
|
||||
#define THUNAR_SBR_CASE_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_CASE_RENAMER, ThunarSbrCaseRenamerClass))
|
||||
#define THUNAR_SBR_IS_CASE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_CASE_RENAMER))
|
||||
#define THUNAR_SBR_IS_CASE_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_SBR_TYPE_CASE_RENAMER))
|
||||
#define THUNAR_SBR_CASE_RENAMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_CASE_RENAMER, ThunarSbrCaseRenamerClass))
|
||||
|
||||
GType
|
||||
thunar_sbr_case_renamer_get_type (void) G_GNUC_CONST;
|
||||
void
|
||||
thunar_sbr_case_renamer_register_type (ThunarxProviderPlugin *plugin);
|
||||
|
||||
ThunarSbrCaseRenamer *
|
||||
thunar_sbr_case_renamer_new (void) G_GNUC_MALLOC;
|
||||
|
||||
ThunarSbrCaseRenamerMode
|
||||
thunar_sbr_case_renamer_get_mode (ThunarSbrCaseRenamer *case_renamer);
|
||||
void
|
||||
thunar_sbr_case_renamer_set_mode (ThunarSbrCaseRenamer *case_renamer,
|
||||
ThunarSbrCaseRenamerMode mode);
|
||||
|
||||
G_END_DECLS;
|
||||
|
||||
#endif /* !__THUNAR_SBR_CASE_RENAMER_H__ */
|
||||
789
plugins/thunar-sbr/thunar-sbr-date-renamer.c
Normal file
|
|
@ -0,0 +1,789 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2007 Nick Schermer <nick@xfce.org>
|
||||
* Copyright (c) 2007 Benedikt Meurer <benny@xfce.org>
|
||||
* Copyright (c) 2009 Jannis Pohlmann <jannis@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STRING_H
|
||||
#include <string.h>
|
||||
#endif
|
||||
#ifdef HAVE_TIME_H
|
||||
#include <time.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDIO_H
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
#include <libxfce4util/libxfce4util.h>
|
||||
#include <thunar-sbr/thunar-sbr-date-renamer.h>
|
||||
|
||||
|
||||
|
||||
#ifdef HAVE_EXIF
|
||||
#include <libexif/exif-data.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* Property identifiers */
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_MODE,
|
||||
PROP_FORMAT,
|
||||
PROP_OFFSET,
|
||||
PROP_OFFSET_MODE,
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_date_renamer_finalize (GObject *object);
|
||||
static void
|
||||
thunar_sbr_date_renamer_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static void
|
||||
thunar_sbr_date_renamer_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static gchar *
|
||||
thunar_sbr_get_time_string (guint64 file_time,
|
||||
const gchar *custom_format);
|
||||
#ifdef HAVE_EXIF
|
||||
static guint64
|
||||
thunar_sbr_get_time_from_string (const gchar *string);
|
||||
#endif
|
||||
static guint64
|
||||
thunar_sbr_get_time (ThunarxFileInfo *file,
|
||||
ThunarSbrDateMode mode);
|
||||
static gchar *
|
||||
thunar_sbr_date_renamer_process (ThunarxRenamer *renamer,
|
||||
ThunarxFileInfo *file,
|
||||
const gchar *text,
|
||||
guint idx);
|
||||
|
||||
|
||||
|
||||
struct _ThunarSbrDateRenamerClass
|
||||
{
|
||||
ThunarxRenamerClass __parent__;
|
||||
};
|
||||
|
||||
struct _ThunarSbrDateRenamer
|
||||
{
|
||||
ThunarxRenamer __parent__;
|
||||
ThunarSbrDateMode mode;
|
||||
guint offset;
|
||||
ThunarSbrOffsetMode offset_mode;
|
||||
gchar *format;
|
||||
};
|
||||
|
||||
|
||||
|
||||
THUNARX_DEFINE_TYPE (ThunarSbrDateRenamer, thunar_sbr_date_renamer, THUNARX_TYPE_RENAMER);
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_date_renamer_class_init (ThunarSbrDateRenamerClass *klass)
|
||||
{
|
||||
ThunarxRenamerClass *thunarxrenamer_class;
|
||||
GObjectClass *gobject_class;
|
||||
|
||||
gobject_class = G_OBJECT_CLASS (klass);
|
||||
gobject_class->finalize = thunar_sbr_date_renamer_finalize;
|
||||
gobject_class->get_property = thunar_sbr_date_renamer_get_property;
|
||||
gobject_class->set_property = thunar_sbr_date_renamer_set_property;
|
||||
|
||||
thunarxrenamer_class = THUNARX_RENAMER_CLASS (klass);
|
||||
thunarxrenamer_class->process = thunar_sbr_date_renamer_process;
|
||||
|
||||
/**
|
||||
* ThunarSbrDateRenamer:mode:
|
||||
*
|
||||
* The #ThunarSbrDateMode to use.
|
||||
**/
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_MODE,
|
||||
g_param_spec_enum ("mode",
|
||||
"mode",
|
||||
"mode",
|
||||
THUNAR_SBR_TYPE_DATE_MODE,
|
||||
THUNAR_SBR_DATE_MODE_NOW,
|
||||
G_PARAM_READWRITE));
|
||||
|
||||
/**
|
||||
* ThunarSbrDateRenamer:format:
|
||||
*
|
||||
* The date format to insert.
|
||||
**/
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_FORMAT,
|
||||
g_param_spec_string ("format",
|
||||
"format",
|
||||
"format",
|
||||
"%Y%m%d",
|
||||
G_PARAM_CONSTRUCT | G_PARAM_READWRITE));
|
||||
|
||||
/**
|
||||
* ThunarSbrDateRenamer:offset:
|
||||
*
|
||||
* The starting offset at which to insert/overwrite.
|
||||
**/
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_OFFSET,
|
||||
g_param_spec_uint ("offset",
|
||||
"offset",
|
||||
"offset",
|
||||
0, G_MAXUINT, 0,
|
||||
G_PARAM_READWRITE));
|
||||
|
||||
/**
|
||||
* ThunarSbrDateRenamer:offset-mode:
|
||||
*
|
||||
* The offset mode for the renamer.
|
||||
**/
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_OFFSET_MODE,
|
||||
g_param_spec_enum ("offset-mode",
|
||||
"offset-mode",
|
||||
"offset-mode",
|
||||
THUNAR_SBR_TYPE_OFFSET_MODE,
|
||||
THUNAR_SBR_OFFSET_MODE_LEFT,
|
||||
G_PARAM_READWRITE));
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_date_renamer_init (ThunarSbrDateRenamer *date_renamer)
|
||||
{
|
||||
GEnumClass *klass;
|
||||
AtkRelationSet *relations;
|
||||
AtkRelation *relation;
|
||||
AtkObject *object;
|
||||
GtkWidget *grid, *hbox;
|
||||
GtkWidget *label, *combo;
|
||||
GtkWidget *spinner;
|
||||
GtkWidget *entry;
|
||||
GtkAdjustment *adjustment;
|
||||
guint n;
|
||||
|
||||
grid = gtk_grid_new ();
|
||||
gtk_grid_set_row_spacing (GTK_GRID (grid), 6);
|
||||
gtk_grid_set_column_spacing (GTK_GRID (grid), 12);
|
||||
gtk_box_pack_start (GTK_BOX (date_renamer), grid, TRUE, TRUE, 0);
|
||||
gtk_widget_show (grid);
|
||||
|
||||
label = gtk_label_new_with_mnemonic (_("Insert _time:"));
|
||||
gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);
|
||||
gtk_widget_show (label);
|
||||
|
||||
combo = gtk_combo_box_text_new ();
|
||||
klass = g_type_class_ref (THUNAR_SBR_TYPE_DATE_MODE);
|
||||
for (n = 0; n < klass->n_values; ++n)
|
||||
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _(klass->values[n].value_nick));
|
||||
g_object_bind_property (G_OBJECT (date_renamer), "mode", G_OBJECT (combo), "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
|
||||
gtk_grid_attach (GTK_GRID (grid), combo, 1, 0, 1, 1);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo);
|
||||
g_type_class_unref (klass);
|
||||
gtk_widget_show (combo);
|
||||
|
||||
/* set Atk label relation for the combo */
|
||||
object = gtk_widget_get_accessible (combo);
|
||||
relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
|
||||
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
|
||||
atk_relation_set_add (relations, relation);
|
||||
g_object_unref (G_OBJECT (relation));
|
||||
g_object_unref (relations);
|
||||
|
||||
label = gtk_label_new_with_mnemonic (_("_Format:"));
|
||||
gtk_grid_attach (GTK_GRID (grid), label, 2, 0, 1, 1);
|
||||
gtk_widget_show (label);
|
||||
|
||||
entry = gtk_entry_new ();
|
||||
g_object_bind_property (G_OBJECT (entry), "text", G_OBJECT (date_renamer), "format", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
|
||||
gtk_widget_set_hexpand (GTK_WIDGET (entry), TRUE);
|
||||
gtk_grid_attach (GTK_GRID (grid), entry, 3, 0, 1, 1);
|
||||
gtk_widget_set_tooltip_text (entry,
|
||||
_("The format describes the date and time parts to insert "
|
||||
"into the file name. For example, %Y will be substituted "
|
||||
"with the year, %m with the month and %d with the day. "
|
||||
"See the documentation of the date utility for additional "
|
||||
"information."));
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
|
||||
gtk_widget_show (entry);
|
||||
|
||||
/* set Atk label relation for the entry */
|
||||
object = gtk_widget_get_accessible (entry);
|
||||
relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
|
||||
relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
|
||||
atk_relation_set_add (relations, relation);
|
||||
g_object_unref (G_OBJECT (relation));
|
||||
g_object_unref (relations);
|
||||
|
||||
label = gtk_label_new_with_mnemonic (_("_At position:"));
|
||||
gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1);
|
||||
gtk_widget_show (label);
|
||||
|
||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
|
||||
gtk_grid_attach (GTK_GRID (grid), hbox, 1, 1, 3, 1);
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
spinner = gtk_spin_button_new_with_range (0u, G_MAXUINT, 1u);
|
||||
gtk_entry_set_width_chars (GTK_ENTRY (spinner), 4);
|
||||
gtk_entry_set_alignment (GTK_ENTRY (spinner), 1.0f);
|
||||
gtk_entry_set_activates_default (GTK_ENTRY (spinner), TRUE);
|
||||
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (spinner), 0);
|
||||
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinner), TRUE);
|
||||
gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (spinner), TRUE);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), spinner, FALSE, FALSE, 0);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), spinner);
|
||||
gtk_widget_show (spinner);
|
||||
|
||||
adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (spinner));
|
||||
g_object_bind_property (G_OBJECT (date_renamer), "offset", G_OBJECT (adjustment), "value", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
|
||||
|
||||
combo = gtk_combo_box_text_new ();
|
||||
klass = g_type_class_ref (THUNAR_SBR_TYPE_OFFSET_MODE);
|
||||
for (n = 0; n < klass->n_values; ++n)
|
||||
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _(klass->values[n].value_nick));
|
||||
g_object_bind_property (G_OBJECT (date_renamer), "offset-mode", G_OBJECT (combo), "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
|
||||
g_type_class_unref (klass);
|
||||
gtk_widget_show (combo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_date_renamer_finalize (GObject *object)
|
||||
{
|
||||
ThunarSbrDateRenamer *date_renamer = THUNAR_SBR_DATE_RENAMER (object);
|
||||
|
||||
/* release the format */
|
||||
g_free (date_renamer->format);
|
||||
|
||||
(*G_OBJECT_CLASS (thunar_sbr_date_renamer_parent_class)->finalize) (object);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_date_renamer_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
ThunarSbrDateRenamer *date_renamer = THUNAR_SBR_DATE_RENAMER (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_MODE:
|
||||
g_value_set_enum (value, thunar_sbr_date_renamer_get_mode (date_renamer));
|
||||
break;
|
||||
|
||||
case PROP_FORMAT:
|
||||
g_value_set_string (value, thunar_sbr_date_renamer_get_format (date_renamer));
|
||||
break;
|
||||
|
||||
case PROP_OFFSET:
|
||||
g_value_set_uint (value, thunar_sbr_date_renamer_get_offset (date_renamer));
|
||||
break;
|
||||
|
||||
case PROP_OFFSET_MODE:
|
||||
g_value_set_enum (value, thunar_sbr_date_renamer_get_offset_mode (date_renamer));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
thunar_sbr_date_renamer_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
ThunarSbrDateRenamer *date_renamer = THUNAR_SBR_DATE_RENAMER (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_MODE:
|
||||
thunar_sbr_date_renamer_set_mode (date_renamer, g_value_get_enum (value));
|
||||
break;
|
||||
|
||||
case PROP_FORMAT:
|
||||
thunar_sbr_date_renamer_set_format (date_renamer, g_value_get_string (value));
|
||||
break;
|
||||
|
||||
case PROP_OFFSET:
|
||||
thunar_sbr_date_renamer_set_offset (date_renamer, g_value_get_uint (value));
|
||||
break;
|
||||
|
||||
case PROP_OFFSET_MODE:
|
||||
thunar_sbr_date_renamer_set_offset_mode (date_renamer, g_value_get_enum (value));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static gchar *
|
||||
thunar_sbr_get_time_string (guint64 file_time,
|
||||
const gchar *format)
|
||||
{
|
||||
struct tm *tm;
|
||||
time_t _time;
|
||||
gchar *converted;
|
||||
gchar buffer[1024];
|
||||
gint length;
|
||||
|
||||
_time = (time_t) file_time;
|
||||
|
||||
/* determine the local file time */
|
||||
tm = localtime (&_time);
|
||||
|
||||
/* conver the format to the current locale */
|
||||
converted = g_locale_from_utf8 (format, -1, NULL, NULL, NULL);
|
||||
|
||||
/* parse the format */
|
||||
length = strftime (buffer, sizeof (buffer), converted, tm);
|
||||
|
||||
/* cleanup */
|
||||
g_free (converted);
|
||||
|
||||
/* check if strftime succeeded */
|
||||
if (G_UNLIKELY (length == 0))
|
||||
return NULL;
|
||||
|
||||
/* return the utf-8 string */
|
||||
return g_locale_to_utf8 (buffer, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef HAVE_EXIF
|
||||
static guint64
|
||||
thunar_sbr_get_time_from_string (const gchar *string)
|
||||
{
|
||||
struct tm tm;
|
||||
|
||||
#ifdef HAVE_STRPTIME
|
||||
/* parse the string with strptime */
|
||||
strptime (string, "%Y:%m:%d %T", &tm);
|
||||
#else
|
||||
gint result;
|
||||
gint year, month, day, hour, min, sec;
|
||||
|
||||
result = sscanf (string, "%d:%d:%d %d:%d:%d", &year, &month, &day, &hour, &min, &sec);
|
||||
|
||||
/* only continue when atleast the date is parsed succesfully */
|
||||
if (G_LIKELY (result >= 3 && g_date_valid_dmy (day, month, year)))
|
||||
{
|
||||
/* be sure to start with a clean tm */
|
||||
memset (&tm, 0, sizeof (tm));
|
||||
|
||||
/* set the date */
|
||||
tm.tm_year = year - 1900;
|
||||
tm.tm_mon = month - 1;
|
||||
tm.tm_mday = day;
|
||||
|
||||
/* set the time */
|
||||
tm.tm_hour = result >= 4 ? hour : 0;
|
||||
tm.tm_min = result >= 5 ? min : 0;
|
||||
tm.tm_sec = result >= 6 ? sec : 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
/* return the local time */
|
||||
return mktime (&tm);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
static guint64
|
||||
thunar_sbr_get_time (ThunarxFileInfo *file,
|
||||
ThunarSbrDateMode mode)
|
||||
{
|
||||
GFileInfo *file_info;
|
||||
guint64 file_time = 0;
|
||||
#ifdef HAVE_EXIF
|
||||
gchar *uri, *filename;
|
||||
ExifEntry *exif_entry;
|
||||
ExifData *exif_data;
|
||||
gchar exif_buffer[128];
|
||||
#endif
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case THUNAR_SBR_DATE_MODE_NOW:
|
||||
/* set the time to the current time */
|
||||
file_time = time (NULL);
|
||||
break;
|
||||
|
||||
case THUNAR_SBR_DATE_MODE_ATIME:
|
||||
case THUNAR_SBR_DATE_MODE_MTIME:
|
||||
/* get the file info */
|
||||
file_info = thunarx_file_info_get_file_info (file);
|
||||
|
||||
/* get the time from the info */
|
||||
if (mode == THUNAR_SBR_DATE_MODE_ATIME)
|
||||
{
|
||||
file_time = g_file_info_get_attribute_uint64 (file_info,
|
||||
G_FILE_ATTRIBUTE_TIME_ACCESS);
|
||||
}
|
||||
else
|
||||
{
|
||||
file_time = g_file_info_get_attribute_uint64 (file_info,
|
||||
G_FILE_ATTRIBUTE_TIME_MODIFIED);
|
||||
}
|
||||
|
||||
/* release the file info */
|
||||
g_object_unref (file_info);
|
||||
break;
|
||||
|
||||
#ifdef HAVE_EXIF
|
||||
case THUNAR_SBR_DATE_MODE_TAKEN:
|
||||
/* get the uri */
|
||||
uri = thunarx_file_info_get_uri (file);
|
||||
if (G_LIKELY (uri != NULL))
|
||||
{
|
||||
/* determine the local path of the file */
|
||||
filename = g_filename_from_uri (uri, NULL, NULL);
|
||||
if (G_LIKELY (filename != NULL))
|
||||
{
|
||||
/* try to load the exif data for the file */
|
||||
exif_data = exif_data_new_from_file (filename);
|
||||
if (G_LIKELY (exif_data != NULL))
|
||||
{
|
||||
/* lookup the entry for the tag, fallback on less common ones */
|
||||
exif_entry = exif_data_get_entry (exif_data, EXIF_TAG_DATE_TIME);
|
||||
|
||||
if (exif_entry == NULL)
|
||||
exif_entry = exif_data_get_entry (exif_data, EXIF_TAG_DATE_TIME_ORIGINAL);
|
||||
|
||||
if (exif_entry == NULL)
|
||||
exif_entry = exif_data_get_entry (exif_data, EXIF_TAG_DATE_TIME_DIGITIZED);
|
||||
|
||||
if (G_LIKELY (exif_entry != NULL))
|
||||
{
|
||||
/* determine the value */
|
||||
if (exif_entry_get_value (exif_entry, exif_buffer, sizeof (exif_buffer)) != NULL)
|
||||
file_time = thunar_sbr_get_time_from_string (exif_buffer);
|
||||
}
|
||||
|
||||
/* cleanup */
|
||||
exif_data_free (exif_data);
|
||||
}
|
||||
|
||||
/* cleanup */
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
/* cleanup */
|
||||
g_free (uri);
|
||||
}
|
||||
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
return file_time;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static gchar *
|
||||
thunar_sbr_date_renamer_process (ThunarxRenamer *renamer,
|
||||
ThunarxFileInfo *file,
|
||||
const gchar *text,
|
||||
guint idx)
|
||||
{
|
||||
ThunarSbrDateRenamer *date_renamer = THUNAR_SBR_DATE_RENAMER (renamer);
|
||||
gchar *string;
|
||||
guint64 file_time;
|
||||
const gchar *s;
|
||||
GString *result;
|
||||
guint text_length;
|
||||
guint offset;
|
||||
|
||||
/* return when there is no text in the custom format entry */
|
||||
if (G_UNLIKELY (date_renamer->format == NULL || *date_renamer->format == '\0'))
|
||||
return g_strdup (text);
|
||||
|
||||
/* determine the input text length */
|
||||
text_length = g_utf8_strlen (text, -1);
|
||||
|
||||
/* determine the real offset and check if it's valid */
|
||||
offset = (date_renamer->offset_mode == THUNAR_SBR_OFFSET_MODE_LEFT) ? date_renamer->offset : (text_length - date_renamer->offset);
|
||||
if (G_UNLIKELY (offset > text_length))
|
||||
return g_strdup (text);
|
||||
|
||||
/* get the file time */
|
||||
file_time = thunar_sbr_get_time (file, date_renamer->mode);
|
||||
if (file_time == 0)
|
||||
return g_strdup (text);
|
||||
|
||||
/* allocate space for the result */
|
||||
result = g_string_sized_new (2 * text_length);
|
||||
|
||||
/* determine the text pointer for the offset */
|
||||
s = g_utf8_offset_to_pointer (text, offset);
|
||||
|
||||
/* add the text before the insert/overwrite offset */
|
||||
g_string_append_len (result, text, s - text);
|
||||
|
||||
/* parse the time string */
|
||||
string = thunar_sbr_get_time_string (file_time, date_renamer->format);
|
||||
if (string)
|
||||
{
|
||||
g_string_append (result, string);
|
||||
g_free (string);
|
||||
}
|
||||
|
||||
/* append the remaining text */
|
||||
g_string_append (result, s);
|
||||
|
||||
/* return the result */
|
||||
return g_string_free (result, FALSE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_date_renamer_new:
|
||||
*
|
||||
* Allocates a new #ThunarSbrDateRenamer instance.
|
||||
*
|
||||
* Return value: the newly allocated #ThunarSbrDateRenamer.
|
||||
**/
|
||||
ThunarSbrDateRenamer *
|
||||
thunar_sbr_date_renamer_new (void)
|
||||
{
|
||||
return g_object_new (THUNAR_SBR_TYPE_DATE_RENAMER,
|
||||
"name", _("Insert Date / Time"),
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_date_renamer_get_mode:
|
||||
* @date_renamer : a #ThunarSbrDateRenamer.
|
||||
*
|
||||
* Returns the mode of the @date_renamer.
|
||||
*
|
||||
* Return value: the mode of @date_renamer.
|
||||
**/
|
||||
ThunarSbrDateMode
|
||||
thunar_sbr_date_renamer_get_mode (ThunarSbrDateRenamer *date_renamer)
|
||||
{
|
||||
g_return_val_if_fail (THUNAR_SBR_IS_DATE_RENAMER (date_renamer), THUNAR_SBR_DATE_MODE_NOW);
|
||||
|
||||
return date_renamer->mode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_date_renamer_set_mode:
|
||||
* @date_renamer : a #ThunarSbrDateRenamer.
|
||||
* @mode : the new #ThunarSbrDateMode for @date_renamer.
|
||||
*
|
||||
* Sets the mode of @date_renamer to @mode.
|
||||
**/
|
||||
void
|
||||
thunar_sbr_date_renamer_set_mode (ThunarSbrDateRenamer *date_renamer,
|
||||
ThunarSbrDateMode mode)
|
||||
{
|
||||
g_return_if_fail (THUNAR_SBR_IS_DATE_RENAMER (date_renamer));
|
||||
|
||||
/* check if we have a new mode */
|
||||
if (G_LIKELY (date_renamer->mode != mode))
|
||||
{
|
||||
/* apply the new mode */
|
||||
date_renamer->mode = mode;
|
||||
|
||||
/* update the renamer */
|
||||
thunarx_renamer_changed (THUNARX_RENAMER (date_renamer));
|
||||
|
||||
/* notify listeners */
|
||||
g_object_notify (G_OBJECT (date_renamer), "mode");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_date_renamer_get_format:
|
||||
* @date_renamer : a #ThunarSbrDateRenamer.
|
||||
*
|
||||
* Returns the format for the @date_renamer.
|
||||
*
|
||||
* Return value: the format for @date_renamer.
|
||||
**/
|
||||
const gchar *
|
||||
thunar_sbr_date_renamer_get_format (ThunarSbrDateRenamer *date_renamer)
|
||||
{
|
||||
g_return_val_if_fail (THUNAR_SBR_IS_DATE_RENAMER (date_renamer), NULL);
|
||||
|
||||
return date_renamer->format;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_date_renamer_set_format:
|
||||
* @date_renamer : a #ThunarSbrDateRenamer.
|
||||
* @format : the new format for @date_renamer.
|
||||
*
|
||||
* Sets the format for @date_renamer to @format.
|
||||
**/
|
||||
void
|
||||
thunar_sbr_date_renamer_set_format (ThunarSbrDateRenamer *date_renamer,
|
||||
const gchar *format)
|
||||
{
|
||||
g_return_if_fail (THUNAR_SBR_IS_DATE_RENAMER (date_renamer));
|
||||
|
||||
/* check if we have a new format */
|
||||
if (G_LIKELY (g_strcmp0 (date_renamer->format, format) != 0))
|
||||
{
|
||||
/* apply the new format */
|
||||
g_free (date_renamer->format);
|
||||
date_renamer->format = g_strdup (format);
|
||||
|
||||
/* update the renamer */
|
||||
thunarx_renamer_changed (THUNARX_RENAMER (date_renamer));
|
||||
|
||||
/* notify listeners */
|
||||
g_object_notify (G_OBJECT (date_renamer), "format");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_date_renamer_get_offset:
|
||||
* @date_renamer : a #ThunarSbrInsertRenamer.
|
||||
*
|
||||
* Returns the offset for the @date_renamer.
|
||||
*
|
||||
* Return value: the offset for @date_renamer.
|
||||
**/
|
||||
guint
|
||||
thunar_sbr_date_renamer_get_offset (ThunarSbrDateRenamer *date_renamer)
|
||||
{
|
||||
g_return_val_if_fail (THUNAR_SBR_IS_DATE_RENAMER (date_renamer), 0);
|
||||
return date_renamer->offset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_date_renamer_set_offset:
|
||||
* @date_renamer : a #ThunarSbrInsertRenamer.
|
||||
* @offset : the new offset for @date_renamer.
|
||||
*
|
||||
* Sets the offset for @date_renamer to @offset.
|
||||
**/
|
||||
void
|
||||
thunar_sbr_date_renamer_set_offset (ThunarSbrDateRenamer *date_renamer,
|
||||
guint offset)
|
||||
{
|
||||
g_return_if_fail (THUNAR_SBR_IS_DATE_RENAMER (date_renamer));
|
||||
|
||||
/* check if we have a new offset */
|
||||
if (G_LIKELY (date_renamer->offset != offset))
|
||||
{
|
||||
/* apply the new offset */
|
||||
date_renamer->offset = offset;
|
||||
|
||||
/* update the renamer */
|
||||
thunarx_renamer_changed (THUNARX_RENAMER (date_renamer));
|
||||
|
||||
/* notify listeners */
|
||||
g_object_notify (G_OBJECT (date_renamer), "offset");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_date_renamer_get_offset_mode:
|
||||
* @date_renamer : a #ThunarSbrInsertRenamer.
|
||||
*
|
||||
* Returns the offset mode for the @date_renamer.
|
||||
*
|
||||
* Return value: the offset mode for @date_renamer.
|
||||
**/
|
||||
ThunarSbrOffsetMode
|
||||
thunar_sbr_date_renamer_get_offset_mode (ThunarSbrDateRenamer *date_renamer)
|
||||
{
|
||||
g_return_val_if_fail (THUNAR_SBR_IS_DATE_RENAMER (date_renamer), THUNAR_SBR_OFFSET_MODE_LEFT);
|
||||
return date_renamer->offset_mode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* thunar_sbr_date_renamer_set_offset_mode:
|
||||
* @date_renamer : a #ThunarSbrInsertRenamer.
|
||||
* @offset_mode : the new offset mode for @date_renamer.
|
||||
*
|
||||
* Sets the offset mode for @date_renamer to @offset_mode.
|
||||
**/
|
||||
void
|
||||
thunar_sbr_date_renamer_set_offset_mode (ThunarSbrDateRenamer *date_renamer,
|
||||
ThunarSbrOffsetMode offset_mode)
|
||||
{
|
||||
g_return_if_fail (THUNAR_SBR_IS_DATE_RENAMER (date_renamer));
|
||||
|
||||
/* check if we have a new setting */
|
||||
if (G_LIKELY (date_renamer->offset_mode != offset_mode))
|
||||
{
|
||||
/* apply the new setting */
|
||||
date_renamer->offset_mode = offset_mode;
|
||||
|
||||
/* update the renamer */
|
||||
thunarx_renamer_changed (THUNARX_RENAMER (date_renamer));
|
||||
|
||||
/* notify listeners */
|
||||
g_object_notify (G_OBJECT (date_renamer), "offset-mode");
|
||||
}
|
||||
}
|
||||
74
plugins/thunar-sbr/thunar-sbr-date-renamer.h
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2007 Nick Schermer <nick@xfce.org>
|
||||
* Copyright (c) 2007 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifndef __THUNAR_SBR_DATE_RENAMER_H__
|
||||
#define __THUNAR_SBR_DATE_RENAMER_H__
|
||||
|
||||
#include <thunar-sbr/thunar-sbr-enum-types.h>
|
||||
|
||||
G_BEGIN_DECLS;
|
||||
|
||||
typedef struct _ThunarSbrDateRenamerClass ThunarSbrDateRenamerClass;
|
||||
typedef struct _ThunarSbrDateRenamer ThunarSbrDateRenamer;
|
||||
|
||||
#define THUNAR_SBR_TYPE_DATE_RENAMER (thunar_sbr_date_renamer_get_type ())
|
||||
#define THUNAR_SBR_DATE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_SBR_TYPE_DATE_RENAMER, ThunarSbrDateRenamer))
|
||||
#define THUNAR_SBR_DATE_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_SBR_TYPE_DATE_RENAMER, ThunarSbrDateRenamerClass))
|
||||
#define THUNAR_SBR_IS_DATE_RENAMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_SBR_TYPE_DATE_RENAMER))
|
||||
#define THUNAR_SBR_IS_DATE_RENAMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_SBR_TYPE_DATE_RENAMER))
|
||||
#define THUNAR_SBR_DATE_RENAMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_SBR_TYPE_DATE_RENAMER, ThunarSbrDateRenamerClass))
|
||||
|
||||
GType
|
||||
thunar_sbr_date_renamer_get_type (void) G_GNUC_CONST;
|
||||
|
||||
void
|
||||
thunar_sbr_date_renamer_register_type (ThunarxProviderPlugin *plugin);
|
||||
|
||||
ThunarSbrDateRenamer *
|
||||
thunar_sbr_date_renamer_new (void) G_GNUC_MALLOC;
|
||||
|
||||
ThunarSbrDateMode
|
||||
thunar_sbr_date_renamer_get_mode (ThunarSbrDateRenamer *date_renamer);
|
||||
void
|
||||
thunar_sbr_date_renamer_set_mode (ThunarSbrDateRenamer *date_renamer,
|
||||
ThunarSbrDateMode mode);
|
||||
|
||||
const gchar *
|
||||
thunar_sbr_date_renamer_get_format (ThunarSbrDateRenamer *date_renamer);
|
||||
void
|
||||
thunar_sbr_date_renamer_set_format (ThunarSbrDateRenamer *date_renamer,
|
||||
const gchar *format);
|
||||
|
||||
guint
|
||||
thunar_sbr_date_renamer_get_offset (ThunarSbrDateRenamer *date_renamer);
|
||||
void
|
||||
thunar_sbr_date_renamer_set_offset (ThunarSbrDateRenamer *date_renamer,
|
||||
guint offset);
|
||||
|
||||
ThunarSbrOffsetMode
|
||||
thunar_sbr_date_renamer_get_offset_mode (ThunarSbrDateRenamer *date_renamer);
|
||||
void
|
||||
thunar_sbr_date_renamer_set_offset_mode (ThunarSbrDateRenamer *date_renamer,
|
||||
ThunarSbrOffsetMode offset_mode);
|
||||
|
||||
G_END_DECLS;
|
||||
|
||||
#endif /* !__THUNAR_SBR_DATE_RENAMER_H__ */
|
||||
154
plugins/thunar-sbr/thunar-sbr-enum-types.c
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <glib/gi18n-lib.h>
|
||||
#include <thunar-sbr/thunar-sbr-enum-types.h>
|
||||
|
||||
|
||||
|
||||
static GType case_renamer_mode_type;
|
||||
static GType insert_mode_type;
|
||||
static GType number_mode_type;
|
||||
static GType offset_mode_type;
|
||||
static GType text_mode_type;
|
||||
static GType date_mode_type;
|
||||
|
||||
|
||||
|
||||
GType
|
||||
thunar_sbr_case_renamer_mode_get_type (void)
|
||||
{
|
||||
return case_renamer_mode_type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
GType
|
||||
thunar_sbr_insert_mode_get_type (void)
|
||||
{
|
||||
return insert_mode_type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
GType
|
||||
thunar_sbr_number_mode_get_type (void)
|
||||
{
|
||||
return number_mode_type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
GType
|
||||
thunar_sbr_offset_mode_get_type (void)
|
||||
{
|
||||
return offset_mode_type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
GType
|
||||
thunar_sbr_text_mode_get_type (void)
|
||||
{
|
||||
return text_mode_type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
GType
|
||||
thunar_sbr_date_mode_get_type (void)
|
||||
{
|
||||
return date_mode_type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
thunar_sbr_register_enum_types (ThunarxProviderPlugin *plugin)
|
||||
{
|
||||
/* clang-format off */
|
||||
|
||||
static const GEnumValue case_renamer_mode_values[] =
|
||||
{
|
||||
{ THUNAR_SBR_CASE_RENAMER_MODE_LOWER, "THUNAR_SBR_CASE_RENAMER_MODE_LOWER", N_ ("lowercase"), },
|
||||
{ THUNAR_SBR_CASE_RENAMER_MODE_UPPER, "THUNAR_SBR_CASE_RENAMER_MODE_UPPER", N_ ("UPPERCASE"), },
|
||||
{ THUNAR_SBR_CASE_RENAMER_MODE_TITLE, "THUNAR_SBR_CASE_RENAMER_MODE_TITLE", N_ ("Title Case"), },
|
||||
{ THUNAR_SBR_CASE_RENAMER_MODE_FIRST_UPPER, "THUNAR_SBR_CASE_RENAMER_MODE_FIRST_UPPER", N_ ("First character uppercase"), },
|
||||
{ 0, NULL, NULL, },
|
||||
};
|
||||
|
||||
static const GEnumValue insert_mode_values[] =
|
||||
{
|
||||
{ THUNAR_SBR_INSERT_MODE_INSERT, "THUNAR_SBR_INSERT_MODE_INSERT", N_ ("Insert"), },
|
||||
{ THUNAR_SBR_INSERT_MODE_OVERWRITE, "THUNAR_SBR_INSERT_MODE_OVERWRITE", N_ ("Overwrite"), },
|
||||
{ 0, NULL, NULL, },
|
||||
};
|
||||
|
||||
static const GEnumValue number_mode_values[] =
|
||||
{
|
||||
{ THUNAR_SBR_NUMBER_MODE_123, "THUNAR_SBR_NUMBER_MODE_123", N_ ("1, 2, 3, ..."), },
|
||||
{ THUNAR_SBR_NUMBER_MODE_010203, "THUNAR_SBR_NUMBER_MODE_010203", N_ ("01, 02, 03, ..."), },
|
||||
{ THUNAR_SBR_NUMBER_MODE_001002003, "THUNAR_SBR_NUMBER_MODE_001002003", N_ ("001, 002, 003, ..."), },
|
||||
{ THUNAR_SBR_NUMBER_MODE_000100020003, "THUNAR_SBR_NUMBER_MODE_000100020003", N_ ("0001, 0002, 0003, ..."), },
|
||||
{ THUNAR_SBR_NUMBER_MODE_000010000200003, "THUNAR_SBR_NUMBER_MODE_000010000200003", N_ ("00001, 00002, 00003, ..."), },
|
||||
{ THUNAR_SBR_NUMBER_MODE_ABC, "THUNAR_SBR_NUMBER_MODE_ABC", N_ ("a, b, c, d, ..."), },
|
||||
{ 0, NULL, NULL, },
|
||||
};
|
||||
|
||||
static const GEnumValue offset_mode_values[] =
|
||||
{
|
||||
{ THUNAR_SBR_OFFSET_MODE_LEFT, "THUNAR_SBR_OFFSET_MODE_LEFT", N_ ("From the front (left)"), },
|
||||
{ THUNAR_SBR_OFFSET_MODE_RIGHT, "THUNAR_SBR_OFFSET_MODE_RIGHT", N_ ("From the back (right)"), },
|
||||
{ 0, NULL, NULL, },
|
||||
};
|
||||
|
||||
static const GEnumValue text_mode_values[] =
|
||||
{
|
||||
{ THUNAR_SBR_TEXT_MODE_OTN, "THUNAR_SBR_TEXT_MODE_OTN", N_ ("Old Name - Text - Number"), },
|
||||
{ THUNAR_SBR_TEXT_MODE_NTO, "THUNAR_SBR_TEXT_MODE_NTO", N_ ("Number - Text - Old Name"), },
|
||||
{ THUNAR_SBR_TEXT_MODE_TN, "THUNAR_SBR_TEXT_MODE_TN", N_ ("Text - Number"), },
|
||||
{ THUNAR_SBR_TEXT_MODE_NT, "THUNAR_SBR_TEXT_MODE_NT", N_ ("Number - Text"), },
|
||||
{ 0, NULL, NULL, },
|
||||
};
|
||||
|
||||
static const GEnumValue date_mode_values[] =
|
||||
{
|
||||
{ THUNAR_SBR_DATE_MODE_NOW, "THUNAR_SBR_DATE_MODE_NOW", N_ ("Current"), },
|
||||
{ THUNAR_SBR_DATE_MODE_ATIME, "THUNAR_SBR_DATE_MODE_ATIME", N_ ("Date Accessed"), },
|
||||
{ THUNAR_SBR_DATE_MODE_MTIME, "THUNAR_SBR_DATE_MODE_MTIME", N_ ("Date Modified"), },
|
||||
#ifdef HAVE_EXIF
|
||||
{ THUNAR_SBR_DATE_MODE_TAKEN, "THUNAR_SBR_DATE_MODE_TAKEN", N_ ("Date Picture Taken"), },
|
||||
#endif
|
||||
{ 0, NULL, NULL, },
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
|
||||
case_renamer_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrCaseRenamerMode", case_renamer_mode_values);
|
||||
insert_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrInsertMode", insert_mode_values);
|
||||
number_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrNumberMode", number_mode_values);
|
||||
offset_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrOffsetMode", offset_mode_values);
|
||||
text_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrTextMode", text_mode_values);
|
||||
date_mode_type = thunarx_provider_plugin_register_enum (plugin, "ThunarSbrDateMode", date_mode_values);
|
||||
}
|
||||
170
plugins/thunar-sbr/thunar-sbr-enum-types.h
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
/* vi:set et ai sw=2 sts=2 ts=2: */
|
||||
/*-
|
||||
* Copyright (c) 2006 Benedikt Meurer <benny@xfce.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library 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
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library 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.
|
||||
*/
|
||||
|
||||
#ifndef __THUNAR_SBR_ENUM_TYPES_H__
|
||||
#define __THUNAR_SBR_ENUM_TYPES_H__
|
||||
|
||||
#include <thunarx/thunarx.h>
|
||||
|
||||
G_BEGIN_DECLS;
|
||||
|
||||
#define THUNAR_SBR_TYPE_CASE_RENAMER_MODE (thunar_sbr_case_renamer_mode_get_type ())
|
||||
|
||||
/**
|
||||
* ThunarSbrCaseRenamerMode:
|
||||
* @THUNAR_SBR_CASE_RENAMER_MODE_LOWER : convert to lower case.
|
||||
* @THUNAR_SBR_CASE_RENAMER_MODE_UPPER : convert to upper case.
|
||||
* @THUNAR_SBR_CASE_RENAMER_MODE_TITLE : convert to title case.
|
||||
* @THUNAR_SBR_CASE_RENAMER_MODE_FIRST_UPPER : convert to First character uppercase.
|
||||
*
|
||||
* The operation mode for the #ThunarSbrCaseRenamer.
|
||||
**/
|
||||
typedef enum
|
||||
{
|
||||
THUNAR_SBR_CASE_RENAMER_MODE_LOWER,
|
||||
THUNAR_SBR_CASE_RENAMER_MODE_UPPER,
|
||||
THUNAR_SBR_CASE_RENAMER_MODE_TITLE,
|
||||
THUNAR_SBR_CASE_RENAMER_MODE_FIRST_UPPER,
|
||||
} ThunarSbrCaseRenamerMode;
|
||||
|
||||
GType
|
||||
thunar_sbr_case_renamer_mode_get_type (void) G_GNUC_CONST;
|
||||
|
||||
|
||||
#define THUNAR_SBR_TYPE_INSERT_MODE (thunar_sbr_insert_mode_get_type ())
|
||||
|
||||
/**
|
||||
* ThunarSbrInsertMode:
|
||||
* @THUNAR_SBR_INSERT_MODE_INSERT : insert characters.
|
||||
* @THUNAR_SBR_INSERT_MODE_OVERWRITE : overwrite existing characters.
|
||||
*
|
||||
* The operation mode for the #ThunarSbrInsertRenamer.
|
||||
**/
|
||||
typedef enum
|
||||
{
|
||||
THUNAR_SBR_INSERT_MODE_INSERT,
|
||||
THUNAR_SBR_INSERT_MODE_OVERWRITE,
|
||||
} ThunarSbrInsertMode;
|
||||
|
||||
GType
|
||||
thunar_sbr_insert_mode_get_type (void) G_GNUC_CONST;
|
||||
|
||||
|
||||
#define THUNAR_SBR_TYPE_NUMBER_MODE (thunar_sbr_number_mode_get_type ())
|
||||
|
||||
/**
|
||||
* ThunarSbrNumberMode:
|
||||
* @THUNAR_SBR_NUMBER_MODE_123 : 1, 2, 3, ...
|
||||
* @THUNAR_SBR_NUMBER_MODE_010203 : 01, 02, 03, ...
|
||||
* @THUNAR_SBR_NUMBER_MODE_001002003 : 001, 002, 003, ...
|
||||
* @THUNAR_SBR_NUMBER_MODE_000100020003 : 0001, 0002, 0003, ...
|
||||
* @THUNAR_SBR_NUMBER_MODE_000100020003 : 00001, 00002, 00003, ...
|
||||
* @THUNAR_SBR_NUMBER_MODE_ABC : a, b, c, ...
|
||||
*
|
||||
* The numbering mode for the #ThunarSbrNumberRenamer.
|
||||
**/
|
||||
typedef enum
|
||||
{
|
||||
THUNAR_SBR_NUMBER_MODE_123,
|
||||
THUNAR_SBR_NUMBER_MODE_010203,
|
||||
THUNAR_SBR_NUMBER_MODE_001002003,
|
||||
THUNAR_SBR_NUMBER_MODE_000100020003,
|
||||
THUNAR_SBR_NUMBER_MODE_000010000200003,
|
||||
THUNAR_SBR_NUMBER_MODE_ABC,
|
||||
} ThunarSbrNumberMode;
|
||||
|
||||
GType
|
||||
thunar_sbr_number_mode_get_type (void) G_GNUC_CONST;
|
||||
|
||||
|
||||
#define THUNAR_SBR_TYPE_OFFSET_MODE (thunar_sbr_offset_mode_get_type ())
|
||||
|
||||
/**
|
||||
* ThunarSbrOffsetMode:
|
||||
* @THUNAR_SBR_OFFSET_MODE_LEFT : offset starting from the left.
|
||||
* @THUNAR_SBR_OFFSET_MODE_RIGHT : offset starting from the right.
|
||||
*
|
||||
* The offset mode for the #ThunarSbrInsertRenamer and the
|
||||
* #ThunarSbrRemoveRenamer.
|
||||
**/
|
||||
typedef enum
|
||||
{
|
||||
THUNAR_SBR_OFFSET_MODE_LEFT,
|
||||
THUNAR_SBR_OFFSET_MODE_RIGHT,
|
||||
} ThunarSbrOffsetMode;
|
||||
|
||||
GType
|
||||
thunar_sbr_offset_mode_get_type (void) G_GNUC_CONST;
|
||||
|
||||
|
||||
#define THUNAR_SBR_TYPE_TEXT_MODE (thunar_sbr_text_mode_get_type ())
|
||||
|
||||
/**
|
||||
* ThunarSbrTextMode:
|
||||
* @THUNAR_SBR_TEXT_MODE_OTN : Old Name - Text - Number
|
||||
* @THUNAR_SBR_TEXT_MODE_NTO : Number - Text - Old Name
|
||||
* @THUNAR_SBR_TEXT_MODE_TN : Text - Number
|
||||
* @THUNAR_SBR_TEXT_MODE_NT : Number - Text
|
||||
*
|
||||
* The text mode for the #ThunarSbrNumberRenamer.
|
||||
**/
|
||||
typedef enum
|
||||
{
|
||||
THUNAR_SBR_TEXT_MODE_OTN,
|
||||
THUNAR_SBR_TEXT_MODE_NTO,
|
||||
THUNAR_SBR_TEXT_MODE_TN,
|
||||
THUNAR_SBR_TEXT_MODE_NT,
|
||||
} ThunarSbrTextMode;
|
||||
|
||||
GType
|
||||
thunar_sbr_text_mode_get_type (void) G_GNUC_CONST;
|
||||
|
||||
|
||||
#define THUNAR_SBR_TYPE_DATE_MODE (thunar_sbr_date_mode_get_type ())
|
||||
|
||||
/**
|
||||
* ThunarSbrDateMode:
|
||||
* @THUNAR_SBR_DATE_MODE_NOW : Current Time
|
||||
* @THUNAR_SBR_DATE_MODE_ATIME : Access Time
|
||||
* @THUNAR_SBR_DATE_MODE_MTIME : Modification Time
|
||||
* @THUNAR_SBR_DATE_MODE_TAKEN : Picture Taken Time
|
||||
*
|
||||
* The date mode for the #ThunarSbrDateRenamer.
|
||||
**/
|
||||
typedef enum
|
||||
{
|
||||
THUNAR_SBR_DATE_MODE_NOW,
|
||||
THUNAR_SBR_DATE_MODE_ATIME,
|
||||
THUNAR_SBR_DATE_MODE_MTIME,
|
||||
#ifdef HAVE_EXIF
|
||||
THUNAR_SBR_DATE_MODE_TAKEN,
|
||||
#endif
|
||||
} ThunarSbrDateMode;
|
||||
|
||||
GType
|
||||
thunar_sbr_date_mode_get_type (void) G_GNUC_CONST;
|
||||
|
||||
|
||||
void
|
||||
thunar_sbr_register_enum_types (ThunarxProviderPlugin *plugin);
|
||||
|
||||
G_END_DECLS;
|
||||
|
||||
#endif /* !__THUNAR_SBR_ENUM_TYPES_H__ */
|
||||