import kfilereplace from kdewebdev
59
kfilereplace/CMakeLists.txt
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
project(kfilereplace)
|
||||||
|
|
||||||
|
add_definitions(-DQT3_SUPPORT -DQT3_SUPPORT_WARNINGS)
|
||||||
|
|
||||||
|
add_subdirectory( toolbar )
|
||||||
|
|
||||||
|
########### next target ###############
|
||||||
|
|
||||||
|
set(kfilereplacepart_PART_SRCS
|
||||||
|
kfilereplacepart.cpp
|
||||||
|
kfilereplaceview.cpp
|
||||||
|
kaddstringdlg.cpp
|
||||||
|
knewprojectdlg.cpp
|
||||||
|
koptionsdlg.cpp
|
||||||
|
kfilereplacelib.cpp
|
||||||
|
report.cpp
|
||||||
|
commandengine.cpp
|
||||||
|
configurationclasses.cpp )
|
||||||
|
|
||||||
|
qt4_add_dbus_adaptor( kfilereplacepart_PART_SRCS org.kde.kfilereplace.xml kfilereplacepart.h KFileReplacePart )
|
||||||
|
|
||||||
|
|
||||||
|
kde4_add_ui3_files(kfilereplacepart_PART_SRCS
|
||||||
|
kfilereplaceviewwdg.ui
|
||||||
|
kaddstringdlgs.ui
|
||||||
|
knewprojectdlgs.ui
|
||||||
|
koptionsdlgs.ui )
|
||||||
|
|
||||||
|
kde4_add_plugin(kfilereplacepart WITH_PREFIX ${kfilereplacepart_PART_SRCS})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
target_link_libraries(kfilereplacepart ${KDE4_KDE3SUPPORT_LIBS} ${KDE4_KPARTS_LIBS} )
|
||||||
|
|
||||||
|
install(TARGETS kfilereplacepart DESTINATION ${PLUGIN_INSTALL_DIR})
|
||||||
|
|
||||||
|
|
||||||
|
########### next target ###############
|
||||||
|
|
||||||
|
set(kfilereplace_SRCS kfilereplace.cpp main.cpp )
|
||||||
|
|
||||||
|
|
||||||
|
kde4_add_executable(kfilereplace ${kfilereplace_SRCS})
|
||||||
|
|
||||||
|
target_link_libraries(kfilereplace ${KDE4_KPARTS_LIBS} )
|
||||||
|
|
||||||
|
install(TARGETS kfilereplace ${INSTALL_TARGETS_DEFAULT_ARGS} )
|
||||||
|
|
||||||
|
|
||||||
|
########### install files ###############
|
||||||
|
|
||||||
|
install( FILES kfilereplace.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
|
||||||
|
install( FILES kfilereplacepartui.rc DESTINATION ${DATA_INSTALL_DIR}/kfilereplacepart)
|
||||||
|
install( FILES kfilereplaceui.rc DESTINATION ${DATA_INSTALL_DIR}/kfilereplace)
|
||||||
|
install( FILES kfilereplacepart.desktop DESTINATION ${SERVICES_INSTALL_DIR})
|
||||||
|
install( FILES org.kde.kfilereplace.xml DESTINATION ${DBUS_INTERFACES_INSTALL_DIR} )
|
||||||
|
|
||||||
|
kde4_install_icons( ${ICON_INSTALL_DIR} )
|
||||||
|
|
280
kfilereplace/COPYING
Normal file
|
@ -0,0 +1,280 @@
|
||||||
|
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 Library 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
|
211
kfilereplace/ChangeLog
Normal file
|
@ -0,0 +1,211 @@
|
||||||
|
2005-02-20: Andras Mantia <amantia@kde.org>
|
||||||
|
* Added the possibility to select the encoding of the files and a warning about
|
||||||
|
the possible damaged result if the wrong encoding is chosen
|
||||||
|
|
||||||
|
2005-02-16: Andras Mantia <amantia@kde.org>
|
||||||
|
* Accept paths as command line arguments
|
||||||
|
|
||||||
|
2005-01-29 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* Cleaning up.
|
||||||
|
|
||||||
|
2005-01-23 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* Some clean up.
|
||||||
|
* Now the text 'captured text "blabla" at line...' etc. is substituted with
|
||||||
|
'Line:xyz, Col:abc "blabla"'
|
||||||
|
* Fixed a bug in the string view, that cause KFR to crash if the string list is empty
|
||||||
|
and the user click on it with the mouse.
|
||||||
|
|
||||||
|
2005-01-17 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* Now it should be possible to handle other characters encoding, like japanese.
|
||||||
|
* Added, but still buggy, a "replace confirmation" option.
|
||||||
|
* Now when open KFilereplace as standalone application it uses
|
||||||
|
this "*.c*;*.h*;*.sh;*.txt*;*.p*;*.java;*.log" string as default filter.
|
||||||
|
|
||||||
|
2005-01-14 Andras Mantia <amantia@kde.org>
|
||||||
|
* Don't show the cannot open file dialogs for directories
|
||||||
|
* Don't create a backup for every scanned file, only for those that were modified
|
||||||
|
* Don't update the timestap for every scanned file
|
||||||
|
* Fix installation of the icons (they go to the part's data dir now)
|
||||||
|
|
||||||
|
2005-01-13 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I added some other infos to the docbook manual, I hope to complete it as soon as possible.
|
||||||
|
* I added a new command: [$mathexp:some_expression$]. It uses the bc calculator to
|
||||||
|
compute the result of an expression.
|
||||||
|
|
||||||
|
2005-01-11 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* Fixed a bug in KAddStringDlg: now when we want edit a string the search-only mode and search-replace mode
|
||||||
|
don't merge.
|
||||||
|
* Modified KFR file format: I added the tag '<mode search=""/>' just after the root <kfr> to allows
|
||||||
|
kfilereplace to recognize if the list to load is a list of only search strings. I added some lines of code
|
||||||
|
to permit users to load files that don't have this new tag.
|
||||||
|
* I'm writing docbook manual.
|
||||||
|
|
||||||
|
2005-01-10 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* The KFilereplaceView widget has been modified. Now it change the layout of kfilereplace depending of the
|
||||||
|
value of m_option->m_searchOnlyMode.
|
||||||
|
* I fixed a bug in the backup file option.
|
||||||
|
|
||||||
|
2004-12-13 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I modified the way we can open files in quanta. Now we can select one or more entries
|
||||||
|
in the QListView that store the results, and open several files, at the same time.
|
||||||
|
For selecting more than one file, we must press CTRL button while clicking with mouse
|
||||||
|
on the entry we want open.
|
||||||
|
|
||||||
|
2004-11-10 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I added a graphical file counter.
|
||||||
|
* I added a semaphore to notify user about the state of the search.
|
||||||
|
* I improved a little the speed.
|
||||||
|
* I made some cleanup.
|
||||||
|
|
||||||
|
2004-09-27 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I fixed a bug that affect some strings in case of translation.
|
||||||
|
* I fixed a bug that affect "Create backup" option, I think that now this feature should work
|
||||||
|
properly.
|
||||||
|
|
||||||
|
2004-09-26 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I did some cleanup.
|
||||||
|
|
||||||
|
2004-09-11 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I added the class ResultViewEntry in configurationclasses.(h,cpp) to make the replace algorithm more clean.
|
||||||
|
* I make multiline text searching more useable.
|
||||||
|
* Now the file entries in the result view are shown with descriptive icons.
|
||||||
|
* I'm trying to write some documentation, in the meanwhile a tutorial is present.
|
||||||
|
|
||||||
|
2004-08-13 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I added CommandEngine class and Report class.
|
||||||
|
In fact I moved the code that do the report document and the
|
||||||
|
code that do commands feature from KFileREplaceLib to these two classes.
|
||||||
|
|
||||||
|
2004-08-09 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I fixed a bug that affected the method "void KFileReplaceView::slotStringsClear()" in kfilereplaceview.cpp file.
|
||||||
|
This bug caused the list of strings not to be correctly erased.
|
||||||
|
|
||||||
|
2004-08-07 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I modified the save-results system(thanks Luciano for the idea of using xml/css tecnology).
|
||||||
|
Now KFR creates a directory with name "NAME" that contains a xml file "NAME.xml"
|
||||||
|
and a css file "NAME.css". These two files are the new "report document"
|
||||||
|
that substitutes the xhtml file. To try it choose "Search/Replace|Results|Create Report File" menu option.
|
||||||
|
* I fixed a bug that causes Quanta to crash when we push Cancel button in new project
|
||||||
|
dialog.
|
||||||
|
* I finished the tutorial.
|
||||||
|
|
||||||
|
2004-08-01 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* The line "if(::access(directory.local8Bit(), R_OK | X_OK) == -1)" has been removed,
|
||||||
|
and subtitued with "QFileInfo dirInfo(directory); "
|
||||||
|
"if(not(dirInfo.isReadable() and dirInfo.isExecutable())"
|
||||||
|
" or "
|
||||||
|
" not(dirInfo.isWritable())) "
|
||||||
|
in kfilereplacepart.cpp
|
||||||
|
|
||||||
|
2004-07-30 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* The icons have been fixed!!! What a miracle!!!
|
||||||
|
|
||||||
|
2004-07-24 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I added a little feature. When KFR matches a string, it shows the row and the column
|
||||||
|
where that match is, by using a message like this:
|
||||||
|
/my/path/file
|
||||||
|
|
|
||||||
|
|__ string "xyz" found at line:40, column:2
|
||||||
|
|__ string "xyz" found at line:18, column:57
|
||||||
|
|__.............
|
||||||
|
Now if you use "Edit with Quanta" popup menu option, say, on the line:
|
||||||
|
"string "xyz" found at line:40, column:2"
|
||||||
|
of the result view, Quanta will open the file /my/path/file at row 40, column 2.
|
||||||
|
|
||||||
|
2004-07-20 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I fixed a bug that affects the generation of extension of
|
||||||
|
the backup files.
|
||||||
|
|
||||||
|
2004-07-17 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I fixed the bug that causes quanta to crash when KFR is active.
|
||||||
|
* I fixed (I hope!) the simulation feature.
|
||||||
|
* I reorganize the KOptionsDlg UI.
|
||||||
|
* I Added some tool tips.
|
||||||
|
* I' m tired and I go on bed ;-)
|
||||||
|
|
||||||
|
2004-07-16 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* The KNewProjectDlg was modified, adding quick search/replace line edit objects
|
||||||
|
* A option in KOptionDlg was added, so that the files that don't
|
||||||
|
contain the strings we are searching for, will not be shown.
|
||||||
|
* Some code clean-up
|
||||||
|
* A bug with KAddStringDlg was fixed.
|
||||||
|
* I found a bug that makes quanta to crash when we close quanta with the x button...
|
||||||
|
I'm trying to fix it.
|
||||||
|
|
||||||
|
2004-05-30 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* Well, KFR has been entirely (more or less :-)) rewrote.
|
||||||
|
the files:
|
||||||
|
apistruct.h
|
||||||
|
kernel.(cpp,h)
|
||||||
|
kexpression.(cpp,h)
|
||||||
|
kfilereplacedoc.(cpp,h)
|
||||||
|
kfilereplacepref.(cpp,h)
|
||||||
|
|
||||||
|
were removed and these files are added:
|
||||||
|
|
||||||
|
configurationclasses.h
|
||||||
|
|
||||||
|
. the internal architecture was redesigned, to use QT/KDE tecnologies in particular:
|
||||||
|
. C-like code were removed (where possible).
|
||||||
|
. some system dependent functions were substituted with more portable code.
|
||||||
|
. the apistructs.h file were substituted with one class in configurationclasses.h.
|
||||||
|
. the UIs were modified in particular:
|
||||||
|
. new "add string" dialog were added.
|
||||||
|
. project dialog were modified.
|
||||||
|
. some new features were added in particular:
|
||||||
|
. the variable replace mechanism were modified.
|
||||||
|
. the result view shows the line and column where the string has been found.
|
||||||
|
. now the mechanism of search/replace with wildcards inherits from QT regular expression engine.
|
||||||
|
|
||||||
|
* I wrote a little tutorial(TUTOR.txt), but a more exhaustive tutorial will be released soon.
|
||||||
|
Note: there some bugs to fix and some feature to implement, in particular:
|
||||||
|
. Simulation is not yet implemented.
|
||||||
|
. Some options are presents but disabled.
|
||||||
|
. I want to add more KFR variable commands.
|
||||||
|
|
||||||
|
|
||||||
|
2004-03-26 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* Added a feature. Now we can open a file from the result view of KFR in Quanta(thanks Andras).
|
||||||
|
|
||||||
|
2004-03-14 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* Replaced two QLineEdit with two QSpinbox in knewprojectdlg.ui
|
||||||
|
* Fixed a bug in the new kfr (XML-based) file format.
|
||||||
|
|
||||||
|
2004-03-12 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* Removed KresultView(.h,.cpp). Now KFileReplaceView is a QWidget that contains results and
|
||||||
|
strings view.
|
||||||
|
* Added whatthis.h that contains the "what's this" strings.
|
||||||
|
* Fixed a bug that generate a wrong XHTML result file.
|
||||||
|
|
||||||
|
2004-03-06 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* Added kconfirmdlgs.ui.
|
||||||
|
* Fixed a bug in KOptionDlg, now when we select a option, the selection is shown correctly.
|
||||||
|
* Fixed a bug KNewProjectDlg.
|
||||||
|
|
||||||
|
2004-02-26 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* I added a method 'editStrings' that fixes tha behaviour when a user
|
||||||
|
chooses edit string option instead of add string option.
|
||||||
|
* I modified the property textFormat of the QTextEdit widgets of
|
||||||
|
KAddstringDlg, from the value 'AutoText' to the value 'PlainText',
|
||||||
|
so the QTextEdit widgets will not try to render a string containing
|
||||||
|
html code.
|
||||||
|
|
||||||
|
2004-02-24 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* kfilereplacepref.(h,cpp) were removed.
|
||||||
|
* kernel.(h,cpp) now are a singleton class.
|
||||||
|
* Some macros in kernel.h were replaced with integer constants.
|
||||||
|
* Methods in kernel.h file were renamed.
|
||||||
|
* Some superflous #include lines were removed.
|
||||||
|
* The filelib.(h,cpp) were subtituted with KFilereplaceLib singleton class.
|
||||||
|
* Now kfilereplace logo and icons in the result view appear.
|
||||||
|
|
||||||
|
2004-02-18 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
* The icons in toolbar directory were redrawn.
|
||||||
|
* Deleted the KFRHeader struct from apistruct.h.
|
||||||
|
* The mechanism of saving the string rules has been modified: now we can save the rules in a
|
||||||
|
file like this "a_file_name.kfr" that is an XML file.
|
||||||
|
* The file containing the results of the operations is now a XHTML file.
|
||||||
|
* Two new files UI added: now KOptionDlg inherits from KOptionDlgS and KAddstringDlg inherits
|
||||||
|
from KAddstringDlgS.
|
||||||
|
* The klistviewstring.(h,cpp) were removed.
|
||||||
|
* A lot of clean up has been made in all files.
|
3
kfilereplace/Messages.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
$EXTRACTRC *.rc *.ui >> rc.cpp
|
||||||
|
$XGETTEXT *.cpp *.h -o $podir/kfilereplace.pot
|
214
kfilereplace/commandengine.cpp
Normal file
|
@ -0,0 +1,214 @@
|
||||||
|
/***************************************************************************
|
||||||
|
commandengine.cpp - kfr commands feature class
|
||||||
|
-------------------
|
||||||
|
begin : fri aug 13 15:29:46 CEST 2004
|
||||||
|
|
||||||
|
copyright : (C) 2004 Emiliano Gulmini
|
||||||
|
email : emi_barbarossa@yahoo.it
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
// QT
|
||||||
|
#include <qdatetime.h>
|
||||||
|
#include <qfile.h>
|
||||||
|
#include <qtextstream.h>
|
||||||
|
#include <qdom.h>
|
||||||
|
//Added by qt3to4:
|
||||||
|
#include <Q3CString>
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
#include <kuser.h>
|
||||||
|
#include <krandomsequence.h>
|
||||||
|
#include <k3process.h>
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "commandengine.h"
|
||||||
|
|
||||||
|
QString CommandEngine::datetime(const QString& opt, const QString& arg)
|
||||||
|
{
|
||||||
|
Q_UNUSED(arg);
|
||||||
|
if(opt == "iso")
|
||||||
|
return QDateTime::currentDateTime().toString(Qt::ISODate);
|
||||||
|
if(opt == "local")
|
||||||
|
return QDateTime::currentDateTime().toString(Qt::LocalDate);
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CommandEngine::user(const QString& opt, const QString& arg)
|
||||||
|
{
|
||||||
|
Q_UNUSED(arg);
|
||||||
|
KUser u;
|
||||||
|
if(opt == "uid")
|
||||||
|
return QString::number(u.uid(),10);
|
||||||
|
if(opt == "gid")
|
||||||
|
return QString::number(u.gid(),10);
|
||||||
|
if(opt == "loginname")
|
||||||
|
return u.loginName();
|
||||||
|
if(opt == "fullname")
|
||||||
|
return u.fullName();
|
||||||
|
if(opt == "homedir")
|
||||||
|
return u.homeDir();
|
||||||
|
if(opt == "shell")
|
||||||
|
return u.shell();
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CommandEngine::loadfile(const QString& opt, const QString& arg)
|
||||||
|
{
|
||||||
|
Q_UNUSED(arg);
|
||||||
|
|
||||||
|
QFile f(opt);
|
||||||
|
if(!f.open(QIODevice::ReadOnly)) return QString();
|
||||||
|
|
||||||
|
QTextStream t(&f);
|
||||||
|
|
||||||
|
QString s = t.readAll();
|
||||||
|
|
||||||
|
f.close();
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CommandEngine::empty(const QString& opt, const QString& arg)
|
||||||
|
{
|
||||||
|
Q_UNUSED(opt);
|
||||||
|
Q_UNUSED(arg);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CommandEngine::mathexp(const QString& opt, const QString& arg)
|
||||||
|
{
|
||||||
|
/* We will use bc 1.06 by Philip A. Nelson <philnelson@acm.org> */
|
||||||
|
//Q_UNUSED(opt);
|
||||||
|
Q_UNUSED(arg);
|
||||||
|
|
||||||
|
QString tempOpt = opt;
|
||||||
|
tempOpt.replace("ln","l");
|
||||||
|
tempOpt.replace("sin","s");
|
||||||
|
tempOpt.replace("cos","c");
|
||||||
|
tempOpt.replace("arctan","a");
|
||||||
|
tempOpt.replace("exp","e");
|
||||||
|
|
||||||
|
QString program = "var=("+tempOpt+");print var";
|
||||||
|
QString script = "echo '"+program+"' | bc -l;";
|
||||||
|
|
||||||
|
K3Process* proc = new K3Process();
|
||||||
|
|
||||||
|
proc->setUseShell(true);
|
||||||
|
|
||||||
|
*(proc) << script;
|
||||||
|
|
||||||
|
connect(proc, SIGNAL(receivedStdout(K3Process*,char*,int)), this, SLOT(slotGetScriptOutput(K3Process*,char*,int)));
|
||||||
|
connect(proc, SIGNAL(receivedStderr(K3Process*,char*,int)), this, SLOT(slotGetScriptError(K3Process*,char*,int)));
|
||||||
|
connect(proc, SIGNAL(processExited(K3Process*)), this, SLOT(slotProcessExited(K3Process*)));
|
||||||
|
|
||||||
|
//Through slotGetScriptOutput, m_processOutput contains the result of the K3Process call
|
||||||
|
if(!proc->start(K3Process::Block, K3Process::All))
|
||||||
|
{
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
proc->wait();
|
||||||
|
}
|
||||||
|
delete proc;
|
||||||
|
|
||||||
|
QString tempbuf = m_processOutput;
|
||||||
|
m_processOutput = QString();
|
||||||
|
|
||||||
|
return tempbuf;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CommandEngine::random(const QString& opt, const QString& arg)
|
||||||
|
{
|
||||||
|
Q_UNUSED(arg);
|
||||||
|
long seed;
|
||||||
|
if(opt.isEmpty())
|
||||||
|
{
|
||||||
|
QDateTime dt;
|
||||||
|
seed = dt.toTime_t();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
seed = opt.toLong();
|
||||||
|
|
||||||
|
KRandomSequence seq(seed);
|
||||||
|
return QString::number(seq.getLong(1000000),10);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CommandEngine::stringmanip(const QString& opt, const QString& arg)
|
||||||
|
{
|
||||||
|
Q_UNUSED(opt);
|
||||||
|
Q_UNUSED(arg);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CommandEngine::variableValue(const QString &variable)
|
||||||
|
{
|
||||||
|
QString s = variable;
|
||||||
|
|
||||||
|
s.remove("[$").remove("$]").remove(" ");
|
||||||
|
|
||||||
|
if(s.contains(":") == 0)
|
||||||
|
return variable;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QString leftValue = s.section(":",0,0),
|
||||||
|
midValue = s.section(":",1,1),
|
||||||
|
rightValue = s.section(":",2,2);
|
||||||
|
|
||||||
|
QString opt = midValue;
|
||||||
|
QString arg = rightValue;
|
||||||
|
|
||||||
|
if(leftValue == "stringmanip")
|
||||||
|
return stringmanip(opt, arg);
|
||||||
|
if(leftValue == "datetime")
|
||||||
|
return datetime(opt, arg);
|
||||||
|
if(leftValue == "user")
|
||||||
|
return user(opt, arg);
|
||||||
|
if(leftValue == "loadfile")
|
||||||
|
return loadfile(opt, arg);
|
||||||
|
if(leftValue == "empty")
|
||||||
|
return empty(opt, arg);
|
||||||
|
if(leftValue == "mathexp")
|
||||||
|
return mathexp(opt, arg);
|
||||||
|
if(leftValue == "random")
|
||||||
|
return random(opt, arg);
|
||||||
|
|
||||||
|
return variable;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//SLOTS
|
||||||
|
void CommandEngine::slotGetScriptError(K3Process* proc, char* s, int i)
|
||||||
|
{
|
||||||
|
Q_UNUSED(proc);
|
||||||
|
Q_UNUSED(proc);
|
||||||
|
Q3CString temp(s,i+1);
|
||||||
|
if(temp.isEmpty() || temp == "\n") return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandEngine::slotGetScriptOutput(K3Process* proc, char* s, int i)
|
||||||
|
{
|
||||||
|
Q_UNUSED(proc);
|
||||||
|
Q3CString temp(s,i+1);
|
||||||
|
|
||||||
|
if(temp.isEmpty() || temp == "\n") return;
|
||||||
|
|
||||||
|
m_processOutput += QString::fromLocal8Bit(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandEngine::slotProcessExited(K3Process* proc)
|
||||||
|
{
|
||||||
|
Q_UNUSED(proc);
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "commandengine.moc"
|
57
kfilereplace/commandengine.h
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
/***************************************************************************
|
||||||
|
commandengine.h - kfr commands feature class
|
||||||
|
-------------------
|
||||||
|
begin : fri aug 13 15:29:46 CEST 2004
|
||||||
|
|
||||||
|
copyright : (C) 2004 Emiliano Gulmini
|
||||||
|
email : emi_barbarossa@yahoo.it
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef COMMANDENGINE_H
|
||||||
|
#define COMMANDENGINE_H
|
||||||
|
|
||||||
|
// QT
|
||||||
|
class QString;
|
||||||
|
#include <qobject.h>
|
||||||
|
|
||||||
|
//KDE
|
||||||
|
class K3Process;
|
||||||
|
|
||||||
|
class CommandEngine : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
private:
|
||||||
|
QString m_processOutput;
|
||||||
|
public:
|
||||||
|
CommandEngine() {}
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
/**
|
||||||
|
These functions implement the KFR commands
|
||||||
|
*/
|
||||||
|
QString datetime(const QString& opt, const QString& arg);
|
||||||
|
QString user(const QString& opt, const QString& arg);
|
||||||
|
QString loadfile(const QString& opt, const QString& arg);
|
||||||
|
QString empty(const QString& opt, const QString& arg);
|
||||||
|
QString mathexp(const QString& opt, const QString& arg);
|
||||||
|
QString random(const QString& opt, const QString& arg);
|
||||||
|
QString stringmanip(const QString& opt, const QString& arg);
|
||||||
|
QString variableValue(const QString &variable);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void slotGetScriptOutput(K3Process*,char*,int);
|
||||||
|
void slotGetScriptError(K3Process*,char*,int);
|
||||||
|
void slotProcessExited(K3Process*);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // COMMANDENGINE_H
|
188
kfilereplace/configurationclasses.cpp
Normal file
|
@ -0,0 +1,188 @@
|
||||||
|
/***************************************************************************
|
||||||
|
configurationclasses.cpp - description
|
||||||
|
-------------------
|
||||||
|
begin : Sat Sep 11 2004
|
||||||
|
copyright : (C) 2004 Emiliano Gulmini
|
||||||
|
email : emi_barbarossa@yahoo.it
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
// QT
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "configurationclasses.h"
|
||||||
|
#include "whatthis.h"
|
||||||
|
|
||||||
|
using namespace whatthisNameSpace;
|
||||||
|
|
||||||
|
//RCOptions Class
|
||||||
|
RCOptions::RCOptions()
|
||||||
|
{
|
||||||
|
m_searchingOnlyMode = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
RCOptions& RCOptions::operator=(const RCOptions& ci)
|
||||||
|
{
|
||||||
|
//m_callResetActions = ci.m_callResetActions;
|
||||||
|
|
||||||
|
m_directories = ci.m_directories;
|
||||||
|
m_filters = ci.m_filters;
|
||||||
|
m_currentDirectory = ci.m_currentDirectory;
|
||||||
|
m_minSize = ci.m_minSize;
|
||||||
|
m_maxSize = ci.m_maxSize;
|
||||||
|
|
||||||
|
m_dateAccess = ci.m_dateAccess;
|
||||||
|
m_minDate = ci.m_minDate;
|
||||||
|
m_maxDate = ci.m_maxDate;
|
||||||
|
|
||||||
|
m_caseSensitive = ci.m_caseSensitive;
|
||||||
|
m_recursive = ci.m_recursive;
|
||||||
|
m_followSymLinks = ci.m_followSymLinks;
|
||||||
|
m_allStringsMustBeFound = ci.m_allStringsMustBeFound;
|
||||||
|
m_backup = ci.m_backup;
|
||||||
|
m_backupExtension = ci.m_backupExtension;
|
||||||
|
m_ignoreFiles = ci.m_ignoreFiles;
|
||||||
|
m_regularExpressions = ci.m_regularExpressions;
|
||||||
|
|
||||||
|
m_variables = ci.m_variables;
|
||||||
|
m_haltOnFirstOccur = ci.m_haltOnFirstOccur;
|
||||||
|
m_ignoreHidden = ci.m_ignoreHidden;
|
||||||
|
m_simulation = ci.m_simulation;
|
||||||
|
m_searchingOnlyMode = ci.m_searchingOnlyMode;
|
||||||
|
|
||||||
|
m_ownerUserIsChecked = ci.m_ownerUserIsChecked;
|
||||||
|
m_ownerGroupIsChecked = ci.m_ownerGroupIsChecked;
|
||||||
|
|
||||||
|
m_ownerUserBool = ci.m_ownerUserBool;
|
||||||
|
m_ownerGroupBool = ci.m_ownerGroupBool;
|
||||||
|
|
||||||
|
m_ownerUserType = ci.m_ownerUserType;
|
||||||
|
m_ownerGroupType = ci.m_ownerGroupType;
|
||||||
|
|
||||||
|
m_ownerUserValue = ci.m_ownerUserValue;
|
||||||
|
m_ownerGroupValue = ci.m_ownerGroupValue;
|
||||||
|
|
||||||
|
m_mapStringsView = ci.m_mapStringsView;
|
||||||
|
|
||||||
|
m_quickSearchString = ci.m_quickSearchString;
|
||||||
|
m_quickReplaceString = ci.m_quickReplaceString;
|
||||||
|
|
||||||
|
m_recentStringFileList = ci.m_recentStringFileList;
|
||||||
|
|
||||||
|
m_notifyOnErrors = ci.m_notifyOnErrors;
|
||||||
|
|
||||||
|
return (*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
//ResultViewEntry Class
|
||||||
|
ResultViewEntry::ResultViewEntry(const QString &nkey, const QString &ndata, bool regexp, bool caseSensitive)
|
||||||
|
{
|
||||||
|
m_caseSensitive = caseSensitive;
|
||||||
|
m_regexp = regexp;
|
||||||
|
|
||||||
|
if(regexp)
|
||||||
|
{
|
||||||
|
m_rxKey = QRegExp('('+nkey+')', caseSensitive, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_key = nkey;
|
||||||
|
}
|
||||||
|
m_data = ndata;
|
||||||
|
m_matchedStringsOccurrence = 0;
|
||||||
|
m_pos = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ResultViewEntry::lineNumber(const QString& line) const
|
||||||
|
{
|
||||||
|
return line.mid(0,m_pos).count('\n')+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ResultViewEntry::columnNumber(const QString& line) const
|
||||||
|
{
|
||||||
|
return(m_pos - line.lastIndexOf('\n',m_pos));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResultViewEntry::incOccurrences()
|
||||||
|
{
|
||||||
|
m_matchedStringsOccurrence++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ResultViewEntry::occurrences() const
|
||||||
|
{
|
||||||
|
return m_matchedStringsOccurrence;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ResultViewEntry::regexp()const
|
||||||
|
{
|
||||||
|
return m_regexp;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ResultViewEntry::pos(const QString& line)
|
||||||
|
{
|
||||||
|
if(m_regexp)
|
||||||
|
m_pos = m_rxKey.search(line,m_pos);
|
||||||
|
else
|
||||||
|
m_pos = line.find(m_key, m_pos, m_caseSensitive);
|
||||||
|
|
||||||
|
return m_pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResultViewEntry::incPos()
|
||||||
|
{
|
||||||
|
int kl = keyLength(),
|
||||||
|
dl = dataLength();
|
||||||
|
|
||||||
|
if(kl < dl)
|
||||||
|
m_pos += kl;
|
||||||
|
else
|
||||||
|
m_pos += dl;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ResultViewEntry::capturedText(const QString& line)
|
||||||
|
{
|
||||||
|
QString cap;
|
||||||
|
|
||||||
|
if(m_regexp)
|
||||||
|
cap = m_rxKey.cap(1);
|
||||||
|
else
|
||||||
|
cap =line.mid(m_pos,m_key.length());
|
||||||
|
|
||||||
|
return cap;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ResultViewEntry::message(const QString& capturedText, int x, int y) const
|
||||||
|
{
|
||||||
|
QString data = m_data;
|
||||||
|
//return i18n(" captured text \"%1\" replaced with \"%2\" at line: %3, column: %4 ", capturedText, data, x, y);
|
||||||
|
return i18n(" Line:%3,Col:%4 - \"%1\" -> \"%2\"", capturedText, data, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ResultViewEntry::keyLength() const
|
||||||
|
{
|
||||||
|
if(m_regexp)
|
||||||
|
return m_rxKey.matchedLength();
|
||||||
|
else
|
||||||
|
return m_key.length();
|
||||||
|
}
|
||||||
|
|
||||||
|
int ResultViewEntry::dataLength() const
|
||||||
|
{
|
||||||
|
return m_data.length();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResultViewEntry::updateLine(QString& line)
|
||||||
|
{
|
||||||
|
line.insert(m_pos, m_data);
|
||||||
|
line.remove(m_pos + dataLength(), keyLength());
|
||||||
|
}
|
165
kfilereplace/configurationclasses.h
Normal file
|
@ -0,0 +1,165 @@
|
||||||
|
/***************************************************************************
|
||||||
|
configurationclasses.h - description
|
||||||
|
-------------------
|
||||||
|
begin : Sat Apr 17 2004
|
||||||
|
copyright : (C) 2004 Emiliano Gulmini
|
||||||
|
email : <emi_barbarossa@yahoo.it>
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
#ifndef CONFIGURATIONCLASSES_H
|
||||||
|
#define CONFIGURATIONCLASSES_H
|
||||||
|
|
||||||
|
// QT
|
||||||
|
#include <qstring.h>
|
||||||
|
#include <qstringlist.h>
|
||||||
|
#include <qdatetime.h>
|
||||||
|
#include <qmap.h>
|
||||||
|
#include <qregexp.h>
|
||||||
|
|
||||||
|
typedef QMap<QString,QString> KeyValueMap;
|
||||||
|
// entry strings in the kfilereplacerc file
|
||||||
|
const QString rcDirectoriesList = "Directories list";
|
||||||
|
const QString rcFiltersList = "Filters list";
|
||||||
|
const QString rcRecentFiles = "Recent files";
|
||||||
|
const QString rcAllStringsMustBeFound = "All strings must be found";
|
||||||
|
const char rcEncoding[] = "Encoding";
|
||||||
|
const QString rcCaseSensitive = "Case sensitive";
|
||||||
|
const QString rcConfirmStrings = "Confirm strings";
|
||||||
|
const QString rcConfirmFiles = "Confirm files";
|
||||||
|
const QString rcConfirmDirs = "Confirm directories";
|
||||||
|
const QString rcFollowSymLinks = "Follow symbolic links";
|
||||||
|
const QString rcHaltOnFirstOccur = "Halt on first occurrence";
|
||||||
|
const QString rcIgnoreHidden = "Ignore hidden files";
|
||||||
|
const QString rcRecursive = "Search/replace in sub folders";
|
||||||
|
const QString rcVariables = "Enable variables";
|
||||||
|
const QString rcRegularExpressions = "Enable regular expressions";
|
||||||
|
const QString rcMinFileSize = "Minimum file size";
|
||||||
|
const QString rcMaxFileSize = "Maximum file size";
|
||||||
|
const QString rcValidAccessDate = "Access mode";
|
||||||
|
const QString rcMinDate = "Minimum access date";
|
||||||
|
const QString rcMaxDate = "Maximum access date";
|
||||||
|
const QString rcOwnerUser = "Owner user filters";
|
||||||
|
const QString rcOwnerGroup = "Owner group filters";
|
||||||
|
const QString rcSearchMode = "Search only mode";
|
||||||
|
const QString rcBackupExtension = "Backup file extension";
|
||||||
|
const QString rcIgnoreFiles = "Ignore files if there is no match";
|
||||||
|
const QString rcNotifyOnErrors = "NotifyOnErrors";
|
||||||
|
const QString rcAskConfirmReplace = "Ask confirmation on replace";
|
||||||
|
const QString rcDontAskAgain = "Don't ask again";
|
||||||
|
// Default configuration options
|
||||||
|
const QString EncodingOption = "utf8";
|
||||||
|
const bool RecursiveOption = true;
|
||||||
|
const bool CaseSensitiveOption = false;
|
||||||
|
const bool FollowSymbolicLinksOption = false;
|
||||||
|
const bool RegularExpressionsOption = false;
|
||||||
|
const bool VariablesOption = false;
|
||||||
|
const bool StopWhenFirstOccurenceOption = false;
|
||||||
|
const bool IgnoreHiddenOption = false;
|
||||||
|
const int FileSizeOption = -1;
|
||||||
|
const QString AccessDateOption="unknown";
|
||||||
|
const QString ValidAccessDateOption="unknown";
|
||||||
|
const QString OwnerOption="false,Name,Equals To";
|
||||||
|
const bool SearchModeOption=true;
|
||||||
|
const QString BackupExtensionOption="false,~";
|
||||||
|
const bool IgnoreFilesOption = true;
|
||||||
|
const bool NotifyOnErrorsOption = false;
|
||||||
|
const bool AskConfirmReplaceOption = false;
|
||||||
|
|
||||||
|
// This class stores configuration information
|
||||||
|
class RCOptions
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool m_callResetActions;
|
||||||
|
|
||||||
|
bool m_askConfirmReplace,
|
||||||
|
m_dontAskAgain;
|
||||||
|
|
||||||
|
QString m_directories,
|
||||||
|
m_filters,
|
||||||
|
m_currentDirectory;
|
||||||
|
|
||||||
|
int m_minSize,
|
||||||
|
m_maxSize;
|
||||||
|
|
||||||
|
QString m_dateAccess,
|
||||||
|
m_minDate,
|
||||||
|
m_maxDate;
|
||||||
|
|
||||||
|
QString m_encoding;
|
||||||
|
|
||||||
|
bool m_caseSensitive,
|
||||||
|
m_recursive,
|
||||||
|
m_followSymLinks,
|
||||||
|
m_allStringsMustBeFound,
|
||||||
|
m_backup,
|
||||||
|
m_regularExpressions;
|
||||||
|
|
||||||
|
bool m_variables,
|
||||||
|
m_haltOnFirstOccur,
|
||||||
|
m_ignoreHidden,
|
||||||
|
m_simulation,
|
||||||
|
m_searchingOnlyMode;
|
||||||
|
|
||||||
|
bool m_ownerUserIsChecked,
|
||||||
|
m_ownerGroupIsChecked;
|
||||||
|
|
||||||
|
QString m_ownerUserType,
|
||||||
|
m_ownerGroupType,
|
||||||
|
m_ownerUserValue,
|
||||||
|
m_ownerGroupValue,
|
||||||
|
m_ownerUserBool,
|
||||||
|
m_ownerGroupBool;
|
||||||
|
|
||||||
|
QString m_backupExtension;
|
||||||
|
|
||||||
|
bool m_ignoreFiles;
|
||||||
|
|
||||||
|
KeyValueMap m_mapStringsView;
|
||||||
|
|
||||||
|
QString m_quickSearchString,
|
||||||
|
m_quickReplaceString;
|
||||||
|
|
||||||
|
QStringList m_recentStringFileList;
|
||||||
|
|
||||||
|
bool m_notifyOnErrors;
|
||||||
|
|
||||||
|
public:
|
||||||
|
RCOptions();
|
||||||
|
RCOptions& operator=(const RCOptions& ci);
|
||||||
|
};
|
||||||
|
|
||||||
|
class ResultViewEntry
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
QString m_key;
|
||||||
|
QString m_data;
|
||||||
|
QRegExp m_rxKey;
|
||||||
|
bool m_regexp;
|
||||||
|
bool m_caseSensitive;
|
||||||
|
int m_pos;
|
||||||
|
int m_matchedStringsOccurrence;
|
||||||
|
|
||||||
|
public:
|
||||||
|
ResultViewEntry(const QString &nkey, const QString &ndata, bool regexp, bool caseSensitive);
|
||||||
|
int lineNumber(const QString& line) const ;
|
||||||
|
int columnNumber(const QString& line) const ;
|
||||||
|
void incOccurrences();
|
||||||
|
int occurrences() const ;
|
||||||
|
bool regexp()const ;
|
||||||
|
int pos(const QString& line) ;
|
||||||
|
void incPos();
|
||||||
|
QString capturedText(const QString& line) ;
|
||||||
|
QString message(const QString& capturedText, int x, int y) const;
|
||||||
|
int keyLength() const;
|
||||||
|
int dataLength() const;
|
||||||
|
void updateLine(QString& line);
|
||||||
|
};
|
||||||
|
#endif
|
BIN
kfilereplace/hi22-app-kfilereplace.png
Normal file
After Width: | Height: | Size: 978 B |
BIN
kfilereplace/hi32-app-kfilereplace.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
kfilereplace/hi48-app-kfilereplace.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
272
kfilereplace/kaddstringdlg.cpp
Normal file
|
@ -0,0 +1,272 @@
|
||||||
|
/***************************************************************************
|
||||||
|
KAddStringDlg.cpp - description
|
||||||
|
-------------------
|
||||||
|
begin : Sat Oct 16 1999
|
||||||
|
copyright : (C) 1999 by François Dupoux
|
||||||
|
(C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
email : dupoux@dupoux.com
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
// QT
|
||||||
|
#include <qlabel.h>
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qradiobutton.h>
|
||||||
|
#include <q3listview.h>
|
||||||
|
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
#include <kmessagebox.h>
|
||||||
|
#include <kiconloader.h>
|
||||||
|
#include <kdebug.h>
|
||||||
|
#include <kconfig.h>
|
||||||
|
#include <kapplication.h>
|
||||||
|
#include <ktoolinvocation.h>
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "kaddstringdlg.h"
|
||||||
|
#include "whatthis.h"
|
||||||
|
|
||||||
|
using namespace whatthisNameSpace;
|
||||||
|
|
||||||
|
KAddStringDlg::KAddStringDlg(RCOptions* info, bool wantEdit, QWidget *parent, const char *name) : KAddStringDlgS(parent,name,true)
|
||||||
|
{
|
||||||
|
m_option = info;
|
||||||
|
m_wantEdit = wantEdit;
|
||||||
|
m_currentMap = m_option->m_mapStringsView;
|
||||||
|
|
||||||
|
initGUI();
|
||||||
|
|
||||||
|
connect(m_pbOK, SIGNAL(clicked()), this, SLOT(slotOK()));
|
||||||
|
connect(m_rbSearchOnly, SIGNAL(pressed()), this, SLOT(slotSearchOnly()));
|
||||||
|
connect(m_rbSearchReplace, SIGNAL(pressed()), this, SLOT(slotSearchReplace()));
|
||||||
|
connect(m_pbAdd, SIGNAL(clicked()), this, SLOT(slotAddStringToView()));
|
||||||
|
connect(m_pbDel, SIGNAL(clicked()), this, SLOT(slotDeleteStringFromView()));
|
||||||
|
connect(m_pbHelp, SIGNAL(clicked()), this ,SLOT(slotHelp()));
|
||||||
|
|
||||||
|
whatsThis();
|
||||||
|
}
|
||||||
|
|
||||||
|
//PRIVATE
|
||||||
|
void KAddStringDlg::initGUI()
|
||||||
|
{
|
||||||
|
m_pbAdd->setIconSet(SmallIconSet(QString::fromLatin1("go-next")));
|
||||||
|
m_pbDel->setIconSet(SmallIconSet(QString::fromLatin1("go-previous")));
|
||||||
|
|
||||||
|
m_stack->addWidget(m_stringView);
|
||||||
|
m_stack->addWidget(m_stringView_2);
|
||||||
|
|
||||||
|
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
{
|
||||||
|
if(m_wantEdit)
|
||||||
|
m_rbSearchReplace->setEnabled(false);
|
||||||
|
m_rbSearchOnly->setChecked(true);
|
||||||
|
m_edSearch->setEnabled(true);
|
||||||
|
m_edReplace->setEnabled(false);
|
||||||
|
m_tlSearch->setEnabled(true);
|
||||||
|
m_tlReplace->setEnabled(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(m_wantEdit)
|
||||||
|
m_rbSearchOnly->setEnabled(false);
|
||||||
|
m_rbSearchReplace->setChecked(true);
|
||||||
|
m_edSearch->setEnabled(true);
|
||||||
|
m_edReplace->setEnabled(true);
|
||||||
|
m_tlSearch->setEnabled(true);
|
||||||
|
m_tlReplace->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
raiseView();
|
||||||
|
|
||||||
|
if(m_wantEdit)
|
||||||
|
loadMapIntoView();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KAddStringDlg::eraseViewItems()
|
||||||
|
{
|
||||||
|
Q3ListViewItem* item = m_sv->firstChild();
|
||||||
|
if(item == 0)
|
||||||
|
return;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while(item)
|
||||||
|
{
|
||||||
|
Q3ListViewItem* tempItem = item;
|
||||||
|
item = item->nextSibling();
|
||||||
|
delete tempItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KAddStringDlg::raiseView()
|
||||||
|
{
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
m_sv = m_stringView_2;
|
||||||
|
else
|
||||||
|
m_sv = m_stringView;
|
||||||
|
|
||||||
|
m_stack->raiseWidget(m_sv);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool KAddStringDlg::columnContains(Q3ListView* lv,const QString& s, int column)
|
||||||
|
{
|
||||||
|
Q3ListViewItem* i = lv->firstChild();
|
||||||
|
while (i != 0)
|
||||||
|
{
|
||||||
|
if(i->text(column) == s)
|
||||||
|
return true;
|
||||||
|
i = i->nextSibling();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KAddStringDlg::saveViewContentIntoMap()
|
||||||
|
{
|
||||||
|
Q3ListViewItem* i = m_sv->firstChild();
|
||||||
|
while(i != 0)
|
||||||
|
{
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
m_currentMap[i->text(0)] = QString();
|
||||||
|
else
|
||||||
|
m_currentMap[i->text(0)] = i->text(1);
|
||||||
|
i = i->nextSibling();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KAddStringDlg::loadMapIntoView()
|
||||||
|
{
|
||||||
|
KeyValueMap::Iterator itMap;
|
||||||
|
|
||||||
|
for (itMap = m_currentMap.begin(); itMap != m_currentMap.end(); ++itMap)
|
||||||
|
{
|
||||||
|
Q3ListViewItem* temp = new Q3ListViewItem(m_sv);
|
||||||
|
temp->setText(0,itMap.key());
|
||||||
|
if(!m_option->m_searchingOnlyMode)
|
||||||
|
temp->setText(1,itMap.data());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KAddStringDlg::whatsThis()
|
||||||
|
{
|
||||||
|
m_rbSearchOnly->setWhatsThis( rbSearchOnlyWhatthis);
|
||||||
|
m_rbSearchReplace->setWhatsThis( rbSearchReplaceWhatthis);
|
||||||
|
m_edSearch->setWhatsThis( edSearchWhatthis);
|
||||||
|
m_edReplace->setWhatsThis( edReplaceWhatthis);
|
||||||
|
}
|
||||||
|
|
||||||
|
//PRIVATE SLOTS
|
||||||
|
void KAddStringDlg::slotOK()
|
||||||
|
{
|
||||||
|
m_option->m_mapStringsView = m_currentMap;
|
||||||
|
|
||||||
|
accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KAddStringDlg::slotSearchOnly()
|
||||||
|
{
|
||||||
|
m_option->m_searchingOnlyMode = true;
|
||||||
|
|
||||||
|
m_rbSearchOnly->setChecked(true);
|
||||||
|
m_edSearch->setEnabled(true);
|
||||||
|
m_edReplace->setEnabled(false);
|
||||||
|
m_tlSearch->setEnabled(true);
|
||||||
|
m_tlReplace->setEnabled(false);
|
||||||
|
|
||||||
|
//sets the right view appearance
|
||||||
|
raiseView();
|
||||||
|
//empties the view content
|
||||||
|
eraseViewItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KAddStringDlg::slotSearchReplace()
|
||||||
|
{
|
||||||
|
m_option->m_searchingOnlyMode = false;
|
||||||
|
|
||||||
|
m_rbSearchReplace->setChecked(true);
|
||||||
|
m_edSearch->setEnabled(true);
|
||||||
|
m_edReplace->setEnabled(true);
|
||||||
|
m_tlSearch->setEnabled(true);
|
||||||
|
m_tlReplace->setEnabled(true);
|
||||||
|
|
||||||
|
//sets the right view appearance
|
||||||
|
raiseView();
|
||||||
|
//empties the view content
|
||||||
|
eraseViewItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KAddStringDlg::slotAddStringToView()
|
||||||
|
{
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
{
|
||||||
|
QString text = m_edSearch->text();
|
||||||
|
if(!(text.isEmpty() || columnContains(m_sv, text, 0)))
|
||||||
|
{
|
||||||
|
Q3ListViewItem* lvi = new Q3ListViewItem(m_sv);
|
||||||
|
lvi->setMultiLinesEnabled(true);
|
||||||
|
lvi->setText(0,text);
|
||||||
|
m_currentMap[text] = QString();
|
||||||
|
m_edSearch->clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QString searchText = m_edSearch->text(),
|
||||||
|
replaceText = m_edReplace->text();
|
||||||
|
|
||||||
|
if(!(searchText.isEmpty() || replaceText.isEmpty() || columnContains(m_sv,searchText,0) || columnContains(m_sv,replaceText,1)))
|
||||||
|
{
|
||||||
|
Q3ListViewItem* lvi = new Q3ListViewItem(m_sv);
|
||||||
|
lvi->setMultiLinesEnabled(true);
|
||||||
|
lvi->setText(0,searchText);
|
||||||
|
m_edSearch->clear();
|
||||||
|
lvi->setText(1,replaceText);
|
||||||
|
m_currentMap[searchText] = replaceText;
|
||||||
|
m_edReplace->clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KAddStringDlg::slotDeleteStringFromView()
|
||||||
|
{
|
||||||
|
// Choose current item or selected item
|
||||||
|
Q3ListViewItem* currentItem = m_sv->currentItem();
|
||||||
|
|
||||||
|
// Do nothing if list is empty
|
||||||
|
if(currentItem == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_currentMap.remove(currentItem->text(0));
|
||||||
|
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
{
|
||||||
|
m_edSearch->setText(currentItem->text(0));
|
||||||
|
m_edReplace->clear();
|
||||||
|
//currentItem->setText(1,m_edReplace->text());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_edSearch->setText(currentItem->text(0));
|
||||||
|
m_edReplace->setText(currentItem->text(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
delete currentItem;
|
||||||
|
|
||||||
|
currentItem = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KAddStringDlg::slotHelp()
|
||||||
|
{
|
||||||
|
KToolInvocation::invokeHelp(QString::null, "kfilereplace"); //krazy:exclude=nullstrassign for old broken gcc
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "kaddstringdlg.moc"
|
||||||
|
|
75
kfilereplace/kaddstringdlg.h
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
/***************************************************************************
|
||||||
|
KAddStringDlg.h - description
|
||||||
|
-------------------
|
||||||
|
begin : Sat Oct 16 1999
|
||||||
|
copyright : (C) 1999 by François Dupoux
|
||||||
|
(C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
email : dupoux@dupoux.com
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef KADDSTRINGDLG_H
|
||||||
|
#define KADDSTRINGDLG_H
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "kaddstringdlgs.h"
|
||||||
|
#include "configurationclasses.h"
|
||||||
|
/**
|
||||||
|
* This is the dialog used to add a list of searching/replacing strings
|
||||||
|
*/
|
||||||
|
class KAddStringDlg : public KAddStringDlgS
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
private:
|
||||||
|
RCOptions* m_option;
|
||||||
|
Q3ListView* m_sv;
|
||||||
|
KeyValueMap m_currentMap;
|
||||||
|
bool m_wantEdit;
|
||||||
|
|
||||||
|
public: //Constructors
|
||||||
|
KAddStringDlg(RCOptions* info, bool wantEdit, QWidget *parent=0, const char *name=0);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void slotOK();
|
||||||
|
void slotSearchOnly();
|
||||||
|
void slotSearchReplace();
|
||||||
|
void slotAddStringToView();
|
||||||
|
void slotDeleteStringFromView();
|
||||||
|
void slotHelp();
|
||||||
|
|
||||||
|
private:
|
||||||
|
/**
|
||||||
|
* inits... the GUI :-)
|
||||||
|
*/
|
||||||
|
void initGUI();
|
||||||
|
/**
|
||||||
|
* Deletes all the items of the view
|
||||||
|
*/
|
||||||
|
void eraseViewItems();
|
||||||
|
/**
|
||||||
|
* Deletes all the items of the map
|
||||||
|
*/
|
||||||
|
void clearMap() { KeyValueMap m; m_option->m_mapStringsView = m; }
|
||||||
|
/**
|
||||||
|
* The view is actually a stack widget that contains two different views widget
|
||||||
|
*/
|
||||||
|
void raiseView();
|
||||||
|
/**
|
||||||
|
* Verifies whether 'lv' contains 's'
|
||||||
|
*/
|
||||||
|
bool columnContains(Q3ListView* lv,const QString& s, int column);
|
||||||
|
void saveViewContentIntoMap();
|
||||||
|
void loadMapIntoView();
|
||||||
|
void whatsThis();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // KADDSTRINGDLG_H
|
||||||
|
|
425
kfilereplace/kaddstringdlgs.ui
Normal file
|
@ -0,0 +1,425 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
|
||||||
|
<class>KAddStringDlgS</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>KAddStringDlgS</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>586</width>
|
||||||
|
<height>347</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>Insert Searching/Replacing Strings</string>
|
||||||
|
</property>
|
||||||
|
<property name="sizeGripEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout14</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QButtonGroup">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>bgChoose</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Choose String Adding Mode</string>
|
||||||
|
</property>
|
||||||
|
<property name="exclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QRadioButton" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_rbSearchReplace</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Search and replace mode</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QRadioButton" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_rbSearchOnly</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Search only mode</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QFrame">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>frame4</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>Raised</enum>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout11</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout13</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlSearch</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Search for:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QTextEdit">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_edSearch</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="textFormat">
|
||||||
|
<enum>Qt::PlainText</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout14</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlReplace</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Replace with:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QTextEdit">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_edReplace</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textFormat">
|
||||||
|
<enum>Qt::PlainText</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoFormatting">
|
||||||
|
<set>QTextEdit::AutoAll</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout16</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer8</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>90</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout15</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbDel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>30</width>
|
||||||
|
<height>32767</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbAdd</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>30</width>
|
||||||
|
<height>32767</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer9</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>90</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidgetStack" row="0" column="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_stack</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>7</hsizetype>
|
||||||
|
<vsizetype>7</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>WStackPage</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="id">
|
||||||
|
<number>0</number>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QListView" row="0" column="0">
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Search For</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_stringView_2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="allColumnsShowFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="showSortIndicator">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizeMode">
|
||||||
|
<enum>AllColumns</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>WStackPage</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="id">
|
||||||
|
<number>1</number>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QListView" row="0" column="0">
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Search For</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Replace With</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_stringView</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="allColumnsShowFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="showSortIndicator">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizeMode">
|
||||||
|
<enum>AllColumns</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout2</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbHelp</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Help</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>90</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout1</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbOK</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&OK</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbCancel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Cancel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>m_pbCancel</sender>
|
||||||
|
<signal>clicked()</signal>
|
||||||
|
<receiver>KAddStringDlgS</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</UI>
|
117
kfilereplace/kfilereplace.cpp
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
/***************************************************************************
|
||||||
|
kfilereplace.cpp - KFileReplace shell implementation
|
||||||
|
-------------------
|
||||||
|
begin : Thu Sep 16 14:14:09 2004
|
||||||
|
copyright : (C) 2004 by Andras Mantia <amantia@kde.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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
//kde includes
|
||||||
|
#include <kedittoolbar.h>
|
||||||
|
#include <klibloader.h>
|
||||||
|
#include <klocale.h>
|
||||||
|
#include <kshortcutsdialog.h>
|
||||||
|
#include <kmessagebox.h>
|
||||||
|
#include <kxmlguifactory.h>
|
||||||
|
//app includes
|
||||||
|
#include "kfilereplace.h"
|
||||||
|
//Added by qt3to4:
|
||||||
|
#include <kactioncollection.h>
|
||||||
|
#include <kstandardaction.h>
|
||||||
|
|
||||||
|
KFileReplace::KFileReplace()
|
||||||
|
: KParts::MainWindow()
|
||||||
|
{
|
||||||
|
setObjectName("KFileReplace");
|
||||||
|
KLibFactory *factory = KLibLoader::self()->factory("libkfilereplacepart");
|
||||||
|
if (factory)
|
||||||
|
{
|
||||||
|
m_part = static_cast<KParts::ReadOnlyPart *>(factory->create(this, "KParts::ReadOnlyPart"));
|
||||||
|
|
||||||
|
if (m_part)
|
||||||
|
{
|
||||||
|
m_part->setObjectName("kfilereplace_part");
|
||||||
|
setCentralWidget(m_part->widget());
|
||||||
|
KStandardAction::quit(this, SLOT(close()), actionCollection());
|
||||||
|
KStandardAction::keyBindings(this, SLOT(slotConfigureKeys()), actionCollection());
|
||||||
|
KStandardAction::configureToolbars(this, SLOT(slotConfigureToolbars()), actionCollection());
|
||||||
|
setStandardToolBarMenuEnabled(true);
|
||||||
|
createGUI(m_part);
|
||||||
|
removeDuplicatedActions();
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
KMessageBox::error(this, i18n("Could not load the KFileReplace part."));
|
||||||
|
close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
KMessageBox::error(this, i18n("Could not find the KFileReplace part."));
|
||||||
|
close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
KFileReplace::~KFileReplace()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplace::openURL(const KUrl &url)
|
||||||
|
{
|
||||||
|
m_part->openUrl(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplace::slotConfigureKeys()
|
||||||
|
{
|
||||||
|
KShortcutsDialog dlg( KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsAllowed, this );
|
||||||
|
QList<KXMLGUIClient*> clients = guiFactory()->clients();
|
||||||
|
foreach(KXMLGUIClient *client, clients)
|
||||||
|
dlg.addCollection(client->actionCollection());
|
||||||
|
dlg.configure();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplace::slotConfigureToolbars()
|
||||||
|
{
|
||||||
|
saveMainWindowSettings(KGlobal::config()->group( autoSaveGroup()) );
|
||||||
|
KEditToolBar dlg(factory());
|
||||||
|
connect(&dlg, SIGNAL(newToolbarConfig()),
|
||||||
|
this, SLOT(applyNewToolbarConfig()));
|
||||||
|
dlg.exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplace::applyNewToolbarConfig()
|
||||||
|
{
|
||||||
|
applyMainWindowSettings(KGlobal::config()->group( autoSaveGroup()) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void KFileReplace::removeDuplicatedActions()
|
||||||
|
{
|
||||||
|
KActionCollection* part_action_collection = m_part->actionCollection();
|
||||||
|
QAction* part_about_action = part_action_collection->action("help_about_kfilereplace");
|
||||||
|
QAction* part_report_action = part_action_collection->action("report_bug");
|
||||||
|
QAction* part_help_action= part_action_collection->action("help_kfilereplace");
|
||||||
|
|
||||||
|
if (!part_about_action || !part_report_action || !part_help_action || !part_action_collection)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QWidget* container = part_about_action->associatedWidgets().value(0);
|
||||||
|
container->removeAction(part_about_action);
|
||||||
|
container->removeAction(part_report_action);
|
||||||
|
container->removeAction(part_help_action);
|
||||||
|
part_action_collection->removeAction(part_about_action);
|
||||||
|
part_action_collection->removeAction(part_report_action);
|
||||||
|
part_action_collection->removeAction(part_help_action);
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "kfilereplace.moc"
|
114
kfilereplace/kfilereplace.desktop
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=KFileReplace
|
||||||
|
Name[bg]=KFileReplace
|
||||||
|
Name[br]=KFileReplace
|
||||||
|
Name[bs]=KFileReplace
|
||||||
|
Name[ca]=KFileReplace
|
||||||
|
Name[ca@valencia]=KFileReplace
|
||||||
|
Name[cs]=KFileReplace
|
||||||
|
Name[cy]=KFileReplace
|
||||||
|
Name[da]=KFileReplace
|
||||||
|
Name[de]=KFileReplace
|
||||||
|
Name[el]=KFileReplace
|
||||||
|
Name[en_GB]=KFileReplace
|
||||||
|
Name[es]=KFileReplace
|
||||||
|
Name[et]=KFileReplace
|
||||||
|
Name[eu]=KFileReplace
|
||||||
|
Name[fi]=KFileReplace
|
||||||
|
Name[fr]=KFileReplace
|
||||||
|
Name[ga]=KFileReplace
|
||||||
|
Name[gl]=KFileReplace
|
||||||
|
Name[he]=KFileReplace
|
||||||
|
Name[hne]=के-फाइल-रिप्लेस
|
||||||
|
Name[hr]=KFileReplace
|
||||||
|
Name[hu]=KFileReplace
|
||||||
|
Name[is]=KFileReplace
|
||||||
|
Name[it]=KFileReplace
|
||||||
|
Name[ja]=KFileReplace
|
||||||
|
Name[kk]=KFileReplace
|
||||||
|
Name[ko]=KFileReplace
|
||||||
|
Name[lt]=KFileReplace
|
||||||
|
Name[lv]=KFileReplace
|
||||||
|
Name[ms]=KFileReplace
|
||||||
|
Name[nb]=KFileReplace
|
||||||
|
Name[nds]=KFileReplace
|
||||||
|
Name[ne]=केडीई फाइल प्रतिस्थापन
|
||||||
|
Name[nl]=KFileReplace
|
||||||
|
Name[nn]=KFileReplace
|
||||||
|
Name[pa]=KFileReplace
|
||||||
|
Name[pl]=KFileReplace
|
||||||
|
Name[pt]=KFileReplace
|
||||||
|
Name[pt_BR]=KFileReplace
|
||||||
|
Name[ro]=KFileReplace
|
||||||
|
Name[ru]=KFileReplace
|
||||||
|
Name[sk]=KFile zameniť
|
||||||
|
Name[sl]=KFileReplace
|
||||||
|
Name[sv]=Kfilereplace
|
||||||
|
Name[ta]=Kகோப்பு இடமாற்று
|
||||||
|
Name[tg]=KФайлро ҷойгузор кардан
|
||||||
|
Name[th]=โปรแกรมค้นหาและแทนที่ KFileReplace
|
||||||
|
Name[tr]=KFileReplace
|
||||||
|
Name[ug]=KFileReplace
|
||||||
|
Name[uk]=KFileReplace
|
||||||
|
Name[x-test]=xxKFileReplacexx
|
||||||
|
Name[zh_CN]=KFileReplace
|
||||||
|
Name[zh_HK]=KFileReplace
|
||||||
|
Name[zh_TW]=KFileReplace
|
||||||
|
Exec=kfilereplace %i -caption %c
|
||||||
|
Icon=kfilereplace
|
||||||
|
Type=Application
|
||||||
|
X-DocPath=kfilereplace/index.html
|
||||||
|
Terminal=false
|
||||||
|
GenericName=Search & Replace Tool
|
||||||
|
GenericName[bg]=Търсене и замяна
|
||||||
|
GenericName[br]=Ostilh klask hag erlec'hiañ
|
||||||
|
GenericName[bs]=Alat za traženje i zamjeu
|
||||||
|
GenericName[ca]=Eina cerca i substitueix
|
||||||
|
GenericName[ca@valencia]=Eina cerca i substitueix
|
||||||
|
GenericName[cs]=Nástroj pro vyhledání a nahrazení
|
||||||
|
GenericName[da]=Søg og erstat-værktøj
|
||||||
|
GenericName[de]=Werkzeug zum Suchen & Ersetzen
|
||||||
|
GenericName[el]=Εργαλείο αναζήτησης & αντικατάστασης
|
||||||
|
GenericName[en_GB]=Search & Replace Tool
|
||||||
|
GenericName[es]=Herramienta de búsqueda y remplazo
|
||||||
|
GenericName[et]=Otsimise ja asendamise tööriist
|
||||||
|
GenericName[eu]=Bilaketa eta ordezkapen tresna
|
||||||
|
GenericName[fa]=ابزار جستجو و جایگزینی
|
||||||
|
GenericName[fi]=Etsi ja korvaa -työkalu
|
||||||
|
GenericName[fr]=Outil de recherche et de remplacement
|
||||||
|
GenericName[ga]=Uirlis Chuardaigh/Ionadaithe
|
||||||
|
GenericName[gl]=Utilidade de procura e substitución
|
||||||
|
GenericName[he]=כלי חיפוש והחלפה
|
||||||
|
GenericName[hne]=खोजें अउ बदलव औजार
|
||||||
|
GenericName[hu]=Keresés és csere eszköz
|
||||||
|
GenericName[is]=Tól til að leita að texta og skipta út
|
||||||
|
GenericName[it]=Strumento di ricerca e sostituzione
|
||||||
|
GenericName[ja]=検索置換ツール
|
||||||
|
GenericName[kk]=Іздеу және ауыстыру құралы
|
||||||
|
GenericName[ko]=찾기 및 바꾸기 도구
|
||||||
|
GenericName[ku]=Amûra Lêgerîn û Guherandinê
|
||||||
|
GenericName[lt]=Paieškos ir keitimo įrankis
|
||||||
|
GenericName[lv]=Meklēšanas uz aizvietošanas rīks
|
||||||
|
GenericName[nb]=Søk/erstatt-verktøy
|
||||||
|
GenericName[nds]=Söök- un Utwesselwarktüüch
|
||||||
|
GenericName[ne]=खोजी गर्ने र बदल्ने उपरकरण
|
||||||
|
GenericName[nl]=Gereedschap voor zoeken en vervangen
|
||||||
|
GenericName[nn]=Verktøy for søk og erstatt
|
||||||
|
GenericName[pa]=ਖੋਜ ਅਤੇ ਤਬਦੀਲ ਟੂਲ
|
||||||
|
GenericName[pl]=Narzędzie do wyszukiwania i zamiany
|
||||||
|
GenericName[pt]=Ferramenta de Procura e Substituição
|
||||||
|
GenericName[pt_BR]=Ferramenta de pesquisa e substituição
|
||||||
|
GenericName[ro]=Unealtă de căutare și înlocuire
|
||||||
|
GenericName[ru]=Поиск и замена
|
||||||
|
GenericName[sk]=Nájsť a zameniť
|
||||||
|
GenericName[sl]=Orodje za iskanje in zamenjavo
|
||||||
|
GenericName[sv]=Sök- och ersättningsverktyg
|
||||||
|
GenericName[th]=เครื่องมือค้นหาและแทนที่
|
||||||
|
GenericName[tr]=Arama Ve Değiştirme Aracı
|
||||||
|
GenericName[ug]=ئىزدەش ۋە ئالماشتۇرۇش قورالى
|
||||||
|
GenericName[uk]=Засіб пошуку та заміни
|
||||||
|
GenericName[x-test]=xxSearch & Replace Toolxx
|
||||||
|
GenericName[zh_CN]=搜索替换工具
|
||||||
|
GenericName[zh_HK]=搜尋及取代工具
|
||||||
|
GenericName[zh_TW]=搜尋及取代工具
|
||||||
|
Categories=Qt;KDE;Utility;X-KDE-Utilities-File;
|
45
kfilereplace/kfilereplace.h
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
/***************************************************************************
|
||||||
|
kfilereplace.h - KFileReplace header
|
||||||
|
-------------------
|
||||||
|
begin : Thu Sep 16 14:14:09 2004
|
||||||
|
copyright : (C) 2004 by Andras Mantia <amantia@kde.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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
#ifndef KFILEREPLACE_H
|
||||||
|
#define KFILEREPLACE_H
|
||||||
|
|
||||||
|
#include <kparts/mainwindow.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
Shell application for the KFileReplace part.
|
||||||
|
|
||||||
|
@author Andras Mantia
|
||||||
|
*/
|
||||||
|
class KFileReplace : public KParts::MainWindow
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
KFileReplace();
|
||||||
|
~KFileReplace();
|
||||||
|
void openURL(const KUrl &url);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void slotConfigureKeys();
|
||||||
|
void slotConfigureToolbars();
|
||||||
|
void applyNewToolbarConfig();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void removeDuplicatedActions();
|
||||||
|
|
||||||
|
KParts::ReadOnlyPart *m_part;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
190
kfilereplace/kfilereplace.kdevelop
Normal file
|
@ -0,0 +1,190 @@
|
||||||
|
<?xml version = '1.0'?>
|
||||||
|
<kdevelop>
|
||||||
|
<general>
|
||||||
|
<author/>
|
||||||
|
<email/>
|
||||||
|
<version>$VERSION$</version>
|
||||||
|
<projectmanagement>KDevKDEAutoProject</projectmanagement>
|
||||||
|
<primarylanguage>C++</primarylanguage>
|
||||||
|
<keywords>
|
||||||
|
<keyword>Qt</keyword>
|
||||||
|
<keyword>KDE</keyword>
|
||||||
|
</keywords>
|
||||||
|
<projectdirectory>.</projectdirectory>
|
||||||
|
<absoluteprojectpath>false</absoluteprojectpath>
|
||||||
|
<description/>
|
||||||
|
<ignoreparts/>
|
||||||
|
<secondaryLanguages/>
|
||||||
|
<versioncontrol>kdevcvsservice</versioncontrol>
|
||||||
|
</general>
|
||||||
|
<kdevfileview>
|
||||||
|
<groups>
|
||||||
|
<group pattern="*.cpp;*.cxx;*.h" name="Sources" />
|
||||||
|
<group pattern="*.ui" name="User Interface" />
|
||||||
|
<group pattern="*.png" name="Icons" />
|
||||||
|
<group pattern="*.po;*.ts" name="Translations" />
|
||||||
|
<group pattern="*" name="Others" />
|
||||||
|
<hidenonprojectfiles>false</hidenonprojectfiles>
|
||||||
|
<hidenonlocation>false</hidenonlocation>
|
||||||
|
</groups>
|
||||||
|
<tree>
|
||||||
|
<showvcsfields>false</showvcsfields>
|
||||||
|
<hidenonprojectfiles>false</hidenonprojectfiles>
|
||||||
|
<hidepatterns>*.o,*.lo,CVS</hidepatterns>
|
||||||
|
</tree>
|
||||||
|
</kdevfileview>
|
||||||
|
<kdevdoctreeview>
|
||||||
|
<ignoretocs>
|
||||||
|
<toc>ada</toc>
|
||||||
|
<toc>ada_bugs_gcc</toc>
|
||||||
|
<toc>bash</toc>
|
||||||
|
<toc>bash_bugs</toc>
|
||||||
|
<toc>clanlib</toc>
|
||||||
|
<toc>fortran_bugs_gcc</toc>
|
||||||
|
<toc>gnome1</toc>
|
||||||
|
<toc>gnustep</toc>
|
||||||
|
<toc>gtk</toc>
|
||||||
|
<toc>gtk_bugs</toc>
|
||||||
|
<toc>haskell</toc>
|
||||||
|
<toc>haskell_bugs_ghc</toc>
|
||||||
|
<toc>java_bugs_gcc</toc>
|
||||||
|
<toc>java_bugs_sun</toc>
|
||||||
|
<toc>opengl</toc>
|
||||||
|
<toc>pascal_bugs_fp</toc>
|
||||||
|
<toc>php</toc>
|
||||||
|
<toc>php_bugs</toc>
|
||||||
|
<toc>perl</toc>
|
||||||
|
<toc>perl_bugs</toc>
|
||||||
|
<toc>python</toc>
|
||||||
|
<toc>python_bugs</toc>
|
||||||
|
<toc>ruby</toc>
|
||||||
|
<toc>ruby_bugs</toc>
|
||||||
|
<toc>sdl</toc>
|
||||||
|
<toc>stl</toc>
|
||||||
|
<toc>sw</toc>
|
||||||
|
<toc>w3c-dom-level2-html</toc>
|
||||||
|
<toc>w3c-svg</toc>
|
||||||
|
<toc>w3c-uaag10</toc>
|
||||||
|
<toc>wxwidgets_bugs</toc>
|
||||||
|
</ignoretocs>
|
||||||
|
<ignoreqt_xml>
|
||||||
|
<toc>qmake User Guide</toc>
|
||||||
|
</ignoreqt_xml>
|
||||||
|
</kdevdoctreeview>
|
||||||
|
<kdevdebugger>
|
||||||
|
<general>
|
||||||
|
<dbgshell>libtool</dbgshell>
|
||||||
|
<programargs/>
|
||||||
|
<gdbpath/>
|
||||||
|
<configGdbScript/>
|
||||||
|
<runShellScript/>
|
||||||
|
<runGdbScript/>
|
||||||
|
<breakonloadinglibs>true</breakonloadinglibs>
|
||||||
|
<separatetty>false</separatetty>
|
||||||
|
<floatingtoolbar>false</floatingtoolbar>
|
||||||
|
</general>
|
||||||
|
<display>
|
||||||
|
<staticmembers>false</staticmembers>
|
||||||
|
<demanglenames>true</demanglenames>
|
||||||
|
<outputradix>10</outputradix>
|
||||||
|
</display>
|
||||||
|
</kdevdebugger>
|
||||||
|
<kdevfilecreate>
|
||||||
|
<filetypes/>
|
||||||
|
<useglobaltypes>
|
||||||
|
<type ext="ui" />
|
||||||
|
<type ext="cpp" />
|
||||||
|
<type ext="h" />
|
||||||
|
</useglobaltypes>
|
||||||
|
</kdevfilecreate>
|
||||||
|
<kdevautoproject>
|
||||||
|
<make>
|
||||||
|
<envvars>
|
||||||
|
<envvar value="1" name="WANT_AUTOCONF_2_5" />
|
||||||
|
<envvar value="1" name="WANT_AUTOMAKE_1_6" />
|
||||||
|
</envvars>
|
||||||
|
<abortonerror>true</abortonerror>
|
||||||
|
<numberofjobs>1</numberofjobs>
|
||||||
|
<dontact>false</dontact>
|
||||||
|
<makebin/>
|
||||||
|
<prio>0</prio>
|
||||||
|
</make>
|
||||||
|
<run>
|
||||||
|
<directoryradio>build</directoryradio>
|
||||||
|
<customdirectory>/</customdirectory>
|
||||||
|
<mainprogram>kfilereplace/kfilereplace</mainprogram>
|
||||||
|
<programargs/>
|
||||||
|
<terminal>false</terminal>
|
||||||
|
<autocompile>true</autocompile>
|
||||||
|
<envvars/>
|
||||||
|
</run>
|
||||||
|
<general>
|
||||||
|
<useconfiguration>default</useconfiguration>
|
||||||
|
<activetarget>kfilereplace</activetarget>
|
||||||
|
</general>
|
||||||
|
<configurations>
|
||||||
|
<default>
|
||||||
|
<envvars>
|
||||||
|
<envvar value="kommander klinkstatus kxsldbg kimagemapeditor quanta" name="DO_NOT_COMPILE" />
|
||||||
|
</envvars>
|
||||||
|
<configargs>--enable-debug=full --prefix=/opt/kde3 --enable-editors</configargs>
|
||||||
|
<builddir>/home/andris/development/build/kde-head/kdewebdev</builddir>
|
||||||
|
<topsourcedir>/home/andris/development/sources/kde-head/kdewebdev</topsourcedir>
|
||||||
|
<cppflags>-DKDE_NO_COMPAT -DQT_NO_COMPAT -DDEBUG_PARSER</cppflags>
|
||||||
|
<ldflags/>
|
||||||
|
<ccompiler>kdevgccoptions</ccompiler>
|
||||||
|
<cxxcompiler>kdevgppoptions</cxxcompiler>
|
||||||
|
<f77compiler>kdevpgf77options</f77compiler>
|
||||||
|
<ccompilerbinary/>
|
||||||
|
<cxxcompilerbinary/>
|
||||||
|
<f77compilerbinary/>
|
||||||
|
<cflags/>
|
||||||
|
<cxxflags/>
|
||||||
|
<f77flags/>
|
||||||
|
</default>
|
||||||
|
</configurations>
|
||||||
|
</kdevautoproject>
|
||||||
|
<cppsupportpart>
|
||||||
|
<filetemplates>
|
||||||
|
<interfacesuffix>.h</interfacesuffix>
|
||||||
|
<implementationsuffix>.cpp</implementationsuffix>
|
||||||
|
</filetemplates>
|
||||||
|
</cppsupportpart>
|
||||||
|
<kdevcppsupport>
|
||||||
|
<codecompletion>
|
||||||
|
<includeGlobalFunctions>true</includeGlobalFunctions>
|
||||||
|
<includeTypes>true</includeTypes>
|
||||||
|
<includeEnums>true</includeEnums>
|
||||||
|
<includeTypedefs>false</includeTypedefs>
|
||||||
|
<automaticCodeCompletion>true</automaticCodeCompletion>
|
||||||
|
<automaticArgumentsHint>true</automaticArgumentsHint>
|
||||||
|
<automaticHeaderCompletion>true</automaticHeaderCompletion>
|
||||||
|
<codeCompletionDelay>250</codeCompletionDelay>
|
||||||
|
<argumentsHintDelay>400</argumentsHintDelay>
|
||||||
|
<headerCompletionDelay>250</headerCompletionDelay>
|
||||||
|
</codecompletion>
|
||||||
|
<references/>
|
||||||
|
<creategettersetter>
|
||||||
|
<prefixGet/>
|
||||||
|
<prefixSet>set</prefixSet>
|
||||||
|
<prefixVariable>m_,_</prefixVariable>
|
||||||
|
<parameterName>theValue</parameterName>
|
||||||
|
<inlineGet>true</inlineGet>
|
||||||
|
<inlineSet>true</inlineSet>
|
||||||
|
</creategettersetter>
|
||||||
|
</kdevcppsupport>
|
||||||
|
<kdevdocumentation>
|
||||||
|
<projectdoc>
|
||||||
|
<docsystem/>
|
||||||
|
<docurl/>
|
||||||
|
<usermanualurl/>
|
||||||
|
</projectdoc>
|
||||||
|
</kdevdocumentation>
|
||||||
|
<kdevcvsservice>
|
||||||
|
<recursivewhenupdate>true</recursivewhenupdate>
|
||||||
|
<prunedirswhenupdate>true</prunedirswhenupdate>
|
||||||
|
<createdirswhenupdate>true</createdirswhenupdate>
|
||||||
|
<recursivewhencommitremove>true</recursivewhencommitremove>
|
||||||
|
<revertoptions>-C</revertoptions>
|
||||||
|
</kdevcvsservice>
|
||||||
|
</kdevelop>
|
30
kfilereplace/kfilereplaceiface.h
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
/***************************************************************************
|
||||||
|
kfilereplaceif.h - description
|
||||||
|
-------------------
|
||||||
|
copyright : (C) 1999 by François Dupoux
|
||||||
|
(C) 2003 Andras Mantia
|
||||||
|
email : dupoux@dupoux.com, amantia@kde.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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
#ifndef KFILEREPLACEIFACE_H
|
||||||
|
#define KFILEREPLACEIFACE_H
|
||||||
|
|
||||||
|
#include <dcopobject.h>
|
||||||
|
|
||||||
|
class KFileReplaceIface : virtual public DCOPObject
|
||||||
|
{
|
||||||
|
K_DCOP
|
||||||
|
|
||||||
|
k_dcop:
|
||||||
|
virtual void openURL(const QString& url) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // KFILEREPLACEIFACE_H
|
364
kfilereplace/kfilereplacelib.cpp
Normal file
|
@ -0,0 +1,364 @@
|
||||||
|
/***************************************************************************
|
||||||
|
kfilereplacelib.cpp - File library
|
||||||
|
-------------------
|
||||||
|
begin : lun mai 3 20:19:52 CEST 1999
|
||||||
|
|
||||||
|
copyright : (C) 1999 by François Dupoux
|
||||||
|
(C) 2003 Andras Mantia <amantia@kde.org>
|
||||||
|
(C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
email : dupoux@dupoux.com
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
//QT
|
||||||
|
#include <qstringlist.h>
|
||||||
|
#include <qwidget.h>
|
||||||
|
#include <q3listview.h>
|
||||||
|
#include <qfileinfo.h>
|
||||||
|
#include <qpixmap.h>
|
||||||
|
|
||||||
|
//KDE
|
||||||
|
#include <kdebug.h>
|
||||||
|
#include <kmessagebox.h>
|
||||||
|
#include <k3listview.h>
|
||||||
|
#include <kiconloader.h>
|
||||||
|
|
||||||
|
//needed for malloc/free
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "kfilereplacelib.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
Format a path, from a path and a filename, or another sub-path (avoid double '/' risks)
|
||||||
|
Parameters::.....* basePath: fist path (can be "/" if root, or "/usr/bin/" or "/usr/bin" for example)
|
||||||
|
.................* fileName: second path (can be "/doc/html/", or "doc/html/" or "doc/html/index.html" for example)
|
||||||
|
Return values:...* Full valid path (without double "/")
|
||||||
|
*/
|
||||||
|
QString KFileReplaceLib::formatFullPath(const QString& basePath, const QString &fileName)
|
||||||
|
{
|
||||||
|
QString fullPath = basePath;
|
||||||
|
QString fname = fileName;
|
||||||
|
|
||||||
|
if (fname.startsWith('/')) // skip beginning '/'
|
||||||
|
fname = fname.remove(0,1);
|
||||||
|
|
||||||
|
if (fullPath.endsWith('/'))
|
||||||
|
fullPath.append(fname);
|
||||||
|
else
|
||||||
|
fullPath.append('/'+fname);
|
||||||
|
|
||||||
|
return fullPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add an extension to a filename, or a filepath
|
||||||
|
Parameters::.....* fileName: filename or filepath (it can have already the extension)
|
||||||
|
.................* extension: extension to add without "." (ex: "html", "kfr")
|
||||||
|
Return values:...* Filename / Filepath with the extension
|
||||||
|
*/
|
||||||
|
QString KFileReplaceLib::addExtension(const QString& fileName, const QString& extension)
|
||||||
|
{
|
||||||
|
QString fullExtension = ".";
|
||||||
|
QString fname = fileName;
|
||||||
|
|
||||||
|
fullExtension.append(extension);
|
||||||
|
|
||||||
|
// filename cannot contain ".ext" ==> Add it
|
||||||
|
if(fname.length() <= fullExtension.length())
|
||||||
|
fname.append(fullExtension);
|
||||||
|
else // filename can contain ".ext"
|
||||||
|
{
|
||||||
|
if (fname.right(fullExtension.length()) != fullExtension)
|
||||||
|
fname.append(fullExtension);
|
||||||
|
}
|
||||||
|
|
||||||
|
return fname;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString KFileReplaceLib::formatFileSize(double size)
|
||||||
|
{
|
||||||
|
QString stringSize;
|
||||||
|
|
||||||
|
if(size < 10000)
|
||||||
|
{
|
||||||
|
const int asInt = (int) size;
|
||||||
|
stringSize = i18np("1 byte", "%1 bytes", asInt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stringSize = KGlobal::locale()->formatByteSize(size, 2);
|
||||||
|
}
|
||||||
|
return stringSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceLib::convertOldToNewKFRFormat(const QString& fileName, K3ListView* stringView)
|
||||||
|
{
|
||||||
|
//this method convert old format in new XML-based format
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char pgm[13]; // Must be "KFileReplace" : like MZ for EXE files
|
||||||
|
int stringNumber; // Number of strings in file
|
||||||
|
char reserved[64]; // Reserved for future use
|
||||||
|
} KFRHeader;
|
||||||
|
|
||||||
|
KFRHeader head;
|
||||||
|
|
||||||
|
FILE* f = fopen(QFile::encodeName(fileName),"rb");
|
||||||
|
int err = fread(&head, sizeof(KFRHeader), 1, f);
|
||||||
|
QString pgm(head.pgm);
|
||||||
|
|
||||||
|
if(!f || (err != 1) || (pgm != "KFileReplace"))
|
||||||
|
{
|
||||||
|
KMessageBox::error(0, i18n("<qt>Cannot open the file <b>%1</b> and load the string list. This file seems not to be a valid old kfr file or it is broken.</qt>", fileName));
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
stringView->clear();
|
||||||
|
|
||||||
|
int oldTextSize,
|
||||||
|
newTextSize,
|
||||||
|
errors = 0,
|
||||||
|
stringSize;
|
||||||
|
QStringList l;
|
||||||
|
|
||||||
|
int i ;
|
||||||
|
for (i=0; i < head.stringNumber; i++)
|
||||||
|
{
|
||||||
|
errors += (fread(&oldTextSize, sizeof(int), 1, f)) != 1;
|
||||||
|
errors += (fread(&newTextSize, sizeof(int), 1, f)) != 1;
|
||||||
|
if(errors > 0)
|
||||||
|
KMessageBox::error(0, i18n("Cannot read data."));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stringSize = ((oldTextSize > newTextSize) ? oldTextSize : newTextSize) + 2;
|
||||||
|
char* oldString = (char*) malloc(stringSize+10),
|
||||||
|
* newString = (char*) malloc(stringSize+10);
|
||||||
|
if (oldString == 0 || newString == 0)
|
||||||
|
KMessageBox::error(0, i18n("Out of memory."));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memset(oldString, 0, stringSize);
|
||||||
|
memset(newString,0, stringSize);
|
||||||
|
|
||||||
|
if (fread(oldString, oldTextSize, 1, f) != 1)
|
||||||
|
KMessageBox::error(0, i18n("Cannot read data."));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (newTextSize > 0) // If there is a Replace text
|
||||||
|
{
|
||||||
|
if (fread(newString, newTextSize, 1, f) != 1)
|
||||||
|
KMessageBox::error(0, i18n("Cannot read data."));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Q3ListViewItem* lvi = new Q3ListViewItem(stringView);
|
||||||
|
lvi->setText(0,oldString);
|
||||||
|
lvi->setText(1,newString);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(newString)
|
||||||
|
free(newString);
|
||||||
|
if(oldString)
|
||||||
|
free(oldString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool KFileReplaceLib::isAnAccessibleFile(const QString& filePath, const QString& fileName, RCOptions* info)
|
||||||
|
{
|
||||||
|
QString bkExt = info->m_backupExtension;
|
||||||
|
if(fileName == ".." || fileName == "." || (!bkExt.isEmpty() && fileName.right(bkExt.length()) == bkExt))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
QFileInfo fi;
|
||||||
|
if(filePath.isEmpty())
|
||||||
|
fi.setFile(fileName);
|
||||||
|
else
|
||||||
|
fi.setFile(filePath+'/'+fileName);
|
||||||
|
|
||||||
|
if(fi.isDir())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
int minSize = info->m_minSize,
|
||||||
|
maxSize = info->m_maxSize;
|
||||||
|
QString minDate = info->m_minDate,
|
||||||
|
maxDate = info->m_maxDate,
|
||||||
|
dateAccess = info->m_dateAccess;
|
||||||
|
|
||||||
|
// Avoid files that not match access date requirements
|
||||||
|
QString last = "unknown";
|
||||||
|
if(dateAccess == "Last Writing Access")
|
||||||
|
last = fi.lastModified().toString(Qt::ISODate);
|
||||||
|
if(dateAccess == "Last Reading Access")
|
||||||
|
last = fi.lastRead().toString(Qt::ISODate);
|
||||||
|
|
||||||
|
if(last != "unknown")
|
||||||
|
{
|
||||||
|
if(minDate != "unknown" && maxDate != "unknown")
|
||||||
|
{ //If out of range then exit
|
||||||
|
if((minDate > last) || (maxDate < last))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(minDate != "unknown")
|
||||||
|
{ //If out of range then exit
|
||||||
|
if(minDate > last)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(maxDate != "unknown")
|
||||||
|
//If out of range then exit
|
||||||
|
if(maxDate < last)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Avoid files that not match size requirements
|
||||||
|
int size = fi.size();
|
||||||
|
if(maxSize != FileSizeOption && minSize != FileSizeOption)
|
||||||
|
if(size > (maxSize*1024) || size < (minSize*1024))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Avoid files that not match ownership requirements
|
||||||
|
if(info->m_ownerUserIsChecked)
|
||||||
|
{
|
||||||
|
QString fileOwnerUser;
|
||||||
|
if(info->m_ownerUserType == "Name")
|
||||||
|
fileOwnerUser = fi.owner();
|
||||||
|
else
|
||||||
|
fileOwnerUser = QString::number(fi.ownerId(),10);
|
||||||
|
|
||||||
|
if(info->m_ownerUserBool == "Equals To")
|
||||||
|
{
|
||||||
|
if(info->m_ownerUserValue != fileOwnerUser)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(info->m_ownerUserValue == fileOwnerUser)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(info->m_ownerGroupIsChecked)
|
||||||
|
{
|
||||||
|
QString fileOwnerGroup;
|
||||||
|
if(info->m_ownerGroupType == "Name")
|
||||||
|
fileOwnerGroup = fi.group();
|
||||||
|
else
|
||||||
|
fileOwnerGroup = QString::number(fi.groupId(),10);
|
||||||
|
if(info->m_ownerGroupBool == "Equals To")
|
||||||
|
{
|
||||||
|
if(info->m_ownerGroupValue != fileOwnerGroup)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(info->m_ownerGroupValue == fileOwnerGroup)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//If we are here then all requirements have been verified
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceLib::setIconForFileEntry(Q3ListViewItem* item, const QString &path)
|
||||||
|
{
|
||||||
|
QFileInfo fi(path);
|
||||||
|
QString extension = fi.completeSuffix(),
|
||||||
|
baseName = fi.baseName();
|
||||||
|
|
||||||
|
KeyValueMap extensionMap;
|
||||||
|
|
||||||
|
extensionMap["a"] = "binary";
|
||||||
|
extensionMap["am"] = "shellscript";
|
||||||
|
extensionMap["bz"] = "zip";
|
||||||
|
extensionMap["bz2"] = "zip";
|
||||||
|
extensionMap["c"] = "source_c";
|
||||||
|
extensionMap["cc"] = "source_cpp";
|
||||||
|
extensionMap["cpp"] = "source_cpp";
|
||||||
|
extensionMap["eml"] = "message";
|
||||||
|
extensionMap["exe"] = "exec_wine";
|
||||||
|
extensionMap["gz"] = "zip";
|
||||||
|
extensionMap["h"] = "source_h";
|
||||||
|
extensionMap["htm"] = "html";
|
||||||
|
extensionMap["html"] = "html";
|
||||||
|
extensionMap["in"] = "shellscript";
|
||||||
|
extensionMap["java"] = "source_java";
|
||||||
|
extensionMap["jpg"] = "image";
|
||||||
|
extensionMap["kfr"] = "html";
|
||||||
|
extensionMap["kmdr"] = "widget_doc";
|
||||||
|
extensionMap["kwd"] = "kword_kwd";
|
||||||
|
extensionMap["log"] = "log";
|
||||||
|
extensionMap["moc"] = "source_moc";
|
||||||
|
extensionMap["mp3"] = "sound";
|
||||||
|
extensionMap["o"] = "source_o";
|
||||||
|
extensionMap["pdf"] = "pdf";
|
||||||
|
extensionMap["php"] = "source_php";
|
||||||
|
extensionMap["py"] = "source_py";
|
||||||
|
extensionMap["pl"] = "source_pl";
|
||||||
|
extensionMap["p"] = "source_p";
|
||||||
|
extensionMap["ps"] = "postscript";
|
||||||
|
extensionMap["png"] = "image";
|
||||||
|
extensionMap["sa"] = "binary";
|
||||||
|
extensionMap["sh"] = "shellscript";
|
||||||
|
extensionMap["so"] = "binary";
|
||||||
|
extensionMap["tar"] = "tar";
|
||||||
|
extensionMap["tex"] = "tex";
|
||||||
|
extensionMap["tgz"] = "tgz";
|
||||||
|
extensionMap["txt"] = "txt";
|
||||||
|
extensionMap["ui"] = "widget_doc";
|
||||||
|
extensionMap["uml"] = "umbrellofile";
|
||||||
|
extensionMap["wav"] = "sound";
|
||||||
|
extensionMap["xml"] = "html";
|
||||||
|
extensionMap["xpm"] = "image";
|
||||||
|
|
||||||
|
KeyValueMap::Iterator itExtensionMap;
|
||||||
|
|
||||||
|
for(itExtensionMap = extensionMap.begin(); itExtensionMap != extensionMap.end(); ++itExtensionMap)
|
||||||
|
{
|
||||||
|
if(extension == itExtensionMap.key())
|
||||||
|
{
|
||||||
|
item->setPixmap(0,SmallIcon(itExtensionMap.data()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
KeyValueMap baseNameMap;
|
||||||
|
|
||||||
|
baseNameMap["configure"] = "shellscript";
|
||||||
|
baseNameMap["core"] = "core";
|
||||||
|
baseNameMap["makefile"] = "make";
|
||||||
|
baseNameMap["readme"] = "readme";
|
||||||
|
baseNameMap["README"] = "readme";
|
||||||
|
baseNameMap["Readme"] = "readme";
|
||||||
|
baseNameMap["TODO"] = "txt";
|
||||||
|
|
||||||
|
KeyValueMap::Iterator itBaseNameMap;
|
||||||
|
|
||||||
|
for(itBaseNameMap = baseNameMap.begin(); itBaseNameMap != baseNameMap.end(); ++itBaseNameMap)
|
||||||
|
{
|
||||||
|
if(baseName == itBaseNameMap.key())
|
||||||
|
{
|
||||||
|
item->setPixmap(0,SmallIcon(itBaseNameMap.data()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
64
kfilereplace/kfilereplacelib.h
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
/***************************************************************************
|
||||||
|
kfilereplacelib.h - File library, derived from filelib.h
|
||||||
|
-------------------
|
||||||
|
begin : lun mai 3 20:19:52 CEST 1999
|
||||||
|
|
||||||
|
copyright : (C) 1999 by François Dupoux
|
||||||
|
(C) 2003 Andras Mantia <amantia@kde.org>
|
||||||
|
(C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
email : dupoux@dupoux.com
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef KFILEREPLACELIB_H
|
||||||
|
#define KFILEREPLACELIB_H
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
#include <klocale.h>
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "configurationclasses.h"
|
||||||
|
|
||||||
|
class KFileReplaceLib
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
/**
|
||||||
|
Format a path, from a path and a filename, or another sub-path (avoid double '/' risks)
|
||||||
|
Parameters::.....* basePath: fist path (can be "/" if root, or "/usr/bin/" or "/usr/bin" for example)
|
||||||
|
.................* filename: second path (can be "/doc/html/", or "doc/html/" or "doc/html/index.html" for example)
|
||||||
|
Return values:...* Full valid path (without double "/")
|
||||||
|
*/
|
||||||
|
static QString formatFullPath(const QString& basePath, const QString& fileName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add an extension to a filename, or a filepath
|
||||||
|
Parameters::.....* filename: filename or filepath (it can have already the extension)
|
||||||
|
.................* extension: extension to add without "." (ex: "html", "kfr")
|
||||||
|
Return values:...* Filename / Filepath with the extension
|
||||||
|
*/
|
||||||
|
static QString addExtension(const QString& fileName, const QString& extension);
|
||||||
|
|
||||||
|
static QString formatFileSize(double size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
converts the old kfr format file in the new xml-based format.
|
||||||
|
*/
|
||||||
|
static void convertOldToNewKFRFormat(const QString& fileName, K3ListView* stringView);
|
||||||
|
/**
|
||||||
|
Verifies that files, which we are scanning, respect some
|
||||||
|
conditions
|
||||||
|
*/
|
||||||
|
static bool isAnAccessibleFile(const QString& filePath, const QString& fileName, RCOptions* info);
|
||||||
|
|
||||||
|
static void setIconForFileEntry(Q3ListViewItem* item, const QString &path);
|
||||||
|
};
|
||||||
|
#endif // KFILEREPLACEFILELIB_H
|
1743
kfilereplace/kfilereplacepart.cpp
Normal file
162
kfilereplace/kfilereplacepart.desktop
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=Service
|
||||||
|
MimeType=inode/directory;
|
||||||
|
Icon=kfilereplace.png
|
||||||
|
X-KDE-ServiceTypes=KParts/ReadOnlyPart
|
||||||
|
X-KDE-Library=libkfilereplacepart
|
||||||
|
Comment=A batch search and replace tool
|
||||||
|
Comment[bg]=Инструмент за групово търсене и замяна
|
||||||
|
Comment[bs]=Grupni alat za traženje i zamjenu
|
||||||
|
Comment[ca]=Una eina de cerca i substitució per lots
|
||||||
|
Comment[ca@valencia]=Una eina de cerca i substitució per lots
|
||||||
|
Comment[cs]=Dávkový nástroj pro hledání a nahrazování
|
||||||
|
Comment[da]=Søg- og erstat-gruppekørselsværktøj
|
||||||
|
Comment[de]=Ein Werkzeug zum Suchen und Ersetzen im Stapelbetrieb
|
||||||
|
Comment[el]= Εργαλείο πολλαπλής αναζήτησης και αντικατάστασης
|
||||||
|
Comment[en_GB]=A batch search and replace tool
|
||||||
|
Comment[es]=Una herramienta de búsqueda y remplazo por lotes
|
||||||
|
Comment[et]=Otsimise ja asendamise tööriist
|
||||||
|
Comment[eu]=Bilaketa eta ordezkapen tresna
|
||||||
|
Comment[fa]=ابزار جستجو و جایگزینی دستهای
|
||||||
|
Comment[fi]=Etsinnän ja korvauksen eräajotyökalu
|
||||||
|
Comment[fr]=Un outil de recherche et de remplacement par lot
|
||||||
|
Comment[ga]=Uirlis chuardaigh/ionadaithe
|
||||||
|
Comment[gl]=Unha utilidade de busca e substitución por lotes
|
||||||
|
Comment[he]=כלי אצווה לחיפוש והחלפה
|
||||||
|
Comment[hne]=बैच खोज अउ बदल औजार
|
||||||
|
Comment[hu]=Egy kötegelt keresés és csere eszköz
|
||||||
|
Comment[is]=Tól til að leita að texta og skipta út
|
||||||
|
Comment[it]=Uno strumento per la ricerca e la sostituzione in sequenza
|
||||||
|
Comment[ja]=バッチ検索置換ツール
|
||||||
|
Comment[kk]=Дестелеп іздеу және ауыстыру құралы
|
||||||
|
Comment[ko]=일괄 찾기 및 바꾸기 도구
|
||||||
|
Comment[lt]=Paketinis paieškos ir keitimo įrankis
|
||||||
|
Comment[lv]=Masveida meklēšanas un aizvietošanas rīks
|
||||||
|
Comment[ms]=Gugusan alatan cari dan ganti
|
||||||
|
Comment[nb]=Et verktøy for satsvis søk og erstatt
|
||||||
|
Comment[nds]=En Söök- un Utwesselwarktüüch för Stapelbedrief
|
||||||
|
Comment[ne]=एउटा समूह खोजी गर्ने र बदल्ने उपकरण
|
||||||
|
Comment[nl]=Een gereedschap voor zoeken en vervangen
|
||||||
|
Comment[nn]=Søk og erstatt i mange filer samtidig
|
||||||
|
Comment[pl]=Narzędzie do wsadowego wyszukiwania i zamiany
|
||||||
|
Comment[pt]=Uma ferramenta de procura e substituição em lote
|
||||||
|
Comment[pt_BR]=Uma ferramenta de pesquisa e substituição em lote
|
||||||
|
Comment[ro]=Unealtă de căutare și înlocuire în serie
|
||||||
|
Comment[ru]=Пакетный поиск и замена
|
||||||
|
Comment[sk]=Dávkovací nástroj pre nájsť a zameniť
|
||||||
|
Comment[sl]=Orodje paketnega iskanja in zamenjave
|
||||||
|
Comment[sv]=Ett sök- och ersättningsverktyg
|
||||||
|
Comment[ta]=தொகுதி தேடல் மற்றும் கருவி இடமாற்றல்
|
||||||
|
Comment[tg]=Ҷустуҷӯи пакет ва ивази асбоб
|
||||||
|
Comment[th]=เครื่องมือค้นหาและแทนที่
|
||||||
|
Comment[tr]=Bir toplu arama ve değiştirme aracı
|
||||||
|
Comment[uk]=Засіб пакетного пошуку та заміни
|
||||||
|
Comment[x-test]=xxA batch search and replace toolxx
|
||||||
|
Comment[zh_CN]=批量搜索替换工具
|
||||||
|
Comment[zh_HK]=批次搜尋及取代工具
|
||||||
|
Comment[zh_TW]=批次搜尋及取代工具
|
||||||
|
Name=KFileReplace
|
||||||
|
Name[bg]=KFileReplace
|
||||||
|
Name[br]=KFileReplace
|
||||||
|
Name[bs]=KFileReplace
|
||||||
|
Name[ca]=KFileReplace
|
||||||
|
Name[ca@valencia]=KFileReplace
|
||||||
|
Name[cs]=KFileReplace
|
||||||
|
Name[cy]=KFileReplace
|
||||||
|
Name[da]=KFileReplace
|
||||||
|
Name[de]=KFileReplace
|
||||||
|
Name[el]=KFileReplace
|
||||||
|
Name[en_GB]=KFileReplace
|
||||||
|
Name[es]=KFileReplace
|
||||||
|
Name[et]=KFileReplace
|
||||||
|
Name[eu]=KFileReplace
|
||||||
|
Name[fi]=KFileReplace
|
||||||
|
Name[fr]=KFileReplace
|
||||||
|
Name[ga]=KFileReplace
|
||||||
|
Name[gl]=KFileReplace
|
||||||
|
Name[he]=KFileReplace
|
||||||
|
Name[hne]=के-फाइल-रिप्लेस
|
||||||
|
Name[hr]=KFileReplace
|
||||||
|
Name[hu]=KFileReplace
|
||||||
|
Name[is]=KFileReplace
|
||||||
|
Name[it]=KFileReplace
|
||||||
|
Name[ja]=KFileReplace
|
||||||
|
Name[kk]=KFileReplace
|
||||||
|
Name[ko]=KFileReplace
|
||||||
|
Name[lt]=KFileReplace
|
||||||
|
Name[lv]=KFileReplace
|
||||||
|
Name[ms]=KFileReplace
|
||||||
|
Name[nb]=KFileReplace
|
||||||
|
Name[nds]=KFileReplace
|
||||||
|
Name[ne]=केडीई फाइल प्रतिस्थापन
|
||||||
|
Name[nl]=KFileReplace
|
||||||
|
Name[nn]=KFileReplace
|
||||||
|
Name[pa]=KFileReplace
|
||||||
|
Name[pl]=KFileReplace
|
||||||
|
Name[pt]=KFileReplace
|
||||||
|
Name[pt_BR]=KFileReplace
|
||||||
|
Name[ro]=KFileReplace
|
||||||
|
Name[ru]=KFileReplace
|
||||||
|
Name[sk]=KFile zameniť
|
||||||
|
Name[sl]=KFileReplace
|
||||||
|
Name[sv]=Kfilereplace
|
||||||
|
Name[ta]=Kகோப்பு இடமாற்று
|
||||||
|
Name[tg]=KФайлро ҷойгузор кардан
|
||||||
|
Name[th]=โปรแกรมค้นหาและแทนที่ KFileReplace
|
||||||
|
Name[tr]=KFileReplace
|
||||||
|
Name[ug]=KFileReplace
|
||||||
|
Name[uk]=KFileReplace
|
||||||
|
Name[x-test]=xxKFileReplacexx
|
||||||
|
Name[zh_CN]=KFileReplace
|
||||||
|
Name[zh_HK]=KFileReplace
|
||||||
|
Name[zh_TW]=KFileReplace
|
||||||
|
GenericName=File Replace View
|
||||||
|
GenericName[bg]=Изглед с файлове за замяна
|
||||||
|
GenericName[bs]=Pogled zamjene datoteke
|
||||||
|
GenericName[ca]=Vista per a substituir fitxers
|
||||||
|
GenericName[ca@valencia]=Vista per a substituir fitxers
|
||||||
|
GenericName[cs]=Nahrazení souborů
|
||||||
|
GenericName[da]=Filerstatningsvisning
|
||||||
|
GenericName[de]=KFileReplace
|
||||||
|
GenericName[el]=Προβολή αντικατάστασης αρχείου
|
||||||
|
GenericName[en_GB]=File Replace View
|
||||||
|
GenericName[es]=Vista de remplazo de archivo
|
||||||
|
GenericName[et]=Failide asendamise vaade
|
||||||
|
GenericName[eu]=Fitxategi ordezkapen ikuspegia
|
||||||
|
GenericName[fa]=نمای جایگزینی پرونده
|
||||||
|
GenericName[fi]=Tiedoston korvausnäyttö
|
||||||
|
GenericName[fr]=Vue pour le remplacement de fichiers
|
||||||
|
GenericName[ga]=Amharc Ionadaithe Comhad
|
||||||
|
GenericName[gl]=Vista de substitución en ficheiro
|
||||||
|
GenericName[he]=תצוגת החלפת קובץ
|
||||||
|
GenericName[hne]=फाइल बदल दृस्य
|
||||||
|
GenericName[hu]=Fájlcsere nézet
|
||||||
|
GenericName[is]=Texta útskiptingarsýn
|
||||||
|
GenericName[it]=Vista di sostituzione file
|
||||||
|
GenericName[ja]=ファイル置換ビュー
|
||||||
|
GenericName[kk]=Файлда тауып ауыстыру көрінісі
|
||||||
|
GenericName[ko]=파일 바꾸기 보기
|
||||||
|
GenericName[lt]=Keitimų failuose vaizdas
|
||||||
|
GenericName[lv]=Failu aizvietošanas skats
|
||||||
|
GenericName[ms]=Paparan Ganti Fail
|
||||||
|
GenericName[nb]=Filerstatt-visning
|
||||||
|
GenericName[nds]=Datei-Utwesselansicht
|
||||||
|
GenericName[ne]=फाइल बदल्ने दृश्य
|
||||||
|
GenericName[nl]=Weergave van bestanden vervangen
|
||||||
|
GenericName[nn]=Filerstattingsvising
|
||||||
|
GenericName[pa]=ਫਾਇਲ ਬਦਲੋ ਝਲਕ
|
||||||
|
GenericName[pl]=Widok zamiany w plikach
|
||||||
|
GenericName[pt]=Área de Substituição de Ficheiros
|
||||||
|
GenericName[pt_BR]=Visão de substituição de arquivos
|
||||||
|
GenericName[ru]=Средство поиска и замены в файлах
|
||||||
|
GenericName[sk]=Pohľad zámeny súboru
|
||||||
|
GenericName[sl]=Prikaz zamenjave datotek
|
||||||
|
GenericName[sv]=Filersättningsvy
|
||||||
|
GenericName[ta]=கோப்பு இடமாற்று காட்சி
|
||||||
|
GenericName[th]=มุมมองแทนที่แฟ้ม
|
||||||
|
GenericName[tr]=Dosya Değiştirme Görünümü
|
||||||
|
GenericName[uk]=Перегляд заміни в файлах
|
||||||
|
GenericName[x-test]=xxFile Replace Viewxx
|
||||||
|
GenericName[zh_CN]=文件替换视图
|
||||||
|
GenericName[zh_HK]=檔案取代檢視模式
|
||||||
|
GenericName[zh_TW]=檔案取代檢視
|
160
kfilereplace/kfilereplacepart.h
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// C++ Interface: kfilereplacepart
|
||||||
|
//
|
||||||
|
// Description:
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Author: Andras Mantia <amantia@kde.org>, (C) 2003
|
||||||
|
// Maintainer: Emiliano Gulmini <emi_barbarossa@yahoo.it>, (C) 2004
|
||||||
|
//
|
||||||
|
// Copyright: GPL v2. See COPYING file that comes with this distribution
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef KFILEREPLACEPART_H
|
||||||
|
#define KFILEREPLACEPART_H
|
||||||
|
|
||||||
|
// QT
|
||||||
|
#include <QDir>
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
#include <kparts/part.h>
|
||||||
|
#include <k3listview.h>
|
||||||
|
|
||||||
|
class KAboutApplicationDialog;
|
||||||
|
class KAboutData;
|
||||||
|
class KConfig;
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "configurationclasses.h"
|
||||||
|
class KFileReplaceView;
|
||||||
|
|
||||||
|
#define KFR_VERSION "0.8.1"
|
||||||
|
|
||||||
|
class KFileReplacePart: public KParts::ReadOnlyPart
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
private: //MEMBERS
|
||||||
|
KFileReplaceView* m_view;
|
||||||
|
QWidget* m_parentWidget,
|
||||||
|
* m_w;
|
||||||
|
KConfig* m_config;
|
||||||
|
KAboutApplicationDialog* m_aboutDlg;
|
||||||
|
KeyValueMap m_replacementMap;
|
||||||
|
RCOptions* m_option;
|
||||||
|
bool m_stop,
|
||||||
|
m_searchingOperation;
|
||||||
|
QFlags<QDir::Filter> m_optionMask;
|
||||||
|
|
||||||
|
public://Constructors
|
||||||
|
KFileReplacePart(QWidget *parentWidget,
|
||||||
|
QObject *parent,
|
||||||
|
const QStringList &args);
|
||||||
|
~KFileReplacePart();
|
||||||
|
|
||||||
|
//SLOTS
|
||||||
|
private slots:
|
||||||
|
void slotSetNewParameters();
|
||||||
|
void slotSearchingOperation();
|
||||||
|
void slotReplacingOperation();
|
||||||
|
void slotSimulatingOperation();
|
||||||
|
void slotStop();
|
||||||
|
void slotCreateReport();
|
||||||
|
void slotStringsAdd();
|
||||||
|
void slotQuickStringsAdd();
|
||||||
|
void slotStringsDeleteItem();
|
||||||
|
void slotStringsEmpty();
|
||||||
|
void slotStringsEdit();
|
||||||
|
void slotStringsSave();
|
||||||
|
void slotStringsLoad();
|
||||||
|
void slotStringsInvertCur();
|
||||||
|
void slotStringsInvertAll();
|
||||||
|
void slotOpenRecentStringFile(const KUrl& urlFile);
|
||||||
|
void slotOptionRecursive();
|
||||||
|
void slotOptionBackup();
|
||||||
|
void slotOptionCaseSensitive();
|
||||||
|
void slotOptionVariables();
|
||||||
|
void slotOptionRegularExpressions();
|
||||||
|
void slotOptionPreferences();
|
||||||
|
void showAboutApplication(void);
|
||||||
|
void appHelpActivated();
|
||||||
|
void reportBug();
|
||||||
|
void resetActions();
|
||||||
|
void slotSearchMode(bool b){ m_option->m_searchingOnlyMode = b; }
|
||||||
|
|
||||||
|
//METHODS
|
||||||
|
public:
|
||||||
|
static KAboutData* createAboutData();
|
||||||
|
KConfig *config(){ return m_config; }
|
||||||
|
virtual bool openURL (const KUrl &url);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool openFile() { return false; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
/**
|
||||||
|
* Initialization methods
|
||||||
|
*/
|
||||||
|
void initGUI();
|
||||||
|
void initView();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method freezes the GUI of kfilereplace during searching
|
||||||
|
*/
|
||||||
|
void freezeActions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* These methods load the resources from kfilereplacerc
|
||||||
|
*/
|
||||||
|
void loadOptionsFromRC();
|
||||||
|
void loadOptions();
|
||||||
|
void loadFileSizeOptions();
|
||||||
|
void loadDateAccessOptions();
|
||||||
|
void loadOwnerOptions();
|
||||||
|
void loadLocationsList();
|
||||||
|
void loadFiltersList();
|
||||||
|
void loadBackupExtensionOptions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* These methods save the resources to kfilereplacerc
|
||||||
|
*/
|
||||||
|
void saveOptionsToRC();
|
||||||
|
void saveOptions();
|
||||||
|
void saveFileSizeOptions();
|
||||||
|
void saveDateAccessOptions();
|
||||||
|
void saveOwnerOptions();
|
||||||
|
void saveLocationsList();
|
||||||
|
void saveFiltersList();
|
||||||
|
void saveBackupExtensionOptions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replacing methods
|
||||||
|
*/
|
||||||
|
void fileReplace();
|
||||||
|
void recursiveFileReplace(const QString& dirName, int& filesNumber);
|
||||||
|
void replaceAndBackup(const QString& currentDir, const QString& oldFileName);
|
||||||
|
void replaceAndOverwrite(const QString& currentDir, const QString& oldFileName);
|
||||||
|
void replacingLoop(QString& line, K3ListViewItem** item, bool& atLeastOneStringFound, int& occur, bool regularExpression, bool& askConfirmReplace);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Searching methods
|
||||||
|
*/
|
||||||
|
void fileSearch(const QString& dirName, const QString& filters);
|
||||||
|
void recursiveFileSearch(const QString& dirName, const QString& filters, uint& filesNumber);
|
||||||
|
void search(const QString& currentDir, const QString& fileName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Others methods
|
||||||
|
*/
|
||||||
|
void loadViewContent();
|
||||||
|
void loadRulesFile(const QString& fileName);
|
||||||
|
bool launchNewProjectDialog(const KUrl& startURL);
|
||||||
|
void setOptionMask();
|
||||||
|
bool checkBeforeOperation();
|
||||||
|
bool dontAskAgain();
|
||||||
|
void whatsThis();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif// KFileReplacePart
|
75
kfilereplace/kfilereplacepartui.rc
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
|
||||||
|
<kpartgui name="kfilereplace" version="6">
|
||||||
|
<MenuBar>
|
||||||
|
<Menu name="kfilerepace"><text>Search/&Replace</text>
|
||||||
|
<Action name="new_project"/>
|
||||||
|
<Action name="search"/>
|
||||||
|
<Action name="file_simulate"/>
|
||||||
|
<Action name="replace"/>
|
||||||
|
<Action name="stop"/>
|
||||||
|
<Separator/>
|
||||||
|
<Menu name="strings"><text>&Strings</text>
|
||||||
|
<Action name="strings_add"/>
|
||||||
|
<Action name="strings_del"/>
|
||||||
|
<Action name="strings_empty"/>
|
||||||
|
<Action name="strings_edit"/>
|
||||||
|
<Separator/>
|
||||||
|
<Action name="strings_save"/>
|
||||||
|
<Action name="strings_load"/>
|
||||||
|
<Action name="strings_load_recent"/>
|
||||||
|
<Separator/>
|
||||||
|
<Action name="strings_invert"/>
|
||||||
|
<Action name="strings_invert_all"/>
|
||||||
|
</Menu>
|
||||||
|
<Menu name="results"><text>&Results</text>
|
||||||
|
<Action name="results_openfile"/>
|
||||||
|
<Action name="results_opendir"/>
|
||||||
|
<Action name="results_editfile"/>
|
||||||
|
<Action name="results_delete"/>
|
||||||
|
<Action name="results_infos"/>
|
||||||
|
<Separator/>
|
||||||
|
<Action name="save_results"/>
|
||||||
|
<Separator/>
|
||||||
|
<Action name="results_treeexpand"/>
|
||||||
|
<Action name="results_treereduce"/>
|
||||||
|
</Menu>
|
||||||
|
<Menu name="options"><text>&Options</text>
|
||||||
|
<Action name="options_recursive"/>
|
||||||
|
<Action name="options_backup"/>
|
||||||
|
<Action name="options_case"/>
|
||||||
|
<Action name="options_var"/>
|
||||||
|
<Action name="options_regularexpressions"/>
|
||||||
|
</Menu>
|
||||||
|
</Menu>
|
||||||
|
<Menu name="settings"><text>&Settings</text>
|
||||||
|
<Action name="configure_kfilereplace"/>
|
||||||
|
</Menu>
|
||||||
|
<Menu name="help"><text>&Help</text>
|
||||||
|
<Separator/>
|
||||||
|
<Action name="help_kfilereplace" />
|
||||||
|
<Action name="report_bug" />
|
||||||
|
<Action name="help_about_kfilereplace" />
|
||||||
|
</Menu>
|
||||||
|
</MenuBar>
|
||||||
|
<ToolBar noMerge="1" name="mainToolBar">
|
||||||
|
<text>KFileReplace Main Toolbar</text>
|
||||||
|
<Action name="new_project" />
|
||||||
|
<Action name="search"/>
|
||||||
|
<Action name="file_simulate"/>
|
||||||
|
<Action name="replace"/>
|
||||||
|
<Action name="stop"/>
|
||||||
|
<Separator/>
|
||||||
|
<Action name="strings_add"/>
|
||||||
|
<Action name="strings_del"/>
|
||||||
|
<Action name="strings_edit"/>
|
||||||
|
<Action name="strings_empty"/>
|
||||||
|
<Action name="strings_invert"/>
|
||||||
|
<Action name="strings_load"/>
|
||||||
|
<Separator/>
|
||||||
|
<Action name="options_recursive"/>
|
||||||
|
<Action name="options_backup"/>
|
||||||
|
<Action name="options_case"/>
|
||||||
|
<Action name="options_var"/>
|
||||||
|
<Action name="options_regularexpressions"/>
|
||||||
|
</ToolBar>
|
||||||
|
</kpartgui>
|
10
kfilereplace/kfilereplaceui.rc
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
|
||||||
|
<kpartgui name="kfilereplace" version="1">
|
||||||
|
<MenuBar>
|
||||||
|
<Menu noMerge="1" name="file"><text>&File</text>
|
||||||
|
<Action name="file_quit"/>
|
||||||
|
</Menu>
|
||||||
|
<Menu name="kfilerepace"><text>Search/&Replace</text>
|
||||||
|
</Menu>
|
||||||
|
</MenuBar>
|
||||||
|
</kpartgui>
|
683
kfilereplace/kfilereplaceview.cpp
Normal file
|
@ -0,0 +1,683 @@
|
||||||
|
/*****************************************************************************
|
||||||
|
kfilereplaceview.cpp - description
|
||||||
|
-------------------
|
||||||
|
begin : sam oct 16 15:28:00 CEST 1999
|
||||||
|
copyright : (C) 1999 by François Dupoux <dupoux@dupoux.com>
|
||||||
|
(C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
// Qt
|
||||||
|
|
||||||
|
#include <qmap.h>
|
||||||
|
#include <qfileinfo.h>
|
||||||
|
//Added by qt3to4:
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
#include <k3listview.h>
|
||||||
|
#include <kmessagebox.h>
|
||||||
|
#include <klocale.h>
|
||||||
|
#include <kmenu.h>
|
||||||
|
#include <krun.h>
|
||||||
|
#include <kpropertiesdialog.h>
|
||||||
|
#include <kapplication.h>
|
||||||
|
#include <QDBusConnection>
|
||||||
|
#include <QDBusReply>
|
||||||
|
#include <QDBusConnectionInterface>
|
||||||
|
//#include <kdebug.h>
|
||||||
|
#include <kiconloader.h>
|
||||||
|
#include <kled.h>
|
||||||
|
#include <kfiledialog.h>
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "kfilereplaceview.h"
|
||||||
|
#include "kfilereplacelib.h"
|
||||||
|
#include "kaddstringdlg.h"
|
||||||
|
#include "whatthis.h"
|
||||||
|
|
||||||
|
using namespace whatthisNameSpace;
|
||||||
|
|
||||||
|
KFileReplaceView::KFileReplaceView(RCOptions* info, QWidget *parent,const char *name):KFileReplaceViewWdg(parent,name)
|
||||||
|
{
|
||||||
|
m_option = info;
|
||||||
|
|
||||||
|
initGUI();
|
||||||
|
|
||||||
|
// connect events
|
||||||
|
connect(m_lvResults, SIGNAL(mouseButtonClicked(int, Q3ListViewItem *, const QPoint &, int)), this, SLOT(slotMouseButtonClicked(int, Q3ListViewItem *, const QPoint &)));
|
||||||
|
connect(m_lvResults_2, SIGNAL(mouseButtonClicked(int, Q3ListViewItem *, const QPoint &, int)), this, SLOT(slotMouseButtonClicked(int, Q3ListViewItem *, const QPoint &)));
|
||||||
|
connect(m_lvStrings, SIGNAL(doubleClicked(Q3ListViewItem *)), this, SLOT(slotStringsEdit()));
|
||||||
|
connect(m_lvStrings_2, SIGNAL(doubleClicked(Q3ListViewItem *)), this, SLOT(slotStringsEdit()));
|
||||||
|
|
||||||
|
whatsThis();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString KFileReplaceView::currentPath()
|
||||||
|
{
|
||||||
|
Q3ListViewItem *lvi;
|
||||||
|
|
||||||
|
if(! m_lviCurrent) lvi = m_rv->currentItem();
|
||||||
|
else lvi = (Q3ListViewItem*) m_lviCurrent;
|
||||||
|
|
||||||
|
while (lvi->parent())
|
||||||
|
lvi = lvi->parent();
|
||||||
|
|
||||||
|
return QString(lvi->text(1)+'/'+lvi->text(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::showSemaphore(const QString &s)
|
||||||
|
{
|
||||||
|
if(s == "green")
|
||||||
|
{
|
||||||
|
m_ledGo->setState(KLed::On);
|
||||||
|
m_ledWait->setState(KLed::Off);
|
||||||
|
m_ledStop->setState(KLed::Off);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(s == "yellow")
|
||||||
|
{
|
||||||
|
m_ledGo->setState(KLed::Off);
|
||||||
|
m_ledWait->setState(KLed::On);
|
||||||
|
m_ledStop->setState(KLed::Off);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(s == "red")
|
||||||
|
{
|
||||||
|
m_ledGo->setState(KLed::Off);
|
||||||
|
m_ledWait->setState(KLed::Off);
|
||||||
|
m_ledStop->setState(KLed::On);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::stringsInvert(bool invertAll)
|
||||||
|
{
|
||||||
|
Q3ListViewItem* lviCurItem,
|
||||||
|
* lviFirst;
|
||||||
|
K3ListView* sv = getStringsView();
|
||||||
|
|
||||||
|
if(invertAll)
|
||||||
|
lviCurItem = lviFirst = sv->firstChild();
|
||||||
|
else
|
||||||
|
lviCurItem = lviFirst = sv->currentItem();
|
||||||
|
|
||||||
|
if(lviCurItem == 0)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
QString searchText = lviCurItem->text(0),
|
||||||
|
replaceText = lviCurItem->text(1);
|
||||||
|
|
||||||
|
// Cannot invert the string when search string is empty
|
||||||
|
if (replaceText.isEmpty())
|
||||||
|
{
|
||||||
|
KMessageBox::error(0, i18n("<qt>Cannot invert string <b>%1</b>, because the search string would be empty.</qt>", searchText));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lviCurItem->setText(0, replaceText);
|
||||||
|
lviCurItem->setText(1, searchText);
|
||||||
|
|
||||||
|
lviCurItem = lviCurItem->nextSibling();
|
||||||
|
if(!invertAll)
|
||||||
|
break;
|
||||||
|
} while(lviCurItem && lviCurItem != lviFirst);
|
||||||
|
setCurrentStringsViewMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::changeView(bool searchingOnlyMode)
|
||||||
|
{
|
||||||
|
if(searchingOnlyMode)
|
||||||
|
{
|
||||||
|
m_stackResults->raiseWidget(m_lvResults_2);
|
||||||
|
m_stackStrings->raiseWidget(m_lvStrings_2);
|
||||||
|
m_rv = m_lvResults_2;
|
||||||
|
m_sv = m_lvStrings_2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_stackResults->raiseWidget(m_lvResults);
|
||||||
|
m_stackStrings->raiseWidget(m_lvStrings);
|
||||||
|
m_rv = m_lvResults;
|
||||||
|
m_sv = m_lvStrings;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
K3ListView* KFileReplaceView::getResultsView()
|
||||||
|
{
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
m_rv = m_lvResults_2;
|
||||||
|
else
|
||||||
|
m_rv = m_lvResults;
|
||||||
|
|
||||||
|
return m_rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
K3ListView* KFileReplaceView::getStringsView()
|
||||||
|
{
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
m_sv = m_lvStrings_2;
|
||||||
|
else
|
||||||
|
m_sv = m_lvStrings;
|
||||||
|
return m_sv;
|
||||||
|
}
|
||||||
|
|
||||||
|
//PUBLIC SLOTS
|
||||||
|
void KFileReplaceView::slotMouseButtonClicked (int button, Q3ListViewItem *lvi, const QPoint &pos)
|
||||||
|
{
|
||||||
|
if (lvi == 0) // No item selected
|
||||||
|
return;
|
||||||
|
|
||||||
|
// RIGHT BUTTON
|
||||||
|
if (button == Qt::RightButton)
|
||||||
|
{
|
||||||
|
m_lviCurrent = static_cast<K3ListViewItem*>(lvi);
|
||||||
|
m_menuResult->popup(pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotResultProperties()
|
||||||
|
{
|
||||||
|
QString currItem = currentPath();
|
||||||
|
if(! currItem.isEmpty())
|
||||||
|
{
|
||||||
|
KUrl item_url(currItem);
|
||||||
|
KPropertiesDialog dlg(item_url, this);
|
||||||
|
dlg.exec();
|
||||||
|
m_lviCurrent = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotResultOpen()
|
||||||
|
{
|
||||||
|
QString currItem = currentPath();
|
||||||
|
if(!currItem.isEmpty())
|
||||||
|
{
|
||||||
|
(void) new KRun(KUrl(currItem), 0, true, true);
|
||||||
|
m_lviCurrent = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotResultOpenWith()
|
||||||
|
{
|
||||||
|
QString currItem = currentPath();
|
||||||
|
if(!currItem.isEmpty())
|
||||||
|
{
|
||||||
|
KUrl::List kurls;
|
||||||
|
kurls.append(KUrl(currItem));
|
||||||
|
KRun::displayOpenWithDialog(kurls, this);
|
||||||
|
m_lviCurrent = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotResultDirOpen()
|
||||||
|
{
|
||||||
|
QString currItem = currentPath();
|
||||||
|
if(!currItem.isEmpty())
|
||||||
|
{
|
||||||
|
QFileInfo fi;
|
||||||
|
fi.setFile(currItem);
|
||||||
|
(void) new KRun (KUrl::fromPathOrUrl(fi.path()), 0, true, true);
|
||||||
|
m_lviCurrent = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotResultEdit()
|
||||||
|
{
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#warning "Port to DBUS"
|
||||||
|
#endif
|
||||||
|
//FIXME: Port to DBUS
|
||||||
|
/*
|
||||||
|
Q3ListViewItem *lvi = m_rv->firstChild();
|
||||||
|
|
||||||
|
while (lvi)
|
||||||
|
{
|
||||||
|
DCOPClient *client = kapp->dcopClient();
|
||||||
|
DCOPRef quanta(client->appId(),"WindowManagerIf");
|
||||||
|
QString path = QString(lvi->text(1)+'/'+lvi->text(0));
|
||||||
|
Q3ListViewItem *lviChild = lvi;
|
||||||
|
|
||||||
|
while(lviChild)
|
||||||
|
{
|
||||||
|
if(lviChild->isSelected())
|
||||||
|
{
|
||||||
|
coord c;
|
||||||
|
if(lviChild == lvi)
|
||||||
|
{
|
||||||
|
c.line = 0;
|
||||||
|
c.column = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
c= extractWordCoordinates(lviChild);
|
||||||
|
}
|
||||||
|
bool success = quanta.send("openFile", path, c.line, c.column);
|
||||||
|
|
||||||
|
if(!success)
|
||||||
|
{
|
||||||
|
QString message = i18n("File %1 cannot be opened. Might be a DCOP problem.", path);
|
||||||
|
KMessageBox::error(parentWidget(), message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lviChild == lvi)
|
||||||
|
lviChild = lviChild->firstChild();
|
||||||
|
else
|
||||||
|
lviChild = lviChild->nextSibling();
|
||||||
|
}
|
||||||
|
|
||||||
|
lvi = lvi->nextSibling();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_lviCurrent = 0;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotResultDelete()
|
||||||
|
{
|
||||||
|
QString currItem = currentPath();
|
||||||
|
if (!currItem.isEmpty())
|
||||||
|
{
|
||||||
|
QFile fi;
|
||||||
|
int answer = KMessageBox::warningContinueCancel(this, i18n("Do you really want to delete %1?", currItem),
|
||||||
|
QString::null,KStandardGuiItem::del()); //krazy:exclude=nullstrassign for old broken gcc
|
||||||
|
|
||||||
|
if(answer == KMessageBox::Continue)
|
||||||
|
{
|
||||||
|
fi.setFileName(currItem);
|
||||||
|
fi.remove();
|
||||||
|
|
||||||
|
delete m_lviCurrent;
|
||||||
|
m_lviCurrent = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotResultTreeExpand()
|
||||||
|
{
|
||||||
|
Q3ListViewItem *lviRoot = getResultsView()->firstChild();
|
||||||
|
|
||||||
|
if(lviRoot)
|
||||||
|
expand(lviRoot, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotResultTreeReduce()
|
||||||
|
{
|
||||||
|
Q3ListViewItem *lviRoot = getResultsView()->firstChild();
|
||||||
|
|
||||||
|
if(lviRoot)
|
||||||
|
expand(lviRoot, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotStringsAdd()
|
||||||
|
{
|
||||||
|
KeyValueMap oldMap(m_option->m_mapStringsView);
|
||||||
|
|
||||||
|
KAddStringDlg addStringDlg(m_option, false);
|
||||||
|
|
||||||
|
if(!addStringDlg.exec())
|
||||||
|
return;
|
||||||
|
|
||||||
|
KeyValueMap addedStringsMap(m_option->m_mapStringsView);
|
||||||
|
KeyValueMap::Iterator itMap;
|
||||||
|
|
||||||
|
for(itMap = oldMap.begin(); itMap != oldMap.end(); ++itMap)
|
||||||
|
addedStringsMap.insert(itMap.key(),itMap.data());
|
||||||
|
|
||||||
|
m_option->m_mapStringsView = addedStringsMap;
|
||||||
|
|
||||||
|
raiseResultsView();
|
||||||
|
raiseStringsView();
|
||||||
|
|
||||||
|
loadMapIntoView(addedStringsMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotQuickStringsAdd(const QString& quickSearch, const QString& quickReplace)
|
||||||
|
{
|
||||||
|
if(!quickSearch.isEmpty())
|
||||||
|
{
|
||||||
|
KeyValueMap map;
|
||||||
|
if(quickReplace.isEmpty())
|
||||||
|
{
|
||||||
|
map[quickSearch] = QString::null; //krazy:exclude=nullstrassign for old broken gcc
|
||||||
|
m_option->m_searchingOnlyMode = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
map[quickSearch] = quickReplace;
|
||||||
|
m_option->m_searchingOnlyMode = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_option->m_mapStringsView = map;
|
||||||
|
|
||||||
|
raiseResultsView();
|
||||||
|
raiseStringsView();
|
||||||
|
|
||||||
|
loadMapIntoView(map);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotStringsEdit()
|
||||||
|
{
|
||||||
|
KeyValueMap oldMap(m_option->m_mapStringsView);
|
||||||
|
if(oldMap.isEmpty()) return;
|
||||||
|
bool oldSearchFlagValue = m_option->m_searchingOnlyMode;
|
||||||
|
|
||||||
|
oldMap.remove(m_sv->currentItem()->text(0));
|
||||||
|
|
||||||
|
m_option->m_mapStringsView.clear();
|
||||||
|
|
||||||
|
m_option->m_mapStringsView.insert(m_sv->currentItem()->text(0), m_sv->currentItem()->text(1));
|
||||||
|
|
||||||
|
KAddStringDlg addStringDlg(m_option, true);
|
||||||
|
|
||||||
|
if(!addStringDlg.exec())
|
||||||
|
return;
|
||||||
|
|
||||||
|
KeyValueMap newMap(m_option->m_mapStringsView);
|
||||||
|
if(oldSearchFlagValue == m_option->m_searchingOnlyMode)
|
||||||
|
{
|
||||||
|
KeyValueMap::Iterator itMap;
|
||||||
|
|
||||||
|
//merges the two maps
|
||||||
|
for(itMap = oldMap.begin(); itMap != oldMap.end(); ++itMap)
|
||||||
|
newMap.insert(itMap.key(),itMap.data());
|
||||||
|
}
|
||||||
|
|
||||||
|
m_option->m_mapStringsView = newMap;
|
||||||
|
|
||||||
|
raiseResultsView();
|
||||||
|
raiseStringsView();
|
||||||
|
|
||||||
|
loadMapIntoView(newMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotStringsSave()
|
||||||
|
{
|
||||||
|
// Check there are strings in the list
|
||||||
|
K3ListView* sv = getStringsView();
|
||||||
|
|
||||||
|
if (sv->firstChild() == 0)
|
||||||
|
{
|
||||||
|
KMessageBox::error(0, i18n("No strings to save as the list is empty."));
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString header("<?xml version=\"1.0\" ?>\n<kfr>"),
|
||||||
|
footer("\n</kfr>"),
|
||||||
|
body;
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
header += "\n\t<mode search=\"true\"/>";
|
||||||
|
else
|
||||||
|
header += "\n\t<mode search=\"false\"/>";
|
||||||
|
|
||||||
|
Q3ListViewItem* lvi = sv->firstChild();
|
||||||
|
|
||||||
|
while( lvi )
|
||||||
|
{
|
||||||
|
body += QString("\n\t<replacement>"
|
||||||
|
"\n\t\t<oldstring><![CDATA[%1]]></oldstring>"
|
||||||
|
"\n\t\t<newstring><![CDATA[%2]]></newstring>"
|
||||||
|
"\n\t</replacement>").arg(lvi->text(0)).arg(lvi->text(1));
|
||||||
|
lvi = lvi->nextSibling();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Selects the file where strings will be saved
|
||||||
|
QString menu = "*.kfr|" + i18n("KFileReplace Strings") + " (*.kfr)\n*|" + i18n("All Files") + " (*)";
|
||||||
|
QString fileName = KFileDialog::getSaveFileName(KUrl(), menu, 0, i18n("Save Strings to File"));
|
||||||
|
if (fileName.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Forces the extension to be "kfr" == KFileReplace extension
|
||||||
|
|
||||||
|
fileName = KFileReplaceLib::addExtension(fileName, "kfr");
|
||||||
|
|
||||||
|
QFile file( fileName );
|
||||||
|
if(!file.open( QIODevice::WriteOnly ))
|
||||||
|
{
|
||||||
|
KMessageBox::error(0, i18n("File %1 cannot be saved.", fileName));
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
QTextStream oTStream( &file );
|
||||||
|
oTStream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||||
|
oTStream << header
|
||||||
|
<< body
|
||||||
|
<< footer;
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotStringsDeleteItem()
|
||||||
|
{
|
||||||
|
Q3ListViewItem* item = m_sv->currentItem();
|
||||||
|
if(item != 0)
|
||||||
|
{
|
||||||
|
KeyValueMap m = m_option->m_mapStringsView;
|
||||||
|
m.remove(item->text(0));
|
||||||
|
m_option->m_mapStringsView = m;
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::slotStringsEmpty()
|
||||||
|
{
|
||||||
|
Q3ListViewItem * myChild = m_sv->firstChild();
|
||||||
|
while( myChild )
|
||||||
|
{
|
||||||
|
Q3ListViewItem* item = myChild;
|
||||||
|
myChild = myChild->nextSibling();
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
KeyValueMap m;
|
||||||
|
m_option->m_mapStringsView = m;
|
||||||
|
}
|
||||||
|
|
||||||
|
//PRIVATE
|
||||||
|
void KFileReplaceView::initGUI()
|
||||||
|
{
|
||||||
|
m_option->m_searchingOnlyMode = true;
|
||||||
|
|
||||||
|
m_stackResults->addWidget(m_lvResults);
|
||||||
|
m_stackResults->addWidget(m_lvResults_2);
|
||||||
|
m_stackStrings->addWidget(m_lvStrings);
|
||||||
|
m_stackStrings->addWidget(m_lvStrings_2);
|
||||||
|
|
||||||
|
bool quantaFound = false;
|
||||||
|
QDBusConnection dbus = QDBusConnection::sessionBus();
|
||||||
|
QDBusReply<QStringList> reply = dbus.interface()->registeredServiceNames();
|
||||||
|
if ( !reply.isValid() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
const QStringList allServices = reply;
|
||||||
|
for ( QStringList::const_iterator it = allServices.begin(), end = allServices.end() ; it != end ; ++it ) {
|
||||||
|
const QString service = *it;
|
||||||
|
if ( service.startsWith( "org.kde.quanta" ) ) {
|
||||||
|
quantaFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_menuResult = new KMenu(this);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
m_menuResult->insertItem(SmallIconSet(QString::fromLatin1("document-open")),
|
||||||
|
i18n("&Open"),
|
||||||
|
this,
|
||||||
|
SLOT(slotResultOpen()));
|
||||||
|
if(!quantaFound)
|
||||||
|
{
|
||||||
|
m_menuResult->insertItem(i18n("Open &With..."),
|
||||||
|
this,
|
||||||
|
SLOT(slotResultOpenWith()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(quantaFound)
|
||||||
|
{
|
||||||
|
m_menuResult->insertItem(SmallIconSet("quanta"),
|
||||||
|
i18n("&Edit in Quanta"),
|
||||||
|
this,
|
||||||
|
SLOT(slotResultEdit()));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_menuResult->insertItem(SmallIconSet(QString::fromLatin1("go-up")),
|
||||||
|
i18n("Open Parent &Folder"),
|
||||||
|
this,
|
||||||
|
SLOT(slotResultDirOpen()));
|
||||||
|
m_menuResult->insertItem(SmallIconSet(QString::fromLatin1("edit-delete")),
|
||||||
|
i18n("&Delete"),
|
||||||
|
this,
|
||||||
|
SLOT(slotResultDelete()));
|
||||||
|
m_menuResult->insertSeparator();
|
||||||
|
m_menuResult->insertItem(SmallIconSet(QString::fromLatin1("document-properties")),
|
||||||
|
i18n("&Properties"),
|
||||||
|
this,
|
||||||
|
SLOT(slotResultProperties()));
|
||||||
|
raiseResultsView();
|
||||||
|
raiseStringsView();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::raiseStringsView()
|
||||||
|
{
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
m_sv = m_lvStrings_2;
|
||||||
|
else
|
||||||
|
m_sv = m_lvStrings;
|
||||||
|
|
||||||
|
m_stackStrings->raiseWidget(m_sv);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::raiseResultsView()
|
||||||
|
{
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
m_rv = m_lvResults_2;
|
||||||
|
else
|
||||||
|
m_rv = m_lvResults;
|
||||||
|
|
||||||
|
m_stackResults->raiseWidget(m_rv);
|
||||||
|
}
|
||||||
|
|
||||||
|
coord KFileReplaceView::extractWordCoordinates(Q3ListViewItem* lvi)
|
||||||
|
{
|
||||||
|
//get coordinates of the first string of the current selected file
|
||||||
|
coord c;
|
||||||
|
c.line = 0;
|
||||||
|
c.column = 0;
|
||||||
|
QString s = lvi->text(0);
|
||||||
|
//qWarning("WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW=%s",s.latin1());
|
||||||
|
/* if(lvi->parent()) s = lvi->text(0);
|
||||||
|
else return c;*/
|
||||||
|
|
||||||
|
QString temp;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
//extracts line and column from lvi->text(0)
|
||||||
|
//FIXME: Don't get the line and column number from the text as it's translated and it will
|
||||||
|
//fail for non-English languages!
|
||||||
|
|
||||||
|
//EMILIANO: This is not a good fixing but for now it should reduce the problems
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
if(s[i] < '0' || s[i] > '9')
|
||||||
|
i++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
if(s[i] >= '0' && s[i] <= '9')
|
||||||
|
{
|
||||||
|
temp += s[i];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
c.line = temp.toInt();
|
||||||
|
temp.clear();
|
||||||
|
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
if(s[i] < '0' || s[i] > '9')
|
||||||
|
i++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
if(s[i] >= '0' && s[i] <= '9')
|
||||||
|
{
|
||||||
|
temp += s[i];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
c.column = temp.toInt();
|
||||||
|
|
||||||
|
if(c.line > 0) c.line--;
|
||||||
|
if(c.column > 0) c.column--;
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::expand(Q3ListViewItem *lviCurrent, bool b)
|
||||||
|
{
|
||||||
|
// current item
|
||||||
|
lviCurrent->setOpen(b);
|
||||||
|
|
||||||
|
// recursivity
|
||||||
|
while((lviCurrent = lviCurrent->nextSibling()) != 0)
|
||||||
|
{
|
||||||
|
lviCurrent->setOpen(b);
|
||||||
|
|
||||||
|
if (lviCurrent->firstChild())
|
||||||
|
expand(lviCurrent->firstChild(), b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::setMap()
|
||||||
|
{
|
||||||
|
KeyValueMap map;
|
||||||
|
Q3ListViewItem* i = m_sv->firstChild();
|
||||||
|
while(i != 0)
|
||||||
|
{
|
||||||
|
if(m_option->m_searchingOnlyMode)
|
||||||
|
map[i->text(0)] = QString::null; //krazy:exclude=nullstrassign for old broken gcc
|
||||||
|
else
|
||||||
|
map[i->text(0)] = i->text(1);
|
||||||
|
i = i->nextSibling();
|
||||||
|
}
|
||||||
|
m_option->m_mapStringsView = map;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::loadMapIntoView(KeyValueMap map)
|
||||||
|
{
|
||||||
|
m_sv->clear();
|
||||||
|
KeyValueMap::Iterator itMap;
|
||||||
|
|
||||||
|
for(itMap = map.begin(); itMap != map.end(); ++itMap)
|
||||||
|
{
|
||||||
|
Q3ListViewItem* lvi = new Q3ListViewItem(m_sv);
|
||||||
|
lvi->setMultiLinesEnabled(true);
|
||||||
|
lvi->setText(0,itMap.key());
|
||||||
|
if(!m_option->m_searchingOnlyMode)
|
||||||
|
lvi->setText(1,itMap.data());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void KFileReplaceView::whatsThis()
|
||||||
|
{
|
||||||
|
getResultsView()->setWhatsThis( lvResultWhatthis);
|
||||||
|
getStringsView()->setWhatsThis( lvStringsWhatthis);
|
||||||
|
}
|
||||||
|
#include "kfilereplaceview.moc"
|
110
kfilereplace/kfilereplaceview.h
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
/***************************************************************************
|
||||||
|
kfilereplaceview.h - description
|
||||||
|
-------------------
|
||||||
|
begin : sam oct 16 15:28:00 CEST 1999
|
||||||
|
copyright : (C) 1999 by François Dupoux <dupoux@dupoux.com>
|
||||||
|
(C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef KFILEREPLACEVIEW_H
|
||||||
|
#define KFILEREPLACEVIEW_H
|
||||||
|
|
||||||
|
//QT
|
||||||
|
#include <qlcdnumber.h>
|
||||||
|
|
||||||
|
//KDE
|
||||||
|
class KMenu;
|
||||||
|
class K3ListView;
|
||||||
|
|
||||||
|
//local
|
||||||
|
#include "kfilereplaceviewwdg.h"
|
||||||
|
#include "configurationclasses.h"
|
||||||
|
|
||||||
|
class coord
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int line,
|
||||||
|
column;
|
||||||
|
public:
|
||||||
|
coord(){ line = 1;
|
||||||
|
column = 1;}
|
||||||
|
coord(const coord& c) { line = c.line;
|
||||||
|
column = c.column;}
|
||||||
|
coord operator=(const coord& c) { line = c.line;
|
||||||
|
column = c.column;
|
||||||
|
return (*this);}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The view of KFilereplace.
|
||||||
|
*/
|
||||||
|
class KFileReplaceView : public KFileReplaceViewWdg
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
private:
|
||||||
|
KMenu* m_menuResult;
|
||||||
|
RCOptions* m_option;
|
||||||
|
K3ListViewItem* m_lviCurrent;
|
||||||
|
K3ListView* m_rv,
|
||||||
|
* m_sv;
|
||||||
|
|
||||||
|
public://Constructors
|
||||||
|
KFileReplaceView(RCOptions* info, QWidget *parent,const char *name);
|
||||||
|
|
||||||
|
public:
|
||||||
|
QString currentPath();
|
||||||
|
void showSemaphore(const QString &s);
|
||||||
|
void displayScannedFiles(int filesNumber) { m_lcdFilesNumber->display(QString::number(filesNumber,10)); }
|
||||||
|
void stringsInvert(bool invertAll);
|
||||||
|
void changeView(bool searchingOnlyMode);
|
||||||
|
K3ListView* getResultsView();
|
||||||
|
K3ListView* getStringsView();
|
||||||
|
void updateOptions(RCOptions* info) { m_option = info; }
|
||||||
|
void loadMap(KeyValueMap extMap){ loadMapIntoView(extMap); }
|
||||||
|
KeyValueMap getStringsViewMap()const { return m_option->m_mapStringsView;}
|
||||||
|
void setCurrentStringsViewMap(){ setMap(); }
|
||||||
|
//void emitSearchingOnlyMode(bool b) { emit searchingOnlyMode(b); }
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void slotMouseButtonClicked (int button, Q3ListViewItem *lvi, const QPoint &pos);
|
||||||
|
void slotResultProperties();
|
||||||
|
void slotResultOpen();
|
||||||
|
void slotResultOpenWith();
|
||||||
|
void slotResultDirOpen();
|
||||||
|
void slotResultEdit();
|
||||||
|
void slotResultDelete();
|
||||||
|
void slotResultTreeExpand();
|
||||||
|
void slotResultTreeReduce();
|
||||||
|
void slotStringsAdd();
|
||||||
|
void slotQuickStringsAdd(const QString& quickSearch, const QString& quickReplace);
|
||||||
|
void slotStringsDeleteItem();
|
||||||
|
void slotStringsEmpty();
|
||||||
|
void slotStringsEdit();
|
||||||
|
void slotStringsSave();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void initGUI();
|
||||||
|
void raiseStringsView();
|
||||||
|
void raiseResultsView();
|
||||||
|
coord extractWordCoordinates(Q3ListViewItem* lvi);
|
||||||
|
void expand(Q3ListViewItem *lviCurrent, bool b);
|
||||||
|
void setMap();
|
||||||
|
void loadMapIntoView(KeyValueMap map);
|
||||||
|
void whatsThis();
|
||||||
|
|
||||||
|
/*signals:
|
||||||
|
void resetActions();
|
||||||
|
void searchingOnlyMode(bool);*/
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // KFILEREPLACEVIEW_H
|
549
kfilereplace/kfilereplaceviewwdg.ui
Normal file
|
@ -0,0 +1,549 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
|
||||||
|
<class>KFileReplaceViewWdg</class>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>KFileReplaceViewWdg</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>635</width>
|
||||||
|
<height>370</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QSplitter" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>splitter3</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidgetStack">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_stackResults</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>7</hsizetype>
|
||||||
|
<vsizetype>7</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>WStackPage</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="id">
|
||||||
|
<number>0</number>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="K3ListView" row="0" column="0">
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Name</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Folder</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Old Size</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>New Size</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Replaced Strings</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Owner User</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Owner Group</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_lvResults</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="selectionMode" stdset="0">
|
||||||
|
<enum>Extended</enum>
|
||||||
|
</property>
|
||||||
|
<property name="allColumnsShowFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="showSortIndicator">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="rootIsDecorated">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizeMode">
|
||||||
|
<enum>LastColumn</enum>
|
||||||
|
</property>
|
||||||
|
<property name="itemsMovable">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="alternateBackground">
|
||||||
|
<color>
|
||||||
|
<red>238</red>
|
||||||
|
<green>246</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>WStackPage</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="id">
|
||||||
|
<number>1</number>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="K3ListView" row="0" column="0">
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Name</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Folder</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Size</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Found Strings</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Owner User</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Owner Group</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_lvResults_2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="selectionMode" stdset="0">
|
||||||
|
<enum>Extended</enum>
|
||||||
|
</property>
|
||||||
|
<property name="allColumnsShowFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="showSortIndicator">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="rootIsDecorated">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizeMode">
|
||||||
|
<enum>LastColumn</enum>
|
||||||
|
</property>
|
||||||
|
<property name="itemsMovable">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="alternateBackground">
|
||||||
|
<color>
|
||||||
|
<red>238</red>
|
||||||
|
<green>246</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidgetStack">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_stackStrings</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>7</hsizetype>
|
||||||
|
<vsizetype>7</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>WStackPage</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="id">
|
||||||
|
<number>0</number>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="K3ListView" row="0" column="0">
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Search For</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Replace With</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_lvStrings</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="allColumnsShowFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="rootIsDecorated">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizeMode">
|
||||||
|
<enum>AllColumns</enum>
|
||||||
|
</property>
|
||||||
|
<property name="itemsMovable">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>WStackPage</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="id">
|
||||||
|
<number>1</number>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="K3ListView" row="0" column="0">
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Search For</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_lvStrings_2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="allColumnsShowFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="rootIsDecorated">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizeMode">
|
||||||
|
<enum>AllColumns</enum>
|
||||||
|
</property>
|
||||||
|
<property name="itemsMovable">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout7</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout6</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="KLed">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_ledGo</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="state">
|
||||||
|
<enum>On</enum>
|
||||||
|
</property>
|
||||||
|
<property name="color">
|
||||||
|
<color>
|
||||||
|
<red>170</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip" stdset="0">
|
||||||
|
<string>Green means ready</string>
|
||||||
|
</property>
|
||||||
|
<property name="whatsThis" stdset="0">
|
||||||
|
<string>Ready</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KLed">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_ledWait</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="state">
|
||||||
|
<enum>On</enum>
|
||||||
|
</property>
|
||||||
|
<property name="color">
|
||||||
|
<color>
|
||||||
|
<red>255</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip" stdset="0">
|
||||||
|
<string>Yellow means wait while sorting list</string>
|
||||||
|
</property>
|
||||||
|
<property name="whatsThis" stdset="0">
|
||||||
|
<string>Please wait while sorting list</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KLed">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_ledStop</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="color">
|
||||||
|
<color>
|
||||||
|
<red>255</red>
|
||||||
|
<green>0</green>
|
||||||
|
<blue>0</blue>
|
||||||
|
</color>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip" stdset="0">
|
||||||
|
<string>Red means scanning files</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>354</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout1</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlFilesNumber</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Scanned files:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLCDNumber">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_lcdFilesNumber</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>Raised</enum>
|
||||||
|
</property>
|
||||||
|
<property name="numDigits">
|
||||||
|
<number>7</number>
|
||||||
|
</property>
|
||||||
|
<property name="mode">
|
||||||
|
<enum>Dec</enum>
|
||||||
|
</property>
|
||||||
|
<property name="segmentStyle">
|
||||||
|
<enum>Flat</enum>
|
||||||
|
</property>
|
||||||
|
<property name="intValue" stdset="0">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<includehints>
|
||||||
|
<includehint>k3listview.h</includehint>
|
||||||
|
<includehint>kled.h</includehint>
|
||||||
|
</includehints>
|
||||||
|
</UI>
|
529
kfilereplace/knewprojectdlg.cpp
Normal file
|
@ -0,0 +1,529 @@
|
||||||
|
/***************************************************************************
|
||||||
|
knewprojectdlg.cpp - description
|
||||||
|
-------------------
|
||||||
|
begin : Tue Dec 28 1999
|
||||||
|
copyright : (C) 1999 by François Dupoux
|
||||||
|
(C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
email : dupoux@dupoux.com
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
//QT
|
||||||
|
|
||||||
|
#include <qcheckbox.h>
|
||||||
|
#include <qspinbox.h>
|
||||||
|
#include <qlabel.h>
|
||||||
|
#include <qradiobutton.h>
|
||||||
|
#include <q3listview.h>
|
||||||
|
//Added by qt3to4:
|
||||||
|
#include <QPixmap>
|
||||||
|
|
||||||
|
//KDE
|
||||||
|
#include <kseparator.h>
|
||||||
|
#include <kmessagebox.h>
|
||||||
|
#include <kcharsets.h>
|
||||||
|
#include <kcombobox.h>
|
||||||
|
#include <kconfig.h>
|
||||||
|
#include <kfiledialog.h>
|
||||||
|
#include <klineedit.h>
|
||||||
|
#include <kglobal.h>
|
||||||
|
#include <klocale.h>
|
||||||
|
#include <kpushbutton.h>
|
||||||
|
#include <kstandarddirs.h>
|
||||||
|
#include <kdeversion.h>
|
||||||
|
#include <kiconloader.h>
|
||||||
|
#include <kdebug.h>
|
||||||
|
#include <kapplication.h>
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "knewprojectdlg.h"
|
||||||
|
#include "whatthis.h"
|
||||||
|
|
||||||
|
using namespace whatthisNameSpace;
|
||||||
|
|
||||||
|
|
||||||
|
KNewProjectDlg::KNewProjectDlg(RCOptions* info, QWidget *parent, const char *name) : KNewProjectDlgS(parent, name)
|
||||||
|
{
|
||||||
|
m_searchNowFlag = "";
|
||||||
|
m_option = info;
|
||||||
|
|
||||||
|
initGUI();
|
||||||
|
|
||||||
|
connect(m_pbLocation, SIGNAL(clicked()), this, SLOT(slotDir()));
|
||||||
|
connect(m_pbCancel, SIGNAL(clicked()), this, SLOT(slotReject()));
|
||||||
|
connect(m_pbSearchNow, SIGNAL(clicked()), this, SLOT(slotSearchNow()));
|
||||||
|
connect(m_pbSearchLater, SIGNAL(clicked()), this, SLOT(slotSearchLater()));
|
||||||
|
connect(m_leSearch, SIGNAL(textChanged(const QString&)), this, SLOT(slotSearchLineEdit(const QString&)));
|
||||||
|
connect(m_chbSizeMin, SIGNAL(toggled(bool)), this, SLOT(slotEnableSpinboxSizeMin(bool)));
|
||||||
|
connect(m_chbSizeMax, SIGNAL(toggled(bool)), this, SLOT(slotEnableSpinboxSizeMax(bool)));
|
||||||
|
connect(m_chbDateMin, SIGNAL(toggled(bool)), m_dedDateMin, SLOT(setEnabled(bool)));
|
||||||
|
connect(m_chbDateMax, SIGNAL(toggled(bool)), m_dedDateMax, SLOT(setEnabled(bool)));
|
||||||
|
connect(m_chbDateMin,SIGNAL(toggled(bool)),this, SLOT(slotEnableCbValidDate(bool)));
|
||||||
|
connect(m_chbDateMax,SIGNAL(toggled(bool)),this, SLOT(slotEnableCbValidDate(bool)));
|
||||||
|
connect(m_chbOwnerUser, SIGNAL(toggled(bool)), this, SLOT(slotEnableChbUser(bool)));
|
||||||
|
connect(m_chbOwnerGroup, SIGNAL(toggled(bool)), this, SLOT(slotEnableChbGroup(bool)));
|
||||||
|
connect(m_chbBackup, SIGNAL(toggled(bool)), this, SLOT(slotEnableChbBackup(bool)));
|
||||||
|
connect(m_pbHelp, SIGNAL(clicked()), this, SLOT(slotHelp()));
|
||||||
|
|
||||||
|
whatsThis();
|
||||||
|
}
|
||||||
|
|
||||||
|
KNewProjectDlg::~KNewProjectDlg()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::saveRCOptions()
|
||||||
|
{
|
||||||
|
saveOptions();
|
||||||
|
saveFileSizeOptions();
|
||||||
|
saveDateAccessOptions();
|
||||||
|
saveOwnerOptions();
|
||||||
|
saveLocationsList();
|
||||||
|
saveFiltersList();
|
||||||
|
saveBackupExtensionOptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotDir()
|
||||||
|
{
|
||||||
|
QString directoryString = KFileDialog::getExistingDirectory(KUrl(), this, i18n("Project Directory"));
|
||||||
|
if(!directoryString.isEmpty())
|
||||||
|
m_cbLocation->setEditText(directoryString);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotOK()
|
||||||
|
{
|
||||||
|
// Check that Search text and Filter are not empty
|
||||||
|
m_option->m_directories = m_cbLocation->currentText();
|
||||||
|
m_option->m_filters = m_cbFilter->currentText();
|
||||||
|
if(!m_leSearch->text().isEmpty())
|
||||||
|
{
|
||||||
|
if(m_leReplace->text().isEmpty())
|
||||||
|
m_option->m_searchingOnlyMode = true;
|
||||||
|
else
|
||||||
|
m_option->m_searchingOnlyMode = false;
|
||||||
|
}
|
||||||
|
m_option->m_quickSearchString = m_searchNowFlag + m_leSearch->text();
|
||||||
|
m_option->m_quickReplaceString = m_searchNowFlag + m_leReplace->text();
|
||||||
|
|
||||||
|
if (m_option->m_directories.isEmpty() || m_option->m_filters.isEmpty())
|
||||||
|
{
|
||||||
|
KMessageBox::error(this, i18n("You must fill the combo boxes (location and filter) before continuing."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// OWNER OPTIONS
|
||||||
|
if ((m_chbOwnerUser->isChecked() && m_edOwnerUser->text().isEmpty()) ||
|
||||||
|
(m_chbOwnerGroup->isChecked() && m_edOwnerGroup->text().isEmpty()))
|
||||||
|
{
|
||||||
|
KMessageBox::error(this, i18n("Some edit boxes are empty in the <b>Owner</b> page."));
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check option "Size Min/Max": check MinSize is not greater than MaxSize
|
||||||
|
int minSize = m_spbSizeMin->value(),
|
||||||
|
maxSize = m_spbSizeMax->value();
|
||||||
|
if ((minSize != FileSizeOption) && (maxSize != FileSizeOption))
|
||||||
|
if (minSize > maxSize)
|
||||||
|
{
|
||||||
|
KMessageBox::error(this, i18n("The minimum size is greater than the maximum size."));
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotReject()
|
||||||
|
{
|
||||||
|
m_option->m_quickSearchString = m_searchNowFlag;
|
||||||
|
m_option->m_quickReplaceString = m_searchNowFlag;
|
||||||
|
|
||||||
|
reject();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotSearchNow()
|
||||||
|
{ //Add a 'N' to represent the status search-now
|
||||||
|
m_searchNowFlag = "N";
|
||||||
|
slotOK();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotSearchLater()
|
||||||
|
{ //Add a 'L' to represent the status search-later
|
||||||
|
m_searchNowFlag = "L";
|
||||||
|
slotOK();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotSearchLineEdit(const QString& t)
|
||||||
|
{
|
||||||
|
m_pbSearchNow->setEnabled(!t.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotEnableSpinboxSizeMin(bool b)
|
||||||
|
{
|
||||||
|
m_spbSizeMin->setEnabled(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotEnableSpinboxSizeMax(bool b)
|
||||||
|
{
|
||||||
|
m_spbSizeMax->setEnabled(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotEnableCbValidDate(bool b)
|
||||||
|
{
|
||||||
|
Q_UNUSED(b);
|
||||||
|
m_cbDateValid->setEnabled(m_chbDateMax->isChecked() || m_chbDateMin->isChecked());
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotEnableChbUser(bool b)
|
||||||
|
{
|
||||||
|
m_cbOwnerUserType->setEnabled(b);
|
||||||
|
m_cbOwnerUserBool->setEnabled(b);
|
||||||
|
m_edOwnerUser->setEnabled(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotEnableChbGroup(bool b)
|
||||||
|
{
|
||||||
|
m_cbOwnerGroupType->setEnabled(b);
|
||||||
|
m_cbOwnerGroupBool->setEnabled(b);
|
||||||
|
m_edOwnerGroup->setEnabled(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::slotEnableChbBackup(bool b)
|
||||||
|
{
|
||||||
|
m_leBackup->setEnabled(b);
|
||||||
|
m_tlBackup->setEnabled(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
//PRIVATE
|
||||||
|
void KNewProjectDlg::initGUI()
|
||||||
|
{
|
||||||
|
QIcon iconSet = SmallIconSet("document-open");
|
||||||
|
QPixmap pixMap = iconSet.pixmap( QIcon::Small, QIcon::Normal );
|
||||||
|
|
||||||
|
m_pbLocation->setIconSet(iconSet);
|
||||||
|
m_pbLocation->setFixedSize(pixMap.width() + 8, pixMap.height() + 8);
|
||||||
|
|
||||||
|
m_pbSearchNow->setEnabled(false);
|
||||||
|
|
||||||
|
loadOptions();
|
||||||
|
loadFileSizeOptions();
|
||||||
|
loadDateAccessOptions();
|
||||||
|
loadOwnerOptions();
|
||||||
|
loadBackupExtensionOptions();
|
||||||
|
loadLocationsList();
|
||||||
|
loadFiltersList();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::loadOptions()
|
||||||
|
{
|
||||||
|
QStringList availableEncodingNames(KGlobal::charsets()->availableEncodingNames());
|
||||||
|
m_cbEncoding->addItems(availableEncodingNames);
|
||||||
|
int idx = -1;
|
||||||
|
int utf8Idx = -1;
|
||||||
|
for (int i = 0; i < availableEncodingNames.count(); i++)
|
||||||
|
{
|
||||||
|
if (availableEncodingNames[i] == m_option->m_encoding)
|
||||||
|
{
|
||||||
|
idx = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (availableEncodingNames[i] == "UTF-8")
|
||||||
|
{
|
||||||
|
utf8Idx = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (idx != -1)
|
||||||
|
m_cbEncoding->setCurrentIndex(idx);
|
||||||
|
else
|
||||||
|
m_cbEncoding->setCurrentIndex(utf8Idx);
|
||||||
|
|
||||||
|
m_chbIncludeSubfolders->setChecked(m_option->m_recursive);
|
||||||
|
m_chbCaseSensitive->setChecked(m_option->m_caseSensitive);
|
||||||
|
m_chbEnableVariables->setChecked(m_option->m_variables);
|
||||||
|
m_chbRegularExpressions->setChecked(m_option->m_regularExpressions);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::loadFileSizeOptions()
|
||||||
|
{
|
||||||
|
int size = m_option->m_minSize;
|
||||||
|
if(size == FileSizeOption)
|
||||||
|
{
|
||||||
|
m_chbSizeMin->setChecked(false);
|
||||||
|
m_spbSizeMin->setEnabled(false);
|
||||||
|
m_spbSizeMin->setValue(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_chbSizeMin->setChecked(true);
|
||||||
|
m_spbSizeMin->setEnabled(true);
|
||||||
|
m_spbSizeMin->setValue(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
size = m_option->m_maxSize;
|
||||||
|
if(size == FileSizeOption)
|
||||||
|
{
|
||||||
|
m_chbSizeMax->setChecked(false);
|
||||||
|
m_spbSizeMax->setEnabled(false);
|
||||||
|
m_spbSizeMax->setValue(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_chbSizeMax->setChecked(true);
|
||||||
|
m_spbSizeMax->setEnabled(true);
|
||||||
|
m_spbSizeMax->setValue(size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::loadDateAccessOptions()
|
||||||
|
{
|
||||||
|
// ================== DATE OPTIONS ========================
|
||||||
|
|
||||||
|
QString date = m_option->m_minDate;
|
||||||
|
if(date == AccessDateOption)
|
||||||
|
{
|
||||||
|
m_chbDateMin->setChecked(false);
|
||||||
|
m_dedDateMin->setDate(m_dedDateMin->minValue());
|
||||||
|
m_dedDateMin->setEnabled(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_chbDateMin->setChecked(true);
|
||||||
|
m_dedDateMin->setDate(QDate::fromString(date,Qt::ISODate));
|
||||||
|
m_dedDateMin->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
date = m_option->m_maxDate;
|
||||||
|
if(date == AccessDateOption)
|
||||||
|
{
|
||||||
|
m_chbDateMax->setChecked(false);
|
||||||
|
m_dedDateMax->setDate(m_dedDateMax->maxValue());
|
||||||
|
m_dedDateMax->setEnabled(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_chbDateMax->setChecked(true);
|
||||||
|
m_dedDateMax->setDate(QDate::fromString(date,Qt::ISODate));
|
||||||
|
m_dedDateMax->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_cbDateValid->setEnabled(m_chbDateMax->isChecked() || m_chbDateMin->isChecked());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::loadOwnerOptions()
|
||||||
|
{
|
||||||
|
bool enableOwner = m_option->m_ownerUserIsChecked;
|
||||||
|
|
||||||
|
m_chbOwnerUser->setChecked(enableOwner);
|
||||||
|
m_cbOwnerUserType->setEnabled(enableOwner);
|
||||||
|
m_cbOwnerUserBool->setEnabled(enableOwner);
|
||||||
|
m_edOwnerUser->setEnabled(enableOwner);
|
||||||
|
|
||||||
|
m_cbOwnerUserType->setCurrentText(m_option->m_ownerUserType);
|
||||||
|
m_cbOwnerUserBool->setCurrentText(m_option->m_ownerUserBool);
|
||||||
|
|
||||||
|
m_edOwnerUser->setText(m_option->m_ownerUserValue);
|
||||||
|
|
||||||
|
enableOwner = m_option->m_ownerGroupIsChecked;
|
||||||
|
|
||||||
|
m_chbOwnerGroup->setChecked(enableOwner);
|
||||||
|
m_cbOwnerGroupType->setEnabled(enableOwner);
|
||||||
|
m_cbOwnerGroupBool->setEnabled(enableOwner);
|
||||||
|
m_edOwnerGroup->setEnabled(enableOwner);
|
||||||
|
|
||||||
|
m_cbOwnerGroupType->setCurrentText(m_option->m_ownerGroupType);
|
||||||
|
m_cbOwnerGroupBool->setCurrentText(m_option->m_ownerGroupBool);
|
||||||
|
m_edOwnerGroup->setText(m_option->m_ownerGroupValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::loadLocationsList()
|
||||||
|
{
|
||||||
|
m_cbLocation->addItems(m_option->m_directories.split(","));
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::loadFiltersList()
|
||||||
|
{
|
||||||
|
m_cbFilter->addItems(m_option->m_filters.split(","));
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::loadBackupExtensionOptions()
|
||||||
|
{
|
||||||
|
bool enableBackup = m_option->m_backup;
|
||||||
|
|
||||||
|
m_chbBackup->setChecked(enableBackup);
|
||||||
|
m_leBackup->setEnabled(enableBackup);
|
||||||
|
m_tlBackup->setEnabled(enableBackup);
|
||||||
|
m_leBackup->setText(m_option->m_backupExtension);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::saveOptions()
|
||||||
|
{
|
||||||
|
m_option->m_encoding = m_cbEncoding->currentText();
|
||||||
|
m_option->m_recursive = m_chbIncludeSubfolders->isChecked();
|
||||||
|
m_option->m_caseSensitive = m_chbCaseSensitive->isChecked();
|
||||||
|
m_option->m_variables = m_chbEnableVariables->isChecked();
|
||||||
|
m_option->m_regularExpressions = m_chbRegularExpressions->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::saveFileSizeOptions()
|
||||||
|
{
|
||||||
|
if(m_chbSizeMax->isChecked())
|
||||||
|
m_option->m_maxSize = m_spbSizeMax->value();
|
||||||
|
else
|
||||||
|
m_option->m_maxSize = FileSizeOption;
|
||||||
|
|
||||||
|
if(m_chbSizeMin->isChecked())
|
||||||
|
m_option->m_minSize = m_spbSizeMin->value();
|
||||||
|
else
|
||||||
|
m_option->m_minSize = FileSizeOption;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::saveDateAccessOptions()
|
||||||
|
{
|
||||||
|
if(m_chbDateMin->isChecked() || m_chbDateMax->isChecked())
|
||||||
|
m_option->m_dateAccess = m_cbDateValid->currentText();
|
||||||
|
else
|
||||||
|
m_option->m_dateAccess = ValidAccessDateOption;
|
||||||
|
|
||||||
|
if(m_chbDateMin->isChecked())
|
||||||
|
{
|
||||||
|
QString date = m_dedDateMin->date().toString(Qt::ISODate);
|
||||||
|
m_option->m_minDate = date;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_option->m_minDate = AccessDateOption;
|
||||||
|
|
||||||
|
if(m_chbDateMax->isChecked())
|
||||||
|
{
|
||||||
|
QString date = m_dedDateMax->date().toString(Qt::ISODate);
|
||||||
|
m_option->m_maxDate = date;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_option->m_maxDate = AccessDateOption;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::saveOwnerOptions()
|
||||||
|
{
|
||||||
|
bool isChecked = m_chbOwnerUser->isChecked();
|
||||||
|
if(isChecked)
|
||||||
|
{
|
||||||
|
m_option->m_ownerUserIsChecked = true;
|
||||||
|
m_option->m_ownerUserType = m_cbOwnerUserType->currentText();
|
||||||
|
m_option->m_ownerUserBool = m_cbOwnerUserBool->currentText();
|
||||||
|
m_option->m_ownerUserValue = m_edOwnerUser->text();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_option->m_ownerUserIsChecked = false;
|
||||||
|
m_option->m_ownerUserType = "Name";
|
||||||
|
m_option->m_ownerUserBool = "Equals To";
|
||||||
|
m_option->m_ownerUserValue = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
isChecked = m_chbOwnerGroup->isChecked();
|
||||||
|
if(isChecked)
|
||||||
|
{
|
||||||
|
m_option->m_ownerGroupIsChecked = true;
|
||||||
|
m_option->m_ownerGroupType = m_cbOwnerGroupType->currentText();
|
||||||
|
m_option->m_ownerGroupBool = m_cbOwnerGroupBool->currentText();
|
||||||
|
m_option->m_ownerGroupValue = m_edOwnerGroup->text();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_option->m_ownerGroupIsChecked = false;
|
||||||
|
m_option->m_ownerGroupType = "Name";
|
||||||
|
m_option->m_ownerGroupBool = "Equals To";
|
||||||
|
m_option->m_ownerGroupValue = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::saveLocationsList()
|
||||||
|
{
|
||||||
|
QString current = m_cbLocation->currentText(), list = current;
|
||||||
|
|
||||||
|
int count = m_cbLocation->count(),
|
||||||
|
i;
|
||||||
|
for(i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
QString text = m_cbLocation->itemText(i);
|
||||||
|
if(text != current)
|
||||||
|
list += ','+text;
|
||||||
|
}
|
||||||
|
m_option->m_directories = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::saveFiltersList()
|
||||||
|
{
|
||||||
|
QString current = m_cbFilter->currentText(), list = current;
|
||||||
|
|
||||||
|
int count = m_cbFilter->count(),
|
||||||
|
i;
|
||||||
|
for(i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
QString text = m_cbFilter->itemText(i);
|
||||||
|
if(text != current)
|
||||||
|
list += ','+text;
|
||||||
|
}
|
||||||
|
m_option->m_filters = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::saveBackupExtensionOptions()
|
||||||
|
{
|
||||||
|
QString backupExt = m_leBackup->text();
|
||||||
|
m_option->m_backup = (m_chbBackup->isChecked() && !backupExt.isEmpty());
|
||||||
|
m_option->m_backupExtension = backupExt;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::setDatas(const QString& directoryString, const QString& filterString)
|
||||||
|
{
|
||||||
|
if (!directoryString.isEmpty())
|
||||||
|
m_cbLocation->setEditText(directoryString);
|
||||||
|
|
||||||
|
if (!filterString.isEmpty())
|
||||||
|
m_cbFilter->setEditText(filterString);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool KNewProjectDlg::contains(Q3ListView* lv,const QString& s, int column)
|
||||||
|
{
|
||||||
|
Q3ListViewItem* i = lv->firstChild();
|
||||||
|
while (i != 0)
|
||||||
|
{
|
||||||
|
if(i->text(column) == s)
|
||||||
|
return true;
|
||||||
|
i = i->nextSibling();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KNewProjectDlg::whatsThis()
|
||||||
|
{
|
||||||
|
m_cbLocation->setWhatsThis( cbLocationWhatthis);
|
||||||
|
m_cbFilter->setWhatsThis( cbFilterWhatthis);
|
||||||
|
|
||||||
|
m_spbSizeMin->setWhatsThis( edSizeMinWhatthis);
|
||||||
|
m_spbSizeMax->setWhatsThis( edSizeMaxWhatthis);
|
||||||
|
|
||||||
|
m_cbDateValid->setWhatsThis( cbDateValidWhatthis);
|
||||||
|
m_chbDateMin->setWhatsThis( chbDateMinWhatthis);
|
||||||
|
m_chbDateMax->setWhatsThis( chbDateMaxWhatthis);
|
||||||
|
|
||||||
|
m_chbIncludeSubfolders->setWhatsThis( chbRecursiveWhatthis);
|
||||||
|
m_chbRegularExpressions->setWhatsThis( chbRegularExpressionsWhatthis);
|
||||||
|
m_chbEnableVariables->setWhatsThis( chbVariablesWhatthis);
|
||||||
|
m_chbCaseSensitive->setWhatsThis( chbCaseSensitiveWhatthis);
|
||||||
|
m_chbBackup->setWhatsThis( chbBackupWhatthis);
|
||||||
|
m_leBackup->setWhatsThis( chbBackupWhatthis);
|
||||||
|
m_leSearch->setWhatsThis( leSearchWhatthis);
|
||||||
|
m_leReplace->setWhatsThis( leReplaceWhatthis);
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "knewprojectdlg.moc"
|
||||||
|
|
84
kfilereplace/knewprojectdlg.h
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
/***************************************************************************
|
||||||
|
knewprojectdlg.h - description
|
||||||
|
-------------------
|
||||||
|
begin : Tue Dec 28 1999
|
||||||
|
copyright : (C) 1999 by François Dupoux
|
||||||
|
(C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
email : dupoux@dupoux.com
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef KNEWPROJECTDLG_H
|
||||||
|
#define KNEWPROJECTDLG_H
|
||||||
|
|
||||||
|
//KDE
|
||||||
|
|
||||||
|
//local
|
||||||
|
#include "knewprojectdlgs.h"
|
||||||
|
#include "configurationclasses.h"
|
||||||
|
#include "ktoolinvocation.h"
|
||||||
|
|
||||||
|
class KNewProjectDlg : public KNewProjectDlgS
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString m_searchNowFlag;
|
||||||
|
RCOptions* m_option;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit KNewProjectDlg(RCOptions* info, QWidget *parent=0, const char *name=0);
|
||||||
|
~KNewProjectDlg();
|
||||||
|
|
||||||
|
public:
|
||||||
|
//void updateOptions(const RCOptions& info);
|
||||||
|
void saveRCOptions();
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
void slotDir();
|
||||||
|
void slotOK();
|
||||||
|
void slotReject();
|
||||||
|
void slotSearchNow();
|
||||||
|
void slotSearchLater();
|
||||||
|
void slotSearchLineEdit(const QString& t);
|
||||||
|
void slotEnableSpinboxSizeMin(bool b);
|
||||||
|
void slotEnableSpinboxSizeMax(bool b);
|
||||||
|
void slotEnableCbValidDate(bool b);
|
||||||
|
void slotEnableChbUser(bool b);
|
||||||
|
void slotEnableChbGroup(bool b);
|
||||||
|
void slotEnableChbBackup(bool b);
|
||||||
|
void slotHelp(){ KToolInvocation::invokeHelp(QString::null, "kfilereplace"); } //krazy:exclude=nullstrassign for old broken gcc
|
||||||
|
|
||||||
|
private:
|
||||||
|
void initGUI();
|
||||||
|
|
||||||
|
void loadOptions();
|
||||||
|
void loadFileSizeOptions();
|
||||||
|
void loadDateAccessOptions();
|
||||||
|
void loadOwnerOptions();
|
||||||
|
void loadLocationsList();
|
||||||
|
void loadFiltersList();
|
||||||
|
void loadBackupExtensionOptions();
|
||||||
|
|
||||||
|
void saveOptions();
|
||||||
|
void saveFileSizeOptions();
|
||||||
|
void saveDateAccessOptions();
|
||||||
|
void saveOwnerOptions();
|
||||||
|
void saveLocationsList();
|
||||||
|
void saveFiltersList();
|
||||||
|
void saveBackupExtensionOptions();
|
||||||
|
|
||||||
|
bool contains(Q3ListView* lv,const QString& s, int column);
|
||||||
|
void setDatas(const QString& directoryString, const QString& filterString);
|
||||||
|
void whatsThis();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // KNewProjectDlg
|
876
kfilereplace/knewprojectdlgs.ui
Normal file
|
@ -0,0 +1,876 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||||
|
<class>KNewProjectDlgS</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>KNewProjectDlgS</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>568</width>
|
||||||
|
<height>609</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>Search & Replace in Files</string>
|
||||||
|
</property>
|
||||||
|
<property name="sizeGripEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="modal">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout28</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="KPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbHelp</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>3</hsizetype>
|
||||||
|
<vsizetype>1</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>70</width>
|
||||||
|
<height>32767</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Help</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer7</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>150</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbSearchNow</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Search Now</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
<property name="default">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbSearchLater</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Search Later</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbCancel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>3</hsizetype>
|
||||||
|
<vsizetype>1</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>70</width>
|
||||||
|
<height>32767</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Cancel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QTabWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabWidget2</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tab</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>&General</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QGroupBox" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>groupBox5</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Startup Folder Options</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlFilter</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Filter:</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy" stdset="0">
|
||||||
|
<cstring>cbFilter</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlLocation</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Location:</string>
|
||||||
|
</property>
|
||||||
|
<property name="textFormat">
|
||||||
|
<enum>Qt::AutoText</enum>
|
||||||
|
</property>
|
||||||
|
<property name="buddy" stdset="0">
|
||||||
|
<cstring>cbLocation</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KComboBox" row="0" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_cbLocation</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>3</hsizetype>
|
||||||
|
<vsizetype>0</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="editable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maxCount">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
<property name="insertionPolicy">
|
||||||
|
<enum>AtTop</enum>
|
||||||
|
</property>
|
||||||
|
<property name="duplicatesEnabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="whatsThis" stdset="0">
|
||||||
|
<string>Insert a search path here. You can use the search path button.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" row="0" column="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbLocation</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KComboBox" row="1" column="1" rowspan="1" colspan="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_cbFilter</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>3</hsizetype>
|
||||||
|
<vsizetype>0</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="editable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maxCount">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
<property name="insertionPolicy">
|
||||||
|
<enum>AtTop</enum>
|
||||||
|
</property>
|
||||||
|
<property name="duplicatesEnabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="whatsThis" stdset="0">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbIncludeSubfolders</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Include subfolders</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>groupBox6</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Search/Replace Strings</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLineEdit" row="0" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_leSearch</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="1" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_leReplace</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlSearch</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Search:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlReplace</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Replace:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox" row="2" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>groupBox4</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>General Options</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbRegularExpressions</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable &regular expressions</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbBackup</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Do &backup copy instead of overwrite</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbCaseSensitive</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Case sensitive</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbEnableVariables</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable co&mmands in the replace string</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="5" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlBackup</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Backup copy suffix:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="5" column="1" rowspan="1" colspan="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_leBackup</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KComboBox" row="0" column="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_cbEncoding</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>3</hsizetype>
|
||||||
|
<vsizetype>0</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Encoding of the files:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tab</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>&Advanced</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QGroupBox" row="2" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>gbOwnership</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Ownership Filtering</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QCheckBox" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbOwnerUser</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>User: </string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KComboBox" row="0" column="1">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Name</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>ID (Number)</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_cbOwnerUserType</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maxCount">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="duplicatesEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KComboBox" row="0" column="2">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Equals To</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Is Not</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_cbOwnerUserBool</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maxCount">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="duplicatesEnabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KComboBox" row="1" column="2">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Equals To</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Is Not</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_cbOwnerGroupBool</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maxCount">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="duplicatesEnabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KComboBox" row="1" column="1">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Name</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>ID (Number)</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_cbOwnerGroupType</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maxCount">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="duplicatesEnabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbOwnerGroup</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Group:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KLineEdit" row="0" column="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_edOwnerUser</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KLineEdit" row="1" column="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_edOwnerGroup</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>gbAccessDate</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Access Date Filtering</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout8</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout18</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlDateValid</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Dates valid for:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbDateMin</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Accessed after:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbDateMax</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Accessed before: </string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout19</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="KComboBox">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Last Writing Access</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Last Reading Access</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_cbDateValid</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="maxCount">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="duplicatesEnabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QDateEdit">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_dedDateMin</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="date">
|
||||||
|
<date>
|
||||||
|
<year>2000</year>
|
||||||
|
<month>1</month>
|
||||||
|
<day>1</day>
|
||||||
|
</date>
|
||||||
|
</property>
|
||||||
|
<property name="autoAdvance">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maxValue">
|
||||||
|
<date>
|
||||||
|
<year>2100</year>
|
||||||
|
<month>12</month>
|
||||||
|
<day>31</day>
|
||||||
|
</date>
|
||||||
|
</property>
|
||||||
|
<property name="minValue">
|
||||||
|
<date>
|
||||||
|
<year>1900</year>
|
||||||
|
<month>12</month>
|
||||||
|
<day>31</day>
|
||||||
|
</date>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QDateEdit">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_dedDateMax</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="date">
|
||||||
|
<date>
|
||||||
|
<year>2000</year>
|
||||||
|
<month>1</month>
|
||||||
|
<day>1</day>
|
||||||
|
</date>
|
||||||
|
</property>
|
||||||
|
<property name="autoAdvance">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="maxValue">
|
||||||
|
<date>
|
||||||
|
<year>2100</year>
|
||||||
|
<month>12</month>
|
||||||
|
<day>31</day>
|
||||||
|
</date>
|
||||||
|
</property>
|
||||||
|
<property name="minValue">
|
||||||
|
<date>
|
||||||
|
<year>1900</year>
|
||||||
|
<month>9</month>
|
||||||
|
<day>14</day>
|
||||||
|
</date>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer3</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>190</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>gbSize</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Size Filtering</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout32</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout31</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QCheckBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbSizeMin</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Minimum si&ze:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbSizeMax</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Maximum size:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout30</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QSpinBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_spbSizeMin</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>4000000</number>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSpinBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_spbSizeMax</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>4000000</number>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout31</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlSizeMin</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>KB</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlSizeMax</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>KB</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>330</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<tabstops>
|
||||||
|
<tabstop>tabWidget2</tabstop>
|
||||||
|
<tabstop>m_leSearch</tabstop>
|
||||||
|
<tabstop>m_leReplace</tabstop>
|
||||||
|
<tabstop>m_cbLocation</tabstop>
|
||||||
|
<tabstop>m_pbLocation</tabstop>
|
||||||
|
<tabstop>m_cbFilter</tabstop>
|
||||||
|
<tabstop>m_chbIncludeSubfolders</tabstop>
|
||||||
|
<tabstop>m_cbEncoding</tabstop>
|
||||||
|
<tabstop>m_chbCaseSensitive</tabstop>
|
||||||
|
<tabstop>m_chbRegularExpressions</tabstop>
|
||||||
|
<tabstop>m_chbEnableVariables</tabstop>
|
||||||
|
<tabstop>m_chbBackup</tabstop>
|
||||||
|
<tabstop>m_leBackup</tabstop>
|
||||||
|
<tabstop>m_pbSearchNow</tabstop>
|
||||||
|
<tabstop>m_pbSearchLater</tabstop>
|
||||||
|
<tabstop>m_pbCancel</tabstop>
|
||||||
|
<tabstop>m_pbHelp</tabstop>
|
||||||
|
<tabstop>m_chbSizeMin</tabstop>
|
||||||
|
<tabstop>m_spbSizeMin</tabstop>
|
||||||
|
<tabstop>m_chbSizeMax</tabstop>
|
||||||
|
<tabstop>m_spbSizeMax</tabstop>
|
||||||
|
<tabstop>m_cbDateValid</tabstop>
|
||||||
|
<tabstop>m_chbDateMin</tabstop>
|
||||||
|
<tabstop>m_chbDateMax</tabstop>
|
||||||
|
<tabstop>m_chbOwnerUser</tabstop>
|
||||||
|
<tabstop>m_cbOwnerUserType</tabstop>
|
||||||
|
<tabstop>m_cbOwnerUserBool</tabstop>
|
||||||
|
<tabstop>m_edOwnerUser</tabstop>
|
||||||
|
<tabstop>m_chbOwnerGroup</tabstop>
|
||||||
|
<tabstop>m_cbOwnerGroupType</tabstop>
|
||||||
|
<tabstop>m_cbOwnerGroupBool</tabstop>
|
||||||
|
<tabstop>m_edOwnerGroup</tabstop>
|
||||||
|
<tabstop>m_dedDateMin</tabstop>
|
||||||
|
<tabstop>m_dedDateMax</tabstop>
|
||||||
|
</tabstops>
|
||||||
|
</UI>
|
235
kfilereplace/koptionsdlg.cpp
Normal file
|
@ -0,0 +1,235 @@
|
||||||
|
/***************************************************************************
|
||||||
|
koptionsdlg.cpp - description
|
||||||
|
-------------------
|
||||||
|
begin : Tue Dec 28 1999
|
||||||
|
copyright : (C) 1999 by François Dupoux
|
||||||
|
(C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
email : dupoux@dupoux.com
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
// QT
|
||||||
|
#include <qcheckbox.h>
|
||||||
|
#include <qspinbox.h>
|
||||||
|
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qlabel.h>
|
||||||
|
#include <qlineedit.h>
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
#include <kcharsets.h>
|
||||||
|
#include <kcombobox.h>
|
||||||
|
#include <kconfig.h>
|
||||||
|
#include <kglobal.h>
|
||||||
|
#include <kstandarddirs.h>
|
||||||
|
#include <kapplication.h>
|
||||||
|
//#include <kdebug.h>
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "whatthis.h"
|
||||||
|
#include "koptionsdlg.h"
|
||||||
|
|
||||||
|
|
||||||
|
using namespace whatthisNameSpace;
|
||||||
|
|
||||||
|
|
||||||
|
KOptionsDlg::KOptionsDlg(RCOptions* info, QWidget *parent, const char *name) : KOptionsDlgS(parent,name,true)
|
||||||
|
{
|
||||||
|
m_config = new KConfig("kfilereplacerc");
|
||||||
|
m_option = info;
|
||||||
|
|
||||||
|
initGUI();
|
||||||
|
|
||||||
|
connect(m_pbOK, SIGNAL(clicked()), this, SLOT(slotOK()));
|
||||||
|
connect(m_pbDefault, SIGNAL(clicked()),this,SLOT(slotDefaults()));
|
||||||
|
connect(m_chbBackup, SIGNAL(toggled(bool)), this, SLOT(slotChbBackup(bool)));
|
||||||
|
connect(m_pbHelp, SIGNAL(clicked()), this, SLOT(slotHelp()));
|
||||||
|
connect(m_chbConfirmStrings, SIGNAL(toggled(bool)), this, SLOT(slotChbConfirmStrings(bool)));
|
||||||
|
connect(m_chbShowConfirmDialog, SIGNAL(toggled(bool)), this, SLOT(slotChbShowConfirmDialog(bool)));
|
||||||
|
|
||||||
|
whatsThis();
|
||||||
|
}
|
||||||
|
|
||||||
|
KOptionsDlg::~KOptionsDlg()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//PRIVATE SLOTS
|
||||||
|
void KOptionsDlg::slotOK()
|
||||||
|
{
|
||||||
|
saveRCOptions();
|
||||||
|
accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set defaults values for all options of the dialog */
|
||||||
|
void KOptionsDlg::slotDefaults()
|
||||||
|
{
|
||||||
|
m_chbCaseSensitive->setChecked(CaseSensitiveOption);
|
||||||
|
m_chbRecursive->setChecked(RecursiveOption);
|
||||||
|
m_chbHaltOnFirstOccurrence->setChecked(StopWhenFirstOccurenceOption);
|
||||||
|
|
||||||
|
m_chbFollowSymLinks->setChecked(FollowSymbolicLinksOption);
|
||||||
|
m_chbIgnoreHidden->setChecked(IgnoreHiddenOption);
|
||||||
|
m_chbRegularExpressions->setChecked(RegularExpressionsOption);
|
||||||
|
m_chbIgnoreFiles->setChecked(IgnoreFilesOption);
|
||||||
|
m_chbConfirmStrings->setChecked(AskConfirmReplaceOption);
|
||||||
|
|
||||||
|
QStringList bkList = BackupExtensionOption.split(",",QString::KeepEmptyParts);
|
||||||
|
|
||||||
|
bool enableBackup = (bkList[0] == "true" ? true : false);
|
||||||
|
|
||||||
|
m_chbBackup->setChecked(enableBackup);
|
||||||
|
m_leBackup->setEnabled(enableBackup);
|
||||||
|
m_tlBackup->setEnabled(enableBackup);
|
||||||
|
|
||||||
|
m_leBackup->setText(bkList[1]);
|
||||||
|
|
||||||
|
m_chbVariables->setChecked(VariablesOption);
|
||||||
|
|
||||||
|
m_chbNotifyOnErrors->setChecked(NotifyOnErrorsOption);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KOptionsDlg::slotChbBackup(bool b)
|
||||||
|
{
|
||||||
|
m_leBackup->setEnabled(b);
|
||||||
|
m_tlBackup->setEnabled(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KOptionsDlg::slotChbConfirmStrings(bool b)
|
||||||
|
{
|
||||||
|
KConfigGroup grp(m_config, "Notification Messages");
|
||||||
|
if(b)
|
||||||
|
{
|
||||||
|
m_chbShowConfirmDialog->setEnabled(true);
|
||||||
|
m_chbShowConfirmDialog->setChecked(true);
|
||||||
|
grp.writeEntry(rcDontAskAgain,"no");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_chbShowConfirmDialog->setEnabled(false);
|
||||||
|
m_chbShowConfirmDialog->setChecked(false);
|
||||||
|
grp.writeEntry(rcDontAskAgain,"yes");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KOptionsDlg::slotChbShowConfirmDialog(bool b)
|
||||||
|
{
|
||||||
|
KConfigGroup grp(m_config, "Notification Messages");
|
||||||
|
if(b)
|
||||||
|
{
|
||||||
|
grp.writeEntry(rcDontAskAgain,"no");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
grp.writeEntry(rcDontAskAgain,"yes");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//PRIVATE
|
||||||
|
void KOptionsDlg::initGUI()
|
||||||
|
{
|
||||||
|
m_config->sync();
|
||||||
|
KConfigGroup grp(m_config, "Notification Messages");
|
||||||
|
m_option->m_notifyOnErrors = grp.readEntry(rcNotifyOnErrors, true);
|
||||||
|
|
||||||
|
QString dontAskAgain = grp.readEntry(rcDontAskAgain, QString("no"));
|
||||||
|
|
||||||
|
m_chbConfirmStrings->setChecked(m_option->m_askConfirmReplace);
|
||||||
|
|
||||||
|
if(m_chbConfirmStrings->isChecked())
|
||||||
|
{
|
||||||
|
if(dontAskAgain == "yes")
|
||||||
|
m_chbShowConfirmDialog->setChecked(false);
|
||||||
|
else
|
||||||
|
m_chbShowConfirmDialog->setChecked(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList availableEncodingNames(KGlobal::charsets()->availableEncodingNames());
|
||||||
|
m_cbEncoding->addItems( availableEncodingNames );
|
||||||
|
int idx = -1;
|
||||||
|
int utf8Idx = -1;
|
||||||
|
for (int i = 0; i < availableEncodingNames.count(); i++)
|
||||||
|
{
|
||||||
|
if (availableEncodingNames[i] == m_option->m_encoding)
|
||||||
|
{
|
||||||
|
idx = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (availableEncodingNames[i] == "utf8")
|
||||||
|
{
|
||||||
|
utf8Idx = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (idx != -1)
|
||||||
|
m_cbEncoding->setCurrentIndex(idx);
|
||||||
|
else
|
||||||
|
m_cbEncoding->setCurrentIndex(utf8Idx);
|
||||||
|
|
||||||
|
m_chbCaseSensitive->setChecked(m_option->m_caseSensitive);
|
||||||
|
m_chbRecursive->setChecked(m_option->m_recursive);
|
||||||
|
|
||||||
|
bool enableBackup = m_option->m_backup;
|
||||||
|
|
||||||
|
m_chbBackup->setChecked(enableBackup);
|
||||||
|
m_leBackup->setEnabled(enableBackup);
|
||||||
|
m_tlBackup->setEnabled(enableBackup);
|
||||||
|
|
||||||
|
m_leBackup->setText(m_option->m_backupExtension);
|
||||||
|
|
||||||
|
m_chbVariables->setChecked(m_option->m_variables);
|
||||||
|
m_chbRegularExpressions->setChecked(m_option->m_regularExpressions);
|
||||||
|
m_chbHaltOnFirstOccurrence->setChecked(m_option->m_haltOnFirstOccur);
|
||||||
|
m_chbFollowSymLinks->setChecked(m_option->m_followSymLinks);
|
||||||
|
m_chbIgnoreHidden->setChecked(m_option->m_ignoreHidden);
|
||||||
|
m_chbIgnoreFiles->setChecked(m_option->m_ignoreFiles);
|
||||||
|
|
||||||
|
m_chbNotifyOnErrors->setChecked(m_option->m_notifyOnErrors);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KOptionsDlg::saveRCOptions()
|
||||||
|
{
|
||||||
|
m_option->m_encoding = m_cbEncoding->currentText();
|
||||||
|
m_option->m_caseSensitive = m_chbCaseSensitive->isChecked();
|
||||||
|
m_option->m_recursive = m_chbRecursive->isChecked();
|
||||||
|
QString backupExt = m_leBackup->text();
|
||||||
|
m_option->m_backup = (m_chbBackup->isChecked() && !backupExt.isEmpty());
|
||||||
|
m_option->m_backupExtension = backupExt;
|
||||||
|
m_option->m_variables = m_chbVariables->isChecked();
|
||||||
|
m_option->m_regularExpressions = m_chbRegularExpressions->isChecked();
|
||||||
|
m_option->m_haltOnFirstOccur = m_chbHaltOnFirstOccurrence->isChecked();
|
||||||
|
m_option->m_followSymLinks = m_chbFollowSymLinks->isChecked();
|
||||||
|
m_option->m_ignoreHidden = m_chbIgnoreHidden->isChecked();
|
||||||
|
m_option->m_ignoreFiles = m_chbIgnoreFiles->isChecked();
|
||||||
|
m_option->m_askConfirmReplace = m_chbConfirmStrings->isChecked();
|
||||||
|
m_option->m_notifyOnErrors = m_chbNotifyOnErrors->isChecked();
|
||||||
|
|
||||||
|
KConfigGroup grp(m_config, "Notification Messages");
|
||||||
|
grp.writeEntry(rcNotifyOnErrors, m_option->m_notifyOnErrors);
|
||||||
|
|
||||||
|
m_config->sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KOptionsDlg::whatsThis()
|
||||||
|
{
|
||||||
|
// Create help QWhatsThis
|
||||||
|
m_chbCaseSensitive->setWhatsThis( chbCaseSensitiveWhatthis);
|
||||||
|
m_chbRecursive->setWhatsThis( chbRecursiveWhatthis);
|
||||||
|
m_chbHaltOnFirstOccurrence->setWhatsThis( chbHaltOnFirstOccurrenceWhatthis);
|
||||||
|
m_chbFollowSymLinks->setWhatsThis( chbFollowSymLinksWhatthis);
|
||||||
|
m_chbIgnoreHidden->setWhatsThis( chbIgnoreHiddenWhatthis);
|
||||||
|
m_chbIgnoreFiles->setWhatsThis( chbIgnoreFilesWhatthis);
|
||||||
|
m_chbRegularExpressions->setWhatsThis( chbRegularExpressionsWhatthis);
|
||||||
|
m_chbVariables->setWhatsThis( chbVariablesWhatthis);
|
||||||
|
m_chbBackup->setWhatsThis( chbBackupWhatthis);
|
||||||
|
m_chbConfirmStrings->setWhatsThis( chbConfirmStringsWhatthis);
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "koptionsdlg.moc"
|
59
kfilereplace/koptionsdlg.h
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
/***************************************************************************
|
||||||
|
koptionsdlg.h - description
|
||||||
|
-------------------
|
||||||
|
begin : Tue Dec 28 1999
|
||||||
|
copyright : (C) 1999 by François Dupoux
|
||||||
|
(C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
|
||||||
|
email : dupoux@dupoux.com
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef KOPTIONSDLG_H
|
||||||
|
#define KOPTIONSDLG_H
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
class KConfig;
|
||||||
|
|
||||||
|
//local
|
||||||
|
#include "configurationclasses.h"
|
||||||
|
#include "koptionsdlgs.h"
|
||||||
|
#include <ktoolinvocation.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@author François Dupoux
|
||||||
|
*/
|
||||||
|
|
||||||
|
class KOptionsDlg : public KOptionsDlgS
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
KOptionsDlg(RCOptions* info, QWidget *parent, const char *name);
|
||||||
|
~KOptionsDlg();
|
||||||
|
|
||||||
|
private:
|
||||||
|
RCOptions* m_option;
|
||||||
|
KConfig *m_config;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void slotOK();
|
||||||
|
void slotDefaults();
|
||||||
|
void slotChbBackup(bool b);
|
||||||
|
void slotChbConfirmStrings(bool b);
|
||||||
|
void slotChbShowConfirmDialog(bool b);
|
||||||
|
void slotHelp(){ KToolInvocation::invokeHelp(QString::null, "kfilereplace"); } //krazy:exclude=nullstrassign for old broken gcc
|
||||||
|
|
||||||
|
private:
|
||||||
|
void initGUI();
|
||||||
|
void saveRCOptions();
|
||||||
|
void whatsThis();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // KOPTIONSDLG_H
|
346
kfilereplace/koptionsdlgs.ui
Normal file
|
@ -0,0 +1,346 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||||
|
<class>KOptionsDlgS</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>KOptionsDlgS</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>572</width>
|
||||||
|
<height>420</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>Options</string>
|
||||||
|
</property>
|
||||||
|
<property name="sizeGripEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QTabWidget" row="0" column="0" rowspan="1" colspan="5">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabWidget2</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tab1</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>General</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QGroupBox" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>groupBox7</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>General Options</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbVariables</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable commands in replace strings</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="7" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_tlBackup</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Backup copy suffix:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="7" column="1" rowspan="1" colspan="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_leBackup</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="5" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbNotifyOnErrors</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Notif&y on errors</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbCaseSensitive</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Case sensitive</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbRecursive</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Recursive (search/replace in all sub folders)</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbRegularExpressions</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable regular e&xpressions</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="6" column="0" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbBackup</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Do &backup copy</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Encoding of the files:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="KComboBox" row="0" column="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_cbEncoding</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>3</hsizetype>
|
||||||
|
<vsizetype>0</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>Tab3</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>&Advanced</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QGroupBox" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>gbxConfirm</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Advanced Options</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QCheckBox" row="5" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbIgnoreHidden</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Ignore hidden files and folders</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="4" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbFollowSymLinks</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Follow s&ymbolic links</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="3" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbHaltOnFirstOccurrence</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>When searching, stop on first string found (faster but no details)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="2" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbIgnoreFiles</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Do not show file if no strings are found or replaced</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout9</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QCheckBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbShowConfirmDialog</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Show confirmation dialog</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_chbConfirmStrings</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Confirm before replace each string</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbHelp</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Help</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<spacer row="1" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>202</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton" row="1" column="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbDefault</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Default Values</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" row="1" column="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbOK</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&OK</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" row="1" column="4">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>m_pbCancel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Cancel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>m_pbCancel</sender>
|
||||||
|
<signal>clicked()</signal>
|
||||||
|
<receiver>KOptionsDlgS</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
<tabstops>
|
||||||
|
<tabstop>tabWidget2</tabstop>
|
||||||
|
<tabstop>m_cbEncoding</tabstop>
|
||||||
|
<tabstop>m_chbCaseSensitive</tabstop>
|
||||||
|
<tabstop>m_chbRecursive</tabstop>
|
||||||
|
<tabstop>m_chbRegularExpressions</tabstop>
|
||||||
|
<tabstop>m_chbVariables</tabstop>
|
||||||
|
<tabstop>m_chbNotifyOnErrors</tabstop>
|
||||||
|
<tabstop>m_chbBackup</tabstop>
|
||||||
|
<tabstop>m_leBackup</tabstop>
|
||||||
|
<tabstop>m_pbDefault</tabstop>
|
||||||
|
<tabstop>m_pbOK</tabstop>
|
||||||
|
<tabstop>m_pbCancel</tabstop>
|
||||||
|
<tabstop>m_pbHelp</tabstop>
|
||||||
|
<tabstop>m_chbConfirmStrings</tabstop>
|
||||||
|
<tabstop>m_chbShowConfirmDialog</tabstop>
|
||||||
|
<tabstop>m_chbIgnoreFiles</tabstop>
|
||||||
|
<tabstop>m_chbHaltOnFirstOccurrence</tabstop>
|
||||||
|
<tabstop>m_chbFollowSymLinks</tabstop>
|
||||||
|
<tabstop>m_chbIgnoreHidden</tabstop>
|
||||||
|
</tabstops>
|
||||||
|
</UI>
|
74
kfilereplace/main.cpp
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
/***************************************************************************
|
||||||
|
main.cpp - Main file for the KFileReplace shell
|
||||||
|
-------------------
|
||||||
|
begin : Thu Sep 16 14:14:09 2004
|
||||||
|
copyright : (C) 2004 by Andras Mantia <amantia@kde.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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "kfilereplace.h"
|
||||||
|
|
||||||
|
#include <kapplication.h>
|
||||||
|
#include <kaboutdata.h>
|
||||||
|
#include <kcmdlineargs.h>
|
||||||
|
#include <klocale.h>
|
||||||
|
|
||||||
|
static const char description[] =
|
||||||
|
I18N_NOOP("Batch search and replace tool");
|
||||||
|
|
||||||
|
static const char version[] = "0.1";
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
KAboutData about("kfilereplace", 0, ki18n("KFileReplace"), version, ki18n(description),
|
||||||
|
KAboutData::License_GPL_V2, ki18n("(C) 2004-2005 Andras Mantia\n(C) 2004-2005 Emiliano Gulmini\n(C) 1999-2002 François Dupoux"), ki18n("Part of the KDEWebDev module."),
|
||||||
|
"http://kde.org/applications/utilities/kfilereplace/");
|
||||||
|
|
||||||
|
about.addAuthor(ki18n("Andras Mantia"), ki18n("Shell author, KPart creator, co-maintainer"), "amantia@kde.org");
|
||||||
|
about.addAuthor(ki18n("Emiliano Gulmini"), ki18n("Current maintainer, code cleaner and rewriter"),"emi_barbarossa@yahoo.it");
|
||||||
|
about.addAuthor(ki18n("François Dupoux"),
|
||||||
|
ki18n("Original author of the KFileReplace tool"),
|
||||||
|
"dupoux@dupoux.com");
|
||||||
|
|
||||||
|
KCmdLineArgs::init(argc, argv, &about);
|
||||||
|
|
||||||
|
KCmdLineOptions options;
|
||||||
|
options.add("+[PATH]", ki18n( "Starting folder" ));
|
||||||
|
KCmdLineArgs::addCmdLineOptions( options );
|
||||||
|
|
||||||
|
KApplication app;
|
||||||
|
|
||||||
|
// see if we are starting with session management
|
||||||
|
if (app.isSessionRestored())
|
||||||
|
{
|
||||||
|
RESTORE(KFileReplace);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// no session.. just start up normally
|
||||||
|
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
|
||||||
|
|
||||||
|
KFileReplace *kfr = new KFileReplace;
|
||||||
|
kfr->show();
|
||||||
|
|
||||||
|
if (args->count() == 0)
|
||||||
|
{
|
||||||
|
kfr->openURL(KUrl());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
kfr->openURL(args->url(0));
|
||||||
|
}
|
||||||
|
args->clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
return app.exec();
|
||||||
|
}
|
9
kfilereplace/org.kde.kfilereplace.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
|
||||||
|
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
|
||||||
|
<node>
|
||||||
|
<interface name="org.kde.kfilereplace">
|
||||||
|
<method name="openURL">
|
||||||
|
<arg name="url" type="s" direction="in"/>
|
||||||
|
</method>
|
||||||
|
</interface>
|
||||||
|
</node>
|
284
kfilereplace/report.cpp
Normal file
|
@ -0,0 +1,284 @@
|
||||||
|
/***************************************************************************
|
||||||
|
report.cpp - Report document class
|
||||||
|
-------------------
|
||||||
|
begin : fri aug 13 15:29:46 CEST 2004
|
||||||
|
|
||||||
|
copyright : (C) 2004 Emiliano Gulmini
|
||||||
|
email : emi_barbarossa@yahoo.it
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
// QT
|
||||||
|
#include <qstring.h>
|
||||||
|
#include <qfile.h>
|
||||||
|
//Added by qt3to4:
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
#include <k3listview.h>
|
||||||
|
#include <kmessagebox.h>
|
||||||
|
#include <kuser.h>
|
||||||
|
|
||||||
|
// local
|
||||||
|
#include "report.h"
|
||||||
|
#include "configurationclasses.h"
|
||||||
|
|
||||||
|
void Report::createReportFile()
|
||||||
|
{
|
||||||
|
QString xmlFileName = m_docPath + ".xml",
|
||||||
|
cssFileName = m_docPath + ".css";
|
||||||
|
|
||||||
|
// Generates a report file
|
||||||
|
// a) Open the file
|
||||||
|
QFile report(xmlFileName);
|
||||||
|
if (!report.open( QIODevice::WriteOnly ))
|
||||||
|
{
|
||||||
|
KMessageBox::error(0, i18n("<qt>Cannot open the file <b>%1</b>.</qt>", xmlFileName));
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// b) Write the header of the XML file
|
||||||
|
|
||||||
|
QDateTime datetime = QDateTime::currentDateTime(Qt::LocalTime);
|
||||||
|
QString dateString = datetime.toString(Qt::LocalDate);
|
||||||
|
KUser user;
|
||||||
|
QString columnTextFour,
|
||||||
|
columnReplaceWith;
|
||||||
|
if(!m_isSearchFlag)
|
||||||
|
{
|
||||||
|
columnTextFour = i18n("Replaced Strings");
|
||||||
|
columnReplaceWith = i18n("Replace with");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
columnTextFour = i18n("Total number occurrences");
|
||||||
|
columnReplaceWith = i18n("-");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString css = cssFileName.mid(cssFileName.lastIndexOf("/")+1,cssFileName.length()-(cssFileName.lastIndexOf("/")+1));
|
||||||
|
QTextStream oTStream( &report );
|
||||||
|
oTStream << "<?xml version=\"1.0\"?>\n"
|
||||||
|
"<?xml-stylesheet href=\""+css+"\" type=\"text/css\"?>"
|
||||||
|
"<report>\n"
|
||||||
|
" <title> "+i18n("KFileReplace Report")+" </title>\n"
|
||||||
|
" <createdby>"+user.fullName()+'('+user.loginName()+")</createdby>\n"
|
||||||
|
" <date>"+dateString+"</date>\n"
|
||||||
|
"<hr/>\n"
|
||||||
|
" <table>\n"
|
||||||
|
" <tablecaption> "+i18n("Searching/Replacing Strings Table")+" </tablecaption>\n"
|
||||||
|
" <header>\n"
|
||||||
|
" <row>\n"
|
||||||
|
" <searchfor class=\"header\">"+i18n("Search for")+"</searchfor>\n";
|
||||||
|
|
||||||
|
if(!m_isSearchFlag)
|
||||||
|
oTStream<< " <replacewith class=\"header\" >"+columnReplaceWith+"</replacewith>\n";
|
||||||
|
|
||||||
|
oTStream<< " </row>\n"
|
||||||
|
" </header>\n";
|
||||||
|
// c) Write the strings list
|
||||||
|
Q3ListViewItem *lviCurItem,
|
||||||
|
*lviFirst;
|
||||||
|
|
||||||
|
lviCurItem = lviFirst = m_stringsView->firstChild();
|
||||||
|
|
||||||
|
if(lviCurItem == 0)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
QString rowType="a1";
|
||||||
|
|
||||||
|
do
|
||||||
|
{ QString rowTag = "<row >\n"
|
||||||
|
" <searchfor class=\""+rowType+"\"><![CDATA["+lviCurItem->text(0)+"]]></searchfor>\n"
|
||||||
|
" <replacewith class=\""+rowType+"\"><![CDATA["+lviCurItem->text(1)+"]]></replacewith>\n"
|
||||||
|
"</row>\n";
|
||||||
|
|
||||||
|
oTStream << rowTag;
|
||||||
|
|
||||||
|
rowType = ((rowType == "a1") ? "a2" : "a1");
|
||||||
|
|
||||||
|
lviCurItem = lviCurItem->nextSibling();
|
||||||
|
} while(lviCurItem && lviCurItem != lviFirst);
|
||||||
|
|
||||||
|
oTStream<< "</table>\n";
|
||||||
|
|
||||||
|
oTStream<< "<whiteline/>\n"
|
||||||
|
" <table>\n"
|
||||||
|
" <tablecaption> "+i18n("Results Table")+ " </tablecaption>"
|
||||||
|
" <header>\n"
|
||||||
|
" <row>\n"
|
||||||
|
" <name class=\"header\">"+i18n("Name")+"</name>\n"
|
||||||
|
" <folder class=\"header\">"+i18n("Folder")+"</folder>\n";
|
||||||
|
if(m_isSearchFlag)
|
||||||
|
{
|
||||||
|
oTStream<< " <oldsize class=\"header\">"+i18n("Size")+"</oldsize>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oTStream<< " <oldsize class=\"header\">"+i18n("Old Size")+"</oldsize>\n"
|
||||||
|
" <newsize class=\"header\">"+i18n("New Size")+"</newsize>\n";
|
||||||
|
}
|
||||||
|
oTStream<< " <replacedstrings class=\"header\" >"+columnTextFour+"</replacedstrings>\n"
|
||||||
|
" <owneruser class=\"header\">"+i18n("Owner User")+"</owneruser>\n"
|
||||||
|
" <ownergroup class=\"header\">"+i18n("Owner Group")+"</ownergroup>\n"
|
||||||
|
" </row>\n"
|
||||||
|
" </header>\n";
|
||||||
|
|
||||||
|
// d) Write the result list
|
||||||
|
|
||||||
|
lviCurItem = lviFirst = m_resultsView->firstChild();
|
||||||
|
|
||||||
|
if(lviCurItem == 0)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
unsigned int totalOccurrences = 0;
|
||||||
|
|
||||||
|
rowType="a1";
|
||||||
|
|
||||||
|
do
|
||||||
|
{ QString rowTag = " <row >\n"
|
||||||
|
" <name class=\""+rowType+"\"><![CDATA["+lviCurItem->text(0)+"]]></name>\n"
|
||||||
|
" <folder class=\""+rowType+"\"><![CDATA["+lviCurItem->text(1)+"]]></folder>\n";
|
||||||
|
if(m_isSearchFlag)
|
||||||
|
{
|
||||||
|
rowTag += " <oldsize class=\""+rowType+"\"><![CDATA["+lviCurItem->text(2)+"]]></oldsize>\n"
|
||||||
|
" <replacedstrings class=\""+rowType+"\"><![CDATA["+lviCurItem->text(3)+"]]></replacedstrings>\n"
|
||||||
|
" <owneruser class=\""+rowType+"\"><![CDATA["+lviCurItem->text(4)+"]]></owneruser>\n"
|
||||||
|
" <ownergroup class=\""+rowType+"\"><![CDATA["+lviCurItem->text(5)+"]]></ownergroup>\n"
|
||||||
|
" </row>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rowTag += " <oldsize class=\""+rowType+"\"><![CDATA["+lviCurItem->text(2)+"]]></oldsize>\n"
|
||||||
|
" <newsize class=\""+rowType+"\"><![CDATA["+lviCurItem->text(3)+"]]></newsize>\n"
|
||||||
|
" <replacedstrings class=\""+rowType+"\"><![CDATA["+lviCurItem->text(4)+"]]></replacedstrings>\n"
|
||||||
|
" <owneruser class=\""+rowType+"\"><![CDATA["+lviCurItem->text(5)+"]]></owneruser>\n"
|
||||||
|
" <ownergroup class=\""+rowType+"\"><![CDATA["+lviCurItem->text(6)+"]]></ownergroup>\n"
|
||||||
|
" </row>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
oTStream << rowTag;
|
||||||
|
|
||||||
|
rowType = ((rowType == "a1") ? "a2" : "a1");
|
||||||
|
|
||||||
|
if(m_isSearchFlag)
|
||||||
|
totalOccurrences += lviCurItem->text(3).toInt();
|
||||||
|
else
|
||||||
|
totalOccurrences += lviCurItem->text(4).toInt();
|
||||||
|
|
||||||
|
lviCurItem = lviCurItem->nextSibling();
|
||||||
|
} while(lviCurItem && lviCurItem != lviFirst);
|
||||||
|
|
||||||
|
|
||||||
|
// e) Write the end of the file
|
||||||
|
|
||||||
|
oTStream<< " </table>\n"
|
||||||
|
"<totaloccurrences>"
|
||||||
|
<< totalOccurrences
|
||||||
|
<< "</totaloccurrences>\n"
|
||||||
|
"</report>\n";
|
||||||
|
|
||||||
|
report.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Report::createStyleSheet()
|
||||||
|
{
|
||||||
|
QString cssFileName = m_docPath +".css";
|
||||||
|
QFile styleSheet(cssFileName);
|
||||||
|
if (!styleSheet.open( QIODevice::WriteOnly ))
|
||||||
|
{
|
||||||
|
KMessageBox::error(0, i18n("<qt>Cannot open the file <b>%1</b>.</qt>", cssFileName));
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTextStream oTStream( &styleSheet );
|
||||||
|
|
||||||
|
QString css = "title { display:block;font:40px bold sans-serif; }\n\n"
|
||||||
|
"createdby:before { content :\""+i18n("Created by")+": \"; }\n"
|
||||||
|
"createdby { display:inline; }\n\n"
|
||||||
|
"date:before { content :\"-"+i18n("date")+": \"; }\n"
|
||||||
|
"date { display:inline; }\n\n"
|
||||||
|
"totaloccurrences:before { content :\""+i18n("Total occurrences")+": \"; }\n"
|
||||||
|
"totaloccurrences { display:block;text-align:right; font-weight:bold;margin-top:5px;margin-right:5px;}\n"
|
||||||
|
"tablecaption {display:table-caption;font:20px bold sans-serif;}\n\n"
|
||||||
|
"hr {display:block;background:black;height:1px;margin:5px 0px 5px;}\n"
|
||||||
|
"whiteline {display:block;height:16px;}\n\n"
|
||||||
|
"searchfor {\n"
|
||||||
|
" display:table-cell;\n"
|
||||||
|
" border:1px solid black;\n"
|
||||||
|
" padding:0 7px 0; }\n\n";
|
||||||
|
|
||||||
|
if(!m_isSearchFlag)
|
||||||
|
{
|
||||||
|
css += "replacewith {\n"
|
||||||
|
" display:table-cell;\n"
|
||||||
|
" border:1px solid black;\n"
|
||||||
|
" padding:0 7px 0; }\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
css += "folder {\n"
|
||||||
|
" display:table-cell;\n"
|
||||||
|
" border:1px solid black;\n"
|
||||||
|
" padding:0 7px 0; }\n\n"
|
||||||
|
"header { display: table-header-group; }\n\n"
|
||||||
|
"name {\n"
|
||||||
|
" display:table-cell;\n"
|
||||||
|
" border:1px solid black;\n"
|
||||||
|
" padding:0 7px 0; }\n\n"
|
||||||
|
"newsize {\n"
|
||||||
|
" display:table-cell;\n"
|
||||||
|
" border:1px solid black;\n"
|
||||||
|
" padding:0 7px 0;\n"
|
||||||
|
" text-align:right; }\n\n"
|
||||||
|
"oldsize {\n"
|
||||||
|
" display:table-cell;\n"
|
||||||
|
" border:1px solid black;\n"
|
||||||
|
" padding:0 7px 0;\n"
|
||||||
|
" text-align:right; }\n\n"
|
||||||
|
"ownergroup {\n"
|
||||||
|
" display:table-cell;\n"
|
||||||
|
" border:1px solid black;\n"
|
||||||
|
" padding:0 7px 0; }\n\n"
|
||||||
|
"owneruser {\n"
|
||||||
|
" display:table-cell;\n"
|
||||||
|
" border:1px solid black;\n"
|
||||||
|
" padding:0 7px 0; }\n\n"
|
||||||
|
"replacedstrings {\n"
|
||||||
|
" text-align:right;\n"
|
||||||
|
" display:table-cell;\n"
|
||||||
|
" border:1px solid black;\n"
|
||||||
|
" padding:0 7px 0; }\n\n"
|
||||||
|
"*[class~=header] {\n"
|
||||||
|
" background : lightgray;\n"
|
||||||
|
" text-align : center; }\n\n"
|
||||||
|
"row { display : table-row; }\n\n"
|
||||||
|
"table {\n"
|
||||||
|
" display:table;\n"
|
||||||
|
" border-collapse: collapse; }\n\n"
|
||||||
|
"*[class~=a1] {\n"
|
||||||
|
" background-color:aliceblue;\n"
|
||||||
|
" font-weight : bold;font-size:15px; }\n\n"
|
||||||
|
"*[class~=a2] {\n"
|
||||||
|
" background-color:khaki;\n"
|
||||||
|
" font-weight : bold;\n"
|
||||||
|
" font-size:15px; }\n\n";
|
||||||
|
|
||||||
|
oTStream << css;
|
||||||
|
|
||||||
|
styleSheet.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Report::createDocument(const QString& docPath)
|
||||||
|
{
|
||||||
|
m_docPath = docPath;
|
||||||
|
|
||||||
|
createStyleSheet();
|
||||||
|
createReportFile();
|
||||||
|
}
|
||||||
|
|
58
kfilereplace/report.h
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
/***************************************************************************
|
||||||
|
report.h - Report document class
|
||||||
|
-------------------
|
||||||
|
begin : fri aug 13 15:29:46 CEST 2004
|
||||||
|
|
||||||
|
copyright : (C) 2004 Emiliano Gulmini
|
||||||
|
email : emi_barbarossa@yahoo.it
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef REPORT_H
|
||||||
|
#define REPORT_H
|
||||||
|
|
||||||
|
// QT
|
||||||
|
class QString;
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
#include <klocale.h>
|
||||||
|
#include "configurationclasses.h"
|
||||||
|
class K3ListView;
|
||||||
|
|
||||||
|
/** Report class is used to create a pair of files (a xml and a css file) which are
|
||||||
|
* a short statistical report of the operations.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class Report
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
K3ListView* m_stringsView,
|
||||||
|
* m_resultsView;
|
||||||
|
QString m_docPath;
|
||||||
|
bool m_isSearchFlag;
|
||||||
|
RCOptions* m_option;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Report(RCOptions* info, K3ListView* rv, K3ListView* sv) { m_option = info;
|
||||||
|
m_resultsView = rv;
|
||||||
|
m_stringsView = sv;
|
||||||
|
m_isSearchFlag = m_option->m_searchingOnlyMode;
|
||||||
|
}
|
||||||
|
~Report() { m_option = 0; }
|
||||||
|
private:
|
||||||
|
void createReportFile();
|
||||||
|
void createStyleSheet();
|
||||||
|
|
||||||
|
public:
|
||||||
|
void createDocument(const QString& docPath);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // REPORT_H
|
3
kfilereplace/toolbar/CMakeLists.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
|
||||||
|
kde4_install_icons( ${DATA_INSTALL_DIR}/kfilereplacepart/icons )
|
||||||
|
|
BIN
kfilereplace/toolbar/hi22-action-backup_option.png
Normal file
After Width: | Height: | Size: 947 B |
BIN
kfilereplace/toolbar/hi22-action-casesensitive_option.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
kfilereplace/toolbar/hi22-action-command_option.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
kfilereplace/toolbar/hi22-action-filesimulate.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
kfilereplace/toolbar/hi22-action-invert.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
kfilereplace/toolbar/hi22-action-recursive_option.png
Normal file
After Width: | Height: | Size: 580 B |
BIN
kfilereplace/toolbar/hi22-action-regularexpression_option.png
Normal file
After Width: | Height: | Size: 930 B |
BIN
kfilereplace/tutorial.kwd
Normal file
101
kfilereplace/whatthis.h
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
/***************************************************************************
|
||||||
|
whatthis.h - description
|
||||||
|
-------------------
|
||||||
|
begin : fri 12 march CEST 2004
|
||||||
|
copyright : (C) 2004 Emiliano Gulmini
|
||||||
|
email : <emi_barbarossa@yahoo.it>
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
#ifndef WHATTHIS_H
|
||||||
|
#define WHATTHIS_H
|
||||||
|
|
||||||
|
// QT
|
||||||
|
#include <qstring.h>
|
||||||
|
|
||||||
|
// KDE
|
||||||
|
#include <klocale.h>
|
||||||
|
|
||||||
|
namespace whatthisNameSpace
|
||||||
|
{
|
||||||
|
//KFileReplaceView messages
|
||||||
|
const QString lvResultWhatthis = i18n("Shows the statistics of your operations. Note that the columns content changes depending on what kind of operation you are performing.");
|
||||||
|
|
||||||
|
const QString lvStringsWhatthis = i18n("Shows a list of strings to search for (and if you specified it, a list of strings to replace with). Use the \"add strings\" dialog to edit your string list or double click on a string.");
|
||||||
|
|
||||||
|
//KNewProjectDlg messages
|
||||||
|
const QString cbLocationWhatthis = i18n("Base folder for operations of search/replace. Insert path string here by hand or use the search button.");
|
||||||
|
|
||||||
|
const QString cbFilterWhatthis = i18n("Shell-like wildcards. Example: \"*.html;*.txt;*.xml\".");
|
||||||
|
|
||||||
|
const QString edSizeMinWhatthis = i18n("Insert the minimum file size you want to search, or leave it unchecked if you do not want a minimum size limit.");
|
||||||
|
|
||||||
|
const QString edSizeMaxWhatthis = i18n("Insert the maximum file size you want to search, or leave it unchecked if you do not want a maximum size limit.");
|
||||||
|
|
||||||
|
const QString edDateMinWhatthis = i18n("Insert the minimum value for file access date that you want to search, or leave it unchecked if you do not want a minimum limit.");
|
||||||
|
|
||||||
|
const QString edDateMaxWhatthis = i18n("Insert the maximum value for file access date that you want to search, or leave it unchecked if you do not want a maximum limit.");
|
||||||
|
|
||||||
|
const QString cbDateValidWhatthis = i18n("Select \"writing\" if you want to use the date of the last modification, or \"reading\" to use the date of the last access.");
|
||||||
|
|
||||||
|
const QString chbDateMinWhatthis = i18n("Minimum value for access date.");
|
||||||
|
|
||||||
|
const QString chbDateMaxWhatthis = i18n("Maximum value for access date.");
|
||||||
|
|
||||||
|
const QString leSearchWhatthis = i18n("Insert here the string to search for.");
|
||||||
|
|
||||||
|
const QString leReplaceWhatthis = i18n("Insert here the string to replace with.");
|
||||||
|
|
||||||
|
//KOptionsDlg messages
|
||||||
|
const QString chbCaseSensitiveWhatthis = i18n("Enable this option if your search is case sensitive.");
|
||||||
|
|
||||||
|
const QString chbRecursiveWhatthis = i18n("Enable this option to search in sub folders too.");
|
||||||
|
|
||||||
|
const QString chbHaltOnFirstOccurrenceWhatthis = i18n("Enable this option when you are searching for a string and you are only interested to know if the string is present or not in the current file.");
|
||||||
|
|
||||||
|
const QString chbIgnoreWhitespacesWhatthis ="";
|
||||||
|
|
||||||
|
const QString chbFollowSymLinksWhatthis = i18n("If set, then if kfilereplace encounters a symbolic link it treats it like a normal folder or file.");
|
||||||
|
|
||||||
|
const QString chbIgnoreHiddenWhatthis = i18n("Enable this option to ignore hidden files or folders.");
|
||||||
|
|
||||||
|
const QString chbIgnoreFilesWhatthis = i18n("If this option is enabled, KFR will show even the names of the files in which no string has been found or replaced.");
|
||||||
|
|
||||||
|
const QString chbRegularExpressionsWhatthis = i18n("Allows you to apply Qt-like regular expressions on the search string. Note that a complex regular expression could affect speed performance.");
|
||||||
|
|
||||||
|
const QString chbVariablesWhatthis = i18n("Enable \"commands\". For example: if search string is \"user\" and replace string is the command \"[$user:uid$]\", KFR will substitute \"user\" with the uid of the user.");
|
||||||
|
|
||||||
|
const QString chbBackupWhatthis = i18n("Enable this option if you want leave original files untouched.");
|
||||||
|
|
||||||
|
const QString chbConfirmStringsWhatthis = i18n("Enable this option if you want to be asked for single string replacement confirmation.");
|
||||||
|
|
||||||
|
//KFileReplacePart
|
||||||
|
const QString fileSimulateWhatthis = i18n("Enable this option to perform replacing as a simulation, i.e. without making any changes to files.");
|
||||||
|
|
||||||
|
const QString optionsRegularExpressionsWhatthis = chbRegularExpressionsWhatthis;
|
||||||
|
|
||||||
|
const QString optionsBackupWhatthis = chbBackupWhatthis;
|
||||||
|
|
||||||
|
const QString optionsCaseWhatthis = chbCaseSensitiveWhatthis;
|
||||||
|
|
||||||
|
const QString optionsVarWhatthis = chbVariablesWhatthis;
|
||||||
|
|
||||||
|
const QString optionsRecursiveWhatthis = chbRecursiveWhatthis;
|
||||||
|
|
||||||
|
//KAddStringDlg
|
||||||
|
const QString rbSearchOnlyWhatthis = i18n("Select search-only mode.");
|
||||||
|
|
||||||
|
const QString rbSearchReplaceWhatthis = i18n("Select search-and-replace mode.");
|
||||||
|
|
||||||
|
const QString edSearchWhatthis = i18n("Insert here a string you want search for.");
|
||||||
|
|
||||||
|
const QString edReplaceWhatthis = i18n("Insert here the string that KFR will use to replace the search string.");
|
||||||
|
}
|
||||||
|
#endif
|