X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fui%2Fdialog%2Focaldialogs.h;h=0953e76bc98136772c4585a08e9570836bea4e6e;hb=fb2c6b206989f303ea4a7e97876eaebf674aa07d;hp=91ee54bf8c5798c2d7ce53e03a9dde649f13d855;hpb=17702c3e7d673070205000a6359403bb920e10aa;p=inkscape.git diff --git a/src/ui/dialog/ocaldialogs.h b/src/ui/dialog/ocaldialogs.h index 91ee54bf8..0953e76bc 100644 --- a/src/ui/dialog/ocaldialogs.h +++ b/src/ui/dialog/ocaldialogs.h @@ -1,251 +1,362 @@ -/** - * Implementation of the OCAL import/export dialogs - * - * Authors: - * Joel Holdsworth - * Bruno Dilly - * Other dudes from The Inkscape Organization - * - * Copyright (C) 2007 Bruno Dilly - * - * Released under GNU GPL, read the file 'COPYING' for more information +#ifndef __OCAL_DIALOG_H__ +#define __OCAL_DIALOG_H__ +/** + * Defines the FileExportToOCALDialog, FileImportFromOCALDialog and + * FileExportToOCALPasswordDialog and their supporting classes. + * + * Authors: + * Bruno Dilly + * Inkscape Guys + * + * Copyright (C) 2007 Bruno Dilly + * + * Released under GNU GPL, read the file 'COPYING' for more information */ -#include "filedialogimpl-gtkmm.h" - -namespace Inkscape -{ -namespace UI -{ -namespace Dialog +#include +#include +#include +#include "filedialogimpl-gtkmm.h" + +//General includes +#include +#include +#include +#include +#include +#include + + +//Gtk includes +#include +#include + +//Temporary ugly hack +//Remove this after the get_filter() calls in +//show() on both classes are fixed +#include + +//Another hack +#include +#include +#ifdef WITH_GNOME_VFS +#include // gnome_vfs_initialized +#include +#endif + +//Inkscape includes +#include "prefs-utils.h" +#include +#include +#include +#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 { -/*######################################################################### -### 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: - - /** - * - */ - FileDialogOCALBase(const Glib::ustring &title) : Gtk::Dialog(title,true) - {} - /* - * - */ - virtual ~FileDialogOCALBase() - {} - -protected: - void cleanup( bool showConfirmed ); - - //Glib::ustring preferenceBase; - /** - * 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 -{ - -public: - FileExportToOCALDialog(Gtk::Window& parentWindow, - const Glib::ustring &title, - const Glib::ustring &default_key); +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. - */ - virtual ~FileExportToOCALDialog(); - - bool show(); + */ + ~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. - */ - Inkscape::Extension::Extension *getSelectionType(); - - virtual void setSelectionType( Inkscape::Extension::Extension * key ); - - Glib::ustring getFilename(); - - Glib::ustring myFilename; - - void change_title(const Glib::ustring& title); - void updateNameAndExtension(); - -private: - - /** - * Fix to allow the user to type the file name - */ - Gtk::Entry *fileNameEntry; - - - /** - * Allow the specification of the output file type - */ - Gtk::ComboBoxText fileTypeComboBox; - - - /** - * Data mirror of the combo box - */ - std::vector fileTypes; - - // Child widgets - Gtk::HBox childBox; - Gtk::VBox checksBox; - Gtk::HBox fileBox; - - Gtk::CheckButton fileTypeCheckbox; - - /** - * Callback for user input into fileNameEntry - */ - void fileTypeChangedCallback(); - - /** - * Create a filter menu for this type of dialog - */ - void createFileTypeMenu(); - - - /** - * 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 knownExtensions; -}; - - -//######################################################################### -//### 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):ListViewText(columns_count) - { - myPreview = &filesPreview; - } - Glib::ustring getFilename(); -protected: - void on_row_activated(const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column); -private: - Glib::ustring myFilename; - SVGPreview *myPreview; -}; - -/** - * Our implementation class for the FileImportFromOCALDialog - */ -class FileImportFromOCALDialog : public FileDialogOCALBase -{ -public: - - FileImportFromOCALDialog(Gtk::Window& parentWindow, - const Glib::ustring &dir, - const Glib::ustring &title); + * 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 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 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. - */ - virtual ~FileImportFromOCALDialog(); + */ + ~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 - */ - bool show(); + */ + 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. - */ - 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; - - // Child widgets - Gtk::HBox tagBox; - Gtk::HBox filesBox; - Gtk::HBox messageBox; - Gtk::ScrolledWindow listScrolledWindow; - Glib::RefPtr 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; -}; - -} -} -} - -/* - 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 : + */ + 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 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 :