diff --git a/ChangeLog b/ChangeLog index 4bedcd0c..cc66c026 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,1949 +1,1948 @@ 2.7.1 "Peace of Mind" ===================== ADDED: Default shortcut for quick selection mode = Ctrl+Shift+S FIXED: [ 150247 ] When calculating occupied space of ".." , krusader selects all directories FIXED: [ 282069 ] Bad default in the New Text File dialog FIXED: [ 372023 ] ISO files listing/extracting broken FIXED: [ 383567 ] Details section is empty in 'Do not know which files to compare.' window FIXED: [ 391946 ] Default mode in 'Find in folder' is not preserved FIXED: [ 394896 ] Files fed to listbox (and all other files in virt://) cannot be deleted FIXED: [ 394939 ] Enter key not working when cursor in search bar FIXED: [ 395285 ] The quicksearch bar is still opened after deleting a file FIXED: [ 396652 ] In the Manage User Actions dialog: the tab order is not the expected one 2.7.0 "Peace of Mind" ===================== ADDED: Ability to ignore defined directories from results in Search dialog ADDED: Bookmark quick search (type symbols in bookmark menu to activate) ADDED: Cache calculated directory sizes (last 1000 entries; not auto-updated) ADDED: Command line option "-d" to activate debug message output ADDED: New detailed tooltip for name column in panel view ADDED: Per-icon fallback logic to support custom icon themes ADDED: Popup file tree view - new "show/hide hidden folders" feature ADDED: Popup file tree view - new "start from closest Place" feature ADDED: Popup file tree view - new "start from current directory" feature ADDED: Popup file tree view - support for dropping to panel ADDED: Tab pinning - pinned tab is a locked tab with temporarily changeable address ADDED: User setting to disable border decoration for current item in inactive panel CHANGED: Default Multi Rename shortcut changed (Shift+F9 -> Shift+F2) to align with the default Rename shortcut (F2) CHANGED: Show "0 Bytes" for calculated but empty directory sizes FIXED: Activation of a found item with hash symbol in URL inside search dialog FIXED: Bug with no-match indication when only the current item matches in Quick Search FIXED: Panel columns may become invisible when settings are restored from config FIXED: Regression in "Open in new tab" from popup menu FIXED: When pressing a New Tab button the corresponding Panel is not selected FIXED: [ 108023 ] Support "Sort by..." by keyboard shortcuts: CTRL+[1-4] FIXED: [ 173655 ] Added changed and access time in detailed view FIXED: [ 195749 ] Ctrl+Tab don't switch over edited files FIXED: [ 267719 ] bookmarks shortcuts lost after opening bookmark manager FIXED: [ 267756 ] Rename tab or add prefix to tab label FIXED: [ 267765 ] Add delay before switching tabs with mouse-over FIXED: [ 270756 ] Add option to hide tab bar FIXED: [ 272108 ] Support for more KIO slaves in Network Connection FIXED: [ 274404 ] Copy file dialog - include file name in the path FIXED: [ 280270 ] Saved Locked Tabs each create extra tab on start FIXED: [ 308351 ] Cannot run MountMan from menu FIXED: [ 328928 ] Add text word wrap for all tooltips FIXED: [ 363437 ] Edit field looses focus after closing one of Editor's/Viewer's tab FIXED: [ 372964 ] At least one Oxygen icon in Krusader is not correctly seen (using Kubuntu 16.04) FIXED: [ 372966 ] Some icons are not seen using a plain Ubuntu (not Kubuntu) 16.04 FIXED: [ 376372 ] KrViewer window loses focus on closing tabs FIXED: [ 378593 ] Problems copying the names of files with apostrophes FIXED: [ 378839 ] Krusader freezes when asterisk ("*") is pressed in detailed view FIXED: [ 379170 ] 2.6.0 - Regression: "Spacebar calculates disk space" feature is missing FIXED: [ 379459 ] Krusader no longer minimizes to system tray FIXED: [ 380421 ] In some cases the vertical "Popup panel" has a very high minimum width (caused by Viewer) FIXED: [ 381179 ] Shortcut conflict: SHIFT+DEL used for cut and alternative delete FIXED: [ 383372 ] Toggle Fullscreen Embedded Terminal bug FIXED: [ 383544 ] Unable to create new folder/file if '..' item is selected in current folder FIXED: [ 383558 ] Errors after approving or canceling Useractions -> System -> Backup current for '..' panel item - FIXED: [ 386217 ] Fix moving cursor with up/down to item not matching in quicksearch FIXED: [ 386217 ] Pressing Arrow keys behaves incorrectly in quicksearch FIXED: [ 386314 ] Install to a custom location doesn't work correctly FIXED: [ 388266 ] Closing calculate occupied space window does not abort the calculation FIXED: [ 389413 ] Krusader crashes when entering directories with read errors FIXED: [ 389869 ] After deletion of selected files current item moves one down FIXED: [ 390732 ] Cannot add Krusader to favorites in Gnome Dock FIXED: [ 390990 ] Current item selection is lost after exiting from tar archives FIXED: [ 390991 ] bookmark buttons on a toolbar disappear after closing Bookmark Editor FIXED: [ 390994 ] [dev] Compiler warnings with gcc-6.4.0 FIXED: [ 392218 ] Allow scrolling during filesystem changes in current directory 2.6.0 "Stiff Challenges" ========================= FIXED: [ 335993 ] save checksum does not work as expected FIXED: [ 375639 ] Allow typing special characters (e.g. with accent or acute) in search bar FIXED: [ 328068 ] Send SIGINT before own input command to embedded terminal FIXED: [ 375135 ] segfault on viewing html files with Generic viewer FIXED: [ 269820 ] Fullscreen terminal emulator shows empty window when terminal emulator was minimized FIXED: [ 374813 ] Multi rename with KRename does not work when selecting non-local files/folders (ftp, smb, virt, ...) FIXED: [ 309300 ] Esc as the default shortcut of "Set Focus to The Panel" is problematic for the embedded terminal FIXED: [ 374175 ] wrong date format parsing using date filter in search dialog FIXED: [ 293370 ] After a file deletion old file name is still shown in the status bar FIXED: [ 374322 ] Visually indicated shortcut ALT+o not working in copy/F5 and move/F6 KrDialog FIXED: [ 374238 ] Handle left/right arrow key press in brief view (previously filtered by search bar). FIXED: when dragged from list panel use correct drop action if invoked with modifier keys FIXED: added save/restore or toolbar positions in mainwindow FIXED: [ 372231 ] Added KDE's service actions again to right-click popup menu ADDED: new undo action to job manager for undoing KIO job operations FIXED: [ 372067 ] Wrong path when showing non local files and folders from search dialog in panel ADDED: job manager as replacement for queue manager. Part of cleaning VFS FIXED: [ 365105 ] Workaround for bug in KF5+QSystemTrayIcon ADDED: Reimplementation of "minimize to system tray" feature. FIXED: Krusader does not show the new file in a directory that is a symbolic link until is not refresh directory FIXED: Wrong window position after restart in fluxbox FIXED: Error on opening file folder after clicking on any file result of a remote search (FTP / smb) FIXED: Terminal opens in full window FIXED: copy location/path bar (feature request) FIXED: krusader cannot calculate size of remote directory (ftp or sftp) FIXED: Some files with weird characters (non UTF) cause krusader to miscalculate folder size FIXED: No way to focus fullscreen embedded terminal emulator. FIXED: Don't delete first letter in "new folder" dialog (F7) FIXED: Use Shift+Delete for delete or move selected files to trash FIXED: Dialog "File" -> "Verify checksum" improvement FIXED: Option for show copy/move progress in dialog (not in notifications) FIXED: Documents suddenly open as archives CHANGED: Avoiding root mode CHANGED: Duplicated tab should not be locked CHANGED: New PagePanel: do not refresh until panel becomes visible CHANGED: Change suggested command for "edit as root" user action to a more secure alternative CHANGED: Do not configure kdesu path and remove kdesudo support again CHANGED: Panel: Do not select .. in a filtered view if there are other entries CHANGED: Duplicate tab settings when duplicating tabs CHANGED: Some fixes and simpifying startup settings. 2.5.0 "Clear Skies" ========================= (this list is incomplete. Please refer to Git log and finished tasks listed at https://phabricator.kde.org/project/board/79 ) ADDED: actions: Select files with the same name / extension CHANGED: disabled build of synchronizer by default, since it is unmaintained - build togglable with cmake variable -DENABLE_SYNCHRONIZER=true|false FIXED: [ 143927 ] file search: "s" accelerator is doubled - new shortcut for "Search in" is ALT+h FIXED: [ 308386 ] Duplicate shortcut on Search window - new shortcut for "Remote content search" is ALT+n FIXED: [ 206926 ] Search doesn't work in sftp session (it returns too many results) FIXED: [ 269542 ] Krusader search - Containing text still used when disabled FIXED: [ 324737 ] symlinks with a target path length of over 255 do not work FIXED: [ 189943 ] toolbar position settings are not remembered FIXED: [ 316031 ] crash when loading previews FIXED: [ 238672 ] When saving checksums fails, they are lost. No 2nd chance to save elsewhere. FIXED: [ 315764 ] "application/x-source-rpm" isn't linked to krarc protocol by default FIXED: [ 294816 ] Krusader needs to restart to apply new color scheme to panel FIXED: [ 308727 ] external editor command isn't properly parsed FIXED: [ 304233 ] empty main view on startup FIXED: [ 315856 ] main view splitter sizes are not restored FIXED: [ 248691 ] incorrect layout / wrong buttons in queue manager FIXED: [ 315357 ] krarc silently fails to display contents of some zip files zip files containing paths with "." as a path component are still not handled, but now krarc reports an error instead silently failing FIXED: [ 310722 ] viewer crash when opening file FIXED: search result view always displays owner and group as "root" (may not work for remote search) FIXED: [ 217711 ] directory chooser dialog does not allow to choose a directory FIXED: [ 309119 ] Wrong "New directory" dialog behavior: can't clear all typed text FIXED: [ 309159 ] Crash in video files preview on F3 FIXED: [ 310191 ] krusader still installs locolor icons FIXED: [ 317510 ] icon-size-and-directory-name-mismatch 2.4.0-beta3 "Single Step" ========================= FIXED: crash when trying to open/(un)mount ejectable device via media menu 2.4.0-beta2 "Giant Steps" ========================= ADDED: options: Panel > Media Menu > Show Mount Path Show File Sytem Type Show Size (Always | When Device has no Label | Never) ADDED: pressing CTRL+RETURN when media menu is open (un)mounts the highlighted device ADDED: action: Bring Main Window to Top (global shortcut possible) ADDED: option: General > Viewer/Editor > Viewer > Use Okteta As Hex Viewer (default: on) ADDED: option: Archives > krarc > Enable Write Support ADDED: splitter option: Overwrite files without confirmation ADDED: action: Go to Other Panel's Directory - shortcut: CTRL+= CHANGED: krarc write support is disabled by default CHANGED: user action manager starts with the "Basic Properties" tab active CHANGED: detailed view: "Automatically Resize Columns" setting is remembered FIXED: [ 306472 ] Krusader fails to build when using clang as compiler - thanks to Jekyll Wu FIXED: [ 308193 ] Krusader closes the search window after file editing - thanks to Alexander FIXED: pressing the context menu key when the media menu is shown opens the context menu for a random item instead of the current FIXED: [ 300514 ] no warning if terminal emulator can't be created FIXED: [ 303209 ] passwords for remote connections are stored in config NOTE: passwords already stored in krusaderrc may still be left FIXED: [ 280946 ] viewer: incorrect tab's file names when moving tabs FIXED: user actions: "run in the embedded terminal emulator" setting is not saved FIXED: mountman: mount list is not refreshed if /etc/mtab is a symlink to /proc/mounts FIXED: [ 148866 ] create new directory: spaces are stripped out FIXED: [ 305069 ] list panel is not autoscrolled to the cursor (in brief view) FIXED: [ 173690 ] file ACLs are not displayed correctly in properties dialog - thanks to Eugeny Shkrigunov FIXED: It is impossible to select a non-default folder in the search dialog FIXED: splitter overwrites files without confirmation FIXED: [ 274483 ] crash when selecting items from popup-menu FIXED: [ 285778 ] View or edit files doesn't work FIXED: viewer tries to load obsolete libkhexedit2 part as hex viewer - use okteta part instead FIXED: crash when trying to view files with embedded KOrganizer part (avoids KOrganizer bug 205713) FIXED: "apply settings to other tab" action doesn't apply icon size FIXED: [ 198996 ] crash when closing viewer FIXED: [ 294501 ] toolbar "equal" has no shortcut FIXED: [ 108892 ] "Combine Files" overwrites existing target file without confirmation FIXED: Queue manager closed when any of the queues finished FIXED: [ 300922 ] crash when pause sftp transfer via queue on quit FIXED: [ 271265 ] krusader should search for kdesu executable in /usr/lib{64,}/kde4/libexec/ - thanks to Anssi Hannula / Ahmad Samir FIXED: [ 290304 ] Panel option "always sort dirs by name" doesn't work FIXED: [ 297926 ] state of the menu item 'Show hidden files' and the current setting is different FIXED: [ 234296 ] crash when closing disk usage view FIXED: [ 296718 ] execution of files that have spaces in their path doesn't work anymore FIXED: [ 294618 ] using "open with" on video files causes their thumbnails to be created, even when not needed FIXED: root mode action doesn't work if a panel url contains spaces FIXED: relative url completion in address-bar only works in home dir FIXED: [ 242566 ] Cannot F3-View .vcf vCard files FIXED: Root action (which opens the root dir of the local filesystem) is disabled in the root dir of nonlocal filesystems FIXED: when cutting to clipboard from virt:/ the virtual entries are immediately removed FIXED: Unselecting files before copy/move operation doesn't work for copy&paste FIXED: [ 277259 ] Unselecting files before copy/move operation doesn't work in the same panel this also fixes the selection of the other panel being cleared instead FIXED: [ 276310 ] crash when trying to delete already deleted file FIXED: [ 277578 ] Crash on cancelling calculation of occupied space on smb share FIXED: krusader hangs for some time when opening a bz2(and possibly gzip)-compressed archive FIXED: loading defaults on the Panel page in Konfigurator has no effect FIXED: changes to "Show new/close tab buttons" don't take effect immediately FIXED: when options requiring a gui restart are changed, the panel history is lost FIXED: [ 277838 ] Swap Panels no longer works 2.4.0-beta1 "Migration" ======================= ADDED: option: Panel > Status/Totalsbar > Show space information ADDED: Konfigurator: reset button ADDED: option: Startup > User Interface > Show actions toolbar ADDED: options: Panel > Layout: "Compact", "Classic" ADDED: mountman gui option: Show only removable devices ADDED: tabs have close buttons ADDED: reset button for filter dialog ADDED: option: Panel > Operation > Filter dialog remembers settings ADDED: tabs can be dragged to the other side ADDED: action: Move Current Tab to Other Side - shortcut: CTRL + SHIFT + O ADDED: view: iconsizes 64, 128, 256 ADDED: history is saved/restored ADDED: action: Restore Selection ADDED: option: Panel > Operation > Unselect files before copy/move ADDED: support for xz archives CHANGED: new default panel layout CHANGED: option: Panel > View > Show previews -> Show previews by default CHANGED: removed option "Show free disk space in the Totalsbar" since that setting is controlled by the layout chosen in Panel > Layout CHANGED: removed option "Preserve Attributes" - KIO always preserves Attributes CHANGED: option: Panel > Filelist icon size -> Default icon size CHANGED: quickfilter follows case sensivity setting of quicksearch CHANGED: quickfilter expands wildcards CHANGED: duplicate tab / open in new tab: create the new tab next to the current one. CHANGED: filter settings are saved/restored individually for each tab. CHANGED: filter settings are remembered when changing view type CHANGED: All view settings are saved/restored individually for each tab. FIXED: [ 3222819 (sf.net) ] Alt-Enter is not showing selected files' properties FIXED: [ 274083 ] Search results list shows wrong extension when dir path has a dot in it FIXED: [ 262761 ] krusader crashed on viewing text file with internal viewer this was probably already fixed in 2.3.0-beta1 FIXED: [ 229489 ] Seg fault moving ISO image files from USB Flash drive to USB SATA HD - thanks to Anssi Hannula FIXED: mountman gui might add the same mountpoint to the list multiple times FIXED: [ 3044425 (sf.net) ] Desktop freeze when opening a context menu FIXED: [ 217203 ] Krusader crashed when accessing sftp after resume from sleep FIXED: [ 243716, 270605, 270588 ] crash when moving files FIXED: [ 256794 ] crash when file is deleted while a preview is being loaded for it (and it is the only file for which a preview is being loaded) FIXED: [ 274732 ] Weird functionality after "directory doesn't exist" FIXED: [ 3216624 (sf.net) ] Krusader saves newly created files with incorrect permissions FIXED: [ 2773302 (sf.net) ] krarc can't handle brackets in file paths inside ZIP archive FIXED: [ 272876, 274269 ] crash when refreshing view FIXED: [ 3191155 (sf.net) ] Moving a symbolic link changes attributes of target file FIXED: [ 2998795 (sf.net) ] "Show actions toolbar" setting is not saved FIXED: Url commandline argument opens a new tab instead of switching to an existing one FIXED: root mode action does not work with newer versions of kdesu, thanks to CyberCastle FIXED: switching tabs sometimes doesn't switch the panel FIXED: [ 3004510 (sf.net) ] Double-clicking executables start in ~/Documents folder FIXED: [ 2996188 (sf.net) ] relative path for custom folder icon doesn't work FIXED: [ 2915020 (sf.net) ] wrong icon for directory symlink FIXED: when switching tabs, sometimes the new tab isn't set active FIXED: [ 263253 ] View displays wrong total size in some circumstances. FIXED in 2.3.0-beta1, but not recorded in Changelog at release time: [ 259495 ] crash when closing search dialog ---------------------------------------------------------------- NOTE: the default bug tracker is now bugs.kde.org (was sf.net) ---------------------------------------------------------------- 2.3.0-beta1 "New Horizons" ========================== ADDED: option: Panel > General > Flat Origin Bar ADDED: option: Panel > Buttons > Toolbar buttons have icons ADDED: listpanel buttons: Back, Forward ADDED: options: Panel > Layout > Layout / Frame Color / Frame Shape / Frame Shadow ADDED: QuickFilter - default shortcut: CTRL+i ADDED: option: Panel > View > Show directories first ADDED: actions: Back/Forward in history ADDED: action: Set Focus to the Panel - shortcut: ESC ADDED: actions: Move Focus Up/Down - shortcut: CTRL+SHIFT+Up/Down ADDED: selection dialog option: Apply selection to directories ADDED: option: Startup > User Interface > Update default panel settings ADDED: dbus interface: org.krusader.Instance.openUrl(QString url) ADDED: search dialog > feed to listbox: search parameters are saved as metadata in the virtual fs and displayed in panel's statusbar ADDED: filter option: Apply filter to directories ADDED: action: view > Apply settings to other tabs ADDED: action: view > Save settings as default (for new instances of this view type) ADDED: option: Panel > View > Locale aware sorting CHANGED: Media Button shows Solid Icon for currently opened device CHANGED: Removed options Panel > General > Status/Totalsbar > Statusbar Frame / Statusbar Background / Show Statusbar / Show Totalsbar. They are customizable in layout.xml. CHANGED: Use KrView for displaying search results, which is much faster than the previously used QTreeWidget. CHANGED: Removed default shortcuts for the Left/Right Bookmarks actions, as they conflict with the Back/Forward actions. CHANGED: After failed refresh, only focus location bar if the url was entered manually. CHANGED: Removed default shortcut for 'Cancel Refresh of View' as it conflicts with the 'Set Focus to the Panel' action. Unless a shortcut is assigned manually, ESC cancels the refresh when the panel is focused. CHANGED: Konfigurator: "apply" takes effect immediately. CHANGED: Url commandline argument: if there is already a tab open with that url, it is activated, otherwise a new tab is opened in the active panel. FIXED: When trying to close Konfigurator but canceling the "Apply changes ?" dialog, Konfigurator it is closed anyway. FIXED: [ 3073211 ] Wrong quoting when opening file in external editor FIXED: [ 3059457 ] new panel uses default columns instead of configured ones FIXED: [ 2898151 ] also in view-mode (F3) possible to edit, thanks to Kevin Kofler FIXED: panelpopup viewer: error messageboxes when file cannot be displayed FIXED: [ 2981303 ] Viewer/editor unused submenu Game, thanks to Kevin Kofler FIXED: regression making single-click mode unusable, thanks to Kevin Kofler FIXED: [ 3003338 ] Rename selects extension regression, thanks to Kevin Kofler FIXED: [ 2980201 ] KrViewer doesn't handle binary files well (this fix works only for local files !) FIXED: "sort by" useractions change sorting direction randomly FIXED: [ 3028599 ] Sorting criteria is not saved at exit FIXED: [ 2949337 ] splitter ui bug FIXED: [ 2843749 ] view item is deselected when updated FIXED: [ 268037 (bugs.kde.org) ] brief view: mouse wheel doesn't work FIXED: brief view: mouse selection doesn't work in columns > columns per page FIXED: selecting a bigger number of files is very slow FIXED: [ 2969403 ] KrViewer shows old file content if file is overwritten, thanks to Kevin Kofler FIXED: [ 246424 (bugs.kde.org) ] krusader tries to load WHOLE big file into memory on F3 FIXED: [ 2154760 ] Krusader erases files when opening for editing FIXED: changing sort direction is slow FIXED: [ 3015094 ] krusader doesn't exit at closing the application FIXED: right clicking on media button doesn't work FIXED: tabs were no longer movable, thanks to Victor (kernel_daemon) FIXED: 3 valgrind fixes by Alexander Stein FIXED: viewer would show empty menus, thanks to CtHx FIXED: crash when changing view type 2.2.0-beta1 "DeKade" ==================== ADDED: option: Panel > General > Tabs > Show new/close tab buttons ADDED: options: Panel > Buttons > Show Media/History/Bookmarks Button ADDED: options: Panel > General > Status/Totalsbar settings > Show Statusbar, Show Totalsbar, Show Size In Bytes, Show free disk space in the Totalsbar ADDED: option: Look&Feel > Quicksearch > "Up/Down cancels Quicksearch" ADDED: dbus interface: org.krusader.PanelManager.newTab(QString url) / newTabs(QStringList) ADDED: url command-line argument ADDED: action "Show View Options Menu" ADDED: detailed view context-menu option "Automatically Resize Columns" ADDED: action "cancel refresh" triggered by ESC by default ADDED: change icon size individually per view ADDED: thumbnails - toggleable by mainmenu > view > Show Previews ADDED: 128x128 pixel versions of the application icon, needed by Mac OS X ADDED: Konfigurator options: Look&Feel > Panel > Status/Totalsbar settings > Draw frame / Fill background ADDED: Konfigurator option: Colors > Colors > Other > Statusbar ADDED: Konfigurator option: Look&Feel > Panel > Panel layout > Quicksearch position / Tab Bar position ADDED: buttons "(un)mount" and "eject" in mountman gui ADDED: KMountMan::removable(), KMountMan::networkFilesystem() CHANGED: reorganize Konfigurator: "Look & Feel" page becomes "Panel" / move several options to new places CHANGED: when open/refresh of a dir fails, don't annoy the user with a message box, but display the error embedded into the panel CHANGED: icon size, icons/previews on/off are set separately per view type CHANGED: dim icons in unfocused panel (if dim colors is activated) CHANGED: mountman gui: retrieve icons from Solid CHANGED: mountman gui: change mount check interval from 3000 to 500 ms CHANGED: mountman gui: current selection persists refresh of mountlist, mountlist is focused after refresh CHANGED: dont't execute a process if the correct working dir cannot be set CHANGED: dont't retrieve working dir of the cmdline from the label which might get truncated - store it in a string instead FIXED: brief view: clicking on the space below a column selects the first item of the next column FIXED: if refresh has failed, the origin bar is focused even if the panel is not active FIXED: if the path of an inactive panel changes, the embedded cmdline is set to that path FIXED: useraction commands, or those entered in the embedded cmdline, are sometimes not executed in the correct working dir FIXED: when multiple commands are entered in the embedded cmdline or a useraction, and execution mode is set to terminal, only the first command is executed in a new terminal and the others in the same terminal (if any) as krusader FIXED: commands entered via command line are mixed up with history FIXED: [ 2790819, 2892768, 2915192 ] Can't resize columns properly FIXED: disk usage dialog layout problem FIXED: [ 2907607 ] crash while closing FIXED: if a panel is focused by clicking on the header, the colors/actions are not updated FIXED: mountman: unmounting is not possible if currently opened dir is below the mountpoint FIXED: [ 2860400 ] Drag'n'drop to kmail broken FIXED: [ 2904850 ] panels are not repainted FIXED: deadlock when trying to display error message after failed mount FIXED: [ 2858133 ] wrong background color in listviews 2.1.0-beta1 "Rusty Clutch" ========================== ADDED: file regex in quick search, thanks to GregC ADDED: lister: a fast text/hex viewer for Krusader ADDED: service menu, thanks to Tomasz Kalkosinski ADDED: queued packing / unpacking ADDED: lock tabs, close inactive tabs, close duplicated tabs ADDED: better trash integration CHANGED: the packer/unpacker/archive tester are job based now CHANGED: the old views were replaced by the interviews FIXED: [ 2857663 ] deadlock when trying to display error message after failed unmount FIXED: problem with autorefresh in the new interviews FIXED: [ 2609505 ] problem with directory refresh FIXED: [ 2793916 ] KHistoryComboBox content can change the window width FIXED: [ 2805624 ] ctrl-left/right arrow with locked tabs on the other panel FIXED: panels sometimes lose focus FIXED: directory compare modes don't work FIXED: [ 2609483 ] unpacking to directories with international characters 2.0.0 "Mars Pathfinder" ======================= ADDED: [ 2466695 ] Archive dialog now remembers Compression level FIXED: [ 2671702 ] wrong file size for files with currupt encoding FIXED: sync-browse fails if the name contains spaces FIXED: Compile error with Qt-4.5 (patch by Marc Schiffbauer) FIXED: tab change at dragging doesn't work FIXED: [ 2543170 ] Crashes on mouse wheel in brief view FIXED: [ 2553396 ] Krusader exits after closing KrViewer FIXED: [ 2563664 ] Krusader always trashes (not deletes) files FIXED: tar.bz2 doesn't always detected automatically FIXED: panel freezes if the inactive path is invalid FIXED: problem when splitter sizes are 0, 0 FIXED: iso protocol problems with images bigger than 4GByte FIXED: Windows: iso protocol works well now FIXED: Windows: slow start FIXED: Windows: the root directory is C:\ FIXED: MountMan saves its last size FIXED: [ 1535954 ] krviewer hex view endian dependent FIXED: [ 1550740 ] Wrong placeholder replacement FIXED: [ 1988452 ] "Open the popup panel" button hides files from the file pane FIXED: [ 1965317 ] Return to panel when pressing Escape in kcmdline/panel path FIXED: [ 2265338 ] Copy from rar files broken FIXED: [ 2484665 ] Crash when deleting modified user action FIXED: MountMan: mount/umount/eject uses Solid if possible FIXED: [ 2381505 ] Ctrl+Shift+D in editor (KWrite) not work FIXED: Krusader fails to edit files containing international chars with Shift+F4 CHANGED: Changed default Alt+letter shortcuts because of [ 2564684 ]. See the details in SVNNEWS CHANGED: Initial Konfigurator size is now 900x680 ARCH: view properties for detailed/brief/interviews are merged into one I18N: Updated Italian translation (thanks Giuseppe Bordoni) I18N: Updated French translation (thanks to Henry-Nicolas Tourneur and Stanislas Zeller) I18N: Updated Catalan translation (thanks to Joaquim Perez) I18N: Updated Slovak translation (thanks to Zdenko Podobný and Ondrej Pačay "Yogi" ) I18N: Updated Hungarian translation I18N: Updated Slovenian translation I18N: Updated Swedish translation (thanks Peter Landgren) REMOVED: CVSNEWS, SVNNEWS is the successor (extension to this ChangeLog) 2.0.0-beta2 "Space Odyssey" =========================== ADDED: shortcuts: copy by queue (SHIFT+F5), move by queue (SHIFT+F6) ADDED: Krusader support for tar.lzma (KDE's tar protocol doesn't support it yet) ADDED: Possibility to choose one of five sorting methods (thanks to Jacek Jaworski) ADDED: compare by content for search / locate ADDED: New mouse selection mode ADDED: Evolution can be used as the default e-mail sender (thanks to Agustin Henze) ADDED: enqueue operation for copy / move ADDED: Konfigurator mouse selection mode: Possibility to select a predefined mode and change a detail. ADDED: [ 1704953 ] highlight quick search match ADDED: Useractions: added checkbox "enabled" and run mode option "Run in embedded terminal emulator" ADDED: the description of a dir contains its size if it is known ARCH: MediaButton uses Solid for medium detection ARCH: QuickSearch is moved to KrView from Detailed/Brief views ARCH: Keyboard handling is moved to KrView from Detailed/Brief views FIXED: version number under Windows FIXED: the Win shortcuts doesn't work in the UserAction examples FIXED: [ 2091314 ] krviewer does not remember its window size FIXED: [ 2219012 ] user action icons are not saved FIXED: [ 2116505 ] Total Commander selection behavior broken FIXED: [ 2227421 ] Mount cdrom no longer needs root permission FIXED: Krusader steps into wrong directory, when a file changes in an inactive tab FIXED: When neither "kompare", "kdiff3" nor "xxdiff" in PATH, the program set in "diff utility" was ignored. Under Windows, look for them with ".exe" suffix FIXED: [ 2243628 ] Synchronizer overlooks files FIXED: [ 2202522 ] newly created hidden files are shown for a short time FIXED: calc space doesn't work on remote file systems FIXED: searcher doesn't start because of corrupt config files FIXED: Konfigurator doesn't detect every mimetype for "zip" files FIXED: Konfigurator keeps its original size FIXED: Konfigurator has scrollbars if necessary. FIXED: [ 2027518 ] Does not build with -DBUILD_SHARED_LIBS:BOOL=ON (thanks to Funda Wang) FIXED: [ 2041732 ] Krusader 2.0.0 beta1 missing title bar under Compiz (thanks to Danny Baumann for the patch) FIXED: [ 2023623 ] Krusader kept running after closing the main window FIXED: [ 1671543 ] horizontal/vertical mode fix in the Window menu FIXED: [ 1845105 ] mimetype magic can be disabled again FIXED: [ 2062651 ] Ctrl+Up selects the URL in the origin editbox FIXED: [ 1988893 ] konsole is started in a wrong directory please set "konsole --workdir %d" for the terminal (Konfigurator) as Krusader won't fix your config automatically FIXED: KDE4 workaround: no colors for synchronizer FIXED: MediaButton doesn't notice unmounted pen drives+CD/DVD-s FIXED: "local network" bookmark didn't work FIXED: bookmark menu was not always closed after opening a bookmark FIXED: [ 2017011 ] Crash when changing the Qt theme FIXED: icons for symlinks are corrupted FIXED: [ 2023599 ] start root mode Krusader works again (thanks to gladiac) FIXED: [ 1980765 ] error at creating ../dir directory FIXED: [ 2014344 ] CTRL-C (copy) does not work in internal editor FIXED: Viewing directories are disabled to prevent KDE 4 crash FIXED: [Debian: 492955] useraction's availability section was dumped to "command" element. (thanks Iván Forcada Atienza) FIXED: Do not duplicate menu entries in UserAction menu while still not crashing when configuring toolbars. I18N: Added Korean translation (thanks Seongnam Jee) I18N: Updated Bulgarian translation (thanks Milen Ivanov) I18N: Updated German translation I18N: Updated Dutch translation I18N: Updated Czech translation I18N: Updated Ukrainian translation (thanks Yuri Chornoivan) I18N: Updated Slovenian translation (thanks Matej Urbancic) 2.0.0-beta1 "Phoenix Egg" ========================= ADDED: [ 1962519 ] searching by regexp ADDED: [ 1172426 ] loading user defined folder icons (can be turned off) ADDED: Posibility to remove default useractions ADDED: Thunderbird can be used as the default e-mail sender ADDED: Sending more than one file in e-mail is possible ADDED: Submenus for categories in UserAction menu and context menu ADDED: Character encoding for content search ADDED: Select remote encoding for krarc ADDED: New synchronizer shortcuts for modifying the synchronizer tasks ARCH: Ported to KDE4! ARCH: Removed all dependencies to the Qt3 support libs ARCH: Codebase in sync with last KDE3 release (krusader-1.90.0) ARCH: Added experimental support for the Windows platform FIXED: [ 1506205 ] krviewer crash at urls with non-existing redirection FIXED: [ 1854760 ] [ 1516619 ] inconsistent search FIXED: [ 1920084 ] kdiff3 is allowed to handle remote URL-s FIXED: [ 1638817 ] toolbar loses orientation when modified FIXED: [ 1578310 ] can't open ISO image by symbolic link FIXED: Enabled KRename on remote files FIXED: Right arrow in the detailed view can now go even inside iso files FIXED: Konfigurator: Dependency lists are now scrollable FIXED: Filter: Don't list comments in user/group chooser FIXED: Current working directory not returned in populateVfsList FIXED: Eject DVD with right-click menu FIXED: Actionman, sometimes the command field is empty (the text was rolled) FIXED: GCC 4.3: missing #includes (thanks to Fathi Boudra) FIXED: Searcher doesn't always find content in binary files FIXED: [ 1619452 ] Profile doesn't save status of sync-browse mode FIXED: [ 1681270 ] right clicking pops context menu immediately FIXED: [ 1645179 ] shortcut keys are not sent to the terminal FIXED: [ 1736496 ] always sort dirs by name not working I18N: Merged krarc.pot and iso.pot into krusader.pot (thanks Vaclav Juza) I18N: Updated Hungarian translation I18N: Updated French translation (thanks Henry Nicolas) I18N: Fixed [ 1725003 ] bad spanish translation I18N: Fixed untranslatable strings (thanks Vaclav Juza) I18N: Updated Ukrainian translation (thanks Yuri Chornoivan) I18N: Updated Catalan translation (thanks Joaquim Perez) I18N: Updated French translation (thanks Tourneur Henry-Nicolas) REMOVED: Clear location button (in KDE4 it is part of the KLineEdit) (thanks Fathi Boudra) 1.90.0 "Power Stone" ==================== ADDED: Useraction, Unpack multiple zip archives (thanks Ernest Beinrohr [OERNii] and Jonas) ADDED: Useraction, uuencode and uudecode (thanks Andrew Svet) ADDED: Useraction, Unpack current tar.7z ADDED: Useraction, tar.7z selected files ADDED: Useraction, Unpack current tar.lzma ADDED: Useraction, tar.lzma selected files ADDED: Useraction, Unpack current lzma ADDED: Useraction, Lzma current file ADDED: Useraction, 7zip current (thanks Vaclav Juza) ADDED: Javascript useraction, select from file ADDED: Useraction, tar.gz selected files (thanks Fathi Boudra) ADDED: Useraction, gzip current (thanks Vaclav Juza) ADDED: Useraction, Eject cd/dvd (thanks Andrew Svet) ADDED: Javascript useraction, calculator ADDED: Javascript useraction, Mount as root ADDED: Javascript useraction, Recode files using GNU recode (thanks Vaclav Juza) ADDED: Javascript useraction, Recode files using iconv (thanks Vaclav Juza) ADDED: Useraction, (Un)Pack an ar archive (.a, .deb,...) (thanks Vaclav Juza) ADDED: Useraction, Verify signature with kgpg ADDED: Useraction, Sign with kgpg ADDED: Useraction, Decrypt with kgpg ADDED: Useraction, Encrypt with kgpg ADDED: Useraction, Split large mp3 (thanks Andrew Svet) ADDED: Useraction, Archive to Dir ADDED: Useraction, Copy as root (thanks Andrew Svet and MaxiPunkt) ADDED: Useraction, Unmount (thanks Stefan Endrullis) ADDED: Useraction, Search and Replace in file ADDED: Midnight commander keymap (thanks Alejandro Hamann) ADDED: Alpa-yellow color scheme (thanks Aldo Palmeri [alpa]) ADDED: Bash color scheme (thanks Alejandro Hamann) ADDED: Improved midnight commander color scheme (thanks Alejandro Hamann) ADDED: Pleasent total commander color scheme ADDED: DOS Navigator color scheme (thanks to Vovan [Koqep]) FIXED: Useractions, after pwd command current workdir was not changed (thanks Vaclav Juza ) FIXED: Eject DVD with right-click menu FIXED: Actionman, sometimes the command field is empty, (thanks Vaclav Juza) FIXED: GCC 4.3: missing #includes (thanks Fathi Boudra) FIXED: krpermhandler.cpp didn't compile on kde 3.2.x I18N: Updated Catalan translation (thanks Joaquim Perez) I18N: Updated French translation (thanks Tourneur Henry-Nicolas) 1.80.0 "Final 3rd Stone" ======================== FIXED: searcher doesn't always find content in binary files FIXED: [ 1619452 ] Profile doesn't save status of sync-browse mode FIXED: [ 1681270 ] right clicking pops context menu immediately FIXED: [ 1645179 ] shortcut keys are not sent to the terminal FIXED: [ 1736496 ] always sort dirs by name not working I18N: Updated Hungarian translation I18N: Updated French translation (thanks Henry Nicolas) I18N: Fixed [ 1725003 ] bad spanish translation I18N: Fixed untranslatable strings, patch by Vaclav Juza, thanks 1.80.0-beta2 "Last Unstable Stone" ================================== ADDED: Terminal Emulator, paste with SHIFT+INSERT and CTRL+V ADDED: Vaclav's checksum patches (added sha* tools, fixed bugs etc...) ADDED: Synchronizer: ignore hidden files option ADDED: Synchronizer-results: drag [left], SHIFT+drag [right], Copy left/right selected items to clipboard ADDED: Locate-results: dragging items, copy to clipboard (CTRL+C) ADDED: Searcher-results: dragging items, copy to clipboard (CTRL+C) ADDED: Support for useraction placeholders in Krusader's commandline patches by Jiri Palacek and Vaclav Juza, thanks a lot! ADDED: New default user action "Backup current" http://www.kde-files.org/content/show.php?content=29801 ADDED: ALT+C as default shortcut for compare directories ADDED: Brief view ADDED: GUI for configuring the atomic extensions in Konfigurator CHANGED: Useractions: much better handling of the Each-placeholder patch by Jiri Palacek, thanks! CHANGED: Icons in the 3rd hand (preview, quick and view) FIXED: [ 1684478 ] buggy configure check for klineedit FIXED: Krusader wouldn't start after the "first time wizard" was launched FIXED: krarc, problem with application/x-zip-compressed mime FIXED: [ 1665209 ] can't see the modified flag (*) if many tabs are used FIXED: [ 1678927 ] archive operation - copy to relative path fails FIXED: [ 1659215 ] does not Quit when using Mac Menu style FIXED: [ 1629447 ] can not view file in an archive with perm 600 FIXED: KrServices::separateArgs bug, thanks to Jiri Palacek FIXED: Broken 3rd hand disk usage icon on systems with basic installation FIXED: [ 1649705 ] "Deleting non-empty directories" confirmation bug FIXED: keyboard problems in synchronizer, locate, searcher FIXED: [ 1601632 ] Esc don't work in KrViewer on SVG files FIXED: 'preserve attributes' sometimes fails setting the file mode FIXED: clicking on the 3rd hand widget's header, doesn't set focus FIXED: [ 1647279 ] out-of-bounds array access in the Filelight widget FIXED: Broken view panel icon in 3rd hand when Crystal icon theme is used FIXED: [ 1629450 ] Editing files in a separate window FIXED: Valgrind: Invalid Read at switching to a panel profile FIXED: [ 1631578 ] Config error (caused by italian handbook) FIXED: Problems with zip file names containing '[' character FIXED: Autoconfigure doesn't tell that packing is enabled by 7z FIXED: Problem with unpacking passworded ZIP files FIXED: Compile problem with automake-1.10 (thanks to Sausi at the forums) FIXED: FTP crash at slow servers FIXED: ACL compile problem on FreeBSD FIXED: in pack dialog, if two passwords are empty, a message would say "passwords are equal" I18N: Fixed [ 1650677 ] German: Wrong apostrophs I18N: Broke and fixed the plurals again! (in the latter case, thanks to Vaclav Juza for the help ;)) I18N: Updated a feature description in Konfigurator to match the new menubar (thanks Doutor Zero) REMOVED: Outdated and unused Italian handbook translation 1.80.0-beta1 "The Last Krusade" =============================== ADDED: quotation mark handling at search (ex. "Program Files") ADDED: full support for ACL permissions (properties, preserve attrs, synchronizer) ADDED: credit for Vaclav Juza and Jiri Palecek in the about box ADDED: Experimental input method support in quick search (patch by Jiri Palecek) ADDED: TerminalEmulator: Ctrl+F switches between full-widget TE, normal TE (thanks to Vaclav Juza) ADDED: Ctrl+Up from panel focuses the origin editbox, Ctrl+Down from origin editbox focuses the panel (thanks to Vaclav Juza) ADDED: TerminalEmulator: Ctrl+Shift+Up/Down always focus/unfocus TE independently whether the command line is shown or not ADDED: TerminalEmulator: if the command line is hidden, TE receives Ctrl+Up / Ctrl+Down (thanks to Vaclav Juza) ADDED: Pimped KDE's KeyDialog in order to provide import/export abilities ADDED: UserAction: Outputcollectionwindow can now save the buffer ADDED: UserAction: Outputcollection now supports fonts with fixed or variable width ADDED: synchronizer: double click on a file calls the diff utility (kompare) ADDED: terminal emulator: Ctrl+Enter,Ctrl+Shift+Enter paste the filename ADDED: atomic extensions (see CVSNEWS) ADDED: archive packing / unpacking are now in the background ADDED: renaming of just the filename, without extension ADDED: full screen terminal window (mc-style) ADDED: Inactive panel color dimming (thanks to Heiner) ADDED: ActionMan for useraction configuration ADDED: single instance mode ADDED: start to system tray ADDED: right click menu for bookmarks ADDED: enable/disable special bookmarks by right clicking on them ADDED: keeping the directory structures for virt folders at copy/move ADDED: synchronizer, parallel threads for slow FTP servers ADDED: an option for directories to be always sorted by name ADDED: packing with encryption, multiple volume archives, compress level ADDED: krarc, 7z, 7za handling ADDED: media button ADDED: swap panels / swap sides ADDED: synchronizer, threshold for equality, time offset between sides ADDED: synchronizer, faster "compare by content" for local files ADDED: synchronizer, Feed to listbox ADDED: searcher, synchronizer: directory name filters (ex. '* | CVS/') ADDED: searcher is able to search content on remote URLs ADDED: panel splitter shows the percent values at moving ADDED: Copy/Move: preserve all attributes (time, owner, group) ADDED: viewer, print + copy actions ADDED: new krarc (password handling, type autodetection, writing out archiver error messages, step into hidden archives,...) ARCH: refactoring in the useractions, see CVSNEWS CHANGED: atomic extensions are configurable through krusaderrc CHANGED: Better quick navigation: first move mouse over subdir, then press ctrl + left mouse button (patch by Jiri Palecek) CHANGED: Better subdir calculation on quick navigation CHANGED: Color cache redesigned. Konfigurator preview and actual colors should now match CHANGED: Heavily extended and reordered menubar (honouring the KDE HIG where possible). All available actions are connected to the menus now. CHANGED: Konfigurator: MouseMode got now it's own Tab in Look&Feel CHANGED: Shortcut- and Toolbardialogs are removed from Konfigurator CHANGED: Shortcuts are now exported in as plaintext, legacy import still works. CHANGED: UserActions are now managed with ActionMan. In Konfigurator you can change settings _about_ useractions. FIXED: problems at starting maximized, without splash screen FIXED: [ 1500411 ] Crash when R-click on free space and drag on files FIXED: [ 1579847 ] launch command line in console not saved FIXED: media button would display encoded paths (http://krusader.sourceforge.net/phpBB/viewtopic.php?t=1789) FIXED: crash when viewing file properties due to class name clash (thanks to Stephan Binner) FIXED: .tar.bz2 was not treated as atomic extension, while .tar.gz.test was FIXED: disk usage: other filelight bugfixes FIXED: disk usage: filelight crash because of missing null pointer checks FIXED: media button always writes out the mounted location FIXED: [ 1495465 ] packing dialog, 'MIN' and 'MAX' labels below the slider FIXED: [ 1436725 ] Status bar is not updated after RIGHT-ARROW is pressed FIXED: [ 1578768 ] Wrong sorting by Date column in search dialog FIXED: [ 1599142 ] problem with "Rename selects extension" and directories FIXED: wrong name after cancelling inplace rename by Esc FIXED: locate jumps onto the file after double click FIXED: When a refresh fails, the attempted URL is kept in the origin bar, and focus remains there for the user to fix. Idea by Vaclav Juza FIXED: TerminalEmulator didn't hide for all shortcuts FIXED: Konfigurator layout: should fit into 800x600 again FIXED: KeyDialog: alternative shortcuts are ex-/imported as well FIXED: KeyDialog: canceling the dialog undoes import FIXED: ActionMan: creating a new actions doesn't seem to modify the current FIXED: ActionMan: Save modifications on current action FIXED: [Debian: 378138] Changed the location of the .desktop-files to match freedesktop.org's standards FIXED: Useractions: outputcollections works again FIXED: inconsistences and possible memoryleaks in useractions (thanks to Jiri Palacek) FIXED: Nice shutdown at SIGTERM,SIGHUP,SIGQUIT (thanks toJiri Palacek) FIXED: QLayout warnings in ListPanel (patch by Jiri Palecek) FIXED: memory leaks in KRpermHandler (patch by Jiri Palecek) FIXED: shutdown bugs (thanks to Jiri Palacek) FIXED: const char * compiler warnings removed (patch by Jiri Palecek) FIXED: memory leaks in KrDetailedView (patch by Jiri Palecek) FIXED: terminal emulator sends the CD commands too frequently FIXED: terminal emulator scrolls up its content after hide/show FIXED: [ 1501740 ] can not link from a search result's virtfs FIXED: rare compile problem where exit() isn't defined FIXED: [ 1519955 ] wrong permission handling in vfs::vfs_calcSpaceLocal FIXED: viewer gives back the focus to the search/locate widgets after ESC FIXED: problems with local directory names containing '@' character FIXED: security: sometimes the passwords are stored in cleartext in bookmarks.xml FIXED: cannot close Krusader when "menubar on top of the screen" is chosen FIXED: URL duplication is disabled in the virtual URL collection FIXED: cut/copy/paste also works for virtual URLs FIXED: [ 1483172 ] crash at refreshing the view during rename FIXED: [ 1144729 ] Krusader doesn't remember popup panel splitter position FIXED: [ 1479034 ] Crashes after clicking home button, when quicksearch is active (patch by Heiner Eichmann) FIXED: wrong character set is used on the radial map labels FIXED: TC style rename does not work with "Obey KDE's global selection policy" FIXED: [ 1189341 ] minimize to tray problems with GNOME FIXED: set duplicate exclusion and maximum count for all KHistoryCombos FIXED: [ 984936 ] Wrong file cursor position when entering protected directory FIXED: [ 1232507 ] panel focus change problems at using the keyboard FIXED: bookmark separators get corrupted after adding a new bookmark FIXED: [ 1116161 ] more detailed error message at opening FTP URLs via HTTP proxy FIXED: [ 1103646 ] MountMan exits after umount and a fast click on the device FIXED: single click doesn't work in TC selection mode FIXED: disk usage crash at deleting files FIXED: valgrind: Free Memory Read - KMountManGUI::clicked() FIXED: valgrind: Free Memory Read - SynchronizerGUI::loadFromProfile() FIXED: valgrind: Free Memory Read - RadialMap::Widget::paintExplodedLabels() FIXED: valgrind: Free Memory Read - DULines::slotChanged() FIXED: valgrind: Free Memory Read - DULines::slotDeleted() FIXED: valgrind: Free Memory Read - KrDetailedView::contentsMousePressEvent() FIXED: valgrind: Mismatched delete/delete[]- RadialMap::Builder::Builder() FIXED: valgrind: Uninitialized Memory Read - DUFileLight::slotAboutToShow() FIXED: valgrind: Free Memory Read - KViewer::tabCloseRequest() FIXED: valgrind: Uninitialized Memory Read - KViewer::tabChanged() FIXED: valgrind: Free Memory Read - PanelManager::slotCloseTab() FIXED: [ 1435352 ] crash after NewPanel->Ctrl+U->DeletePanel FIXED: HTML tags cause problem to the searcher FIXED: [ 1415250 ] searching large directories, doesn't process UI events FIXED: search by content goes into infinite loop if the file cannot be opened FIXED: after exiting the pending jobs stall FIXED: [ 1193239 ] crash at 'Closing Current Session' FIXED: synchronizer is always on the top of the panels FIXED: [Debian: 352367] useractions with terminal output ignores configured terminal FIXED: last tabs are not saved, if an old config value is present FIXED: panel popup gets focus at opening, gives focus to panel at hiding FIXED: viewer, detaching tab changes 'Editing' to 'Viewing' I18N: Added a russian handbook (translation is work in progress) (thanks to Roman Batejkin) I18N: Fixed clash with unpack shortcut in useractions string (Alt+U) (thanks Hideki Kimura) I18N: Updated Japanese translation (thanks Hideki Kimura) I18N: Renamed remaining instances of 'mark' to 'select' I18N: Many consistency changes in the menu names I18N: Fixed [ 1480646 ] Home button tooltip has a wrong default translation I18N: Updated Russian translation (thanks Dmitry A. Bugay) I18N: Updated Swedish translation (thanks Peter Landgren) I18N: Updated Serbian translations (thanks Sasa Tomic) I18N: Updated Brazilian Portuguese translation (thanks Doutor Zero) I18N: Updated French translation (thanks Guillerm David) I18N: Updated Polish translation (thanks Tomek Grzejszczyk and Marcin Garski) I18N: Updated Lithuanian translation (thanks Dovydas Sankauskas) I18N: Menu items which open a new window, indicate that with trailing dots (KDE standard) I18N: Plural fixes in Synchronizer I18N: Updated Dutch translation I18N: Updated Slovenian translation (thanks Matej Urbancic) I18N: Added Turkish translation (thanks Bekir Sonat) I18N: Updated Greek translation (thanks Spiros Georgaras) I18N: Updated Czech translation (thanks Vaclav Juza) I18N: Updated Spanish translation (thanks Alejandro Araiza Alvarado) I18N: Updated German translation I18N: viewer: 'Editing', 'Viewing' can be translated I18N: Don't omit paragraphs and close all tags in strings to avoid errors in translation tools (based on patch by Giuseppe Bordoni) 1.70.0 "Round Robin" ========================== ADDED: new splashscreen + button to disable it in the look&feel section ADDED: winning icons, SVGs and fixed code to use them ADDED: DUMMY splash screen (krusader/splash.jpg) which will be replaced later CHANGED: UserActions: addPlaceholderButton now only adds a space after an executable. Not after normal placeholders. FIXED: [ 1413503 ] detach tab shortcut changed Ctrl+Shift+D FIXED: [ 1407656 ] bookmark problem with identical names in different folders FIXED: [ 1421473 ] viewer doesn't notice that the URL was changed FIXED: [ 1235959 ] problems at viewing 600 permission files FIXED: cannot umount devices because of a watcher bug (thanks to vaclavj) FIXED: 1076857 & 1384529 - thanks to heiner FIXED: [ 1409160 ] Edited bookmarks require restart to become fully updated FIXED: missing dpkg from Konfigurator-Dependencies FIXED: [ 1234213 ] synchronizer keeps owner,group if possible FIXED: [ 1365423 ] synchronizer does not copy symlinks FIXED: [ 1393227 ] KURLListRequester uses url completion instead of shell completion (caused problems at spaces) FIXED: [ 1391892 ] problem with international characters in the destination of a symlink FIXED: [ 1393215 ] searcher, synchronizer: ~,$HOME,... is accepted now FIXED: [ 1413503 ] viewer: detach wasn't disabled when 1 tab remained FIXED: [ 1417969 ] Keybindings: reset to default keybinding fails FIXED: Konfigurator 'Defaults' button works only on the actual subpage FIXED: [ 1411561 ] renaming bug (thanks Heiner Eichmann) FIXED: [ 1381770 ] Status bar is not updated after TAB is pressed (thanks Heiner Eichmann) FIXED: [ 1365053 ] krservices.h: invalid member function declaration (thanks Heiner Eichmann) FIXED: [ 1400642 ] possible data loss (thanks Heiner Eichmann) FIXED: [ 1352107 ] File search "as you type" (thanks Heiner Eichmann) FIXED: [ 1401005 ] F10 doesn't close KrViewer FIXED: [ 1390116 ] CTRL+G duplicate action in viewer FIXED: [ 1362632 ] Ctrl-Alt-C does not work FIXED: [Debian: 343960] outdated libtool prevents from building (thanks to Aurelien Jarno ) FIXED: [ 1398540 ] wrong font in the new network connection dialog FIXED: [ 1398442 ] Column 'rwx' wrong data when column 'Type' is on (thanks Spiros Georgaras) FIXED: UserActions: addPlaceholderButton's popup-position FIXED: 'match whole word only' flag doesn't work in search FIXED: [ 1352107 ] File search "as you type" FIXED: [ 1351641 ] Krusader 1.70.0-beta2 on Sparc/Solaris: checksumdlg.h FIXED: terminal emulator saves its size from now FIXED: hiding the full size terminal emulator cannot restore the panels FIXED: terminal emulator has no focus after toggling it on FIXED: preserve dates doesn't copy the dates of folders I18N: [ 1397828 ] i18n: "dir" is not translated I18N: Added Greek translation (thanks Spiros Georgaras) I18N: Updated French translation (thanks Guillerm David) I18N: Updated Danish translation (thanks Peter H. Sorensen) I18N: Updated Hungarian translation (thanks Arpad Biro) 1.70.0-beta2 "Afterburner" ========================== ADDED: you can now cancel creating and verifying checksums ADDED: a (missing) shortcut to bookmark current item (ctrl-shift-d) ADDED: you can turn off sending CDs to the terminal emulator (general tab) ADDED: unpacking from RPM packages (much faster than using krarc) CHANGED: our write-enabled tar KIO-slave is only build when --with-kiotar is passed to ./configure. In this case the KDE-version will may be overwritten! FIXED: [ 1345220 ] bookmarks: separators shown as folders FIXED: new viewer tabs were sometimes added to windows different from the previously used ones FIXED: [ 1323613 ] SECURITY!!! PopularUrls stores cleartext passwords in krusaderrc FIXED: [ 1329044 ] krarc, missed similar file names belonging to different rpm-s FIXED: krarc doesn't notice the change of the rpm file to create new contents.cpio FIXED: iso protocol cannot step into files larger than 2 GByte FIXED: KDE 3.4, starting from profile misses the active tab which causes inconsistent state FIXED: krarc reports 000 permission for bz2 files FIXED: bug in checksum module regarding names with spaces FIXED: konfigurator minor fixes FIXED: viewer, the tabs were identified by its page index, which can change FIXED: searcher: space means logical OR "text1 text2" == "*text1* || *text2*" FIXED: krarc cannot step into those archives which name contains '#' FIXED: viewer doesn't warning to save the window at close, and ignores "Cancel" button FIXED: locate dialog doesn't close when exiting krusader FIXED: UserAction: Crash when a programm wrote to stderr but only stdout was collected (Thanks to Shao Lo) FIXED: searcher crash when clicking onto an empty field after the results FIXED: disk usage crash on remote vfs because of recursion FIXED: [ 1262907 ] crash when closing an sftp tab which is loading I18N: Added Lithuanian translation (thanks Dovydas Sankauskas) 1.70.0-beta1 "Hellfire" ========================== ADDED: KrSqueezedTextLabel can now specify the area in the string to be always visible ADDED: when searching for text inside file, the first line containing the text is displayed ADDED: checksum module now supports the cfv tool (for md5 and sha1) ADDED: QuickNavigation: hold ctrl and move the mouse over the url bar to see! ADDED: new checksum creation/verification mechanism (see mail titled "new checksum feature" to krusader-devel) ADDED: alt-ctrl-s creates a new symlink ADDED: ctrl-h opens history on the current panel ADDED: Nicer application search results ADDED: right click menu -> trash, delete, shred options ADDED: column types can be changed and saved individually to each panel (each side) ADDED: select remote encoding menu for fish, ftp and sftp protocols ADDED: clear-location-bar button a-la konqueror (configurable) ADDED: permissions column as octal numbers ADDED: right-click menu now has a "create new..." submenu ADDED: ctrl-alt-enter opens the current folder in a new tab ADDED: calculate space in archives and remote FS (KDE >= 3.3.0) ADDED: experimental support for mimetype-on-demand ADDED: experimental support for icon-on-demand ADDED: when custom filter is set, the Totals line will show the filter. example: [*.cpp] ADDED: useraction: Drop a warning on JavaScript-errors ADDED: set krusaders icon according to the users privileges ADDED: preserve date for local targets at copy / move ADDED: useraction: For JS-extensions the global variable scriptDir is available, indicating the location of the current script ADDED: synchronize selected files ADDED: colorful synchronizer :-) ADDED: starting more tabs with --left=tab1,tab2,tab3 --right=tab4,tab5 ADDED: vertical mode is saved with 'ui save settings' or 'save position' and restored ADDED: A Safari-like Jump-Back feature (Ctrl-J and in the bookmark-menu) ADDED: CTRL-L shortcut to go to the location bar (origin) as in firefox and konqueror ADDED: filters for selecting files ADDED: New zip/tar slave - based on KDE's but support writing to archive ARCH: refactoring in the view. enforcement of getVfile and getMutableVfile ARCH: removed a lot of KrViewItem's API ARCH: right-click menu code moved to a new class KrPopupMenu ARCH: moved JavaScript-stuff into it's own module KrJS ARCH: Makefile.am's for /krusader and /pics revised CHANGED: Use WhatsThis in favour of tooltips where reasonable CHANGED: the panel startup is profile based instead of directory based FIXED: krarc error, when the filename contains '$' or '&' FIXED: synchronizer, compare by content can be terminated by FIXED: preserve date fails at moving FIXED: bookmark issues (http://www.krusader.org/phpBB/viewtopic.php?p=6357#6357) FIXED: [ 1278534 ] Krusader hangs when packing search results FIXED: [ 1169980 ] User Actions Titles are not stored in system encoding (thanks Vaclav Juza) FIXED: '-icon' as well as '--icon' as command-line arguments are handled FIXED: [ 1272583 ] fixes on the .desktop files, thanks Marcin Garski FIXED: [ 1253323 ] middle click crash on ".." directory FIXED: burst refresh if FAM is enabled FIXED: crash when "run in terminal mode" was active on a directory with insufficient permissions (thanks Oleksandr Shneyder) FIXED: [ 1213137 ] javascript self.close() causes crash in the viewer FIXED: Control+Delete can be used in those distributions where Shift+Delete doesn't work FIXED: [ 1186534 ] problems with the new network connection (port, path, password, username) FIXED: renaming does not change the view, until VFS sends a signal about the rename actually being done FIXED: [ 1174273 ] updating the status bar at pressing the arrow keys FIXED: calcspace and diskusage shows the same size FIXED: [ 1180202 ] calcspace calculates wrong size for symbolic links FIXED: [ 1196779 ] searcher, sorting by size is broken FIXED: changing the 'show hidden files' sets the active tab to right, untouches the inactive ones FIXED: the default value of moving to trash is wrong in Konfigurator FIXED: problems with moving to trash at virt_fs and diskusage module FIXED: gcc 2.95 compiler fix FIXED: changed locate-gui shortcut from ctrl-l to shift+ctrl+l FIXED: bookmark icons were not saved correctly FIXED: clicking a search result won't jump to it, if it's in the current directory (patch by Thomas Jarosch) I18N: [ 1201586 ] Wrong encoding of slovenian translation I18N: [ 1243409 ] Encoding problem and bad plural in trash files dialog I18N: [ 1217697 ] Can't translate some Bookman II menu entries I18N: Added multiple plural support (thanks Vaclav Juza for all the help) I18N: Added Serbian translation (thanks Sasa Tomic) I18N: Added Brazilian Portuguese translation (thanks Doutor Zero) I18N: Updated Russian translation (thanks Denis Koryavov) I18N: Updated Portuguese translation (thanks Bruno Queiros) I18N: Updated Czech translation (thanks Vaclav Juza) I18N: Updated Dutch translation I18N: Updated French translation (thanks David Guillerm) I18N: Updated Spanish translation (thanks Alejandro Araiza Alvarado) I18N: Updated Swedish translation (thanks Peter Landgren) I18N: Updated Chinese Simplified translation (thanks Jinghua Luo) I18N: Updated Italian translation (thanks Giuseppe Bordoni) I18N: Updated Polish translation (thanks Pawel Salawa) I18N: Updated Slovenian translation (thanks Matej Urbancic) I18N: Updated German translation 1.60.0 ====================== ADDED: New Gorilla-style icon by www.OnExige.com FIXED: Crash if the useractions.xml contains invalid data FIXED: quick selection doesn't work FIXED: synchronizer, content filter doesn't work FIXED: synchronizer, consistency bug of the filter combos FIXED: advanced filter hides the searcher window at errors FIXED: combiner, smoother interoperability with Total Commander FIXED: UserActionMenu gets updated after Konfigurator applies FIXED: can't sort by extension when "Case Sensitive sort" is on FIXED: move to trash didn't work on kde 3.4.0 FIXED: [ 1123995 ] custom selection mode misfunction UPDATED: Italian translation (thanks Giuseppe Bordoni) UPDATED: Hungarian translation (thanks Arpad Biro) UPDATED: Chinese Simplified translation (thanks Jinghua Luo) UPDATED: Bulgarian translation (thanks Milen Ivanov) 1.60.0-beta2 ====================== FIXED: devices:/ is changed to media:/ in 3.4 FIXED: konfigurator crash on KDE 3.4 at checking 'save settings' FIXED: no refresh after splitting files FIXED: splitter doesn't handle sizes bigger than 2 GB properly FIXED: problem at restart if virtual folders were saved at last exit FIXED: locate / search feed to listbox number generation 1.60.0-beta1 ====================== ADDED: useraction: new placeholder: %_ListFile()% ADDED: total commander color scheme ADDED: Custom Selection Mode. dirk: a dream comming true? ;-) ADDED: synchronizer, exclude directories from the comparation ADDED: some nice sample useractions ADDED: PopularUrls was rewritten for a nice-like algorithm ADDED: Useractions in the menubar (need an update of krusaderui.rc) ADDED: searcher: ask for a collection-name on feed to listbox ADDED: popular urls is now persistent ADDED: popular-urls - krusader's answer to google-ranking ;-) ADDED: better completion in the origin box: constructs such as ~/src and $QTDIR/bin should work now. ADDED: Slovenian translation (thanks Matej Urbancic) ADDED: bookmarks can now be placed into toolbars ADDED: searcher, feed to listbox (with virtual folders) ADDED: Primitive scripting support; Warning: very alpha!! ADDED: new toolbar for actions. use view->show actions toolbar. you'll need to remove ~/.kde/share/apps/krusaderui.rc to see it ADDED: refresh-in-the-background for remote urls and for archives ADDED: changing the coloumns by right clicking on the panel's header ADDED: color scheme export/import ADDED: an other .desktop-file with the red icon that starts krusader as root ADDED: useraction: now every placeholder can cancel the execution. (-> %_ask(..)%) ADDED: useraction: new placeholder: %_PanelSize(percent)% ADDED: Synchronizer, pause/resume button for synchronize with kget ADDED: disk usage (tools menu + 3rd panel) ADDED: useraction: new placeholder: %_Move(src, dest)% ADDED: useraction: new placeholder: %_Each% ADDED: full viewer in the 3rd hand ADDED: shift-del deletes and doesn't move to trash ADDED: splitter: pre-defined 650MB and 700MB CD-R ADDED: more Konfigurator Tooltips ADDED: usermenu: entry to open konfigurator with the useraction-page directly ADDED: import/export of keyboard shortcuts ADDED: mouse selection modes are back! thanks to heiner for doing the work ADDED: virtual VFS (try virt:/somthing/) ARCH: KChooseDir was rewritten. plz have a look at the code/email ARCH: move listpanel from qstring to kurl. plz read email before continuing! FIXED: useraction: cancel a useraction now works for recursive expansion too FIXED: useraction: problems with international characters FIXED: panel profiles sometimes hang FIXED: new ftp dialog was broken FIXED: [ 1073940 ] no refresh after the exclusion filter is modified FIXED: [ 1108444 ] no error message if copy or move fails FIXED: auto filesystems cannot be mounted FIXED: krusader fails to refresh at copying to the source directory on different name FIXED: color "Inactive Marked Current Foreground" was ignored (thx heiner) FIXED: searcher gets behind the main window, if file browse is pressed FIXED: [ 1120827 ] dir copy / move with F5 / F6 doesn't work FIXED: [ 1064578 ] remote URL-s are saved in panel profiles FIXED: Creatring dir-trees on the fly (mkdir /foo/bar/test) is working again FIXED: Syncbrowse is working again and is deactivated automaticly if no longer possible FIXED: [ 1107141 ] view throws error at editing new files on remote fs FIXED: [ 1110507 ] cannot open rpm package if path contains space FIXED: command line alters its height at opening/closing the popup panel FIXED: [ 1037003 ] konqueror style drag and drop FIXED: [ 1076865 ] the default search text is '*' FIXED: [ 976598 ] krusader occasionally crashes at closing the viewer FIXED: [ 1033319 ] Relative paths dont get auto-completed FIXED: [ 971831 ] space calculation failure if the file is bigger than 4 GByte FIXED: [ 1089450 ] synchronizer copies the date information for local files FIXED: [ 1109249 ] drag and drop doesn't work with international characters FIXED: viewer cannot open 600 files, when the owner column is enabled FIXED: ftp_vfs overloads the CPU at stepping into a slow server on the network FIXED: krusader's detection of old or incompatible versions FIXED: dirk's patch for better looking icons FIXED: cannot open FTP proxy bookmarks FIXED: [ 1101237 ] the reload shortcut is always set to Ctrl+R at startup FIXED: rename extension bug in kde 3.3 FIXED: crash on startup due to restoring of last size and position FIXED: couldn't sort case sensative on some systems (see KDE bug #40131) FIXED: resizing of the main window produces strange effects FIXED: double dragging in Krusader and Konqueror selection modes FIXED: right click menu and user action ID turmoil FIXED: [ 1074393 ] Crashes sometimes on startup (thanks Heiner) FIXED: custom icons in bookmarks weren't shown FIXED: All openUrl() calls are now delayed to avoid deadlocks... UPDATED: remoteman was disabled. from now on, bookmark manager only UPDATED: Hungarian translation (thanks Arpad Biro) UPDATED: Catalan translation (thanks Quim Perez Noguer) UPDATED: Portuguese translation (thanks Bruno Queiros) UPDATED: Dutch translation UPDATED: Swedish translation (thanks Peter Landgren) UPDATED: Russian translation UPDATED: German translation 1.51 ====================== ADDED: Portuguese translation (thanks Bruno Queiros) ADDED: Fn keys can have custom shortcuts ADDED: krusader can be resized to a small size even with Fn keys showing ADDED: Total-commander style refresh (at last) ADDED: ctrl-up arrow (from the panel) goes up to the origin bar ADDED: New commandline option: --profile ADDED: Heiner's selection mode patch. Still alpha. ADDED: Ukrainian translation (thanks Ivan Petrouchtchak) ADDED: disk usage tool (alpha version) ADDED: vertical krusader: hit alt+ctrl+v to test ADDED: extra information in the totals bar FIXED: separators were not displayed in the bookmarks list FIXED: deleting a folder didn't update the bottom stats correctly FIXED: useraction: parse the default-value "__goto" again FIXED: useraction: Crash when filename contained brackets '(...)' FIXED: world-class-annoying-bug when sometimes while using quicksearch, the file that was selected by quicksearch got hidden beneath the bar FIXED: mime types are shown only in english FIXED: when using quicksearch, current item wasn't visible FIXED: a crash when packing/unpacking to partial URL UPDATED: Dutch translation (thanks Frank Schoolmeesters) UPDATED: Hungarian translation (thanks Arpad Biro) UPDATED: German translation 1.50 ====================== FIXED: mountman now blocks and wait for mount/umount to complete FIXED: sorting got borked because locale-aware-compare isn't handling files that start with '.' well FIXED: possible opendir leakage, fish works only when moving the mouse FIXED: taken KDE's KDiskFreeSp class to optimize DF handling FIXED: Krusader overloads the CPU with panel refreshing FIXED: Wrong Danish language code (dk.po->da.po) UPDATED: Catalan translation (thanks Quim Perez) UPDATED: Italian translation (thanks Giuseppe Bordoni) UPDATED: Bulgarian translation (thanks Milen Ivanov) UPDATED: Slovak translation (thanks Zdenko Podobny) UPDATED: Hungarian translation (thanks Arpad Biro) UPDATED: German translation UPDATED: Dutch translation (thanks Frank Schoolmeesters) 1.50-beta1 ====================== ADDED: if view is human-readable, status bar is normal (bytes) and vice versa ADDED: Human-readable file sizes is implemented (located in look&feel->panel) ADDED: useraction: available via rightclick-menu ADDED: importing the right click menu of konqueror ADDED: cut(CTRL+X), copy(CTRL+C), paste(CTRL+V) ADDED: useraction: new Placeholder %_Profile("panel-profile")% ADDED: useraction: new Placeholder %_NewSearch("search-profile")% ADDED: useraction: run as different user ADDED: alt-O now sync the panels (like ctrl-left/right arrows) ADDED: new shortcut (ctrl-d) to open bookmarks on current panel ADDED: panel costum colors: new Current Marked Foreground ADDED: compare by content: the action is now smarter in finding the right files ADDED: profiles for the panels ADDED: mkdir (F7) can now create whole trees on the fly ("foo/bar/test") ADDED: synchronizer uses the search filters ADDED: search profiles ADDED: searcher: TC like search ( 'text' == '*text*' ) excluding files with '|' (ex. '*.cpp *.h | *.moc.cpp' ) ADDED: search on remote file systems ADDED: konfigurator|advanced has a new entry: just enter mountpoints there, and mountman won't try to mount/unmount them. ADDED: mountman got a big nose-job ;-) plz test ADDED: dropping on the tree panel (copy,move,link) ADDED: packing / unpacking to/from remote URL-s ADDED: short tab names ADDED: compare directories (mark menu) ADDED: shift+left/right changes tabs (thanks to Dmitry Suzdalev) ADDED: linking mimes and protocols ADDED: new delete dialog box: lists the file names to be deleted (thanks to dirk for the idea) ADDED: iso protocol for viewing .iso cd/dvd images (thanks to Szombathelyi Gyorgy) ADDED: full handling of arj, ace and lha packers ADDED: useraction: new Placeholder %_Sync("synchronizer-profile")% ADDED: synchronizer: profile handling ADDED: synchronizer: swap sides ADDED: useraction: new Placeholder %_Copy("from", "to")% ADDED: 3rd hand: new panel that does quick selection ADDED: 3rd hand: look n feel changed to fit krusader ADDED: credit for jonas in the about box ADDED: panels now save the tabs at shutdown (thanks to Donat Martin) ADDED: dropping URL-s onto the status / totals line ADDED: Bosnian translation ADDED: synchronizer: excluding files with '|' in the file filter (ex. '*.cpp *.h | *.moc.cpp' ) ADDED: tooltips for squeezed tabs ADDED: sync-browse mode (if on, a directory-change in the active is also performed in the inactive panel) ADDED: beta-state incremental refresh. test it with fam enabled! ADDED: synchronizer: ability to give more files in the file filter (ex. '*.cpp *.h') ADDED: Two single click rename (Total Commander rename) ADDED: The 3rd hand of krusader. click the litle arrow below the panel's scrollbar to see.. ADDED: showing suid, sgid and sticky bits in the permissions column ADDED: New useraction-system (partly based on Shies usermenu-prototype) REACTIVATED: usermenu (now using the new useraction-system) FIXED: synchronizer fails at case insensitive (Windows) file systems FIXED: crash when deleting an useraction created in the same session FIXED: locale aware ABC sorting (for non-english languages) FIXED: useraction: startpath is now working FIXED: useraction: i18n is now working in the add-placeholder-menu FIXED: searcher corrupts international characters FIXED: searcher cannot open remote URL-s for editing/viewing (archives) FIXED: the File/Properties function writes incorrect group name FIXED: krarc doesn't keep the date/time information at extracting to local fs FIXED: jar files aren't handled + problems with dirs in windows zips FIXED: problem with the windows created rar permissions FIXED: performance increasing: faster sorting, directory leaving FIXED: compare content error at remote urls (problem with sleep 2) FIXED: totals bar didn't update when an incremental refresh happened FIXED: locate doesn't report the errors occured during the search FIXED: the viewer size is forgotten in maximized mode (KDE hack) FIXED: internationalization bugs, illegal usage of QString::latin1() FIXED: krarc, ignores the packer dependencies FIXED: krarc, rar: mkdir does not work, illegal time and permission info FIXED: krarc, problem with copying / moving inside the archive FIXED: krarc, problem with international characters in put/mkdir FIXED: krarc, problems at copying subdirectories from the archive FIXED: [ 1005533 ] stepping onto a subfs device crashes krusader FIXED: [ 988835 ] window size of synchronize dirs is not stored FIXED: [ 946567 ] krusader minimizes to tray on desktop change FIXED: mountman changes... read the email ;-) REMOVED: Dupe Japanese translation (ja.po is used nowadays) UPDATED: Bosnian translation (thanks Asim Husanovic) UPDATED: Chinese Simplified translation (thanks Jinghua Luo) UPDATED: Hungarian translation (thanks Kukk Zolt�) UPDATED: German translation 1.40 ====================== ADDED: when searching in files (grep), push the string we're searching for into the clipboard when pressing F3 or F4. this saves an extra copy when searching inside the file ADDED: Catalan translation DISABLED: usermenu for 1.40 FIXED: [ 962340 ] Alt-T broken to call Tools menu FIXED: [ 980252 ] Compare by Content: right/left position swapped FIXED: [ 990141 ] F3/F4 in root mode trouble with permissions FIXED: [ 959916 ] Krusader window too large on startup FIXED: username and group information are wrong for ftp_vfs FIXED: UMR (uninitialized memory read) in vfs::fromPathOrURL UPDATED: Polish translation 1.40-beta2 ====================== ADDED: Chinese Simplified translation FIXED: the new ftp dialog URLs are saved into a stochastic configuration group FIXED: [ 960003 ] Swapped letters in quick-search FIXED: KIO::Slave url redirection handling (e.g. now devices:/ and settings:/ works !) FIXED: [ 962598 ] viewer didn't display XML files FIXED: [ 960595 ] problem with paths containing more '@' characters (FTP proxy hack) FIXED: [ 957145 ] krusader closes editor without asking FIXED: ports cannot be added for fish, sftp in the new connection GUI FIXED: [ 943962 ] the summary status is not updated after calc space FIXED: [ 950762 ] missing pemission check on entering a folder FIXED: setting "xterm -e vim" as editor didn't work... FIXED: [ 953874 ] allowing editors which are not url-aware to be used as default editor FIXED: [ 948315 ] security hole, krusader changes its temp directory's rights to 0777 FIXED: the UI settings are not saved at exit FIXED: [ 951274 ] shift+home and shift+end does not work FIXED: [ 948726 ] problem with ctrl+left from the left panel and ctrl+right from the right panel FIXED: extension is separated from the dirname after renaming directories containing '.' FIXED: locate does not call kdesu any more FIXED: [ 950052 ] synchronizer: the left and right side depends of the active panel FIXED: [ 770676 ] krarc does not handle password zips FIXED: [ 928746 ] symlinks pointing to directories using fish protocol fail FIXED: [ 939214 ] synchronizer, wrong behaviour of compare by content FIXED: moving into archives is dangerous. it is disabled (for now at least) FIXED: synchronizer gui size policy bugs FIXED: [ 934498 ] problem at dropping files into the '..' directory FIXED: [ 939612 ] F9 moves file, if new name already exists as directory FIXED: krusader does not handle filenames containing '#' character FIXED: krusader exits at viewing dvi files (missing arguments from KPart). FIXED: drag line remains visible after dropping an URL FIXED: panel swapping corrupts ctrl+arrow and alt+arrow FIXED: error at dropping URLs containing non-english characters from konqueror FIXED: KDE 3.2, right justified tabs bug FIXED: dragging over a new tab changes active tab FIXED: crash at pressing space on the '..' directory UPDATED: Bulgarian translation UPDATED: Czech translation UPDATED: Danish translation UPDATED: Dutch translation UPDATED: French translation UPDATED: German translation UPDATED: Hungarian translation UPDATED: Italian translation UPDATED: Slovak translation 1.40-beta1 ====================== ADDED: configuring the colors of the panel ADDED: (a bug fix really) ability to "not test archives before unpacking" ADDED: new icons (thanks to adios for providing them) ADDED: quickmode for mountman. press and HOLD the mountman icon for new functionality ADDED: Bulgarian translation (thanks to Milen Ivanov) ADDED: krusader restart is not necessary from now after changing the configuration ADDED: ability to give arguments for the terminal ADDED: enable/disable icons in the filenames ADDED: ability to configure the fields of the panel (Ext, Size, Perm, ...) ADDED: single click selects / executes ADDED: panel level toolbar ('..', '/', '~', '=' buttons), thanks to David Harel ADDED: Locate (integrating the findutils-locate package of GNU into Krusader). TEST IT ADDED: Heiner's patch for 'logical selection mode' is applied and used as default. TEST IT ADDED: application dependency setting in konfigurator ADDED: Csaba's new konfigurator is here, boys and girls! ADDED: heiner's quicksearch patch ADDED: calculate occupied space prints the directory's size (wincmd-style) - thanks heiner! ADDED: current directory in history menu is checked ADDED: a working user menu (try alt+~), but a bit rough on the edges ADDED: KrSearch edit/view file in the result list window (F3, F4, right click) ADDED: a folder-history button, a-la-total commander. thanks to Hans Loffler! ADDED: selectall at rename ADDED: new shortcuts to search dialog (heiner) ADDED: directory synchronizer ADDED: file splitter ADDED: a missing credit for Frank in the about box FIXED: krusader exits at closing the viewer when minimized to tray FIXED: KDE 3.2 terminal exit at Ctrl+C FIXED: bug [ 906386 ] regarding refreshes of dirwatch with fam enabled FIXED: bug [ 906538 ] which now makes a faster unpacking process FIXED: bug [ 894771 ] regarding over-expanding window due to long command line FIXED: edit new file on KDE 3.2 FIXED: permission handling for FTP URL-s FIXED: calc space crash at vfs refresh (thanks to Heiner) FIXED: krarc created non-executable directories (0666) FIXED: reimplementing the 'allow move into archive' setting FIXED: no restart at changing the icon tray's state in konfigurator FIXED: krusader freezes if the `df` process does not terminate (at network errors, IO wait) FIXED: krusaderui.rc bug, new menuitems does not appear after a krusader update FIXED: sort by EXT did not obey the 'case sensative sort' flag FIXED: 2 items on the view menu had the same shortcuts FIXED: increased speed of search, by emitting lesssignals (thanks to Lars) FIXED: statusbar updated only on mouse clicks, not on keyboard FIXED: translation: forcing non-english languages with a strange structure FIXED: freeze at modal dialogs and icon tray FIXED: crash at rename if the directory is refreshed by the watcher FIXED: stepping to the file below after delete (heiner) FIXED: window size and position saving at maximized mode FIXED: more freedom to give FTP proxy URL-s in "New FTP Connection" menu FIXED: crash at ftp://user@server@proxy:port FTP URL-s FIXED: no parent directory at tar://... and zip://... URL-s FIXED: font size problems in KCmdLine and KrMaskChoice FIXED: internal editor quits without notification even if the edited file was not saved FIXED: no i18n for Name, Ext, Size, Modified FIXED: obsolete QT header files FIXED: crash at closing the progressbar window at packing FIXED: no or uninformative error message at packing to a readonly directory FIXED: crash at middle clicking on the last tab FIXED: KrSearch permissions panel placing bug FIXED: ftp port limit changed from 999 to 65535 REMOVED: arc_vfs support completly replaced with KIO:Slave technolegy. UPDATED: new package description - Thanks to Jonas B�r UPDATED: Krusader Handbook (read ./doc/ChangeLog for more info) UPDATED: Japanese translation UPDATED: Dutch translation UPDATED: Czech translation (thanks to Martin Sixta) UPDATED: Spanish translation UPDATED: Krename url http://www.krename.net 1.30 ====================== ADDED: middle mouse button: click on a folder, and create a new tab. ADDED: middle mouse button: click on a tab, and close it FIXED: krarc QByteArray buffer freeing bug FIXED: mountman watches 'mount' instead of the directories FIXED: keyboard-shortcuts issues for new-tab(alt+ctrl+n), close-tab(alt+ctrl+c) and duplicate-tab(alt+ctrl+shift+n) FIXED: mountman FreeBSD bug (/etc/mtab does not exist in FreeBSD) FIXED: All files / Custom files. Executable was removed. FIXED: when selecting something from the combobox in "mark files" dialog, combo doesn't close immediatly FIXED: mark files dialog added the same selection more than once FIXED: disabled panel-types in konfigurator FIXED: font size problems with the Select dialog, and New Net Connection FIXED: mountman detects those devices as supermount, which are mounted and missing from fstab FIXED: mountman inserts '/dev/' before NFS shares and mounted devices which are missing from fstab FIXED: mountman does not watch readonly directories (mount can change its permissions!) FIXED: mountman does not stop dirwatch after close + memory leak FIXED: compare fix at directories with escape characters FIXED: Sorry - Archive test passed FIXED: FTP proxy bug (more than one @ characters in the URL) REMOVED: SortByExtention menu item (which did nothing) REMOVED: KrSearch-Help + Pack-Move into archive (did nothing) UPDATED: Dutch translation UPDATED: Danish translation UPDATED: Hungarian translation UPDATED: Italian translation UPDATED: Slovak translation 1.29-beta ====================== ADDED: KrSearch Match whole word only feature ADDED: Tab-browsing shortens tabs when more tabs are created ADDED: Starting Krusader with root privileges by pressing Alt+K ADDED: Open-in-a-new-tab available in right-click menu ADDED: Creating new files with SHIFT+F4 ADDED: Russian translation (thanks to Dmitry Chernyak) ADDED: Ctrl+Enter and Ctrl+Shift+Enter keyboard shortcuts ADDED: default shortcut for refreshing the panel is Ctrl+R ADDED: ctrl-left/right arrow checks if we're on a folder, if so it refreshes the other panel with the contents of the folder, otherwise to the same path as current one (Wincmd style) ADDED: tabbed-browsing beta ADDED: SHIFT-F3 view dialog. ADDED: The internal viewer follow links on HTML pages. ADDED: panel swapping by Ctrl+U ADDED: command line improvments: ctrl+/ opens history list, up&down keys work again, and general usability ADDED: krusader can now be started from commandline with new options: try: krusader --left=/mnt/cdrom --right=ftp://downloads@myserver.net! ADDED: new command line widget. should fix some issues and requests ADDED: Missing WhatsThis information (thanks to Mikolaj!) ADDED: a new shortcut for 'show hidden files' - ctrl+. (ctrl plus dot) ADDED: rar support to krArc KIO slave. ADDED: open with in the right click menu for multiple files with the same mimetype. ADDED: Patch by Heiner which adds a cancel button to the calculate space action. FIXED: KrSearch does not find texts at the last row FIXED: Strange KrSearch GUI (SearchIn and DontSearchIn adding) FIXED: KrSearch crash at pressing Escape or Closing the window during search FIXED: cmdline would start-up focused on the wrong panel FIXED: when pressing ctrl-enter (or ctrl-shift-enter), focus goes to command line FIXED: Terminal Emulator bug at ` and Backspace keys FIXED: internal editor / viewer crash at invalid symlinks FIXED: run-in-terminal would cause the terminal to close prematuraly and results would be lost. FIXED: free disk capacity miscalculation for Ext2 and Ext3 file systems. FIXED: crash when editing a file with # in the filename FIXED: inplace renaming bug with extension when pressing ctrl+click FIXED: whenever the folder gets refreshed, the current file would be lost FIXED: problematic behavior when trying to SPACE a folder without permissions FIXED: Ctrl-A didn't work properly FIXED: crash when unmounting a busy mountpoint FIXED: date-time sorting bug FIXED: changed pop-up delay of the history button on the command line to zero FIXED: right-click menu via keyboard appeared in the wrong place FIXED: crash when using spacebar on the ".." (thanks to heiner) FIXED: automark directories didn't work (thanks to Anarky) FIXED: bug when using space to calculate space of directory FIXED: crash when viewing files with # in their name. FIXED: compilation problem with GCC >= 3.3 (thanks to Adios) FIXED: Force refresh when creating a new directory. FIXED: a crash when trying to repaint when the VFS was deleted. REMOVED: Device Manager action UPDATED: many usability issues (thanks to Mikolaj) UPDATED: German translation UPDATED: Hungarian translation UPDATED: Dutch translation UPDATED: Spanish translation 1.25-beta1 ====================== ADDED: Finally, the new bookmark system is here! courtasy of Jan Halasa ADDED: new Hungarian translation, thanks to Kukk Zolt� FIXED: mountMan bug - didn't allow to umount/mount filesystem with trailing / FIXED: width of modified column for i18n (thanks to heiner) FIXED: dirUp() bug - selection goes to top. FIXED: the @ in ftp passwords bug. UPDATED: Slovak translation UPDATED: Dutch translation 1.21-beta1 ====================== ADDED: Opening left/right bookmarks (alt+left/right arrow) is now an action, and can be remapped. ADDED: In-place renaming (thanks to Heiner Eichmann) ADDED: New KIO slaves to handle archives. ADDED: multi-file properties. ADDED: Krusader now obeys KDE's date time format ADDED: Total-Commander style directory selection. Press SPACE to check it out! Thanks goes (again) to Heiner Eichmann! FIXED: column sizes are saved when doing 'save postion', or if 'save settings' is set in konfigurator. FIXED: double-catching of the ~ (tilda) key FIXED: double-catching of the backspace key FIXED: closing krusader using Alt-F4 or clicking X didn't save settings FIXED: Wrong focus after renaming FIXED: Error using KRename with filenames containing spaces (thanks to Tobias Vogele) FIXED: FreeBSD compatability in KrARC (thanks to Heiner Eichmann) FIXED: a crash in the dirUp() function. FIXED: when opening bookmarks using keyboard, active panel didn't change properly FIXED: in search dialog - you can now simply click text, and press ENTER. no need to click Search FIXED: a lot of usability issues (thanks to Mikolaj Machowski) FIXED: double-click in search dialog bug (thanks to heiner eichmann for the patch) FIXED: i18n issues - thanks to Frank Schoolmeesters FIXED: Panel flicker patch (thanks to Gabor Takacs for the patch) FIXED: Krusader failed to report permission errors while deleting files FIXED: issue with Japanesse translation FIXED: ctrl+arrows is caught by panel and not the view FIXED: removed unsafe debug messages FIXED: proper properties and owner/group for non-local files UPDATED: Dutch translation UPDATED: German translation BUG: krArc slow when unpacking large files 1.20 - KDE 3 ====================== ADDED: Clicking on the status or totals bars (above and below file list) changes focus ADDED: Each panel remembers the way it was sorted (might be different for each) ADDED: Each panel remembers the column width (might be different for each) ADDED: Dutch translation, thanks to Frank Schoolmeesters FIXED: Crash when saying NO to "really exit krusader?" UPDATED: German translation UPDATED: Polish translation 1.20 ====================== ADDED: Japanese translation, thanks to UTUMI Hirosi ADDED: error window when attempting to drag-n-drop to a target without enough permissions FIXED: crash when viewing/editing a file without permissions to read FIXED: icon touchup - to make the thing look more consistent FIXED: removed the ftp disconnect and root actions from the toolbar FIXED: updated polish translation FIXED: date sorting with files older than the year 2000 FIXED: crash on remote connections if there is a @ in the password FIXED: the remote connections rename function FIXED: blank hex viewer with short text files FIXED: anonymous checkbox in remote-man not respected 1.12 beta2 ====================== ADDED: Introducing extension column ADDED: Italian translation (thanks to Giuseppe Bordoni) ADDED: Preview to the right-click menu. FIXED: minimize to tray didn't behave correctly FIXED: crash when mounting failed (no cdrom in drive) FIXED: icon too big when minimized to tray FIXED: origin bar now accepts local urls (file:/) gracefully FIXED: origin bug, which caused the focus to go to the panel too soon. FIXED: right click menu in mountman (thanx to Heiner). FIXED: new 'admin' folder (support automake 1.7). FIXED: ESC key close the viewer. FIXED: crash when trying to open non-existing directory. FIXED: directory sorting. TODO: automark directories won't work in 1.12!!! TODO: can we add a krProgress to normal-vfs refreshes ? TODO: dragn'drop quirky. TODO: add progressbar to totals (?) TODO: COMPAREMODE 1.12 beta1 ====================== ADDED: some GUI touch-ups: make buttons smaller, and bars leaner. all in all, the thing should look better. ADDED: FreeBSD compatability issues - patchs by Heiner, thanks man! ADDED: move to next-gen view (at last) FIXED: popup-menu poping out of place. FIXED: Panel & PanelFunc permission clean up. FIXED: krBack() clean up. FIXED: moved all the logic from ListPanel to ListPanelFunc FIXED: integrated the openUrl() API. FIXED: minor bug in mountman FIXED: bug in arc_vfs, concerning full-paths in tars (thanks Heiner) FIXED: right align size column REMOVED: Tree & Quickview panels. 1.11 KDE 3 ====================== ADDED: updated Swedish translation, thanks to Anders Linden. ADDED: new Spanish translation, thanks to Rafa Munoz. ADDED: new Polish translation, thanks to Lukasz Janyst. FIXED: Changed the internal viewer default from Hex to Text. FIXED: Crash when Krusader is called with open viewer/internal editor. FIXED: Keyboard shortcuts not saved in Konfigurator. 1.10 - KDE 3 ====================== ADDED: new and improved viewer. ADDED: Krename support ! (more info at: http://krename.sf.net ) ADDED: you can now use the command line to "cd" into konqi-supported urls. ( try: cd audiocd:/?dev=/dev/cdrom ) ADDED: you can try to execute files in remote filesystem. ADDED: new command detection function instead of using 'which' FIXED: rewritten the panel sorting function, it should be better and faster now. FIXED: back to KRDirWatch, since KDirWatch crashed us on systems with FAM enabled. FIXED: removed the "panel start path is invalid" error message. if the start path is invalid try to find the closest path (the previous solution was '/'); FIXED: don't watch read-only/not-readable directories - this should improve performance and avoid a loooong wait time on super-mounted cdroms. FIXED: multiple selctions modes are no-more. default mode is Konqueror. the multi-mode become unstable after the kde3 porting and we had to disable it. FIXED: memory leak when starting konfigurator. 1.0.2 - KDE 3 ====================== ADDED: new icon. ADDED: sftp & scp support. ADDED: multi-protocol and history to the new connection dialog. FIXED: normal_vfs now uses the KDE dir watch, in other words: better directory refresh. FIXED: new 'admin' folder. 1.0.1 - KDE 3 ====================== ADDED: Krusader now compiles on KDE 3 (tested with RC3). ADDED: New ftp/smb vfs due to KDE 3 API changes. 1.0.1 ====================== ADDED: When compare-mode is active, pressing the 'Select Files' icon (or the equivalent keyboard shortcut), will open the usual dialog with 4 new options in the predefined selections. This allows automatic selection of files according to their compare-mode status - newer, older, etc. ADDED: Terminal emulator now "follows mouse" - konqueror style. ADDED: French translation. ADDED: A new icon for Krusader. new we've got krusader.png and krusader2.png! FIXED: errors compiling on kde 2.1 - convertSizeFromKB FIXED: compatability issue with installing to debian FIXED: compatability issue with Solaris FIXED: keyboard settings are not saved. FIXED: a small bug causing 'rrr' to show instead of 'rwx'. 1/1/02 - 1.00 ===================== diff --git a/INSTALL b/INSTALL index d7b562ef..c94c508b 100644 --- a/INSTALL +++ b/INSTALL @@ -1,211 +1,211 @@ ---------------------------------- Krusader installation instructions ---------------------------------- --- Note Krusader-2.5.0 versions and higher use libraries like Qt5 and KF5, and will not work anymore on KDE Plasma 4 or older. --- Supported Platforms * All POSIX (Linux®/BSD/UNIX®-like OSes), Solaris™ At the moment, for some libraries like KF5, there are no full ports for Windows or Mac® OS X, which means these platforms are not supported. ======================================== Installation on Linux® and BSD platforms ======================================== --- Preliminary steps if Krusader was already installed If Krusader was already installed: it's better to backup its settings before uninstalling Krusader and installing a new version. Those folders can be backed up (just in case): ~/.local ~/.kde ~/.config --- Krusader dependencies The next packages are needed when running the Krusader binary. This is a list of the package names that Kubuntu/Ubuntu 18.04 (LTS) use, other Linux distros will probably use similar names: - plasma-framework Plasma Runtime components - libc6 GNU C Library: Shared libraries - libgcc1 GCC support library - libqt5dbus5 Qt 5 D-Bus module - libqt5xml5 Qt 5 XML module - libqt5core5 Qt 5 core module - libqt5gui5 Qt 5 GUI module - libqt5printsupport5 Qt 5 print support module - libstdc++6 The GNU Standard C++ Library v3 - zlib1g compression library - runtime --- Suggested packages The next packages are optional but they will make Krusader much more powerful and useful. This is a list of the package names that Debian/Ubuntu/Kubuntu 16.04 use, other Linux distros will probably use similar names: - arj archiver for .arj files - ark archive utility by KDE - bzip2 high-quality block-sorting file compressor - utilities - cpio GNU cpio -- a program to manage archives of files - kate Powerful Text Editor - kde-cli-tools tools required to edit file types from Properties dialog or run Krusader in root mode - keditbookmarks Bookmark manager used for editing bookmarks - kio-extras Enables transparent handling of various archive types such as .tar and network protocols like SFTP - kmail KDE Email client - kdiff3 compares and merges 2 or 3 files or directories (at moment of writing: no version available) or kompare file difference viewer or xxdiff a graphical file and directories comparison and merge tool - konsole X terminal emulator - krename Powerful batch renamer by KDE - lhasa lzh archiver - md5deep enhanced message digest calculator or cfv versatile file checksum creator and verifier - p7zip 7zr file archiver with high compression ratio - rpm Red Hat package manager - unace extract, test and view .ace archives - unrar Unarchiver for .rar files (non-free version) or unrar-free Unarchiver for .rar files or rar Archiver for .rar files - unzip De-archiver for .zip files - zip Archiver for .zip files --- Compilation requirements The next packages are needed for compiling the Krusader sourcecode, if you only run the Krusader binary you don't need to install these packages. - build-essential a group of packages needed to compile source code - cmake a cross-platform, open-source make system - extra-cmake-modules extra cmake modules for compiling KDE Frameworks - qt5-default development files for the Qt5 libraries - gettext GNU Internationalization utilities - plasma-framework-dev development files for plasma-framework - zlib1g-dev in order to make building easier (https://stackoverflow.com/a/49072832) The following packages should install (through dependencies) all the packages -you need to compile a KDE 5 software +you need to compile KF5 software: - kio-dev resource and network access abstraction - libkf5archive-dev development files for karchive - libkf5parts-dev development files for kparts - libkf5wallet-dev development files for kwallet-framework - libkf5xmlgui-dev user configurable main windows - kdoctools-dev development files for kdoctools5 --- Krusader development download Krusader is developed in KDE Extragear. If someone wants to download and use the latest available Krusader sourcecode with git: $ git clone http://anongit.kde.org/krusader Otherwise, if someone wants to use the .tar.xz package: $ tar xvf krusader-xx.xx.tar.xz --- Some CMake options. CMake execution -DCMAKE_INSTALL_PREFIX=/usr is the location where Krusader will be installed with the make command. Another example is: -DCMAKE_INSTALL_PRFIX=/opt/krusader to install the compiled Krusader in an other directory to not overwrite the Krusader version installed by your package manager. -DCMAKE_CXX_FLAGS="-O2 -fPIC" this flag is required if you have a 64 bit system -DQT_PLUGIN_INSTALL_DIR= many system force this path to keep kde4 plugins separated from the kde5 ones -DKDESU_PATH=/foo/bar/kdesu this needs to be set on distributions that override default kdesu installation path (libexec/kf5/kdesu) or if your install prefix doesn't match KDE's. -DENABLE_SYNCHRONIZER=OFF disables building the Synchronizer module. This module caused data loss, now it is fixed, but we treat it as the thin ice. In order to make sure that the present folder is the parent directory of the "krusader" source code folder, this command can be executed: ls krusader/krusader and it should answer something like: abstractpanelmanager.h Dialogs kicons.h KrJS krusaderlisterui.rc [...] then CMake can be executed this way: $ mkdir krusader-build $ cd krusader-build $ cmake ../krusader -DCMAKE_INSTALL_PREFIX=/usr/ -DCMAKE_C_FLAGS="-O2 -fPIC" -DCMAKE_CXX_FLAGS="-O2 -fPIC" Note: An example of an output of cmake can be seen in https://phabricator.kde.org/w/krusader/cmake-output/ --- Compilation and installation Compilation will take about 5 to 10 minutes depending on your CPU speed. Execute: # Note: On a multi cpu/core system you might want to speed up the compile process by increasing the number of jobs (e.g. `make -j4`) $ make # At the beginning of the following command: `sudo` must be added if Kubuntu, Ubuntu, Debian, or similar is being used $ su -c "make install" Note: An example of an output of make can be seen in https://phabricator.kde.org/w/krusader/make-output/ --- To achieve that Krusader uses another language There is a list of translation files in the [10n.kde.org Krusader page](https://l10n.kde.org/stats/gui/trunk-kf5/po/krusader.po/index.html). In that list anyone can look for his desired translation file, hover the mouse cursor over its link, see its tooltip to look up the appropriate LANGUAGE_CODE (which is shown between parentheses, e.g. if on the tooltip it's seen "German (de)" that means that LANGUAGE_CODE is: de), click on the link (in order to download the proper krusader.po file), and execute: # Transform the downloaded file msgfmt krusader.po -o krusader.mo # At the beginning of the following command: `sudo` must be added if Kubuntu, Ubuntu, Debian, or similar is being used. # In the following command, the text XXXXXXX must be replaced by the LANGUAGE_CODE that was previously found su -c "cp -a krusader.mo /usr/share/locale/XXXXXXX/LC_MESSAGES/" Note: If, in the future, someone would need to automate the downloading of a krusader.po file, he could use: # In the following command, the text XXXXXXX must be replaced by the LANGUAGE_CODE that was previously found $ wget -U "Mozilla/5.0" https://websvn.kde.org/*checkout*/trunk/l10n-kf5/XXXXXXX/messages/extragear-utils/krusader.po --- Execution Finally, Krusader can be executed this way: $ krusader --- Uninstall # At the beginning of the following command: `sudo` must be added if Kubuntu, Ubuntu, Debian, or similar is being used $ su -c "make uninstall" diff --git a/krusader/Archive/abstractthreadedjob.cpp b/krusader/Archive/abstractthreadedjob.cpp index f7478598..ba311094 100644 --- a/krusader/Archive/abstractthreadedjob.cpp +++ b/krusader/Archive/abstractthreadedjob.cpp @@ -1,664 +1,664 @@ /***************************************************************************** * Copyright (C) 2009 Csaba Karai * * Copyright (C) 2009-2018 Krusader Krew [https://krusader.org] * * * * This file is part of Krusader [https://krusader.org]. * * * * Krusader 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. * * * * Krusader is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with Krusader. If not, see [http://www.gnu.org/licenses/]. * *****************************************************************************/ #include "abstractthreadedjob.h" // QtCore #include #include #include #include #include #include // QtWidgets #include #include #include #include #include "krarchandler.h" #include "../krglobal.h" #include "../krservices.h" #include "../FileSystem/filesystemprovider.h" extern KRarcHandler arcHandler; AbstractThreadedJob::AbstractThreadedJob() : KIO::Job(), _locker(), _waiter(), _stack(), _maxProgressValue(0), _currentProgress(0), _exiting(false), _jobThread(0) { } void AbstractThreadedJob::startAbstractJobThread(AbstractJobThread * jobThread) { _jobThread = jobThread; _jobThread->setJob(this); _jobThread->moveToThread(_jobThread); _jobThread->start(); } AbstractThreadedJob::~AbstractThreadedJob() { _exiting = true; if (_jobThread) { _jobThread->abort(); _locker.lock(); _waiter.wakeAll(); _locker.unlock(); _jobThread->wait(); delete _jobThread; } } bool AbstractThreadedJob::event(QEvent *e) { if (e->type() == QEvent::User) { UserEvent *event = (UserEvent*) e; switch (event->command()) { case CMD_SUCCESS: { emitResult(); } break; case CMD_ERROR: { int error = event->args()[ 0 ].value(); QString errorText = event->args()[ 1 ].value(); setError(error); setErrorText(errorText); emitResult(); } break; case CMD_INFO: { QString info = event->args()[ 0 ].value(); QString arg1 = event->args()[ 1 ].value(); QString arg2 = event->args()[ 2 ].value(); QString arg3 = event->args()[ 3 ].value(); QString arg4 = event->args()[ 4 ].value(); _title = info; emit description(this, info, qMakePair(arg1, arg2), qMakePair(arg3, arg4)); } break; case CMD_RESET: { QString info = event->args()[ 0 ].value(); QString arg1 = event->args()[ 1 ].value(); QString arg2 = event->args()[ 2 ].value(); QString arg3 = event->args()[ 3 ].value(); QString arg4 = event->args()[ 4 ].value(); _title = info; setProcessedAmount(KJob::Bytes, 0); setTotalAmount(KJob::Bytes, 0); emitSpeed(0); emit description(this, info, qMakePair(arg1, arg2), qMakePair(arg3, arg4)); } break; case CMD_UPLOAD_FILES: case CMD_DOWNLOAD_FILES: { QList sources = KrServices::toUrlList(event->args()[ 0 ].value()); QUrl dest = event->args()[ 1 ].value(); KIO::Job *job = KIO::copy(sources, dest, KIO::HideProgressInfo); addSubjob(job); job->setUiDelegate(new KIO::JobUiDelegate()); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotDownloadResult(KJob*))); connect(job, SIGNAL(processedAmount(KJob*,KJob::Unit,qulonglong)), this, SLOT(slotProcessedAmount(KJob*,KJob::Unit,qulonglong))); connect(job, SIGNAL(totalAmount(KJob*,KJob::Unit,qulonglong)), this, SLOT(slotTotalAmount(KJob*,KJob::Unit,qulonglong))); connect(job, SIGNAL(speed(KJob*,ulong)), this, SLOT(slotSpeed(KJob*,ulong))); connect(job, SIGNAL(description(KJob*,QString,QPair,QPair)), this, SLOT(slotDescription(KJob*,QString,QPair,QPair))); } break; case CMD_MAXPROGRESSVALUE: { qulonglong maxValue = event->args()[ 0 ].value(); _maxProgressValue = maxValue; _currentProgress = 0; } break; case CMD_ADD_PROGRESS: { qulonglong progress = event->args()[ 0 ].value(); _currentProgress += progress; if (_maxProgressValue != 0) { setPercent(100 * _currentProgress / _maxProgressValue); int elapsed = _time.isNull() ? 1 : _time.secsTo(QTime::currentTime()); if (elapsed != 0 && event->args().count() > 1) { _time = QTime::currentTime(); QString progressString = (event->args()[ 1 ].value()); emit description(this, _title, qMakePair(progressString, QString("%1/%2").arg(_currentProgress).arg(_maxProgressValue)), qMakePair(QString(), QString()) ); } } } break; case CMD_GET_PASSWORD: { QString path = event->args()[ 0 ].value(); QString password = KRarcHandler::getPassword(path); QList *resultResp = new QList (); (*resultResp) << password; addEventResponse(resultResp); } break; case CMD_MESSAGE: { QString message = event->args()[ 0 ].value(); KIO::JobUiDelegate *ui = static_cast(uiDelegate()); KMessageBox::information(ui ? ui->window() : 0, message); QList *resultResp = new QList (); addEventResponse(resultResp); } break; } return true; } else { return KIO::Job::event(e); } } void AbstractThreadedJob::addEventResponse(QList * obj) { _locker.lock(); _stack.push(obj); _waiter.wakeOne(); _locker.unlock(); } QList * AbstractThreadedJob::getEventResponse(UserEvent * event) { _locker.lock(); QApplication::postEvent(this, event); _waiter.wait(&_locker); if (_exiting) return 0; QList *resp = _stack.pop(); _locker.unlock(); return resp; } void AbstractThreadedJob::sendEvent(UserEvent * event) { QApplication::postEvent(this, event); } void AbstractThreadedJob::slotDownloadResult(KJob* job) { QList *resultResp = new QList (); if (job) { (*resultResp) << QVariant(job->error()); (*resultResp) << QVariant(job->errorText()); } else { (*resultResp) << QVariant(KJob::UserDefinedError); (*resultResp) << QVariant(QString(i18n("Internal error, undefined in result signal"))); } addEventResponse(resultResp); } void AbstractThreadedJob::slotProcessedAmount(KJob *, KJob::Unit unit, qulonglong xu) { setProcessedAmount(unit, xu); } void AbstractThreadedJob::slotTotalAmount(KJob *, KJob::Unit unit, qulonglong xu) { setTotalAmount(unit, xu); } void AbstractThreadedJob::slotSpeed(KJob *, unsigned long spd) { emitSpeed(spd); } void AbstractThreadedJob::slotDescription(KJob *, const QString &title, const QPair &field1, const QPair &field2) { QString mytitle = title; if (!_title.isNull()) mytitle = _title; emit description(this, mytitle, field1, field2); } class AbstractJobObserver : public KRarcObserver { protected: AbstractJobThread * _jobThread; public: explicit AbstractJobObserver(AbstractJobThread * thread): _jobThread(thread) {} virtual ~AbstractJobObserver() {} virtual void processEvents() Q_DECL_OVERRIDE { usleep(1000); qApp->processEvents(); } virtual void subJobStarted(const QString & jobTitle, int count) Q_DECL_OVERRIDE { _jobThread->sendReset(jobTitle); _jobThread->sendMaxProgressValue(count); } virtual void subJobStopped() Q_DECL_OVERRIDE { } virtual bool wasCancelled() Q_DECL_OVERRIDE { return _jobThread->_exited; } virtual void error(const QString & error) Q_DECL_OVERRIDE { _jobThread->sendError(KIO::ERR_NO_CONTENT, error); } virtual void detailedError(const QString & error, const QString & details) Q_DECL_OVERRIDE { _jobThread->sendError(KIO::ERR_NO_CONTENT, error + '\n' + details); } virtual void incrementProgress(int c) Q_DECL_OVERRIDE { _jobThread->sendAddProgress(c, _jobThread->_progressTitle); } }; AbstractJobThread::AbstractJobThread() : _job(0), _downloadTempDir(0), _observer(0), _tempFile(0), _tempDir(0), _exited(false) { } AbstractJobThread::~AbstractJobThread() { if (_downloadTempDir) { delete _downloadTempDir; _downloadTempDir = 0; } if (_observer) { delete _observer; _observer = 0; } if (_tempFile) { delete _tempFile; _tempFile = 0; } } void AbstractJobThread::run() { QTimer::singleShot(0, this, SLOT(slotStart())); QPointer threadLoop = new QEventLoop(this); _loop = threadLoop; threadLoop->exec(); _loop = 0; delete threadLoop; } void AbstractJobThread::terminate() { if (_loop && !_exited) { _loop->quit(); _exited = true; } } void AbstractJobThread::abort() { terminate(); } QList AbstractJobThread::remoteUrls(const QUrl &baseUrl, const QStringList & files) { QList urlList; foreach(const QString &name, files) { QUrl url = baseUrl; url = url.adjusted(QUrl::StripTrailingSlash); url.setPath(url.path() + '/' + (name)); urlList << url; } return urlList; } QUrl AbstractJobThread::downloadIfRemote(const QUrl &baseUrl, const QStringList & files) { // download remote URL-s if necessary if (!baseUrl.isLocalFile()) { sendInfo(i18n("Downloading remote files")); _downloadTempDir = new QTemporaryDir(); QList urlList = remoteUrls(baseUrl, files); QUrl dest(_downloadTempDir->path()); QList args; args << KrServices::toStringList(urlList); args << dest; UserEvent * downloadEvent = new UserEvent(CMD_DOWNLOAD_FILES, args); QList * result = _job->getEventResponse(downloadEvent); if (result == 0) return QUrl(); int errorCode = (*result)[ 0 ].value(); QString errorText = (*result)[ 1 ].value(); delete result; if (errorCode) { sendError(errorCode, errorText); return QUrl(); } else { return dest; } } else { return baseUrl; } } QString AbstractJobThread::tempFileIfRemote(const QUrl &kurl, const QString &type) { if (kurl.isLocalFile()) { return kurl.path(); } _tempFile = new QTemporaryFile(QDir::tempPath() + QLatin1String("/krusader_XXXXXX.") + type); _tempFile->open(); _tempFileName = _tempFile->fileName(); _tempFile->close(); // necessary to create the filename QFile::remove(_tempFileName); _tempFileTarget = kurl; return _tempFileName; } QString AbstractJobThread::tempDirIfRemote(const QUrl &kurl) { if (kurl.isLocalFile()) { return kurl.adjusted(QUrl::StripTrailingSlash).path(); } _tempDir = new QTemporaryDir(); _tempDirTarget = kurl; return _tempDirName = _tempDir->path(); } void AbstractJobThread::sendSuccess() { terminate(); QList args; UserEvent * errorEvent = new UserEvent(CMD_SUCCESS, args); _job->sendEvent(errorEvent); } void AbstractJobThread::sendError(int errorCode, QString message) { terminate(); QList args; args << errorCode; args << message; UserEvent * errorEvent = new UserEvent(CMD_ERROR, args); _job->sendEvent(errorEvent); } void AbstractJobThread::sendInfo(QString message, QString a1, QString a2, QString a3, QString a4) { QList args; args << message; args << a1; args << a2; args << a3; args << a4; UserEvent * infoEvent = new UserEvent(CMD_INFO, args); _job->sendEvent(infoEvent); } void AbstractJobThread::sendReset(QString message, QString a1, QString a2, QString a3, QString a4) { QList args; args << message; args << a1; args << a2; args << a3; args << a4; UserEvent * infoEvent = new UserEvent(CMD_RESET, args); _job->sendEvent(infoEvent); } void AbstractJobThread::sendMaxProgressValue(qulonglong value) { QList args; args << value; UserEvent * infoEvent = new UserEvent(CMD_MAXPROGRESSVALUE, args); _job->sendEvent(infoEvent); } void AbstractJobThread::sendAddProgress(qulonglong value, const QString &progress) { QList args; args << value; if (!progress.isNull()) args << progress; UserEvent * infoEvent = new UserEvent(CMD_ADD_PROGRESS, args); _job->sendEvent(infoEvent); } void countFiles(const QString &path, unsigned long &totalFiles, bool &stop) { const QDir dir(path); if (!dir.exists()) { - totalFiles++; // assume its a file + totalFiles++; // assume it's a file return; } for (const QString name : dir.entryList()) { if (stop) return; if (name == QStringLiteral(".") || name == QStringLiteral("..")) continue; countFiles(dir.absoluteFilePath(name), totalFiles, stop); } } void AbstractJobThread::countLocalFiles(const QUrl &baseUrl, const QStringList &names, unsigned long &totalFiles) { sendReset(i18n("Counting files")); FileSystem *calcSpaceFileSystem = FileSystemProvider::instance().getFilesystem(baseUrl); calcSpaceFileSystem->scanDir(baseUrl); for (const QString name : names) { if (_exited) return; const QString path = calcSpaceFileSystem->getUrl(name).toLocalFile(); if (!QFileInfo(path).exists()) return; countFiles(path, totalFiles, _exited); } delete calcSpaceFileSystem; } KRarcObserver * AbstractJobThread::observer() { if (_observer) return _observer; _observer = new AbstractJobObserver(this); return _observer; } bool AbstractJobThread::uploadTempFiles() { if (_tempFile != 0 || _tempDir != 0) { sendInfo(i18n("Uploading to remote destination")); if (_tempFile) { QList urlList; urlList << QUrl::fromLocalFile(_tempFileName); QList args; args << KrServices::toStringList(urlList); args << _tempFileTarget; UserEvent * uploadEvent = new UserEvent(CMD_UPLOAD_FILES, args); QList * result = _job->getEventResponse(uploadEvent); if (result == 0) return false; int errorCode = (*result)[ 0 ].value(); QString errorText = (*result)[ 1 ].value(); delete result; if (errorCode) { sendError(errorCode, errorText); return false; } } if (_tempDir) { QList urlList; QDir tempDir(_tempDirName); QStringList list = tempDir.entryList(); foreach(const QString &name, list) { if (name == "." || name == "..") continue; QUrl url = QUrl::fromLocalFile(_tempDirName).adjusted(QUrl::StripTrailingSlash); url.setPath(url.path() + '/' + (name)); urlList << url; } QList args; args << KrServices::toStringList(urlList); args << _tempDirTarget; UserEvent * uploadEvent = new UserEvent(CMD_UPLOAD_FILES, args); QList * result = _job->getEventResponse(uploadEvent); if (result == 0) return false; int errorCode = (*result)[ 0 ].value(); QString errorText = (*result)[ 1 ].value(); delete result; if (errorCode) { sendError(errorCode, errorText); return false; } } } return true; } QString AbstractJobThread::getPassword(const QString &path) { QList args; args << path; UserEvent * getPasswdEvent = new UserEvent(CMD_GET_PASSWORD, args); QList * result = _job->getEventResponse(getPasswdEvent); if (result == 0) return QString(); QString password = (*result)[ 0 ].value(); if (password.isNull()) password = QString(""); delete result; return password; } void AbstractJobThread::sendMessage(const QString &message) { QList args; args << message; UserEvent * getPasswdEvent = new UserEvent(CMD_MESSAGE, args); QList * result = _job->getEventResponse(getPasswdEvent); if (result == 0) return; delete result; } //! Gets some archive information that is needed in several cases. /*! \param path A path to the archive. \param type The type of the archive. \param password The password of the archive. \param arcName The name of the archive. \param sourceFolder A QUrl, which may be remote, of the folder where the archive is. \return If the archive information has been obtained. */ bool AbstractJobThread::getArchiveInformation(QString &path, QString &type, QString &password, QString &arcName, const QUrl &sourceFolder) { // Safety checks (though the user shouldn't have been able to select something named "" or "..") if (arcName.isEmpty()) return false; if (arcName == "..") return false; QUrl url = sourceFolder.adjusted(QUrl::StripTrailingSlash); url.setPath(url.path() + '/' + arcName); path = url.adjusted(QUrl::StripTrailingSlash).path(); QMimeDatabase db; QMimeType mt = db.mimeTypeForUrl(url); QString mime = mt.isValid() ? mt.name() : QString(); bool encrypted = false; type = arcHandler.getType(encrypted, path, mime); // Check that the archive is supported if (!KRarcHandler::arcSupported(type)) { sendError(KIO::ERR_NO_CONTENT, i18nc("%1=archive filename", "%1, unsupported archive type.", arcName)); return false; } password = encrypted ? getPassword(path) : QString(); return true; } diff --git a/krusader/FileSystem/filesystem.cpp b/krusader/FileSystem/filesystem.cpp index d77329e0..840eb74f 100644 --- a/krusader/FileSystem/filesystem.cpp +++ b/krusader/FileSystem/filesystem.cpp @@ -1,334 +1,334 @@ /***************************************************************************** * Copyright (C) 2000 Shie Erlich * * Copyright (C) 2000 Rafi Yanai * * Copyright (C) 2004-2018 Krusader Krew [https://krusader.org] * * * * This file is part of Krusader [https://krusader.org]. * * * * Krusader 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. * * * * Krusader is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with Krusader. If not, see [http://www.gnu.org/licenses/]. * *****************************************************************************/ #include #include "filesystem.h" // QtCore #include #include #include // QtWidgets #include #include #include #include #include "fileitem.h" #include "krpermhandler.h" #include "../defaults.h" #include "../krglobal.h" #include "../JobMan/jobman.h" #include "../JobMan/krjob.h" FileSystem::FileSystem() : DirListerInterface(0), _isRefreshing(false) {} FileSystem::~FileSystem() { clear(_fileItems); // please don't remove this line. This informs the view about deleting the file items. emit cleared(); } QList FileSystem::getUrls(const QStringList &names) const { QList urls; for (const QString name : names) { urls.append(getUrl(name)); } return urls; } FileItem *FileSystem::getFileItem(const QString &name) const { return _fileItems.contains(name) ? _fileItems.value(name) : 0; } KIO::filesize_t FileSystem::totalSize() const { KIO::filesize_t temp = 0; for (FileItem *item : _fileItems.values()) { if (!item->isDir() && item->getName() != "." && item->getName() != "..") { temp += item->getSize(); } } return temp; } QUrl FileSystem::ensureTrailingSlash(const QUrl &url) { if (url.path().endsWith('/')) { return url; } QUrl adjustedUrl(url); adjustedUrl.setPath(adjustedUrl.path() + '/'); return adjustedUrl; } QUrl FileSystem::preferLocalUrl(const QUrl &url){ if (url.isEmpty() || !url.scheme().isEmpty()) return url; QUrl adjustedUrl = url; adjustedUrl.setScheme("file"); return adjustedUrl; } bool FileSystem::scanOrRefresh(const QUrl &directory, bool onlyScan) { qDebug() << "from current dir=" << _currentDirectory.toDisplayString() << "; to=" << directory.toDisplayString(); if (_isRefreshing) { // NOTE: this does not happen (unless async)"; return false; } // workaround for krarc: find out if transition to local fs is wanted and adjust URL manually QUrl url = directory; if (_currentDirectory.scheme() == "krarc" && url.scheme() == "krarc" && QDir(url.path()).exists()) { url.setScheme("file"); } const bool dirChange = !url.isEmpty() && cleanUrl(url) != _currentDirectory; const QUrl toRefresh = dirChange ? url.adjusted(QUrl::NormalizePathSegments) : _currentDirectory; if (!toRefresh.isValid()) { emit error(i18n("Malformed URL:\n%1", toRefresh.toDisplayString())); return false; } _isRefreshing = true; FileItemDict tempFileItems(_fileItems); // old file items are still used during refresh _fileItems.clear(); if (dirChange) // show an empty directory while loading the new one and clear selection emit cleared(); const bool refreshed = refreshInternal(toRefresh, onlyScan); _isRefreshing = false; if (!refreshed) { // cleanup and abort if (!dirChange) emit cleared(); clear(tempFileItems); return false; } emit scanDone(dirChange); clear(tempFileItems); updateFilesystemInfo(); return true; } void FileSystem::deleteFiles(const QList &urls, bool moveToTrash) { KrJob *krJob = KrJob::createDeleteJob(urls, moveToTrash); connect(krJob, &KrJob::started, this, [=](KIO::Job *job) { connectJobToSources(job, urls); }); if (moveToTrash) { // update destination: the trash bin (in case a panel/tab is showing it) connect(krJob, &KrJob::started, this, [=](KIO::Job *job) { - // Note: the "trash" protocal should always have only one "/" after the "scheme:" part + // Note: the "trash" protocol should always have only one "/" after the "scheme:" part connect(job, &KIO::Job::result, this, [=]() { emit fileSystemChanged(QUrl("trash:/"), false); }); }); } krJobMan->manageJob(krJob); } void FileSystem::connectJobToSources(KJob *job, const QList urls) { if (!urls.isEmpty()) { // TODO we assume that all files were in the same directory and only emit one signal for // the directory of the first file URL (all subdirectories of parent are notified) const QUrl url = urls.first().adjusted(QUrl::RemoveFilename); connect(job, &KIO::Job::result, this, [=]() { emit fileSystemChanged(url, true); }); } } void FileSystem::connectJobToDestination(KJob *job, const QUrl &destination) { connect(job, &KIO::Job::result, this, [=]() { emit fileSystemChanged(destination, false); }); // (additional) direct refresh if on local fs because watcher is too slow const bool refresh = cleanUrl(destination) == _currentDirectory && isLocal(); connect(job, &KIO::Job::result, this, [=](KJob* job) { slotJobResult(job, refresh); }); } bool FileSystem::showHiddenFiles() { const KConfigGroup gl(krConfig, "Look&Feel"); return gl.readEntry("Show Hidden", _ShowHidden); } void FileSystem::addFileItem(FileItem *item) { _fileItems.insert(item->getName(), item); } FileItem *FileSystem::createLocalFileItem(const QString &name, const QString &directory, bool virt) { const QDir dir = QDir(directory); const QString path = dir.filePath(name); const QByteArray pathByteArray = path.toLocal8Bit(); const QString fileItemName = virt ? path : name; const QUrl fileItemUrl = QUrl::fromLocalFile(path); // read file status; in case of error create a "broken" file item QT_STATBUF stat_p; memset(&stat_p, 0, sizeof(stat_p)); if (QT_LSTAT(pathByteArray.data(), &stat_p) < 0) return FileItem::createBroken(fileItemName, fileItemUrl); const KIO::filesize_t size = stat_p.st_size; bool isDir = S_ISDIR(stat_p.st_mode); const bool isLink = S_ISLNK(stat_p.st_mode); // for links, read link destination and determine whether it's broken or not QString linkDestination; bool brokenLink = false; if (isLink) { linkDestination = readLinkSafely(pathByteArray.data()); if (linkDestination.isNull()) { brokenLink = true; } else { const QFileInfo linkFile(dir, linkDestination); if (!linkFile.exists()) brokenLink = true; else if (linkFile.isDir()) isDir = true; } } // create normal file item return new FileItem(fileItemName, fileItemUrl, isDir, size, stat_p.st_mode, stat_p.st_mtime, stat_p.st_ctime, stat_p.st_atime, stat_p.st_uid, stat_p.st_gid, QString(), QString(), isLink, linkDestination, brokenLink); } QString FileSystem::readLinkSafely(const char *path) { // inspired by the areadlink_with_size function from gnulib, which is used for coreutils // idea: start with a small buffer and gradually increase it as we discover it wasn't enough QT_OFF_T bufferSize = 1024; // start with 1 KiB QT_OFF_T maxBufferSize = std::numeric_limits::max(); while (true) { // try to read the link std::unique_ptr buffer(new char[bufferSize]); auto nBytesRead = readlink(path, buffer.get(), bufferSize); // should never happen, asserted by the readlink if (nBytesRead > bufferSize) { return QString(); } // read failure if (nBytesRead < 0) { qDebug() << "Failed to read the link " << path; return QString(); } // read success if (nBytesRead < bufferSize || nBytesRead == maxBufferSize) { return QString::fromLocal8Bit(buffer.get(), nBytesRead); } // increase the buffer and retry again // bufferSize < maxBufferSize is implied from previous checks if (bufferSize <= maxBufferSize / 2) { bufferSize *= 2; } else { bufferSize = maxBufferSize; } } } FileItem *FileSystem::createFileItemFromKIO(const KIO::UDSEntry &entry, const QUrl &directory, bool virt) { const KFileItem kfi(entry, directory, true, true); const QString name = kfi.text(); // ignore un-needed entries if (name.isEmpty() || name == "." || name == "..") { return 0; } const QString localPath = kfi.localPath(); const QUrl url = !localPath.isEmpty() ? QUrl::fromLocalFile(localPath) : kfi.url(); const QString fname = virt ? url.toDisplayString() : name; // get file statistics... const time_t mtime = kfi.time(KFileItem::ModificationTime).toTime_t(); const time_t ctime = kfi.time(KFileItem::CreationTime).toTime_t(); // "Creation"? its "Changed" const time_t atime = kfi.time(KFileItem::AccessTime).toTime_t(); const mode_t mode = kfi.mode() | kfi.permissions(); // NOTE: we could get the mimetype (and file icon) from the kfileitem here but this is very // slow. Instead, the file item class has it's own (faster) way to determine the file type. // NOTE: "broken link" flag is always false, checking link destination existence is // considered to be too expensive return new FileItem(fname, url, kfi.isDir(), kfi.size(), mode, mtime, ctime, atime, (uid_t) -1, (gid_t) -1, kfi.user(), kfi.group(), kfi.isLink(), kfi.linkDest(), false, kfi.ACL().asString(), kfi.defaultACL().asString()); } void FileSystem::slotJobResult(KJob *job, bool refresh) { if (job->error() && job->uiDelegate()) { // show errors for modifying operations as popup (works always) job->uiDelegate()->showErrorMessage(); } if (refresh) { FileSystem::refresh(); } } void FileSystem::clear(FileItemDict &fileItems) { QHashIterator lit(fileItems); while (lit.hasNext()) { delete lit.next().value(); } fileItems.clear(); } diff --git a/krusader/GUI/terminaldock.cpp b/krusader/GUI/terminaldock.cpp index 0a7783b5..39f15ba3 100644 --- a/krusader/GUI/terminaldock.cpp +++ b/krusader/GUI/terminaldock.cpp @@ -1,289 +1,289 @@ /***************************************************************************** * Copyright (C) 2008 Václav Juza * * Copyright (C) 2008-2018 Krusader Krew [https://krusader.org] * * * * This file is part of Krusader [https://krusader.org]. * * * * Krusader 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. * * * * Krusader is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with Krusader. If not, see [http://www.gnu.org/licenses/]. * *****************************************************************************/ #include "terminaldock.h" // QtCore #include #include #include #include #include #include // QtGui #include #include // QtWidgets #include #include #include #include #include #include #include #include #include #include #include "kcmdline.h" #include "../kractions.h" #include "../krmainwindow.h" #include "../krservices.h" #include "../krslots.h" #include "../krusaderview.h" #include "../FileSystem/filesystem.h" #include "../Panel/PanelView/krview.h" #include "../Panel/listpanel.h" #include "../Panel/listpanelactions.h" #include "../Panel/panelfunc.h" /** * A widget containing the konsolepart for the Embedded terminal emulator */ TerminalDock::TerminalDock(QWidget* parent, KrMainWindow *mainWindow) : QWidget(parent), _mainWindow(mainWindow), konsole_part(0), t(0), initialised(false), firstInput(true) { terminal_hbox = new QHBoxLayout(this); } TerminalDock::~TerminalDock() { } bool TerminalDock::initialise() { if (! initialised) { // konsole part is not yet loaded or it has already failed KService::Ptr service = KService::serviceByDesktopName("konsolepart"); if (service) { QWidget *focusW = qApp->focusWidget(); // Create the part QString error; konsole_part = service->createInstance(this, this, QVariantList(), &error); if (konsole_part) { //loaded successfully terminal_hbox->addWidget(konsole_part->widget()); setFocusProxy(konsole_part->widget()); connect(konsole_part, &KParts::ReadOnlyPart::destroyed, this, &TerminalDock::killTerminalEmulator); // must filter app events, because some of them are processed // by child widgets of konsole_part->widget() // and would not be received on konsole_part->widget() qApp->installEventFilter(this); t = qobject_cast(konsole_part); if (t) { lastPath = QDir::currentPath(); t->showShellInDir(lastPath); } initialised = true; firstInput = true; } else KMessageBox::error(0, i18n("Cannot create embedded terminal.
" "The reported error was: %1", error)); // the Terminal Emulator may be hidden (if we are creating it only // to send command there and see the results later) if (focusW) { focusW->setFocus(); } else { ACTIVE_PANEL->gui->slotFocusOnMe(); } } else KMessageBox::sorry(0, i18nc("missing program - arg1 is a URL", "Cannot create embedded terminal.
" "You can fix this by installing Konsole:
%1", QString("%1").arg( "http://www.kde.org/applications/system/konsole")), 0, KMessageBox::AllowLink); } return isInitialised(); } void TerminalDock::killTerminalEmulator() { qDebug() << "killed"; initialised = false; konsole_part = NULL; t = NULL; qApp->removeEventFilter(this); MAIN_VIEW->setTerminalEmulator(false); } void TerminalDock::sendInput(const QString& input, bool clearCommand) { if (!t) return; if (clearCommand) { // send SIGINT before input command to avoid unwanted behaviour when current line is not empty // and command is appended to current input (e.g. "rm -rf x " concatenated with 'cd /usr'); // code "borrowed" from Dolphin, Copyright (C) 2007-2010 by Peter Penz const int processId = t->terminalProcessId(); - // workaround (firstInput): kill is send to terminal if shell is not initialized yet + // workaround (firstInput): kill is sent to terminal if shell is not initialized yet if (processId > 0 && !firstInput) { kill(processId, SIGINT); } } firstInput = false; t->sendInput(input); } /*! Sends a `cd` command to the embedded terminal emulator so as to synchronize the directory of the actual panel and the directory of the embedded terminal emulator. To avoid that Krusader's embedded terminal adds a lot of `cd` messages to the shell history: the user has to use bash and have set `HISTCONTROL=ignorespace` or `HISTCONTROL=ignoreboth` (which is the default in a lot of Linux distributions so in that case the user hasn't got to do anything), or the user has to use an equivalent method. */ void TerminalDock::sendCd(const QString& path) { if (path.compare(lastPath) != 0) { // A space exists in front of the `cd` so as to avoid that Krusader's embedded terminal adds a lot of `cd` // messages to the shell history, in Dolphin it's done the same way: https://bugs.kde.org/show_bug.cgi?id=204039 sendInput(QString(" cd ") + KrServices::quote(path) + QString("\n")); lastPath = path; } } bool TerminalDock::applyShortcuts(QKeyEvent * ke) { int pressedKey = (ke->key() | ke->modifiers()); // TODO KF5 removed if (KrActions::actToggleTerminal->shortcut().matches(pressedKey)) { KrActions::actToggleTerminal->activate(QAction::Trigger); return true; } if (!krSwitchFullScreenTE->shortcut().isEmpty() && krSwitchFullScreenTE->shortcut().matches(pressedKey)) { krSwitchFullScreenTE->activate(QAction::Trigger); return true; } if (_mainWindow->listPanelActions()->actPaste->shortcut().matches(pressedKey)) { QString text = QApplication::clipboard()->text(); if (! text.isEmpty()) { text.replace('\n', '\r'); sendInput(text, false); } return true; } //insert current to the terminal if ((ke->key() == Qt::Key_Enter || ke->key() == Qt::Key_Return) && (ke->modifiers() & Qt::ControlModifier)) { SLOTS->insertFileName((ke->modifiers() & Qt::ShiftModifier) != 0); return true; } //navigation if ((ke->key() == Qt::Key_Down) && (ke->modifiers() == Qt::ControlModifier)) { if (MAIN_VIEW->cmdLine()->isVisible()) { MAIN_VIEW->cmdLine()->setFocus(); } return true; } else if ((ke->key() == Qt::Key_Up) && ((ke->modifiers() == Qt::ControlModifier) || (ke->modifiers() == (Qt::ControlModifier | Qt::ShiftModifier)))) { ACTIVE_PANEL->gui->slotFocusOnMe(); return true; } return false; } bool TerminalDock::eventFilter(QObject * watched, QEvent * e) { if (konsole_part == NULL || konsole_part->widget() == NULL) return false; // we must watch for child widgets as well, // otherwise some shortcuts are "eaten" by them before // being procesed in konsole_part->widget() context // examples are Ctrl+F, Ctrl+Enter QObject *w; for (w = watched; w != NULL; w = w->parent()) if (w == konsole_part->widget()) break; if (w == NULL) // is not a child of konsole_part return false; switch (e->type()) { case QEvent::ShortcutOverride: { QKeyEvent *ke = (QKeyEvent *)e; // If not present, some keys would be considered a shortcut, for example "a" if ((ke->key() == Qt::Key_Insert) && (ke->modifiers() == Qt::ShiftModifier)) { ke->accept(); return true; } if ((ke->modifiers() == Qt::NoModifier || ke->modifiers() == Qt::ShiftModifier) && (ke->key() >= 32) && (ke->key() <= 127)) { ke->accept(); return true; } break; } case QEvent::KeyPress: { QKeyEvent *ke = (QKeyEvent *)e; if (applyShortcuts(ke)) { ke->accept(); return true; } break; } default: return false; } return false; } bool TerminalDock::isTerminalVisible() const { return isVisible() && konsole_part != NULL && konsole_part->widget() != NULL && konsole_part->widget()->isVisible(); } bool TerminalDock::isInitialised() const { return konsole_part != NULL && konsole_part->widget() != NULL; } void TerminalDock::hideEvent(QHideEvent * /*e*/) { // BUGFIX: when the terminal emulator is toggled on, first it is shown in minimum size // then QSplitter resizes it to the desired size. // this minimum resize scrolls up the content of the konsole widget // SOLUTION: // we hide the console widget while the resize ceremony happens, then reenable it if (konsole_part && konsole_part->widget()) konsole_part->widget()->hide(); // hide the widget to prevent from resize } void TerminalDock::showEvent(QShowEvent * /*e*/) { if (konsole_part && konsole_part->widget()) { // BUGFIX: TE scrolling bug (see upper) // show the Konsole part delayed QTimer::singleShot(0, konsole_part->widget(), SLOT(show())); } }