summaryrefslogtreecommitdiffstats
path: root/src/ksquirrel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ksquirrel.h')
-rw-r--r--src/ksquirrel.h801
1 files changed, 801 insertions, 0 deletions
diff --git a/src/ksquirrel.h b/src/ksquirrel.h
new file mode 100644
index 0000000..5a4a3ed
--- /dev/null
+++ b/src/ksquirrel.h
@@ -0,0 +1,801 @@
+/***************************************************************************
+ 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
+{
+ TQ_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, TQt::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