prepare-for-gtk3: Prepare for removal of Gtk::Menu_Helpers::Element (#7)

Gtk::Menu_Helpers::Element class and subclasses help in Gtk::MenuItem
widgets and also automate tasks like registering keyboard accelerators
when parented to a top-level window [1][2].

Gtk::Menu_Helpers::Element class and subclasses were removed in Gtkmm3
[3].  Provide compatible implementations under the namespace
GParted::Menu_Helpers.

References:

[1] gtkmm: Gtk::Menu_Helpers Namespace Reference
    https://developer.gnome.org/gtkmm/2.24/namespaceGtk_1_1Menu__Helpers.html

[2] gtkmm: Gtk::Menu_Helpers::Element Class Reference
    https://developer.gnome.org/gtkmm/2.24/classGtk_1_1Menu__Helpers_1_1Element.html

[3] Gtkmm 3 commit "MenuShell: Remove items()." removed the code
    c8e47b0db5

Closes #7 - Port to Gtk3
This commit is contained in:
Luca Bacci 2018-07-31 15:36:11 +02:00 committed by Mike Fleetwood
parent a44d548a3a
commit eb30c959a6
7 changed files with 384 additions and 97 deletions

View File

@ -27,6 +27,7 @@ EXTRA_DIST = \
HBoxOperations.h \ HBoxOperations.h \
LVM2_PV_Info.h \ LVM2_PV_Info.h \
LUKS_Info.h \ LUKS_Info.h \
MenuHelpers.h \
Mount_Info.h \ Mount_Info.h \
Operation.h \ Operation.h \
OperationChangeUUID.h \ OperationChangeUUID.h \

103
include/MenuHelpers.h Normal file
View File

@ -0,0 +1,103 @@
/* Copyright (C) 2018 Luca Bacci
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GPARTED_MENUHELPERS_H
#define GPARTED_MENUHELPERS_H
#include <glibmm/ustring.h>
#include <gtkmm/menu.h>
#include <gtkmm/menuitem.h>
#include <gtkmm/imagemenuitem.h>
#include <gtkmm/separatormenuitem.h>
#include <gtkmm/checkmenuitem.h>
namespace GParted
{
namespace Menu_Helpers
{
typedef sigc::slot<void> CallSlot;
class MenuElem
: public Gtk::MenuItem
{
public:
MenuElem(const Glib::ustring& label,
const Gtk::AccelKey& key,
const CallSlot& slot = CallSlot());
MenuElem(const Glib::ustring& label,
const CallSlot& slot = CallSlot());
MenuElem(const Glib::ustring& label,
Gtk::Menu& submenu);
};
class ImageMenuElem
: public Gtk::ImageMenuItem
{
public:
ImageMenuElem(const Glib::ustring& label,
const Gtk::AccelKey& key,
Gtk::Widget& image_widget,
const CallSlot& slot = CallSlot());
ImageMenuElem(const Glib::ustring& label,
Gtk::Widget& image_widget,
const CallSlot& slot = CallSlot());
ImageMenuElem(const Glib::ustring& label,
Gtk::Widget& image_widget,
Gtk::Menu& submenu);
};
class SeparatorElem
: public Gtk::SeparatorMenuItem
{
public:
SeparatorElem();
};
class StockMenuElem
: public Gtk::ImageMenuItem
{
public:
StockMenuElem(const Gtk::StockID& stock_id,
const Gtk::AccelKey& key,
const CallSlot& slot = CallSlot());
StockMenuElem(const Gtk::StockID& stock_id,
const CallSlot& slot = CallSlot());
StockMenuElem(const Gtk::StockID& stock_id,
Gtk::Menu& submenu);
};
class CheckMenuElem
: public Gtk::CheckMenuItem
{
public:
CheckMenuElem(const Glib::ustring& label,
const Gtk::AccelKey& key,
const CallSlot& slot = CallSlot());
CheckMenuElem(const Glib::ustring& label,
const CallSlot& slot = CallSlot());
};
}//Menu_Helpers
}//GParted
#endif /* GPARTED_MENUHELPERS_H */

View File

@ -25,6 +25,7 @@ src/GParted_Core.cc
src/HBoxOperations.cc src/HBoxOperations.cc
src/LVM2_PV_Info.cc src/LVM2_PV_Info.cc
src/LUKS_Info.cc src/LUKS_Info.cc
src/MenuHelpers.cc
src/Mount_Info.cc src/Mount_Info.cc
src/OperationChangeUUID.cc src/OperationChangeUUID.cc
src/OperationCopy.cc src/OperationCopy.cc

View File

@ -15,6 +15,7 @@
*/ */
#include "HBoxOperations.h" #include "HBoxOperations.h"
#include "MenuHelpers.h"
#include <gtkmm/stock.h> #include <gtkmm/stock.h>
@ -40,24 +41,24 @@ HBoxOperations::HBoxOperations()
pack_start( scrollwindow, Gtk::PACK_EXPAND_WIDGET ); pack_start( scrollwindow, Gtk::PACK_EXPAND_WIDGET );
//create popupmenu //create popupmenu
menu_popup .items() .push_back( Gtk::Menu_Helpers::ImageMenuElem( menu_popup.append(*manage(new GParted::Menu_Helpers::ImageMenuElem(
_("_Undo Last Operation"), _("_Undo Last Operation"),
* manage( new Gtk::Image( Gtk::Stock::UNDO, Gtk::ICON_SIZE_MENU ) ), * manage( new Gtk::Image( Gtk::Stock::UNDO, Gtk::ICON_SIZE_MENU ) ),
sigc::mem_fun(*this, &HBoxOperations::on_undo) ) ); sigc::mem_fun(*this, &HBoxOperations::on_undo))));
menu_popup .items() .push_back( Gtk::Menu_Helpers::ImageMenuElem( menu_popup.append(*manage(new GParted::Menu_Helpers::ImageMenuElem(
_("_Clear All Operations"), _("_Clear All Operations"),
* manage( new Gtk::Image( Gtk::Stock::CLEAR, Gtk::ICON_SIZE_MENU ) ), * manage( new Gtk::Image( Gtk::Stock::CLEAR, Gtk::ICON_SIZE_MENU ) ),
sigc::mem_fun(*this, &HBoxOperations::on_clear) ) ); sigc::mem_fun(*this, &HBoxOperations::on_clear))));
menu_popup .items() .push_back( Gtk::Menu_Helpers::ImageMenuElem( menu_popup.append(*manage(new GParted::Menu_Helpers::ImageMenuElem(
_("_Apply All Operations"), _("_Apply All Operations"),
* manage( new Gtk::Image( Gtk::Stock::APPLY, Gtk::ICON_SIZE_MENU ) ), * manage( new Gtk::Image( Gtk::Stock::APPLY, Gtk::ICON_SIZE_MENU ) ),
sigc::mem_fun(*this, &HBoxOperations::on_apply) ) ); sigc::mem_fun(*this, &HBoxOperations::on_apply))));
menu_popup .items() .push_back( Gtk::Menu_Helpers::SeparatorElem() ); menu_popup.append(*manage(new GParted::Menu_Helpers::SeparatorElem()));
menu_popup .items() .push_back( Gtk::Menu_Helpers::StockMenuElem( menu_popup.append(*manage(new GParted::Menu_Helpers::StockMenuElem(
Gtk::Stock::CLOSE, sigc::mem_fun(*this, &HBoxOperations::on_close) ) ); Gtk::Stock::CLOSE, sigc::mem_fun(*this, &HBoxOperations::on_close))));
} }
void HBoxOperations::load_operations( const std::vector<Operation *> operations ) void HBoxOperations::load_operations( const std::vector<Operation *> operations )

View File

@ -37,6 +37,7 @@ gpartedbin_SOURCES = \
HBoxOperations.cc \ HBoxOperations.cc \
LVM2_PV_Info.cc \ LVM2_PV_Info.cc \
LUKS_Info.cc \ LUKS_Info.cc \
MenuHelpers.cc \
Mount_Info.cc \ Mount_Info.cc \
Operation.cc \ Operation.cc \
OperationChangeUUID.cc \ OperationChangeUUID.cc \

170
src/MenuHelpers.cc Normal file
View File

@ -0,0 +1,170 @@
/* Copyright (C) 2018 Luca Bacci
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#include "MenuHelpers.h"
#include <gtkmm/imagemenuitem.h>
#include <gtkmm/checkmenuitem.h>
#include <gtkmm/separatormenuitem.h>
namespace GParted
{
namespace Menu_Helpers
{
MenuElem::MenuElem(const Glib::ustring& label,
const Gtk::AccelKey& key,
const CallSlot& slot)
: Gtk::MenuItem(label, true)
{
if (slot)
signal_activate().connect(slot);
set_accel_key(key);
show_all();
}
MenuElem::MenuElem(const Glib::ustring & label,
const CallSlot & slot)
: Gtk::MenuItem(label, true)
{
if (slot)
signal_activate().connect(slot);
show_all();
}
MenuElem::MenuElem(const Glib::ustring & label,
Gtk::Menu & submenu)
: Gtk::MenuItem(label, true)
{
set_submenu(submenu);
show_all();
}
ImageMenuElem::ImageMenuElem(const Glib::ustring& label,
const Gtk::AccelKey& key,
Gtk::Widget& image_widget,
const CallSlot& slot)
: ImageMenuItem(image_widget, label, true)
{
if (slot)
signal_activate().connect(slot);
set_accel_key(key);
show_all();
}
ImageMenuElem::ImageMenuElem(const Glib::ustring& label,
Gtk::Widget& image_widget,
const CallSlot& slot)
: ImageMenuItem(image_widget, label, true)
{
if (slot)
signal_activate().connect(slot);
show_all();
}
ImageMenuElem::ImageMenuElem(const Glib::ustring& label,
Gtk::Widget& image_widget,
Gtk::Menu& submenu)
: ImageMenuItem(image_widget, label, true)
{
set_submenu(submenu);
show_all();
}
SeparatorElem::SeparatorElem()
: Gtk::SeparatorMenuItem()
{
show_all();
}
StockMenuElem::StockMenuElem(const Gtk::StockID& stock_id,
const Gtk::AccelKey& key,
const CallSlot& slot)
: Gtk::ImageMenuItem(stock_id)
{
if (slot)
signal_activate().connect(slot);
set_accel_key(key);
show_all();
}
StockMenuElem::StockMenuElem(const Gtk::StockID& stock_id,
const CallSlot& slot)
: Gtk::ImageMenuItem(stock_id)
{
if (slot)
signal_activate().connect(slot);
show_all();
}
StockMenuElem::StockMenuElem(const Gtk::StockID& stock_id,
Gtk::Menu& submenu)
: Gtk::ImageMenuItem(stock_id)
{
set_submenu(submenu);
show_all();
}
CheckMenuElem::CheckMenuElem(const Glib::ustring& label,
const Gtk::AccelKey& key,
const CallSlot& slot)
: Gtk::CheckMenuItem(label, true)
{
if (slot)
signal_activate().connect(slot);
set_accel_key(key);
show_all();
}
CheckMenuElem::CheckMenuElem(const Glib::ustring& label,
const CallSlot& slot)
: Gtk::CheckMenuItem(label, true)
{
if (slot)
signal_activate().connect(slot);
show_all();
}
} //Menu_Helpers
} //GParted

View File

@ -29,6 +29,7 @@
#include "Dialog_Partition_Name.h" #include "Dialog_Partition_Name.h"
#include "DialogManageFlags.h" #include "DialogManageFlags.h"
#include "GParted_Core.h" #include "GParted_Core.h"
#include "MenuHelpers.h"
#include "Mount_Info.h" #include "Mount_Info.h"
#include "OperationCopy.h" #include "OperationCopy.h"
#include "OperationCheck.h" #include "OperationCheck.h"
@ -156,78 +157,87 @@ void Win_GParted::init_menubar()
//gparted //gparted
menu = manage( new Gtk::Menu() ) ; menu = manage( new Gtk::Menu() ) ;
image = manage( new Gtk::Image( Gtk::Stock::REFRESH, Gtk::ICON_SIZE_MENU ) ); image = manage( new Gtk::Image( Gtk::Stock::REFRESH, Gtk::ICON_SIZE_MENU ) );
menu ->items() .push_back( Gtk::Menu_Helpers::ImageMenuElem( menu->append(*manage(new GParted::Menu_Helpers::ImageMenuElem(
_("_Refresh Devices"), _("_Refresh Devices"),
Gtk::AccelKey("<control>r"), Gtk::AccelKey("<control>r"),
*image, *image,
sigc::mem_fun(*this, &Win_GParted::menu_gparted_refresh_devices) ) ); sigc::mem_fun(*this, &Win_GParted::menu_gparted_refresh_devices))));
image = manage( new Gtk::Image( Gtk::Stock::HARDDISK, Gtk::ICON_SIZE_MENU ) ); image = manage( new Gtk::Image( Gtk::Stock::HARDDISK, Gtk::ICON_SIZE_MENU ) );
menu ->items() .push_back( Gtk::Menu_Helpers::ImageMenuElem( _("_Devices"), *image ) ) ; menu->append(*manage(new GParted::Menu_Helpers::ImageMenuElem(
_("_Devices"), *image)));
menu ->items() .push_back( Gtk::Menu_Helpers::SeparatorElem( ) ); menu->append(*manage(new GParted::Menu_Helpers::SeparatorElem()));
menu ->items() .push_back( Gtk::Menu_Helpers::StockMenuElem( menu->append(*manage(new GParted::Menu_Helpers::StockMenuElem(
Gtk::Stock::QUIT, sigc::mem_fun(*this, &Win_GParted::menu_gparted_quit) ) ); Gtk::Stock::QUIT, sigc::mem_fun(*this, &Win_GParted::menu_gparted_quit))));
menubar_main .items() .push_back( Gtk::Menu_Helpers::MenuElem( _("_GParted"), *menu ) ); menubar_main.append(*manage(new GParted::Menu_Helpers::MenuElem(
_("_GParted"), *menu)));
//edit //edit
menu = manage( new Gtk::Menu() ) ; menu = manage( new Gtk::Menu() ) ;
menu ->items() .push_back( Gtk::Menu_Helpers::ImageMenuElem( menu->append(*manage(new GParted::Menu_Helpers::ImageMenuElem(
_("_Undo Last Operation"), _("_Undo Last Operation"),
Gtk::AccelKey("<control>z"), Gtk::AccelKey("<control>z"),
* manage( new Gtk::Image( Gtk::Stock::UNDO, Gtk::ICON_SIZE_MENU ) ), * manage( new Gtk::Image( Gtk::Stock::UNDO, Gtk::ICON_SIZE_MENU ) ),
sigc::mem_fun(*this, &Win_GParted::activate_undo) ) ); sigc::mem_fun(*this, &Win_GParted::activate_undo))));
menu ->items() .push_back( Gtk::Menu_Helpers::ImageMenuElem( menu->append(*manage(new GParted::Menu_Helpers::ImageMenuElem(
_("_Clear All Operations"), _("_Clear All Operations"),
* manage( new Gtk::Image( Gtk::Stock::CLEAR, Gtk::ICON_SIZE_MENU ) ), * manage( new Gtk::Image( Gtk::Stock::CLEAR, Gtk::ICON_SIZE_MENU ) ),
sigc::mem_fun(*this, &Win_GParted::clear_operationslist) ) ); sigc::mem_fun(*this, &Win_GParted::clear_operationslist))));
menu ->items() .push_back( Gtk::Menu_Helpers::ImageMenuElem( menu->append(*manage(new GParted::Menu_Helpers::ImageMenuElem(
_("_Apply All Operations"), _("_Apply All Operations"),
Gtk::AccelKey(GDK_KEY_Return, Gdk::CONTROL_MASK), Gtk::AccelKey(GDK_KEY_Return, Gdk::CONTROL_MASK),
* manage( new Gtk::Image( Gtk::Stock::APPLY, Gtk::ICON_SIZE_MENU ) ), * manage( new Gtk::Image( Gtk::Stock::APPLY, Gtk::ICON_SIZE_MENU ) ),
sigc::mem_fun(*this, &Win_GParted::activate_apply) ) ); sigc::mem_fun(*this, &Win_GParted::activate_apply))));
menubar_main .items() .push_back( Gtk::Menu_Helpers::MenuElem( _("_Edit"), *menu ) ); menubar_main.append(*manage(new GParted::Menu_Helpers::MenuElem(
_("_Edit"), *menu)));
//view //view
menu = manage( new Gtk::Menu() ) ; menu = manage( new Gtk::Menu() ) ;
menu ->items() .push_back( Gtk::Menu_Helpers::CheckMenuElem( menu->append(*manage(new GParted::Menu_Helpers::CheckMenuElem(
_("Device _Information"), sigc::mem_fun(*this, &Win_GParted::menu_view_harddisk_info) ) ); _("Device _Information"), sigc::mem_fun(*this, &Win_GParted::menu_view_harddisk_info))));
menu ->items() .push_back( Gtk::Menu_Helpers::CheckMenuElem( menu->append(*manage(new GParted::Menu_Helpers::CheckMenuElem(
_("Pending _Operations"), sigc::mem_fun(*this, &Win_GParted::menu_view_operations) ) ); _("Pending _Operations"), sigc::mem_fun(*this, &Win_GParted::menu_view_operations))));
menubar_main .items() .push_back( Gtk::Menu_Helpers::MenuElem( _("_View"), *menu ) ); menubar_main.append(*manage(new GParted::Menu_Helpers::MenuElem(
_("_View"), *menu)));
menu ->items() .push_back( Gtk::Menu_Helpers::SeparatorElem( ) ); menu->append(*manage(new GParted::Menu_Helpers::SeparatorElem()));
menu ->items() .push_back( Gtk::Menu_Helpers::MenuElem( menu->append(*manage(new GParted::Menu_Helpers::MenuElem(
_("_File System Support"), sigc::mem_fun( *this, &Win_GParted::menu_gparted_features ) ) ); _("_File System Support"), sigc::mem_fun(*this, &Win_GParted::menu_gparted_features))));
//device //device
menu = manage( new Gtk::Menu() ) ; menu = manage( new Gtk::Menu() ) ;
menu ->items() .push_back( Gtk::Menu_Helpers::MenuElem( Glib::ustring( _("_Create Partition Table") ) + "...", menu->append(*manage(new GParted::Menu_Helpers::MenuElem(
sigc::mem_fun(*this, &Win_GParted::activate_disklabel) ) ); Glib::ustring(_("_Create Partition Table") ) + "...",
sigc::mem_fun(*this, &Win_GParted::activate_disklabel))));
menu ->items() .push_back( Gtk::Menu_Helpers::MenuElem( Glib::ustring( _("_Attempt Data Rescue") ) + "...", menu->append(*manage(new GParted::Menu_Helpers::MenuElem(
sigc::mem_fun(*this, &Win_GParted::activate_attempt_rescue_data) ) ); Glib::ustring(_("_Attempt Data Rescue") ) + "...",
sigc::mem_fun(*this, &Win_GParted::activate_attempt_rescue_data))));
menubar_main .items() .push_back( Gtk::Menu_Helpers::MenuElem( _("_Device"), *menu ) ); menubar_main.append(*manage(new GParted::Menu_Helpers::MenuElem(
_("_Device"), *menu)));
//partition //partition
init_partition_menu() ; init_partition_menu() ;
menubar_main .items() .push_back( Gtk::Menu_Helpers::MenuElem( _("_Partition"), menu_partition ) ); menubar_main.append(*manage(new GParted::Menu_Helpers::MenuElem(
_("_Partition"), menu_partition)));
//help //help
menu = manage( new Gtk::Menu() ) ; menu = manage( new Gtk::Menu() ) ;
menu ->items() .push_back( Gtk::Menu_Helpers::ImageMenuElem( menu->append(*manage(new GParted::Menu_Helpers::ImageMenuElem(
_("_Contents"), _("_Contents"),
Gtk::AccelKey("F1"), Gtk::AccelKey("F1"),
* manage( new Gtk::Image( Gtk::Stock::HELP, Gtk::ICON_SIZE_MENU ) ), * manage( new Gtk::Image( Gtk::Stock::HELP, Gtk::ICON_SIZE_MENU ) ),
sigc::mem_fun(*this, &Win_GParted::menu_help_contents) ) ); sigc::mem_fun(*this, &Win_GParted::menu_help_contents))));
menu ->items() .push_back( Gtk::Menu_Helpers::SeparatorElem( ) ); menu->append(*manage(new GParted::Menu_Helpers::SeparatorElem()));
menu ->items() .push_back( Gtk::Menu_Helpers::StockMenuElem( menu->append(*manage(new GParted::Menu_Helpers::StockMenuElem(
Gtk::Stock::ABOUT, sigc::mem_fun(*this, &Win_GParted::menu_help_about) ) ); Gtk::Stock::ABOUT, sigc::mem_fun(*this, &Win_GParted::menu_help_about))));
menubar_main.items() .push_back( Gtk::Menu_Helpers::MenuElem(_("_Help"), *menu ) ); menubar_main.append(*manage(new GParted::Menu_Helpers::MenuElem(
_("_Help"), *menu)));
} }
void Win_GParted::init_toolbar() void Win_GParted::init_toolbar()
@ -327,108 +337,108 @@ void Win_GParted::init_partition_menu()
//fill menu_partition //fill menu_partition
image = manage( new Gtk::Image( Gtk::Stock::NEW, Gtk::ICON_SIZE_MENU ) ); image = manage( new Gtk::Image( Gtk::Stock::NEW, Gtk::ICON_SIZE_MENU ) );
menu_partition .items() .push_back( menu_partition.append(*manage(new
/*TO TRANSLATORS: "_New" is a sub menu item for the partition menu. */ /*TO TRANSLATORS: "_New" is a sub menu item for the partition menu. */
Gtk::Menu_Helpers::ImageMenuElem( _("_New"), GParted::Menu_Helpers::ImageMenuElem(_("_New"),
Gtk::AccelKey(GDK_KEY_Insert, Gdk::BUTTON1_MASK), Gtk::AccelKey(GDK_KEY_Insert, Gdk::BUTTON1_MASK),
*image, *image,
sigc::mem_fun(*this, &Win_GParted::activate_new) ) ); sigc::mem_fun(*this, &Win_GParted::activate_new))));
MENU_NEW = index++ ; MENU_NEW = index++ ;
menu_partition .items() .push_back( menu_partition.append(*manage(new
Gtk::Menu_Helpers::StockMenuElem( Gtk::Stock::DELETE, GParted::Menu_Helpers::StockMenuElem(Gtk::Stock::DELETE,
Gtk::AccelKey(GDK_KEY_Delete, Gdk::BUTTON1_MASK), Gtk::AccelKey(GDK_KEY_Delete, Gdk::BUTTON1_MASK),
sigc::mem_fun(*this, &Win_GParted::activate_delete) ) ); sigc::mem_fun(*this, &Win_GParted::activate_delete))));
MENU_DEL = index++ ; MENU_DEL = index++ ;
menu_partition .items() .push_back( Gtk::Menu_Helpers::SeparatorElem() ); menu_partition.append(*manage(new GParted::Menu_Helpers::SeparatorElem()));
index++ ; index++ ;
image = manage( new Gtk::Image( Gtk::Stock::GOTO_LAST, Gtk::ICON_SIZE_MENU ) ); image = manage( new Gtk::Image( Gtk::Stock::GOTO_LAST, Gtk::ICON_SIZE_MENU ) );
menu_partition .items() .push_back( menu_partition.append(*manage(new
Gtk::Menu_Helpers::ImageMenuElem( _("_Resize/Move"), GParted::Menu_Helpers::ImageMenuElem(_("_Resize/Move"),
*image, *image,
sigc::mem_fun(*this, &Win_GParted::activate_resize) ) ); sigc::mem_fun(*this, &Win_GParted::activate_resize))));
MENU_RESIZE_MOVE = index++ ; MENU_RESIZE_MOVE = index++ ;
menu_partition .items() .push_back( Gtk::Menu_Helpers::SeparatorElem() ); menu_partition.append(*manage(new GParted::Menu_Helpers::SeparatorElem()));
index++ ; index++ ;
menu_partition .items() .push_back( menu_partition.append(*manage(new
Gtk::Menu_Helpers::StockMenuElem( Gtk::Stock::COPY, GParted::Menu_Helpers::StockMenuElem(Gtk::Stock::COPY,
sigc::mem_fun(*this, &Win_GParted::activate_copy) ) ); sigc::mem_fun(*this, &Win_GParted::activate_copy))));
MENU_COPY = index++ ; MENU_COPY = index++ ;
menu_partition .items() .push_back( menu_partition.append(*manage(new
Gtk::Menu_Helpers::StockMenuElem( Gtk::Stock::PASTE, GParted::Menu_Helpers::StockMenuElem(Gtk::Stock::PASTE,
sigc::mem_fun(*this, &Win_GParted::activate_paste) ) ); sigc::mem_fun(*this, &Win_GParted::activate_paste))));
MENU_PASTE = index++ ; MENU_PASTE = index++ ;
menu_partition .items() .push_back( Gtk::Menu_Helpers::SeparatorElem() ); menu_partition.append(*manage(new GParted::Menu_Helpers::SeparatorElem()));
index++ ; index++ ;
image = manage( new Gtk::Image( Gtk::Stock::CONVERT, Gtk::ICON_SIZE_MENU ) ); image = manage( new Gtk::Image( Gtk::Stock::CONVERT, Gtk::ICON_SIZE_MENU ) );
menu_partition .items() .push_back( menu_partition.append(*manage(new
/*TO TRANSLATORS: menuitem which holds a submenu with file systems.. */ /*TO TRANSLATORS: menuitem which holds a submenu with file systems.. */
Gtk::Menu_Helpers::ImageMenuElem( _("_Format to"), GParted::Menu_Helpers::ImageMenuElem(_("_Format to"),
*image, *image,
* create_format_menu() ) ) ; *create_format_menu())));
MENU_FORMAT = index++ ; MENU_FORMAT = index++ ;
menu_partition .items() .push_back( Gtk::Menu_Helpers::SeparatorElem() ) ; menu_partition.append(*manage(new GParted::Menu_Helpers::SeparatorElem()));
index++ ; index++ ;
menu_partition.items().push_back( menu_partition.append(*manage(new
// Placeholder text, replaced in set_valid_operations() before the menu is shown // Placeholder text, replaced in set_valid_operations() before the menu is shown
Gtk::Menu_Helpers::MenuElem( "--toggle crypt busy--", GParted::Menu_Helpers::MenuElem("--toggle crypt busy--",
sigc::mem_fun( *this, &Win_GParted::toggle_crypt_busy_state ) ) ); sigc::mem_fun(*this, &Win_GParted::toggle_crypt_busy_state))));
MENU_TOGGLE_CRYPT_BUSY = index++; MENU_TOGGLE_CRYPT_BUSY = index++;
menu_partition .items() .push_back( menu_partition.append(*manage(new
// Placeholder text, replaced in set_valid_operations() before the menu is shown // Placeholder text, replaced in set_valid_operations() before the menu is shown
Gtk::Menu_Helpers::MenuElem( "--toggle fs busy--", GParted::Menu_Helpers::MenuElem("--toggle fs busy--",
sigc::mem_fun( *this, &Win_GParted::toggle_fs_busy_state ) ) ); sigc::mem_fun(*this, &Win_GParted::toggle_fs_busy_state))));
MENU_TOGGLE_FS_BUSY = index++; MENU_TOGGLE_FS_BUSY = index++;
menu_partition .items() .push_back( menu_partition.append(*manage(new
/*TO TRANSLATORS: menuitem which holds a submenu with mount points.. */ /*TO TRANSLATORS: menuitem which holds a submenu with mount points.. */
Gtk::Menu_Helpers::MenuElem( _("_Mount on"), * manage( new Gtk::Menu() ) ) ) ; GParted::Menu_Helpers::MenuElem(_("_Mount on"), *manage(new Gtk::Menu()))));
MENU_MOUNT = index++ ; MENU_MOUNT = index++ ;
menu_partition .items() .push_back( Gtk::Menu_Helpers::SeparatorElem() ) ; menu_partition.append(*manage(new GParted::Menu_Helpers::SeparatorElem()));
index++ ; index++ ;
menu_partition.items().push_back( menu_partition.append(*manage(new
Gtk::Menu_Helpers::MenuElem( _("_Name Partition"), GParted::Menu_Helpers::MenuElem(_("_Name Partition"),
sigc::mem_fun( *this, &Win_GParted::activate_name_partition ) ) ); sigc::mem_fun(*this, &Win_GParted::activate_name_partition))));
MENU_NAME_PARTITION = index++; MENU_NAME_PARTITION = index++;
menu_partition .items() .push_back( menu_partition.append(*manage(new
Gtk::Menu_Helpers::MenuElem( _("M_anage Flags"), GParted::Menu_Helpers::MenuElem(_("M_anage Flags"),
sigc::mem_fun( *this, &Win_GParted::activate_manage_flags ) ) ); sigc::mem_fun(*this, &Win_GParted::activate_manage_flags))));
MENU_FLAGS = index++ ; MENU_FLAGS = index++ ;
menu_partition .items() .push_back( menu_partition.append(*manage(new
Gtk::Menu_Helpers::MenuElem( _("C_heck"), GParted::Menu_Helpers::MenuElem(_("C_heck"),
sigc::mem_fun( *this, &Win_GParted::activate_check ) ) ); sigc::mem_fun(*this, &Win_GParted::activate_check))));
MENU_CHECK = index++ ; MENU_CHECK = index++ ;
menu_partition .items() .push_back( menu_partition.append(*manage(new
Gtk::Menu_Helpers::MenuElem( _("_Label File System"), GParted::Menu_Helpers::MenuElem(_("_Label File System"),
sigc::mem_fun( *this, &Win_GParted::activate_label_filesystem ) ) ); sigc::mem_fun(*this, &Win_GParted::activate_label_filesystem))));
MENU_LABEL_PARTITION = index++ ; MENU_LABEL_PARTITION = index++ ;
menu_partition .items() .push_back( menu_partition.append(*manage(new
Gtk::Menu_Helpers::MenuElem( _("New UU_ID"), GParted::Menu_Helpers::MenuElem(_("New UU_ID"),
sigc::mem_fun( *this, &Win_GParted::activate_change_uuid ) ) ); sigc::mem_fun(*this, &Win_GParted::activate_change_uuid))));
MENU_CHANGE_UUID = index++ ; MENU_CHANGE_UUID = index++ ;
menu_partition .items() .push_back( Gtk::Menu_Helpers::SeparatorElem() ) ; menu_partition.append(*manage(new GParted::Menu_Helpers::SeparatorElem()));
index++ ; index++ ;
menu_partition .items() .push_back( menu_partition.append(*manage(new
Gtk::Menu_Helpers::StockMenuElem( Gtk::Stock::DIALOG_INFO, GParted::Menu_Helpers::StockMenuElem(Gtk::Stock::DIALOG_INFO,
sigc::mem_fun(*this, &Win_GParted::activate_info) ) ); sigc::mem_fun(*this, &Win_GParted::activate_info))));
MENU_INFO = index++ ; MENU_INFO = index++ ;
menu_partition .accelerate( *this ) ; menu_partition .accelerate( *this ) ;
@ -1332,10 +1342,10 @@ void Win_GParted::set_valid_operations()
std::vector<Glib::ustring> temp_mountpoints = selected_filesystem.get_mountpoints(); std::vector<Glib::ustring> temp_mountpoints = selected_filesystem.get_mountpoints();
for ( unsigned int t = 0 ; t < temp_mountpoints.size() ; t++ ) for ( unsigned int t = 0 ; t < temp_mountpoints.size() ; t++ )
{ {
menu ->items() .push_back( menu->append(*manage(new
Gtk::Menu_Helpers::MenuElem( GParted::Menu_Helpers::MenuElem(
temp_mountpoints[t], temp_mountpoints[t],
sigc::bind<unsigned int>( sigc::mem_fun(*this, &Win_GParted::activate_mount_partition), t ) ) ); sigc::bind<unsigned int>(sigc::mem_fun(*this, &Win_GParted::activate_mount_partition), t))));
dynamic_cast<Gtk::Label*>( menu ->items() .back() .get_child() ) ->set_use_underline( false ) ; dynamic_cast<Gtk::Label*>( menu ->items() .back() .get_child() ) ->set_use_underline( false ) ;
} }