Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/mac In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8667/adobe/future/widgets/headers/mac Modified Files: label_t_impl.hpp metric_extractor.hpp os_utilities.hpp ui_core_implementation.hpp Added Files: image_t_impl.hpp Log Message: image_t (icons and pictures) support for Mac and Win32, along with a GIL image factory and a (sample) Targa file format importing module for that factory. Also added alert.adm/eve as a sample for the icon support. Added the notion of a working directory to the modal dialog interface to reference external resources. Also added an alert API that leverages modal_dialog_interface. Other misc. bug fixes and changes. --- NEW FILE: image_t_impl.hpp --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ /****************************************************************************************************/ #ifndef ADOBE_IMAGE_T_IMPL_HPP #define ADOBE_IMAGE_T_IMPL_HPP /****************************************************************************************************/ #include <adobe/future/widgets/headers/image_t.hpp> #include "os_utilities.hpp" #include "carbon_safe.hpp" #include "metric_extractor.hpp" /****************************************************************************************************/ namespace adobe { /****************************************************************************************************/ struct image_t::implementation_t { implementation_t(GIL::rgba8_image& image); implementation_t(const implementation_t& rhs); implementation_t& operator=(const implementation_t& rhs); void initialize(); extents_t measure(); void place(const point_2d_t& position, const extents_t& extents); void enable(bool make_enabled); void set(GIL::rgba8_image& image); inline friend bool operator== (const adobe::image_t::implementation_t& x, const adobe::image_t::implementation_t& y) { return &x == &y; } auto_control_t control_m; mutable metric_extractor_t metrics_m; GIL::rgba8_image image_m; }; /****************************************************************************************************/ } // namespace adobe /****************************************************************************************************/ #endif /****************************************************************************************************/ Index: metric_extractor.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/mac/metric_extractor.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** metric_extractor.hpp 3 Feb 2006 18:33:36 -0000 1.1 --- metric_extractor.hpp 27 Feb 2006 20:41:59 -0000 1.2 *************** *** 158,161 **** --- 158,164 ---- long result(0); + if (empty()) + return result; + dictionary_m.get(tag, result); *************** *** 169,174 **** long operator () (const name_t& tag, array_index_t index) const { ! adobe::array_t array_result; ! long result(0); dictionary_m.get(tag, array_result); --- 172,181 ---- long operator () (const name_t& tag, array_index_t index) const { ! long result(0); ! ! if (empty()) ! return result; ! ! adobe::array_t array_result; dictionary_m.get(tag, array_result); *************** *** 179,185 **** } ! /// If this extractor hasn't been setup yet then this function returns ! /// true, otherwise it returns false. ! /// \return does this extractor have metrics available. bool empty() const { return dictionary_m.empty(); } --- 186,192 ---- } ! /// If this extractor hasn't been setup yet or has no metrics stored within, ! /// then this function returns true, otherwise it returns false. ! /// \return does this extractor have metrics available bool empty() const { return dictionary_m.empty(); } Index: ui_core_implementation.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/mac/ui_core_implementation.hpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ui_core_implementation.hpp 23 Feb 2006 23:28:55 -0000 1.9 --- ui_core_implementation.hpp 27 Feb 2006 20:41:59 -0000 1.10 *************** *** 28,31 **** --- 28,33 ---- #include <adobe/array.hpp> + #include <boost/smart_ptr.hpp> + #include "label_t_impl.hpp" *************** *** 162,166 **** ::ControlRef root_control_m; theme_t theme_m; ! metric_extractor_t metrics_m; std::pair<std::size_t, std::size_t> dimensions_m; bool debounce_m; // for resizing transition --- 164,168 ---- ::ControlRef root_control_m; theme_t theme_m; ! mutable metric_extractor_t metrics_m; std::pair<std::size_t, std::size_t> dimensions_m; bool debounce_m; // for resizing transition *************** *** 199,206 **** void set_visible(bool make_visible) { implementation::set_visible(control_m, make_visible); }; ! ::ControlRef control_m; ! theme_t theme_m; ! metric_extractor_t metrics_m; ! bool using_label_m; }; --- 201,208 ---- void set_visible(bool make_visible) { implementation::set_visible(control_m, make_visible); }; ! ::ControlRef control_m; ! theme_t theme_m; ! mutable metric_extractor_t metrics_m; ! bool using_label_m; }; *************** *** 258,262 **** ::ControlRef control_m; theme_t theme_m; ! metric_extractor_t metrics_m; tab_group_value_handler_t value_handler_m; tab_set_t items_m; --- 260,264 ---- ::ControlRef control_m; theme_t theme_m; ! mutable metric_extractor_t metrics_m; tab_group_value_handler_t value_handler_m; tab_set_t items_m; *************** *** 359,363 **** ::ControlRef control_m; theme_t theme_m; ! metric_extractor_t metrics_m; state_set_t state_set_m; focus_handler_t focus_handler_m; --- 361,365 ---- ::ControlRef control_m; theme_t theme_m; ! mutable metric_extractor_t metrics_m; state_set_t state_set_m; focus_handler_t focus_handler_m; *************** *** 413,417 **** ::ControlRef control_m; theme_t theme_m; ! metric_extractor_t metrics_m; radio_button_hit_handler_t hit_handler_m; adobe::value_t set_value_m; --- 415,419 ---- ::ControlRef control_m; theme_t theme_m; ! mutable metric_extractor_t metrics_m; radio_button_hit_handler_t hit_handler_m; adobe::value_t set_value_m; *************** *** 445,449 **** struct checkbox_t::implementation_t { - implementation_t( const std::string& name, const adobe::value_t& true_value, --- 447,450 ---- *************** *** 465,475 **** ADOBE_SERIALIZABLE_EQUALITY_COMPARABLE_BOILERPLATE_FRIEND_DECLARATION(adobe::checkbox_t::implementation_t); ! ::ControlRef control_m; ! theme_t theme_m; ! metric_extractor_t metrics_m; ! checkbox_hit_handler_t hit_handler_m; ! adobe::value_t last_m; ! adobe::value_t true_value_m; ! adobe::value_t false_value_m; }; --- 466,476 ---- ADOBE_SERIALIZABLE_EQUALITY_COMPARABLE_BOILERPLATE_FRIEND_DECLARATION(adobe::checkbox_t::implementation_t); ! ::ControlRef control_m; ! theme_t theme_m; ! mutable metric_extractor_t metrics_m; ! checkbox_hit_handler_t hit_handler_m; ! adobe::value_t last_m; ! adobe::value_t true_value_m; ! adobe::value_t false_value_m; }; *************** *** 522,533 **** ADOBE_SERIALIZABLE_EQUALITY_COMPARABLE_BOILERPLATE_FRIEND_DECLARATION(adobe::link_t::implementation_t); ! ::ControlRef control_m; ! theme_t theme_m; ! metric_extractor_t metrics_m; ! guide_set_t prongs_m; ! bool value_m; ! bool visible_m; ! bool active_m; ! link_hit_handler_t hit_handler_m; }; --- 523,534 ---- ADOBE_SERIALIZABLE_EQUALITY_COMPARABLE_BOILERPLATE_FRIEND_DECLARATION(adobe::link_t::implementation_t); ! ::ControlRef control_m; ! theme_t theme_m; ! mutable metric_extractor_t metrics_m; ! guide_set_t prongs_m; ! bool value_m; ! bool visible_m; ! bool active_m; ! link_hit_handler_t hit_handler_m; }; *************** *** 566,574 **** ADOBE_SERIALIZABLE_EQUALITY_COMPARABLE_BOILERPLATE_FRIEND_DECLARATION(adobe::progress_bar_t::implementation_t); ! ::ControlRef control_m; ! theme_t theme_m; ! metric_extractor_t metrics_m; ! bool is_vertical_m; ! pb_style_t bar_style_m; }; --- 567,575 ---- ADOBE_SERIALIZABLE_EQUALITY_COMPARABLE_BOILERPLATE_FRIEND_DECLARATION(adobe::progress_bar_t::implementation_t); ! ::ControlRef control_m; ! theme_t theme_m; ! mutable metric_extractor_t metrics_m; ! bool is_vertical_m; ! pb_style_t bar_style_m; }; *************** *** 596,601 **** ADOBE_SERIALIZABLE_EQUALITY_COMPARABLE_BOILERPLATE_FRIEND_DECLARATION(adobe::separator_t::implementation_t); ! ::ControlRef control_m; ! metric_extractor_t metrics_m; }; --- 597,602 ---- ADOBE_SERIALIZABLE_EQUALITY_COMPARABLE_BOILERPLATE_FRIEND_DECLARATION(adobe::separator_t::implementation_t); ! ::ControlRef control_m; ! mutable metric_extractor_t metrics_m; }; *************** *** 698,703 **** long rows); ! label_t& get_label() { return name_m; } ! const label_t& get_label() const { return name_m; } extents_t best_bounds(); --- 699,704 ---- long rows); ! label_t& get_label() { assert(name_m.get()); return *name_m; } ! const label_t& get_label() const { assert(name_m.get()); return *name_m; } extents_t best_bounds(); *************** *** 729,737 **** ::ControlRef control_m; theme_t theme_m; ! metric_extractor_t metrics_m; ::HIViewRef scroll_control_m; ! label_t name_m; std::string field_text_m; ! label_t static_disabled_text_m; bool static_disabled_m; bool using_label_m; --- 730,738 ---- ::ControlRef control_m; theme_t theme_m; ! mutable metric_extractor_t metrics_m; ::HIViewRef scroll_control_m; ! boost::scoped_ptr<label_t> name_m; std::string field_text_m; ! boost::scoped_ptr<label_t> static_disabled_label_m; bool static_disabled_m; bool using_label_m; *************** *** 828,842 **** ADOBE_SERIALIZABLE_EQUALITY_COMPARABLE_BOILERPLATE_FRIEND_DECLARATION(adobe::popup_t::implementation_t); ! ::ControlRef control_m; ! theme_t theme_m; ! metric_extractor_t metrics_m; ! std::string name_m; ! label_t static_disabled_text_m; ! bool static_disabled_m; ! bool using_label_m; ! menu_items_t menu_items_m; ! popup_value_handler_t value_handler_m; ! popup_key_handler_t key_handler_m; ! focus_handler_t focus_handler_m; }; --- 829,842 ---- ADOBE_SERIALIZABLE_EQUALITY_COMPARABLE_BOILERPLATE_FRIEND_DECLARATION(adobe::popup_t::implementation_t); ! ::ControlRef control_m; ! theme_t theme_m; ! mutable metric_extractor_t metrics_m; ! std::string name_m; ! bool static_disabled_m; ! bool using_label_m; ! menu_items_t menu_items_m; ! popup_value_handler_t value_handler_m; ! popup_key_handler_t key_handler_m; ! focus_handler_t focus_handler_m; }; *************** *** 959,963 **** ::ControlRef control_m; theme_t theme_m; ! metric_extractor_t metrics_m; bool is_vertical_m; slider_style_t style_m; --- 959,963 ---- ::ControlRef control_m; theme_t theme_m; ! mutable metric_extractor_t metrics_m; bool is_vertical_m; slider_style_t style_m; Index: label_t_impl.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/mac/label_t_impl.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** label_t_impl.hpp 23 Feb 2006 23:28:55 -0000 1.1 --- label_t_impl.hpp 27 Feb 2006 20:41:59 -0000 1.2 *************** *** 68,77 **** } ! ::ControlRef control_m; ! theme_t theme_m; ! metric_extractor_t metrics_m; ! std::size_t characters_m; #if 0 ! label_hit_handler_t hit_handler_m; #endif }; --- 68,77 ---- } ! auto_control_t control_m; ! theme_t theme_m; ! mutable metric_extractor_t metrics_m; ! std::size_t characters_m; #if 0 ! label_hit_handler_t hit_handler_m; #endif }; Index: os_utilities.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/mac/os_utilities.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** os_utilities.hpp 23 Feb 2006 23:28:55 -0000 1.2 --- os_utilities.hpp 27 Feb 2006 20:41:59 -0000 1.3 *************** *** 24,27 **** --- 24,28 ---- #include <boost/noncopyable.hpp> + #include <boost/filesystem/path.hpp> #include <stdexcept> *************** *** 49,54 **** --- 50,57 ---- //ADOBE_DELETE_PTR_SPECIALIZATION(::CGrafPtr, ::DisposePort) + //ADOBE_DELETE_PTR_SPECIALIZATION(::HIViewRef, ::DisposeControl) // same as ::ControlRef //ADOBE_DELETE_PTR_SPECIALIZATION(::MouseTrackingRef, ::ReleaseMouseTrackingRegion) //ADOBE_DELETE_PTR_SPECIALIZATION(::RgnHandle, ::DisposeRgn) + ADOBE_DELETE_PTR_SPECIALIZATION(::AEEventHandlerUPP, ::DisposeAEEventHandlerUPP) ADOBE_DELETE_PTR_SPECIALIZATION(::ATSUStyle, ::ATSUDisposeStyle) ADOBE_DELETE_PTR_SPECIALIZATION(::ATSUTextLayout, ::ATSUDisposeTextLayout) *************** *** 62,73 **** --- 65,85 ---- ADOBE_DELETE_PTR_SPECIALIZATION(::CGImageRef, ::CFRelease) ADOBE_DELETE_PTR_SPECIALIZATION(::ControlEditTextValidationUPP, ::DisposeControlEditTextValidationUPP) + ADOBE_DELETE_PTR_SPECIALIZATION(::ControlUserPaneDrawUPP, ::DisposeControlUserPaneDrawUPP) + ADOBE_DELETE_PTR_SPECIALIZATION(::ControlRef, ::DisposeControl) ADOBE_DELETE_PTR_SPECIALIZATION(::EventHandlerRef, ::RemoveEventHandler) ADOBE_DELETE_PTR_SPECIALIZATION(::EventHandlerUPP, ::DisposeEventHandlerUPP) ADOBE_DELETE_PTR_SPECIALIZATION(::EventLoopTimerRef, ::RemoveEventLoopTimer) ADOBE_DELETE_PTR_SPECIALIZATION(::Handle, ::DisposeHandle) + ADOBE_DELETE_PTR_SPECIALIZATION(::NavDialogRef, ::NavDialogDispose) + ADOBE_DELETE_PTR_SPECIALIZATION(::NavReplyRecord*, ::NavDisposeReply) ADOBE_DELETE_PTR_SPECIALIZATION(::WindowRef, ::ReleaseWindow) /****************************************************************************************************/ + typedef adobe::auto_resource< ::CFStringRef > auto_cfstring_t; + typedef adobe::auto_resource< ::ControlRef > auto_control_t; + + /****************************************************************************************************/ + namespace implementation { *************** *** 103,107 **** /****************************************************************************************************/ ! inline std::string cfstring_to_string(const adobe::auto_resource< ::CFStringRef >& x) { return cfstring_to_string(x.get()); --- 115,119 ---- /****************************************************************************************************/ ! inline std::string cfstring_to_string(const auto_cfstring_t& x) { return cfstring_to_string(x.get()); *************** *** 110,116 **** /****************************************************************************************************/ ! inline adobe::auto_resource< ::CFStringRef > string_to_cfstring(const std::string& x) { ! adobe::auto_resource< ::CFStringRef > converted(::CFStringCreateWithCString( NULL, x.c_str(), --- 122,128 ---- /****************************************************************************************************/ ! inline auto_cfstring_t string_to_cfstring(const std::string& x) { ! auto_cfstring_t converted(::CFStringCreateWithCString( NULL, x.c_str(), *************** *** 122,126 **** /****************************************************************************************************/ ! inline adobe::auto_resource< ::CFStringRef > localize_to_cfstring(const std::string& x) { return string_to_cfstring(adobe::localize(x)); --- 134,138 ---- /****************************************************************************************************/ ! inline auto_cfstring_t localize_to_cfstring(const std::string& x) { return string_to_cfstring(adobe::localize(x)); *************** *** 219,222 **** --- 231,240 ---- /****************************************************************************************************/ + + template <> + inline void get_bounds<auto_control_t>(const auto_control_t& control, ::Rect& bounds, bool absolute) + { return get_bounds(control.get(), bounds, absolute); } + + /****************************************************************************************************/ /****************************************************************************************************/ /****************************************************************************************************/ *************** *** 231,242 **** template <typename T> ! std::string get_field_text(T&); /****************************************************************************************************/ template <> ! std::string get_field_text< ::ControlRef >(::ControlRef& control); /****************************************************************************************************/ /****************************************************************************************************/ /****************************************************************************************************/ --- 249,265 ---- template <typename T> ! std::string get_field_text(const T&); /****************************************************************************************************/ template <> ! std::string get_field_text< ::ControlRef >(const ::ControlRef& control); /****************************************************************************************************/ + + template <> + inline std::string get_field_text<auto_control_t>(const auto_control_t& control) + { return get_field_text(control.get()); } + /****************************************************************************************************/ /****************************************************************************************************/ *************** *** 245,255 **** /****************************************************************************************************/ /****************************************************************************************************/ - - std::string get_name(const ::ControlRef& control); - - /****************************************************************************************************/ - - std::string get_name(const ::WindowRef& window); - /****************************************************************************************************/ --- 268,271 ---- *************** *** 265,268 **** --- 281,300 ---- /****************************************************************************************************/ + + template <> + std::string get_name< ::ControlRef >(const ::ControlRef& control); + + /****************************************************************************************************/ + + template <> + std::string get_name< ::WindowRef >(const ::WindowRef& window); + + /****************************************************************************************************/ + + template <> + inline std::string get_name<auto_control_t>(const auto_control_t& control) + { return get_name(control.get()); } + + /****************************************************************************************************/ /****************************************************************************************************/ /****************************************************************************************************/ *************** *** 320,324 **** inline ::ThemeFontID theme_to_ThemeFontID(const adobe::theme_t& style) { ! adobe::theme_t masked(style & adobe::theme_mask_s); ::ThemeFontID font_id(kThemeSystemFont); --- 352,356 ---- inline ::ThemeFontID theme_to_ThemeFontID(const adobe::theme_t& style) { ! adobe::theme_t masked = static_cast<adobe::theme_t>(style & adobe::theme_mask_s); ::ThemeFontID font_id(kThemeSystemFont); *************** *** 421,430 **** template <typename T> ! void set_refresh(T& widget); /****************************************************************************************************/ template <> ! inline void set_refresh< ::ControlRef >(::ControlRef& control) { assert(control); --- 453,462 ---- template <typename T> ! void set_refresh(const T& widget); /****************************************************************************************************/ template <> ! inline void set_refresh< ::ControlRef >(const ::ControlRef& control) { assert(control); *************** *** 435,439 **** /****************************************************************************************************/ ! void set_bounds(::ControlRef control, const ::Rect& new_bounds); /****************************************************************************************************/ --- 467,489 ---- /****************************************************************************************************/ ! template <> ! inline void set_refresh<auto_control_t>(const auto_control_t& control) ! { set_refresh(control.get()); } ! ! /****************************************************************************************************/ ! ! template <typename T> ! void set_bounds(T& x, const ::Rect& new_bounds); ! ! /****************************************************************************************************/ ! ! template <> ! void set_bounds< ::ControlRef >(::ControlRef& control, const ::Rect& new_bounds); ! ! /****************************************************************************************************/ ! ! template <> ! inline void set_bounds<auto_control_t>(auto_control_t& control, const ::Rect& new_bounds) ! { ::ControlRef temp(control.get()); set_bounds(temp, new_bounds); } /****************************************************************************************************/ *************** *** 481,485 **** // REVISIT (fbrereto) : If metrics can be changed at runtime for this // widget specifically this shortcut will have to go. ! if (!w.metrics_m.empty()) return; adobe::static_name_t attribute_theme_value("unknown"); --- 531,536 ---- // REVISIT (fbrereto) : If metrics can be changed at runtime for this // widget specifically this shortcut will have to go. ! if (!w.metrics_m.empty()) ! return; adobe::static_name_t attribute_theme_value("unknown"); *************** *** 505,510 **** /****************************************************************************************************/ template <typename Widget> ! void shed_fudges(const Widget& control, adobe::point_2d_t& position, adobe::extents_t& extents) { extents.height() += control.metrics_m(k_metric_adjust_size, adobe::metric_extractor_t::index_height); --- 556,586 ---- /****************************************************************************************************/ + template <typename T> + inline void set_origin(T& x, float left, float top); + + /****************************************************************************************************/ + #if 0 + template <> + inline void set_origin<const auto_control_t>(const auto_control_t& x, float left, float top) + { + assert(false); + } + #endif + /****************************************************************************************************/ + + template <> + inline void set_origin< ::ControlRef >(::ControlRef& control, float left, float top) + { ADOBE_REQUIRE_STATUS(::HIViewSetBoundsOrigin(control, left, top)); } + + /****************************************************************************************************/ + + template <> + inline void set_origin<auto_control_t>(auto_control_t& control, float left, float top) + { ::ControlRef temp(control.get()); set_origin(temp, left, top); } + + /****************************************************************************************************/ + template <typename Widget> ! void shed_fudges(Widget& control, adobe::point_2d_t& position, adobe::extents_t& extents) { extents.height() += control.metrics_m(k_metric_adjust_size, adobe::metric_extractor_t::index_height); *************** *** 519,523 **** /* NOTE (fbrereto) : All Eve containers need to expand themselves to ! compensate for the the case when their children have outsets. If this does not happen, you will see visual clipping of the children's visual outset artifacts. --- 595,599 ---- /* NOTE (fbrereto) : All Eve containers need to expand themselves to ! compensate for the case when their children have outsets. If this does not happen, you will see visual clipping of the children's visual outset artifacts. *************** *** 527,531 **** float top_shift(fudge_top - extents.vertical().outset_m.first); ! ADOBE_REQUIRE_STATUS(::HIViewSetBoundsOrigin(control.control_m, left_shift, top_shift)); } --- 603,608 ---- float top_shift(fudge_top - extents.vertical().outset_m.first); ! if (left_shift != 0 || top_shift != 0) ! set_origin(control.control_m, left_shift, top_shift); } *************** *** 533,537 **** template <typename Widget> ! adobe::extents_t apply_fudges(Widget& w, const adobe::extents_t& dimensions) { adobe::extents_t result(dimensions); --- 610,614 ---- template <typename Widget> ! adobe::extents_t apply_fudges(const Widget& w, const adobe::extents_t& dimensions) { adobe::extents_t result(dimensions); *************** *** 560,568 **** if (!result.vertical().poi_m.empty()) - { // REVISIT (fbrereto) It will not always be safe to assume the first vertical poi is the baseline. - result.vertical().poi_m[0] += w.metrics_m(adobe::implementation::k_metric_adjust_baseline); - } return result; --- 637,642 ---- *************** *** 577,589 **** /****************************************************************************************************/ ! adobe::extents_t measure(::ControlRef& control); /****************************************************************************************************/ ! template <typename Widget> ! adobe::extents_t measure(Widget& widget) ! { ! return apply_fudges(widget, measure(widget.control_m)); ! } /****************************************************************************************************/ --- 651,672 ---- /****************************************************************************************************/ ! template <typename Widget> ! adobe::extents_t measure(const Widget& widget) ! { return apply_fudges(widget, measure(widget.control_m)); } /****************************************************************************************************/ ! template <> ! adobe::extents_t measure< ::ControlRef >(const ::ControlRef& control); ! ! /****************************************************************************************************/ ! ! template <> ! inline adobe::extents_t measure<auto_control_t>(const auto_control_t& control) ! { return measure(control.get()); } ! ! /****************************************************************************************************/ ! ! adobe::extents_t measure_theme_text(const std::string& text, adobe::theme_t theme); /****************************************************************************************************/ *************** *** 688,691 **** --- 771,780 ---- /****************************************************************************************************/ + template <> + inline void set_theme<auto_control_t>(auto_control_t& control, adobe::theme_t theme) + { ::ControlRef temp(control.get()); set_theme(temp, theme); } + + /****************************************************************************************************/ + template <typename Widget> void adorn_theme(Widget& widget, theme_t theme) *************** *** 736,739 **** --- 825,834 ---- /****************************************************************************************************/ + template <> + inline void set_active< auto_control_t >(auto_control_t& control, bool make_active) + { ::ControlRef temp; set_active(temp, make_active); } + + /****************************************************************************************************/ + template <typename T> void set_visible(T&, bool make_visible); *************** *** 958,961 **** --- 1053,1068 ---- /****************************************************************************************************/ + /****************************************************************************************************/ + /****************************************************************************************************/ + /****************************************************************************************************/ + /****************************************************************************************************/ + /****************************************************************************************************/ + /****************************************************************************************************/ + + boost::filesystem::path fsref_to_path(const ::FSRef& location); + + bool pick_save_path(boost::filesystem::path& path); + + /****************************************************************************************************/ } // namespace implementation |