Code

copyedit
[inkscape.git] / src / ui / dialog / ocaldialogs.h
index 91ee54bf8c5798c2d7ce53e03a9dde649f13d855..0953e76bc98136772c4585a08e9570836bea4e6e 100644 (file)
-/**\r
- * Implementation of the OCAL import/export dialogs\r
- *\r
- * Authors:\r
- *   Joel Holdsworth\r
- *   Bruno Dilly\r
- *   Other dudes from The Inkscape Organization\r
- *\r
- * Copyright (C) 2007 Bruno Dilly\r
- *\r
- * Released under GNU GPL, read the file 'COPYING' for more information\r
+#ifndef __OCAL_DIALOG_H__
+#define __OCAL_DIALOG_H__
+/**
+ * Defines the FileExportToOCALDialog, FileImportFromOCALDialog and 
+ * FileExportToOCALPasswordDialog and their supporting classes.
+ *
+ * Authors:
+ *   Bruno Dilly <bruno.dilly@gmail.com>
+ *   Inkscape Guys
+ *
+ * Copyright (C) 2007 Bruno Dilly <bruno.dilly@gmail.com>
+ *
+ * Released under GNU GPL, read the file 'COPYING' for more information
  */
 
-#include "filedialogimpl-gtkmm.h"\r
-\r
-namespace Inkscape\r
-{\r
-namespace UI\r
-{\r
-namespace Dialog\r
+#include <glibmm.h>
+#include <vector>
+#include <gtkmm.h>
+#include "filedialogimpl-gtkmm.h"
+
+//General includes
+#include <unistd.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <set>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
+
+//Gtk includes
+#include <glibmm/i18n.h>
+#include <glib/gstdio.h>
+
+//Temporary ugly hack
+//Remove this after the get_filter() calls in
+//show() on both classes are fixed
+#include <gtk/gtkfilechooser.h>
+
+//Another hack
+#include <gtk/gtkentry.h>
+#include <gtk/gtkexpander.h>
+#ifdef WITH_GNOME_VFS
+#include <libgnomevfs/gnome-vfs-init.h>  // gnome_vfs_initialized
+#include<libgnomevfs/gnome-vfs.h>
+#endif
+
+//Inkscape includes
+#include "prefs-utils.h"
+#include <extension/input.h>
+#include <extension/output.h>
+#include <extension/db.h>
+#include "inkscape.h"
+#include "svg-view-widget.h"
+#include "gc-core.h"
+
+//For export dialog
+#include "ui/widget/scalar-unit.h"
+
+
+namespace Inkscape
+{
+namespace UI 
+{   
+namespace Dialog
+{   
+    
+/*#########################################################################
+### F I L E     D I A L O G    O C A L    B A S E    C L A S S
+#########################################################################*/
+
+/**
+ * This class is the base implementation for export to OCAL.
+ */
+class FileDialogOCALBase : public Gtk::Dialog
+{
+public:
+
+    /**
+     * Constructor
+     */
+    FileDialogOCALBase(const Glib::ustring &title, Gtk::Window& parent) : Gtk::Dialog(title, parent, true)
+    {}
+
+    /*
+     * Destructor
+     */
+    virtual ~FileDialogOCALBase()
+    {}
+
+protected:
+    void cleanup( bool showConfirmed );
+
+    /**
+     * What type of 'open' are we? (open, import, place, etc)
+     */
+    FileDialogType dialogType;
+};
+
+
+
+
+//########################################################################
+//# F I L E    E X P O R T   T O   O C A L
+//########################################################################
+
+
+/**
+ * Our implementation of the FileExportToOCALDialog interface.
+ */
+class FileExportToOCALDialog : public FileDialogOCALBase
 {
 
-/*#########################################################################\r
-### F I L E     D I A L O G    O C A L    B A S E    C L A S S\r
-#########################################################################*/\r
-\r
-/**\r
- * This class is the base implementation for export to OCAL.\r
- */\r
-class FileDialogOCALBase : public Gtk::Dialog\r
-{\r
-public:\r
-\r
-    /**\r
-     *\r
-     */\r
-    FileDialogOCALBase(const Glib::ustring &title) : Gtk::Dialog(title,true)\r
-    {}\r
-    /*\r
-     *\r
-     */\r
-    virtual ~FileDialogOCALBase()\r
-    {}\r
-\r
-protected:\r
-    void cleanup( bool showConfirmed );\r
-\r
-    //Glib::ustring preferenceBase;\r
-    /**\r
-     * What type of 'open' are we? (open, import, place, etc)\r
-     */\r
-    FileDialogType dialogType;\r
-};\r
-
-
-//########################################################################\r
-//# F I L E    E X P O R T   T O   O C A L\r
-//########################################################################\r
-\r
-/**\r
- * Our implementation of the FileExportToOCALDialog interface.\r
- */\r
-class FileExportToOCALDialog : public FileDialogOCALBase\r
-{\r
-\r
-public:\r
-    FileExportToOCALDialog(Gtk::Window& parentWindow, \r
-                            const Glib::ustring &title,\r
-                            const Glib::ustring &default_key);\r
+public:
+    /**
+     * Constructor
+     * @param fileTypes one of FileDialogTypes
+     * @param title the title of the dialog
+     * @param key a list of file types from which the user can select
+     */
+    FileExportToOCALDialog(Gtk::Window& parentWindow, 
+                             FileDialogType fileTypes,
+                            const Glib::ustring &title);
     
     /**
      * Destructor.
      * Perform any necessary cleanups.
-     */\r
-    virtual ~FileExportToOCALDialog();\r
-\r
-    bool show();\r
+     */
+    ~FileExportToOCALDialog();
 
     /**
-     * Return the 'key' (filetype) of the selection, if any
-     * @return a pointer to a string if successful (which must
-     * be later freed with g_free(), else NULL.
-     */\r
-    Inkscape::Extension::Extension *getSelectionType();
-\r
-    virtual void setSelectionType( Inkscape::Extension::Extension * key );\r
-\r
-    Glib::ustring getFilename();\r
-\r
-    Glib::ustring myFilename;\r
-\r
-    void change_title(const Glib::ustring& title);\r
-    void updateNameAndExtension();\r
-\r
-private:\r
-\r
-    /**\r
-     * Fix to allow the user to type the file name\r
-     */\r
-    Gtk::Entry *fileNameEntry;\r
-    \r
-    \r
-    /**\r
-     * Allow the specification of the output file type\r
-     */\r
-    Gtk::ComboBoxText fileTypeComboBox;\r
-\r
-\r
-    /**\r
-     *  Data mirror of the combo box\r
-     */\r
-    std::vector<FileType> fileTypes;\r
-\r
-    // Child widgets\r
-    Gtk::HBox childBox;\r
-    Gtk::VBox checksBox;\r
-    Gtk::HBox fileBox;\r
-\r
-    Gtk::CheckButton fileTypeCheckbox;\r
-\r
-    /**\r
-     * Callback for user input into fileNameEntry\r
-     */\r
-    void fileTypeChangedCallback();\r
-\r
-    /**\r
-     *  Create a filter menu for this type of dialog\r
-     */\r
-    void createFileTypeMenu();\r
-\r
-\r
-    /**\r
-     * The extension to use to write this file\r
-     */\r
-    Inkscape::Extension::Extension *extension;\r
-\r
-    /**\r
-     * Callback for user input into fileNameEntry\r
-     */\r
-    void fileNameEntryChangedCallback();\r
-\r
-    /**\r
-     * List of known file extensions.\r
-     */\r
-    std::set<Glib::ustring> knownExtensions;\r
-};\r
-\r
-\r
-//#########################################################################\r
-//### F I L E   I M P O R T   F R O M   O C A L\r
-//#########################################################################\r
-\r
-/**\r
- * Our implementation class for filesListView\r
- */\r
-class FileListViewText : public Gtk::ListViewText\r
-{\r
-public:\r
-    FileListViewText(guint columns_count, SVGPreview& filesPreview):ListViewText(columns_count)\r
-    {\r
-        myPreview = &filesPreview;\r
-    }\r
-    Glib::ustring getFilename();\r
-protected:\r
-    void on_row_activated(const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column);\r
-private:\r
-    Glib::ustring myFilename;\r
-    SVGPreview *myPreview;\r
-};\r
-\r
-/**\r
- * Our implementation class for the FileImportFromOCALDialog\r
- */\r
-class FileImportFromOCALDialog : public FileDialogOCALBase\r
-{\r
-public:\r
-\r
-    FileImportFromOCALDialog(Gtk::Window& parentWindow,\r
-                      const Glib::ustring &dir,\r
-                       const Glib::ustring &title);\r
+     * Show an SaveAs file selector.
+     * @return the selected path if user selected one, else NULL
+     */
+    bool show();
+
+    Glib::ustring getFilename();
+
+    Glib::ustring myFilename;
+
+    /**
+     * Change the window title.
+     */
+    void change_title(const Glib::ustring& title);
+    
+private:
+
+    /**
+     * Fix to allow the user to type the file name
+     */
+    Gtk::Entry *fileNameEntry;
+    
+    /**
+     *  Data mirror of the combo box
+     */
+    std::vector<FileType> fileTypes;
+
+    // Child widgets
+    Gtk::HBox childBox;
+    Gtk::VBox checksBox;
+    Gtk::HBox fileBox;
 
+    /**
+     * The extension to use to write this file
+     */
+    Inkscape::Extension::Extension *extension;
+
+    /**
+     * Callback for user input into fileNameEntry
+     */
+    void fileNameEntryChangedCallback();
+
+    /**
+     * List of known file extensions.
+     */
+    std::set<Glib::ustring> knownExtensions;
+
+}; //FileExportToOCAL
+
+
+//########################################################################
+//# F I L E    E X P O R T   T O   O C A L   P A S S W O R D
+//########################################################################
+
+
+/**
+ * Our implementation of the FileExportToOCALPasswordDialog interface.
+ */
+class FileExportToOCALPasswordDialog : public FileDialogOCALBase
+{
+
+public:
+    /**
+     * Constructor
+     * @param title the title of the dialog
+     */
+    FileExportToOCALPasswordDialog(Gtk::Window& parentWindow, 
+                                const Glib::ustring &title);
+    
     /**
      * Destructor.
      * Perform any necessary cleanups.
-     */\r
-    virtual ~FileImportFromOCALDialog();\r
+     */
+    ~FileExportToOCALPasswordDialog();
+
+
+    /**
+     * Show 2 entry to input username and password.
+     */
+    bool show();
+
+    Glib::ustring getUsername();
+    Glib::ustring getPassword();
+
+    /**
+     * Change the window title.
+     */
+    void change_title(const Glib::ustring& title);
+
+    Glib::ustring myUsername;
+    Glib::ustring myPassword;
+
+private:
+
+    /**
+     * Fix to allow the user to type the file name
+     */
+    Gtk::Entry *usernameEntry;
+    Gtk::Entry *passwordEntry;
+    
+    // Child widgets
+    Gtk::VBox entriesBox;
+    Gtk::HBox userBox;
+    Gtk::HBox passBox;
+    
+}; //FileExportToOCALPassword
+
+
+
+//#########################################################################
+//### F I L E   I M P O R T   F R O M   O C A L
+//#########################################################################
+
+/**
+ * Our implementation class for filesListView
+ */
+class FileListViewText : public Gtk::ListViewText
+{
+public:
+    FileListViewText(guint columns_count, SVGPreview& filesPreview, Gtk::Label& description, Gtk::Button& okButton)
+                :ListViewText(columns_count)
+    {
+        myPreview = &filesPreview;
+        myLabel = &description;
+        myButton = &okButton;
+    }
+    Glib::ustring getFilename();
+protected:
+    void on_row_activated(const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column);
+    void on_cursor_changed();
+private:
+    Glib::ustring myFilename;
+    SVGPreview *myPreview;
+    Gtk::Label *myLabel;
+    Gtk::Button *myButton;
+};
+
+/**
+ * Our implementation class for the FileImportFromOCALDialog interface..
+ */
+class FileImportFromOCALDialog : public FileDialogOCALBase
+{
+public:
+    /**
+     * Constructor
+     * @param path the directory where to start searching
+     * @param fileTypes one of FileDialogTypes
+     * @param title the title of the dialog
+     */
+    FileImportFromOCALDialog(Gtk::Window& parentWindow,
+                      const Glib::ustring &dir,
+                       FileDialogType fileTypes,
+                       const Glib::ustring &title);
+
+    /**
+     * Destructor.
+     * Perform any necessary cleanups.
+     */
+    ~FileImportFromOCALDialog();
 
     /**
      * Show an OpenFile file selector.
      * @return the selected path if user selected one, else NULL
-     */\r
-    bool show();\r
+     */
+    bool show();
 
     /**
      * Return the 'key' (filetype) of the selection, if any
      * @return a pointer to a string if successful (which must
      * be later freed with g_free(), else NULL.
-     */\r
-    Inkscape::Extension::Extension *getSelectionType();\r
-\r
-    Glib::ustring getFilename();\r
-\r
-private:\r
-\r
-    /**\r
-     * Allow the user to type the tag to be searched\r
-     */\r
-    Gtk::Entry *searchTagEntry;\r
-    FileListViewText *filesList;\r
-    SVGPreview *filesPreview;\r
-    Gtk::Label *notFoundLabel;\r
-\r
-    // Child widgets\r
-    Gtk::HBox tagBox;\r
-    Gtk::HBox filesBox;\r
-    Gtk::HBox messageBox;\r
-    Gtk::ScrolledWindow listScrolledWindow;\r
-    Glib::RefPtr<Gtk::TreeSelection> selection;\r
-\r
-    /**\r
-     * Callback for user input into searchTagEntry\r
-     */\r
-    void searchTagEntryChangedCallback();\r
-\r
-\r
-    /**\r
-     * Prints the names of the all the xml elements \r
-     * that are siblings or children of a given xml node\r
-     */\r
-    void print_xml_element_names(xmlNode * a_node);\r
-\r
-    /**\r
-     * The extension to use to write this file\r
-     */\r
-    Inkscape::Extension::Extension *extension;\r
-};\r
-\r
-}\r
-}\r
-}\r
-\r
-/*\r
-  Local Variables:\r
-  mode:c++\r
-  c-file-style:"stroustrup"\r
-  c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))\r
-  indent-tabs-mode:nil\r
-  fill-column:99\r
-  End:\r
-*/\r
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :
+     */
+    Inkscape::Extension::Extension *getSelectionType();
+
+    Glib::ustring getFilename();
+
+private:
+
+    /**
+     * Allow the user to type the tag to be searched
+     */
+    Gtk::Entry *searchTagEntry;
+    FileListViewText *filesList;
+    SVGPreview *filesPreview;
+    Gtk::Label *notFoundLabel;
+    Gtk::Label *descriptionLabel;
+    Gtk::Button *searchButton;
+    Gtk::Button *okButton;
+
+    // Child widgets
+    Gtk::HBox tagBox;
+    Gtk::HBox filesBox;
+    Gtk::HBox messageBox;
+    Gtk::HBox descriptionBox;
+    Gtk::ScrolledWindow listScrolledWindow;
+    Glib::RefPtr<Gtk::TreeSelection> selection;
+
+    /**
+     * Callback for user input into searchTagEntry
+     */
+    void searchTagEntryChangedCallback();
+
+
+    /**
+     * Prints the names of the all the xml elements 
+     * that are siblings or children of a given xml node
+     */
+    void print_xml_element_names(xmlNode * a_node);
+
+    /**
+     * The extension to use to write this file
+     */
+    Inkscape::Extension::Extension *extension;
+
+}; //FileImportFromOCALDialog
+
+
+} //namespace Dialog
+} //namespace UI
+} //namespace Inkscape
+
+
+#endif /* __OCAL_DIALOG_H__ */
+
+/*
+  Local Variables:
+  mode:c++
+  c-file-style:"stroustrup"
+  c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+  indent-tabs-mode:nil
+  fill-column:99
+  End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :