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 :