+
+LoadLayoutItem::LoadLayoutItem(LoadLayout *load_layout, const char *text, int no, int hotkey)
+ : BC_MenuItem(text, "", hotkey)
+{
+ this->no = no;
+ this->load_layout = load_layout;
+ if( hotkey ) {
+ char hot_txt[BCSTRLEN];
+ sprintf(hot_txt, _("Ctl+Shift+F%d"), hotkey-KEY_F1+1);
+ set_ctrl(); set_shift();
+ set_hotkey_text(hot_txt);
+ }
+}
+
+int LoadLayoutItem::handle_event()
+{
+ char layout_path[BCTEXTLEN];
+ snprintf(layout_path, sizeof(layout_path), "%s/" LAYOUT_FILE,
+ File::get_config_path(), no);
+ MWindow *mwindow = load_layout->mwindow;
+ switch( load_layout->action ) {
+ case LAYOUT_LOAD:
+ mwindow->session->load_file(layout_path);
+ break;
+ case LAYOUT_SAVE:
+ mwindow->session->save_file(layout_path);
+ break;
+ }
+ mwindow->restore_windows();
+ mwindow->gui->default_positions();
+ mwindow->save_defaults();
+ return 1;
+}
+
+LoadLayout::LoadLayout(MWindow *mwindow, const char *text, int action)
+ : BC_MenuItem(text)
+{
+ this->mwindow = mwindow;
+ this->action = action;
+}
+
+void LoadLayout::create_objects()
+{
+ BC_SubMenu *layout_submenu = new BC_SubMenu();
+ add_submenu(layout_submenu);
+ for( int i=1; i<=4; ++i ) {
+ char text[BCSTRLEN];
+ sprintf(text, _("Layout %d"), i);
+ LoadLayoutItem *load_layout_item =
+ new LoadLayoutItem(this, text, i,
+ action==LAYOUT_LOAD ? KEY_F1-1+i : 0);
+ layout_submenu->add_submenuitem(load_layout_item);
+ }
+}
+