00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "actions.hpp"
00024 #include "workspace-window.hpp"
00025
00026 #include "../dialogs/render.hpp"
00027 #include "../dialogs/preferences-dialog.hpp"
00028 #include "../dialogs/name-chooser.hpp"
00029
00030 #include "../model/project.hpp"
00031
00032 using namespace Gtk;
00033 using namespace Glib;
00034 using namespace sigc;
00035 using namespace gui;
00036
00037 namespace gui {
00038 namespace workspace {
00039
00040 Actions::Actions(WorkspaceWindow &workspace_window) :
00041 workspaceWindow(workspace_window),
00042 is_updating_action_state(false)
00043 {
00044 workspace_window.signal_show ().connect_notify(mem_fun(this, &Actions::update_action_state));
00045
00046
00047 actionGroup = ActionGroup::create();
00048
00049
00050 actionGroup->add(Action::create("FileMenu", _("_File")));
00051 actionGroup->add(Action::create("FileNewProject", Stock::NEW, _("_New Project...")),
00052 sigc::mem_fun(*this, &Actions::on_menu_file_new_project));
00053 actionGroup->add(Action::create("FileOpenProject", Stock::OPEN, _("_Open Project...")),
00054 sigc::mem_fun(*this, &Actions::on_menu_file_open_project));
00055 actionGroup->add(Action::create("FileRender", _("_Render...")),
00056 Gtk::AccelKey("<shift>R"),
00057 sigc::mem_fun(*this, &Actions::on_menu_file_render));
00058 actionGroup->add(Action::create("FileQuit", Stock::QUIT),
00059 sigc::mem_fun(*this, &Actions::on_menu_file_quit));
00060
00061
00062 actionGroup->add(Action::create("EditMenu", _("_Edit")));
00063 actionGroup->add(Action::create("EditCopy", Stock::COPY),
00064 sigc::mem_fun(*this, &Actions::on_menu_others));
00065 actionGroup->add(Action::create("EditPaste", Stock::PASTE),
00066 sigc::mem_fun(*this, &Actions::on_menu_others));
00067 actionGroup->add(Action::create("EditPreferences", Stock::PREFERENCES),
00068 sigc::mem_fun(*this, &Actions::on_menu_edit_preferences));
00069
00070
00071 actionGroup->add(Action::create("ViewMenu", _("_View")));
00072
00073 assetsPanelAction = ToggleAction::create("ViewAssets",
00074 Gtk::StockID("panel_assets"));
00075 assetsPanelAction->signal_toggled().connect(
00076 sigc::mem_fun(*this, &Actions::on_menu_view_assets));
00077 actionGroup->add(assetsPanelAction);
00078
00079 timelinePanelAction = ToggleAction::create("ViewTimeline",
00080 Gtk::StockID("panel_timeline"));
00081 timelinePanelAction->signal_toggled().connect(
00082 sigc::mem_fun(*this, &Actions::on_menu_view_timeline));
00083 actionGroup->add(timelinePanelAction);
00084
00085 viewerPanelAction = ToggleAction::create("ViewViewer",
00086 Gtk::StockID("panel_viewer"));
00087 viewerPanelAction->signal_toggled().connect(
00088 sigc::mem_fun(*this, &Actions::on_menu_view_viewer));
00089 actionGroup->add(viewerPanelAction);
00090
00091
00092 actionGroup->add(Action::create("SequenceMenu", _("_Sequence")));
00093 actionGroup->add(Action::create("SequenceAdd", _("_Add...")),
00094 sigc::mem_fun(*this, &Actions::on_menu_sequence_add));
00095
00096
00097 actionGroup->add(Action::create("TrackMenu", _("_Track")));
00098 actionGroup->add(Action::create("TrackAdd", _("_Add...")),
00099 sigc::mem_fun(*this, &Actions::on_menu_track_add));
00100
00101
00102 actionGroup->add(Action::create("HelpMenu", _("_Help")) );
00103 actionGroup->add(Action::create("HelpAbout", Stock::ABOUT),
00104 sigc::mem_fun(*this, &Actions::on_menu_help_about) );
00105 }
00106
00107 void
00108 Actions::update_action_state()
00109 {
00110 REQUIRE(workspaceWindow.assetsPanel != NULL);
00111 REQUIRE(workspaceWindow.timelinePanel != NULL);
00112 REQUIRE(workspaceWindow.viewerPanel != NULL);
00113
00114 is_updating_action_state = true;
00115 assetsPanelAction->set_active(
00116 workspaceWindow.assetsPanel->is_shown());
00117 timelinePanelAction->set_active(
00118 workspaceWindow.timelinePanel->is_shown());
00119 viewerPanelAction->set_active(
00120 workspaceWindow.viewerPanel->is_shown());
00121 is_updating_action_state = false;
00122 }
00123
00124
00125
00126 void
00127 Actions::on_menu_file_new_project()
00128 {
00129 g_message("A File|New menu item was selecteda.");
00130 }
00131
00132 void
00133 Actions::on_menu_file_open_project()
00134 {
00135 g_message("A File|Open menu item was selecteda.");
00136 }
00137
00138 void
00139 Actions::on_menu_file_render()
00140 {
00141 dialogs::Render dialog(workspaceWindow);
00142 dialog.run();
00143 }
00144
00145 void
00146 Actions::on_menu_file_quit()
00147 {
00148 workspaceWindow.hide();
00149 }
00150
00151
00152
00153 void
00154 Actions::on_menu_edit_preferences()
00155 {
00156 dialogs::PreferencesDialog dialog(workspaceWindow);
00157 dialog.run();
00158 }
00159
00160
00161
00162 void
00163 Actions::on_menu_view_assets()
00164 {
00165 if(!is_updating_action_state)
00166 workspaceWindow.assetsPanel->show(assetsPanelAction->get_active());
00167 }
00168
00169 void
00170 Actions::on_menu_view_timeline()
00171 {
00172 if(!is_updating_action_state)
00173 workspaceWindow.timelinePanel->show(timelinePanelAction->get_active());
00174 }
00175
00176 void
00177 Actions::on_menu_view_viewer()
00178 {
00179 if(!is_updating_action_state)
00180 workspaceWindow.viewerPanel->show(viewerPanelAction->get_active());
00181 }
00182
00183
00184
00185 void
00186 Actions::on_menu_sequence_add()
00187 {
00188 dialogs::NameChooser dialog(workspaceWindow,
00189 _("Add Sequence"), _("New Sequence"));
00190 if(dialog.run() == RESPONSE_OK)
00191 workspaceWindow.get_project()->add_new_sequence(dialog.get_name());
00192 }
00193
00194
00195
00196 void
00197 Actions::on_menu_track_add()
00198 {
00199 g_message("Hello");
00200 }
00201
00202
00203
00204 void
00205 Actions::on_menu_help_about()
00206 {
00207
00208 AboutDialog dialog;
00209
00210
00211 dialog.set_version(AppVersion);
00212
00213 dialog.set_copyright(AppCopyright);
00214 dialog.set_website(AppWebsite);
00215 dialog.set_authors(StringArrayHandle(AppAuthors,
00216 sizeof(AppAuthors) / sizeof(gchar*),
00217 OWNERSHIP_NONE));
00218
00219 dialog.set_transient_for(workspaceWindow);
00220
00221
00222 dialog.run();
00223 }
00224
00225
00226
00227
00228 void
00229 Actions::on_menu_others()
00230 {
00231 g_message("A menu item was selected.");
00232 }
00233
00234 }
00235 }
00236