You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
802 lines
20 KiB
802 lines
20 KiB
/***************************************************************************
|
|
ksquirrel.h - description
|
|
-------------------
|
|
begin : Dec 10 2003
|
|
copyright : (C) 2003 by Baryshev Dmitry
|
|
email : ksquirrel.iv@gmail.com
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#ifndef KSQUIRREL_H
|
|
#define KSQUIRREL_H
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
#include <tqstringlist.h>
|
|
#include <tqmap.h>
|
|
|
|
#include <tdemainwindow.h>
|
|
#include <dcopobject.h>
|
|
#include <tdefileitem.h>
|
|
#include <kurl.h>
|
|
|
|
// forward declarations
|
|
|
|
template <class T> class TQValueVector;
|
|
class TQLabel;
|
|
class TQWidgetStack;
|
|
class TQHBox;
|
|
class TQVBox;
|
|
class TQTimer;
|
|
class TQSplitter;
|
|
|
|
namespace TDEIO { class Job; }
|
|
|
|
class KMenuBar;
|
|
class TDEToolBar;
|
|
class KStatusBar;
|
|
class KSystemTray;
|
|
class TDEAction;
|
|
class TDERadioAction;
|
|
class TDEActionMenu;
|
|
class KHistoryCombo;
|
|
class TDEToggleAction;
|
|
class KBookmarkMenu;
|
|
|
|
class SQ_SplashScreen;
|
|
class SQ_WidgetStack;
|
|
class SQ_LibraryHandler;
|
|
class SQ_Config;
|
|
class SQ_ExternalTool;
|
|
class SQ_TreeView;
|
|
class SQ_ThumbnailSize;
|
|
class SQ_PixmapCache;
|
|
class SQ_GLView;
|
|
class SQ_GLWidget;
|
|
class SQ_ArchiveHandler;
|
|
class SQ_MultiBar;
|
|
class SQ_KIPIManager;
|
|
class SQ_Progress;
|
|
class SQ_Dir;
|
|
class SQ_Downloader;
|
|
class SQ_SlideShowListing;
|
|
|
|
/*
|
|
* Main widget, which can accept DCOP messages
|
|
*/
|
|
|
|
class KSquirrel : public TDEMainWindow, public DCOPObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
/*
|
|
* Constructor & destructor
|
|
*/
|
|
KSquirrel(TQWidget *parent, const char *name);
|
|
~KSquirrel();
|
|
|
|
SQ_Progress* diskProgress();
|
|
|
|
void printDCOP();
|
|
|
|
/*
|
|
* "history combo"
|
|
*/
|
|
KHistoryCombo* historyCombo();
|
|
|
|
bool demo() const;
|
|
|
|
/*
|
|
* Activate main window.
|
|
*/
|
|
void activate();
|
|
|
|
/*
|
|
* Close (hide) SQ_GLWidget.
|
|
*/
|
|
void closeGLWidget();
|
|
|
|
/*
|
|
* Do some actions before exit - show final splash (if needed),
|
|
* save parameters to config file,
|
|
* write config file to disk, write cached thumbnails, etc.
|
|
*/
|
|
void finalActions();
|
|
|
|
/*
|
|
* Enable/disable popup menu with thumnail sizes. Called
|
|
* from SQ_WidgetStack, when user changed current view
|
|
* type (for example Thumbnail view -> Icon view).
|
|
*/
|
|
void enableThumbsMenu(bool);
|
|
|
|
/*
|
|
* Set caption. When SQ_GLView is separated, the caption
|
|
* will be set to it, and to KSquirrel's main window
|
|
* otherwise. Called from SQ_GLWidget.
|
|
*/
|
|
void setCaption(const TQString &cap);
|
|
|
|
void saveLayout();
|
|
|
|
/*
|
|
* Check if slideshow is running.
|
|
*/
|
|
bool slideShowRunning() const;
|
|
|
|
/*
|
|
* Return popup menu with filters for filemanager.
|
|
*/
|
|
TDEPopupMenu* menuFilters();
|
|
|
|
/*
|
|
* Return popup menu with view types -
|
|
* Icon view, Detail view ...
|
|
*/
|
|
TDEPopupMenu* menuViews();
|
|
|
|
/*
|
|
* Get pointer to a widget, located in status bar.
|
|
* All pointers to statusbar widgets are saved in
|
|
* 'sbarwidgets' object (TQMap).
|
|
*/
|
|
TQLabel* sbarWidget(const TQString &name);
|
|
|
|
/*
|
|
* DCOP methods
|
|
*/
|
|
|
|
/*
|
|
* Return a list of available functions
|
|
*/
|
|
QCStringList functions();
|
|
|
|
/*
|
|
* Process incoming DCOP message
|
|
*/
|
|
bool process(const TQCString &fun, const TQByteArray &data, TQCString& replyType, TQByteArray &replyData);
|
|
|
|
bool separateImageWindow() const;
|
|
|
|
/*
|
|
* Names and extensions of name filters for
|
|
* file manager.
|
|
*/
|
|
TQStringList* filtersNames() const;
|
|
TQStringList* filtersExtensions() const;
|
|
|
|
static KSquirrel* app() { return m_instance; }
|
|
|
|
protected:
|
|
/*
|
|
* Catch some events and do specific actions.
|
|
*/
|
|
virtual bool eventFilter(TQObject *o, TQEvent *e);
|
|
virtual void closeEvent(TQCloseEvent *e);
|
|
virtual void resizeEvent(TQResizeEvent *e);
|
|
|
|
/*
|
|
* Internal methods
|
|
*/
|
|
private:
|
|
|
|
// create or delete animated logo
|
|
void configAnime(bool init = true);
|
|
|
|
void continueLoading();
|
|
|
|
/*
|
|
* Create a final splash. It will be shown only if SQ_PixmapCache
|
|
* is not empty.
|
|
*/
|
|
void createPostSplash();
|
|
|
|
/*
|
|
* Create location toolbar and store a pointer to
|
|
* it in passed argument.
|
|
*/
|
|
void createLocationToolbar(TDEToolBar *);
|
|
|
|
/*
|
|
* Create statusbar.
|
|
*/
|
|
void createStatusBar(KStatusBar*);
|
|
|
|
/*
|
|
* Create main toolbar.
|
|
*/
|
|
void createToolbar(TDEToolBar *);
|
|
|
|
/*
|
|
* Create main menu.
|
|
*/
|
|
void createMenu(KMenuBar *);
|
|
|
|
/*
|
|
* Create all TDEActions
|
|
*/
|
|
void createActions();
|
|
|
|
/*
|
|
* Create all needed objects
|
|
*/
|
|
void preCreate();
|
|
|
|
/*
|
|
* Create TQStrinLists, containing filters and filters' names (if needed)
|
|
* and fill popup menu with new filters.
|
|
*/
|
|
void initFilterMenu();
|
|
|
|
/*
|
|
* Do the same for external tools.
|
|
*/
|
|
void initExternalTools();
|
|
|
|
/*
|
|
* Init bookmarks and create popup menu for them.
|
|
*/
|
|
void initBookmarks();
|
|
|
|
/*
|
|
* Create all widgets (filemanager, file tree, toolbar, etc.)
|
|
*/
|
|
void createWidgets(int);
|
|
|
|
/*
|
|
* Restore saved position & size
|
|
*/
|
|
void handlePositionSize();
|
|
|
|
/*
|
|
* If user-depended config file doesn't exist (~/.trinity/share/config/ksquirrelrc),
|
|
* create it and write default entries. Called before SQ_Config object is being
|
|
* created
|
|
*/
|
|
void writeDefaultEntries();
|
|
|
|
/*
|
|
* Fill all parameters with its default values (form config
|
|
* file). Affects to clicking policy in SQ_WidgetStack,
|
|
* cache limit in SQ_PixmapCache etc.
|
|
*/
|
|
void applyDefaultSettings();
|
|
|
|
/*
|
|
* Save all parameters to config file before exit.
|
|
*/
|
|
void saveValues();
|
|
|
|
/*
|
|
* Open image and/or change current directory
|
|
* to its URL. Called when user clicks "Open file" and
|
|
* "Open file #2" in main menu.
|
|
*/
|
|
void openFile(bool parseURL = false);
|
|
|
|
/*
|
|
* Run slideshow
|
|
*/
|
|
void slideShowPrivate();
|
|
|
|
/*
|
|
* Set filter for a filemanager to 'f' and check
|
|
* appropriate menu item
|
|
*/
|
|
void setFilter(const TQString &f, const int id);
|
|
|
|
/*
|
|
* Fill 'messages' map with values. 'messages' map is used
|
|
* to determine which key sequence should KSquirrel pass to SQ_GLWidget
|
|
* to perform an action, needed by DCOP client.
|
|
*/
|
|
void fillMessages();
|
|
|
|
/*
|
|
* DCOP helper methods
|
|
*/
|
|
|
|
/*
|
|
* Determine the incoming DCOP message, create appropriate
|
|
* key sequence and send this sequence to SQ_GLWidget.
|
|
*
|
|
* The main idea is that KSquirrel will find needed key sequence
|
|
* by its name (in 'messages' map), costruct TQKeyEvent and send to
|
|
* SQ_GLWidget. SQ_GLWidget already has keyEvent() handler, so it will
|
|
* do what DCOP client wants.
|
|
*
|
|
* For example,
|
|
*
|
|
* $ dcop ksquirrel ksquirrel control image_next
|
|
*
|
|
* will call KSquirrel::control("image_next"), which will
|
|
* construct TQKeyEvent(TQEvent::KeyPress, TQt::Key_PageDown,
|
|
* TQt::Key_PageDown, Qt::NoButton)
|
|
* and send it to SQ_GLWidget. SQ_GLWidget will catch keypress event,
|
|
* and load next image in the current directory.
|
|
*/
|
|
void control(const TQString &command);
|
|
|
|
/*
|
|
* Send a message to navigator from incoming DCOP message
|
|
*/
|
|
void navigatorSend(const TQString &command);
|
|
|
|
/*
|
|
* Get TQString argument from incoming TQByteArray.
|
|
*/
|
|
TQString getArg(const TQByteArray &data);
|
|
|
|
signals:
|
|
|
|
/*
|
|
* emitted, when user chages thumbails' size (from menu).
|
|
*/
|
|
void thumbSizeChanged(const TQString&);
|
|
|
|
void resetToolTip();
|
|
|
|
public slots:
|
|
|
|
/*
|
|
* Show SQ_GLWidget.
|
|
*/
|
|
void raiseGLWidget();
|
|
|
|
/*
|
|
* Switch fullscreen state of SQ_GLView.
|
|
*/
|
|
void slotFullScreen(bool full);
|
|
|
|
/*
|
|
* Stop slideshow, if running.
|
|
*/
|
|
void slotStopSlideShow();
|
|
|
|
/*
|
|
* Pause or unpause slideshow, if running.
|
|
*/
|
|
void slotPauseSlideShow();
|
|
|
|
/*
|
|
* Load next or previuos file in slideshow sequence
|
|
* without waiting. (coming from SQ_SlideshowWidget's toolbar)
|
|
*/
|
|
void slotNextSlideShow();
|
|
void slotPreviousSlideShow();
|
|
|
|
private slots:
|
|
|
|
void slotStatResult(TDEIO::Job *job);
|
|
void slotDCOPStatResult(TDEIO::Job *job);
|
|
|
|
void slotPreviewWidgetNext();
|
|
void slotPreviewWidgetPrevious();
|
|
void slotPreviewWidgetExecute();
|
|
|
|
void slotSaveYourself();
|
|
void slotRename();
|
|
void slotRenameResult(TDEIO::Job *);
|
|
void slotExtendedToggled(bool);
|
|
void slotTrayQuit();
|
|
void slotClose();
|
|
|
|
void slotRepeat();
|
|
|
|
/*
|
|
* Reload disk usage information
|
|
*/
|
|
void slotFireDisk();
|
|
|
|
/*
|
|
* Deetrmine next supported image in slideshow
|
|
*/
|
|
void slideShowDetermine();
|
|
|
|
/*
|
|
* Non-local file downloaded (for slideshow)
|
|
*/
|
|
void slotDownloaderResult(const KURL &);
|
|
|
|
/*
|
|
* Got new urls while listing directory for slideshow
|
|
*/
|
|
void slotSlideShowEntries(TDEIO::Job *, const TDEIO::UDSEntryList &);
|
|
|
|
/*
|
|
* Directory listed for slideshow
|
|
*/
|
|
void slotSlideShowJobResult(TDEIO::Job *);
|
|
|
|
void slotSlideShowListingKill();
|
|
|
|
/*
|
|
* Invoke 'Options' dialog.
|
|
*/
|
|
void slotOptions();
|
|
|
|
/*
|
|
* Invoke 'Filters' dialog.
|
|
*/
|
|
void slotFilters();
|
|
|
|
/*
|
|
* Invoke 'External tools' dialog.
|
|
*/
|
|
void slotExtTools();
|
|
|
|
/*
|
|
* Raise list view in filemanager.
|
|
*/
|
|
void slotRaiseListView();
|
|
|
|
/*
|
|
* Raise icon view in filemanager.
|
|
*/
|
|
void slotRaiseIconView();
|
|
|
|
/*
|
|
* Raise detail view in filemanager.
|
|
*/
|
|
void slotRaiseDetailView();
|
|
|
|
/*
|
|
* Raise thumbnail view in filemanager.
|
|
*/
|
|
void slotRaiseThumbView();
|
|
|
|
/*
|
|
* Invoked, when user clicked "Go" button in location toolbar.
|
|
*/
|
|
void slotGo();
|
|
|
|
/*
|
|
* Invoked, when user selected to filter for filemanager.
|
|
*/
|
|
void slotSetFilter(int);
|
|
|
|
/*
|
|
* Invoked, when user clicked "Go to tray".
|
|
*/
|
|
void slotGotoTray();
|
|
|
|
/*
|
|
* Next four slots will be called, when user selected
|
|
* subitem in 'Thumbnail size' menu.
|
|
*/
|
|
void slotThumbsMedium();
|
|
void slotThumbsLarge();
|
|
void slotThumbsHuge();
|
|
|
|
/*
|
|
* Invoked, when user clicked "Open file" button.
|
|
*/
|
|
void slotOpenFile();
|
|
|
|
/*
|
|
* Invoked, when user clicked "Open file #2" button.
|
|
* This slot will decode selected image, and change
|
|
* current directory.
|
|
*/
|
|
void slotOpenFileAndSet();
|
|
|
|
/*
|
|
* Invoked, when user clicked an animated logo in toolbar.
|
|
* This slot will open KSquirrel's homepage with default browser.
|
|
*/
|
|
void slotAnimatedClicked();
|
|
|
|
/*
|
|
* Invokes a dialog with specific thumbnails actions:
|
|
* delete thumbnails on disk, show thumbnails on disk, ...
|
|
*/
|
|
void slotTCMaster();
|
|
|
|
/*
|
|
* Invoked, when user clicked "Slideshow through dialog".
|
|
* Creates SQ_SlideShow dialog.
|
|
*/
|
|
void slotSlideShowDialog();
|
|
|
|
/*
|
|
* Determine the next image, which should be shown in slideshow.
|
|
*/
|
|
void slotSlideShowNextImage();
|
|
|
|
/*
|
|
* Invoked, when user presses slideshow button.
|
|
* Will stop or run slideshow.
|
|
*/
|
|
void slotSlideShowStart();
|
|
|
|
/*
|
|
* Invoked, when user clicked "Plugins information" button.
|
|
* Creates a dialog with information on all found libraries
|
|
*/
|
|
void slotPluginsInfo();
|
|
void slotPluginsDel();
|
|
|
|
/*
|
|
* Invoked, when user clicked "OpenGL information" button.
|
|
*/
|
|
void slotGLInfo();
|
|
|
|
/*
|
|
* Convinience slot.
|
|
* Reload libraries from disk.
|
|
*/
|
|
void slotRescan();
|
|
|
|
private:
|
|
static KSquirrel *m_instance;
|
|
|
|
bool m_demo;
|
|
|
|
TDEToggleAction *pAThumbsE;
|
|
|
|
// main toolbar
|
|
TDEToolBar *tools;
|
|
|
|
//main menu
|
|
KMenuBar *menubar;
|
|
|
|
// different views (Icon view, List view ...)
|
|
TDERadioAction *pARaiseListView, *pARaiseIconView, *pARaiseDetailView, *pARaiseThumbView;
|
|
|
|
// popup menu with thumbnail sizes
|
|
TDEActionMenu *pAThumbs;
|
|
|
|
// thumbnail sizes (small, normal, ...)
|
|
TDERadioAction *pAThumb0, *pAThumb1, *pAThumb2, *pAThumb3;
|
|
|
|
// show/hide url box
|
|
TDEToggleAction *pAURL;
|
|
|
|
// popup menus: "File", "View" ...
|
|
TDEPopupMenu *pop_file, *pop_view, *pop_action, *pop_nav;
|
|
|
|
// filters and views
|
|
TDEPopupMenu *actionFilterMenu, *actionViews;
|
|
|
|
// menus with bookmarks
|
|
TDEActionMenu *bookmarks;
|
|
KBookmarkMenu *bookmarkMenu;
|
|
|
|
// "Open file", "open file #2"
|
|
TDEAction *pAOpen, *pAOpenAndSet,
|
|
|
|
*pARename,
|
|
|
|
// Open "SQ_ThumbnailCacheMaster"
|
|
*pATCMaster,
|
|
|
|
// Show image window
|
|
*pAGLView,
|
|
|
|
// Exit
|
|
*pAExit,
|
|
|
|
// Reload libraries from disk (from /usr/lib/ksquirrel-libs)
|
|
*pARescan,
|
|
|
|
// External tool and filters
|
|
*pAExtTools, *pAFilters,
|
|
|
|
// Goto tray
|
|
*pAGotoTray,
|
|
|
|
// Dialog for advanced slideshow
|
|
*pASlideShowDialog,
|
|
|
|
// OpenGL information
|
|
*pAGLInfo,
|
|
|
|
// Plugins information
|
|
*pAPluginsInfo,
|
|
*pAPluginsDel;
|
|
|
|
// Main statusbar
|
|
KStatusBar *sbar;
|
|
|
|
// contains paths of found libraries
|
|
TQStringList strlibFound;
|
|
|
|
// sizes for mainSplitter
|
|
TQValueList<int> mainSizes;
|
|
|
|
// libraries' filters
|
|
TQStringList libFilters;
|
|
|
|
// TQMap, which contains pointers to statusbar widgets.
|
|
// I can get a pointer by widget's name.
|
|
//
|
|
// For example:
|
|
//
|
|
// KSquirrel::app()->sbarWidget("fileName")->setText("Filename.txt");
|
|
//
|
|
TQMap<TQString, TQLabel*> sbarwidgets;
|
|
|
|
// TQLabels for statusbar
|
|
TQLabel *dirInfo, *fileIcon, *fileName, *diskSpace;
|
|
|
|
// TQMap, which contains available DCOP
|
|
// parameters (such as "image_next", "image_prev")
|
|
// and its appropriate key sequences.
|
|
//
|
|
// For example, "image_next" is mapped to TQt::Key_PageDown
|
|
// "image_prev" - to "TQt::Key_PageUp"
|
|
TQMap<TQString, int> messages;
|
|
|
|
// combobox with history urls
|
|
KHistoryCombo *pCurrentURL;
|
|
|
|
// filters' names and extensions
|
|
TQStringList *sqFiltersName, *sqFiltersExt;
|
|
|
|
// "Configure KSquirrel"
|
|
TDEAction *pAConfigure,
|
|
|
|
// "Select group", "Deselect group", "Select all", "Deselect"
|
|
// actions for filemanager
|
|
*pASelectGroup, *pADeselectGroup, *pASelectAll, *pADeselectAll;
|
|
|
|
// "Slideshow"
|
|
TDEAction *pASlideShow;
|
|
|
|
/*
|
|
* Slideshow-specififc members.
|
|
*
|
|
* Is slideshow paused by user (with 'Pause') ?
|
|
*/
|
|
bool slideShowPaused;
|
|
|
|
TDEIO::Job *listing;
|
|
|
|
SQ_SlideShowListing *listingDialog;
|
|
|
|
// Directory for slideshow.
|
|
// KSquirrel will use it to load file names.
|
|
TQString slideShowDir;
|
|
|
|
bool slideShowInit;
|
|
|
|
KFileItem *slideShowFile;
|
|
|
|
// Contains found files
|
|
KFileItemList slideShowItems;
|
|
|
|
// Delay, total files in selected directory and
|
|
// current file index
|
|
int slideShowIndex, slideShowDelay, slideShowTotal, slideShowRepeat;
|
|
|
|
// current file name
|
|
KURL slideShowName;
|
|
|
|
// timers for slideshow
|
|
TQTimer *slideShowTimer, *timerShowListing;
|
|
|
|
// is slideshow stopped ?
|
|
bool slideShowStop;
|
|
|
|
// url box
|
|
TDEToolBar *pTLocation;
|
|
|
|
// our config file
|
|
SQ_Config *tdeconf;
|
|
|
|
// widget stack containing different views (Icon view, List view ...)
|
|
SQ_WidgetStack *pWidgetStack;
|
|
|
|
// our library handler
|
|
SQ_LibraryHandler *libhandler;
|
|
|
|
// ou tray instance
|
|
KSystemTray *tray;
|
|
|
|
// external tools
|
|
SQ_ExternalTool *extool;
|
|
|
|
TQSplitter *mainView;
|
|
|
|
// file tree
|
|
SQ_TreeView *ptree;
|
|
|
|
// widget containing SQ_GLWidget and statusbar
|
|
SQ_GLView *gl_view;
|
|
|
|
// archive handler, can unpack different archives
|
|
SQ_ArchiveHandler *ar;
|
|
|
|
// object containing different useful information
|
|
// on thumbnails (size, margin ...)
|
|
SQ_ThumbnailSize *thumbSize;
|
|
|
|
// thumbnails' memory cache
|
|
SQ_PixmapCache *cache;
|
|
|
|
// sidebar
|
|
SQ_MultiBar *sideBar;
|
|
|
|
SQ_SplashScreen *splash_to_delete;
|
|
|
|
SQ_Progress *diskProg;
|
|
|
|
// KIPI plugins loader
|
|
#ifdef SQ_HAVE_KIPI
|
|
SQ_KIPIManager *kipiManager;
|
|
#endif
|
|
|
|
enum SSD { MBack, Default } slideShowDirection;
|
|
|
|
// not interesting ;)
|
|
KURL renameSrcURL, renameDestURL;
|
|
int old_id;
|
|
bool old_disable, m_urlbox, old_marks, old_calc, m_intray, waitForShow;
|
|
SQ_Downloader *down;
|
|
TQVBox *mainPage;
|
|
bool statStage;
|
|
};
|
|
|
|
// Is slideshow running ?
|
|
inline
|
|
bool KSquirrel::slideShowRunning() const
|
|
{
|
|
return !slideShowStop;
|
|
}
|
|
|
|
inline
|
|
KHistoryCombo* KSquirrel::historyCombo()
|
|
{
|
|
return pCurrentURL;
|
|
}
|
|
|
|
inline
|
|
TQStringList* KSquirrel::filtersNames() const
|
|
{
|
|
return sqFiltersName;
|
|
}
|
|
|
|
inline
|
|
TQStringList* KSquirrel::filtersExtensions() const
|
|
{
|
|
return sqFiltersExt;
|
|
}
|
|
|
|
inline
|
|
TDEPopupMenu* KSquirrel::menuFilters()
|
|
{
|
|
return actionFilterMenu;
|
|
}
|
|
|
|
inline
|
|
TDEPopupMenu* KSquirrel::menuViews()
|
|
{
|
|
return actionViews;
|
|
}
|
|
|
|
inline
|
|
SQ_Progress* KSquirrel::diskProgress()
|
|
{
|
|
return diskProg;
|
|
}
|
|
|
|
inline
|
|
bool KSquirrel::demo() const
|
|
{
|
|
return m_demo;
|
|
}
|
|
|
|
#endif
|