47
FrameThemeObj* AddFTOItem(MenuRegion& menu_rgn, const std::string& theme, const Rect& lct, MediaItem mi);
47
FrameThemeObj* NewFTO(const std::string& theme, const Rect& lct);
48
48
void AddMenuItem(MenuRegion& menu_rgn, Comp::Object* obj);
50
// вспомогательная структура для передачи меню ссылок
51
// от браузеров к редактору
54
bool isForBack; // нужны ссылки для фона
55
ptr::one<Gtk::Menu> linkMenu;
58
SetLinkMenu(): isForBack(false) {}
50
//// вспомогательная структура для передачи меню ссылок
51
//// от браузеров к редактору
54
// bool isForBack; // нужны ссылки для фона
55
// ptr::one<Gtk::Menu> linkMenu;
58
// SetLinkMenu(): isForBack(false) {}
61
61
} // namespace Project
73
73
typedef boost::function<bool(FrameThemeObj*, MenuRegion&)> FTOFunctor;
74
74
typedef boost::function<bool(TextObj*, MenuRegion&)> TextObjFunctor;
75
void ForAllSelected(FTOFunctor fto_fnr, TextObjFunctor txt_fnr, MenuRegion& mn_rgn, const int_array& sel_arr);
75
void ForAllSelected(FTOFunctor fto_fnr, TextObjFunctor txt_fnr);
77
void ForAllSelectedFTO(FTOFunctor fnr, MenuRegion& mn_rgn, const int_array& sel_arr);
77
void ForAllSelectedFTO(FTOFunctor fnr);
79
79
void AddFTOItem(MEditorArea& editor, const Point& center, Project::MediaItem mi);
81
81
} // namespace Editor
83
void SetSelObjectsLinks(MEditorArea& edt_area, Project::MediaItem mi, bool is_background);
84
83
void SetSelObjectsTStyle(MEditorArea& edt_area, const Editor::TextStyle& ts, bool only_clr);
86
void SetBackgroundLink(MEditorArea& edt_area, Project::MediaItem mi);
85
void SetBackgroundLink(Project::MediaItem mi);
87
86
void SetLinkForObject(MEditorArea& edt_area, Project::MediaItem mi, int pos, bool for_poster);
89
void ToggleSafeArea(MEditorArea& edt_area);
88
void ToggleSafeArea();
91
90
namespace Project {
93
class CommonMenuBuilder
92
struct CommonMenuBuilder
96
CommonMenuBuilder(MediaItem cur_itm, bool for_poster);
94
MediaItem curItm; // текущая ссылка
95
// визуальная ссылка (=> только "первичка")
96
// для переходов (может быть меню, не может быть рисунком)
98
bool onlyWithAudio; // картинки запрещены
100
Gtk::Menu& resMenu; // результирующее меню; обязательно должно быть присоединено после Create(),
102
Gtk::RadioButtonGroup radioGrp;
104
CommonMenuBuilder(MediaItem cur_itm, bool for_poster, bool only_with_audio = false);
97
105
virtual ~CommonMenuBuilder() {}
99
107
virtual ActionFunctor CreateAction(MediaItem mi) = 0;
101
109
Gtk::Menu& Create();
102
virtual void AddConstantChoice(Gtk::Menu& lnk_list);
105
MediaItem curItm; // текущая ссылка
106
bool forPoster; // визуальная ссылка или для переходов (может быть меню, не может быть рисунком)
108
Gtk::Menu& resMenu; // результирующее меню; обязательно должно быть присоединено после Creat(),
110
Gtk::RadioButtonGroup radioGrp;
113
AddMediaItemChoice(Gtk::Menu& lnk_list, MediaItem mi, const std::string& name = std::string());
110
virtual void AddConstantChoice();
112
Gtk::RadioMenuItem& AddMediaItemChoice(Gtk::Menu& lnk_list, MediaItem mi, const std::string& name = std::string());
113
void AddPredefinedItem(const std::string& label, bool is_active, const ActionFunctor& fnr);
116
116
void AppendRadioItem(Gtk::RadioMenuItem& itm, bool is_active, const ActionFunctor& fnr, Gtk::Menu& lnk_list);
117
void AddNoLinkItem(CommonMenuBuilder& mb, bool exp_link);
118
119
class EditorMenuBuilder: public CommonMenuBuilder
125
126
MEditorArea& editor;
129
class EndActionMenuBld: public CommonMenuBuilder
131
typedef CommonMenuBuilder MyParent;
133
typedef boost::function<void(EndActionMenuBld&)> Functor;
135
EndActionMenuBld(PostAction& pa, const ActionFunctor& on_updater,
136
const Functor& cc_adder);
138
void AddConstantItem(const std::string& label, PostActionType typ);
140
virtual ActionFunctor CreateAction(Project::MediaItem mi);
141
virtual void AddConstantChoice();
145
const ActionFunctor onUpdater;
146
const Functor ccAdder;
128
149
} // namespace Project
130
151
#endif // __MGUI_EDITOR_TOOLBAR_H__