X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fapp.cpp;h=53f3581a2cc208dc26b647b5076bcfcbb0238e00;hb=c17ff8c0593a678801a38e3dc400ace6bc57a4bb;hp=64aef3080ca6c6a9d390bd161a8e8c020909b5dc;hpb=ce408de81ca266b1f334ee9bc6c8fb7ba1492ed4;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/app.cpp b/synfig-studio/trunk/src/gtkmm/app.cpp index 64aef30..53f3581 100644 --- a/synfig-studio/trunk/src/gtkmm/app.cpp +++ b/synfig-studio/trunk/src/gtkmm/app.cpp @@ -32,6 +32,9 @@ #include #include +#ifdef HAVE_SYS_ERRNO_H +#include +#endif #include #include #include @@ -110,9 +113,12 @@ #endif #ifdef WIN32 +#define _WIN32_WINNT 0x0500 #include #endif #include +#include +#include #endif @@ -125,6 +131,14 @@ using namespace studio; /* === M A C R O S ========================================================= */ +#ifndef SYNFIG_USER_APP_DIR +#ifdef __APPLE__ +#define SYNFIG_USER_APP_DIR "Library/Synfig" +#else +#define SYNFIG_USER_APP_DIR "Synfig" +#endif +#endif + #ifndef DPM2DPI #define DPM2DPI(x) (float(x)/39.3700787402f) #define DPI2DPM(x) (float(x)*39.3700787402f) @@ -655,7 +669,7 @@ public: } }; -static Preferences _preferences; +static ::Preferences _preferences; void init_ui_manager() @@ -671,7 +685,7 @@ init_ui_manager() menus_action_group->add( Gtk::Action::create("menu-view", "_View") ); menus_action_group->add( Gtk::Action::create("menu-canvas", "_Canvas") ); menus_action_group->add( Gtk::Action::create("menu-layer", "_Layer") ); - menus_action_group->add( Gtk::Action::create("menu-duck-mask", "Mask Ducks") ); + menus_action_group->add( Gtk::Action::create("menu-duck-mask", "Show/Hide Ducks") ); menus_action_group->add( Gtk::Action::create("menu-preview-quality", "Preview Quality") ); menus_action_group->add( Gtk::Action::create("menu-layer-new", "New Layer") ); menus_action_group->add( Gtk::Action::create("menu-keyframe", "Keyframe") ); @@ -722,12 +736,12 @@ init_ui_manager() DEFINE_ACTION("unselect-all-layers", _("Unselect All Layers")); DEFINE_ACTION("properties", _("Properties")); - DEFINE_ACTION("mask-position-ducks", _("Mask Position Ducks")); - DEFINE_ACTION("mask-vertex-ducks", _("Mask Vertex Ducks")); - DEFINE_ACTION("mask-tangent-ducks", _("Mask Tangent Ducks")); - DEFINE_ACTION("mask-radius-ducks", _("Mask Radius Ducks")); - DEFINE_ACTION("mask-width-ducks", _("Mask Width Ducks")); - DEFINE_ACTION("mask-angle-ducks", _("Mask Angle Ducks")); + DEFINE_ACTION("mask-position-ducks", _("Show Position Ducks")); + DEFINE_ACTION("mask-vertex-ducks", _("Show Vertex Ducks")); + DEFINE_ACTION("mask-tangent-ducks", _("Show Tangent Ducks")); + DEFINE_ACTION("mask-radius-ducks", _("Show Radius Ducks")); + DEFINE_ACTION("mask-width-ducks", _("Show Width Ducks")); + DEFINE_ACTION("mask-angle-ducks", _("Show Angle Ducks")); DEFINE_ACTION("quality-00", _("Use Parametric Renderer")); DEFINE_ACTION("quality-01", _("Use Quality Level 1")); DEFINE_ACTION("quality-02", _("Use Quality Level 2")); @@ -1197,21 +1211,29 @@ App::App(int *argc, char ***argv): state_manager->add_state(&state_rotate); state_manager->add_state(&state_bline); - state_manager->add_state(&state_polygon); + + state_manager->add_state(&state_circle); state_manager->add_state(&state_rectangle); - state_manager->add_state(&state_draw); - state_manager->add_state(&state_sketch); - + state_manager->add_state(&state_gradient); state_manager->add_state(&state_eyedrop); state_manager->add_state(&state_fill); - state_manager->add_state(&state_width); - state_manager->add_state(&state_gradient); - state_manager->add_state(&state_zoom); + if(false) { + // Disabled this tool because it should be + // considered deprecated. Use the bline tool instead. + state_manager->add_state(&state_polygon); + + // These tools are disabled for now, + // because they tend to confuse users. + state_manager->add_state(&state_draw); + state_manager->add_state(&state_sketch); + state_manager->add_state(&state_width); + } + studio_init_cb.task("Init ModPalette..."); module_list_.push_back(new ModPalette()); module_list_.back()->start(); @@ -1334,11 +1356,7 @@ App::~App() String App::get_user_app_directory() { -#ifdef __APPLE__ - return Glib::build_filename(Glib::get_home_dir(),"Library/Synfig"); -#else - return Glib::build_filename(Glib::get_home_dir(),"Synfig"); -#endif + return Glib::build_filename(Glib::get_home_dir(),SYNFIG_USER_APP_DIR); } synfig::String @@ -1650,6 +1668,21 @@ App::dialog_open_file(const std::string &title, std::string &filename) if(!_preferences.get_value("curr_path",prev_path)) prev_path="."; + Gtk::FileChooserDialog *dialog=new Gtk::FileChooserDialog(title,Gtk::FILE_CHOOSER_ACTION_OPEN); + dialog->set_current_folder(prev_path); + dialog->add_button(Gtk::StockID("gtk-ok"),GTK_RESPONSE_ACCEPT); + dialog->add_button(Gtk::StockID("gtk-cancel"),GTK_RESPONSE_CANCEL); + if(!filename.empty()) + dialog->set_filename(filename); + if(dialog->run()==GTK_RESPONSE_ACCEPT) { + filename=dialog->get_filename(); + delete dialog; + return true; + } + delete dialog; + return false; + /* + GtkWidget *ok; GtkWidget *cancel; int val=0; @@ -1691,6 +1724,7 @@ App::dialog_open_file(const std::string &title, std::string &filename) } gtk_widget_destroy(fileselection); return true; + */ #endif } @@ -1739,7 +1773,24 @@ App::dialog_save_file(const std::string &title, std::string &filename) } return false; #else - return dialog_open_file(title, filename); + synfig::String prev_path; + if(!_preferences.get_value("curr_path",prev_path)) + prev_path="."; + + Gtk::FileChooserDialog *dialog=new Gtk::FileChooserDialog(title,Gtk::FILE_CHOOSER_ACTION_SAVE); + dialog->set_current_folder(prev_path); + dialog->add_button(Gtk::StockID("gtk-ok"),GTK_RESPONSE_ACCEPT); + dialog->add_button(Gtk::StockID("gtk-cancel"),GTK_RESPONSE_CANCEL); + if(!filename.empty()) + dialog->set_filename(filename); + if(dialog->run()==GTK_RESPONSE_ACCEPT) { + filename=dialog->get_filename(); + delete dialog; + return true; + } + delete dialog; + return false; +// return dialog_open_file(title, filename); #endif } @@ -1788,7 +1839,24 @@ App::dialog_saveas_file(const std::string &title, std::string &filename) } return false; #else - return dialog_open_file(title, filename); + synfig::String prev_path; + if(!_preferences.get_value("curr_path",prev_path)) + prev_path="."; + + Gtk::FileChooserDialog *dialog=new Gtk::FileChooserDialog(title,Gtk::FILE_CHOOSER_ACTION_SAVE); + dialog->set_current_folder(prev_path); + dialog->add_button(Gtk::StockID("gtk-ok"),GTK_RESPONSE_ACCEPT); + dialog->add_button(Gtk::StockID("gtk-cancel"),GTK_RESPONSE_CANCEL); + if(!filename.empty()) + dialog->set_filename(filename); + if(dialog->run()==GTK_RESPONSE_ACCEPT) { + filename=dialog->get_filename(); + delete dialog; + return true; + } + delete dialog; + return false; +// return dialog_open_file(title, filename); #endif } @@ -1924,6 +1992,12 @@ App::open(std::string filename) bool App::open_as(std::string filename,std::string as) { +#ifdef WIN32 + char long_name[1024]; + if(GetLongPathName(as.c_str(),long_name,sizeof(long_name))); + as=long_name; +#endif + try { OneMoment one_moment;