[gparted] Use custom text functions for mount/unmount and swapon/swapoff texts
- From: Curtis Gedak <gedakc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gparted] Use custom text functions for mount/unmount and swapon/swapoff texts
- Date: Fri, 10 Feb 2012 17:36:10 +0000 (UTC)
commit 170a79b3a08cbcd20415ea02d12a3995539ed9e8
Author: Rogier Goossens <goossens rogier gmail com>
Date: Fri Jan 27 12:41:31 2012 -0700
Use custom text functions for mount/unmount and swapon/swapoff texts
Part 3 of 4 to provide new UUID support for NTFS.
See Bug #667278 - Add support for setting UUID
include/Utils.h | 2 +
include/linux_swap.h | 2 +
src/FileSystem.cc | 13 +++++++++-
src/Win_GParted.cc | 65 ++++++++++++++++++++++++++-----------------------
src/linux_swap.cc | 16 ++++++++++++
5 files changed, 66 insertions(+), 32 deletions(-)
---
diff --git a/include/Utils.h b/include/Utils.h
index ef54777..121f7e0 100644
--- a/include/Utils.h
+++ b/include/Utils.h
@@ -94,6 +94,8 @@ enum SIZE_UNIT
enum CUSTOM_TEXT
{
CTEXT_NONE,
+ CTEXT_ACTIVATE_FILESYSTEM, // Activate text ('Mount', 'Swapon', ...)
+ CTEXT_DEACTIVATE_FILESYSTEM, // Deactivate text ('Unmount', 'Swapoff', ...)
} ;
//struct to store file system information
diff --git a/include/linux_swap.h b/include/linux_swap.h
index b7d1beb..6be8c23 100644
--- a/include/linux_swap.h
+++ b/include/linux_swap.h
@@ -28,6 +28,8 @@ namespace GParted
class linux_swap : public FileSystem
{
public:
+ virtual const Glib::ustring get_custom_text( CUSTOM_TEXT ttype, int index = 0 ) ;
+
FS get_filesystem_support() ;
void set_used_sectors( Partition & partition ) ;
void read_label( Partition & partition ) ;
diff --git a/src/FileSystem.cc b/src/FileSystem.cc
index d196155..8b02404 100644
--- a/src/FileSystem.cc
+++ b/src/FileSystem.cc
@@ -34,7 +34,18 @@ const Glib::ustring FileSystem::get_custom_text( CUSTOM_TEXT ttype, int index )
const Glib::ustring FileSystem::get_generic_text( CUSTOM_TEXT ttype, int index )
{
- return "" ;
+ /*TO TRANSLATORS: these labels will be used in the partition menu */
+ static const Glib::ustring activate_text = _( "_Mount" ) ;
+ static const Glib::ustring deactivate_text = _( "_Unmount" ) ;
+
+ switch ( ttype ) {
+ case CTEXT_ACTIVATE_FILESYSTEM :
+ return index == 0 ? activate_text : "" ;
+ case CTEXT_DEACTIVATE_FILESYSTEM :
+ return index == 0 ? deactivate_text : "" ;
+ default :
+ return "" ;
+ }
}
int FileSystem::execute_command( const Glib::ustring & command, OperationDetail & operationdetail )
diff --git a/src/Win_GParted.cc b/src/Win_GParted.cc
index 67d3605..dead3e9 100644
--- a/src/Win_GParted.cc
+++ b/src/Win_GParted.cc
@@ -303,6 +303,7 @@ void Win_GParted::init_toolbar()
void Win_GParted::init_partition_menu()
{
int index = 0 ;
+
//fill menu_partition
image = manage( new Gtk::Image( Gtk::Stock::NEW, Gtk::ICON_SIZE_MENU ) );
menu_partition .items() .push_back(
@@ -356,7 +357,8 @@ void Win_GParted::init_partition_menu()
index++ ;
menu_partition .items() .push_back(
- Gtk::Menu_Helpers::MenuElem( _("Unmount"),
+ //This is a placeholder text. It will be replaced with some other text before it is used
+ Gtk::Menu_Helpers::MenuElem( "--placeholder--",
sigc::mem_fun( *this, &Win_GParted::toggle_swap_mount_state ) ) );
MENU_TOGGLE_MOUNT_SWAP = index++ ;
@@ -903,8 +905,8 @@ void Win_GParted::set_valid_operations()
allow_manage_flags( false ) ; allow_check( false ) ; allow_label_partition( false ) ;
allow_change_uuid( false ); allow_info( false ) ;
- dynamic_cast<Gtk::Label*>( menu_partition .items()[ MENU_TOGGLE_MOUNT_SWAP ] .get_child() )
- ->set_label( _("_Unmount") ) ;
+ dynamic_cast<Gtk::Label*>( menu_partition .items()[ MENU_TOGGLE_MOUNT_SWAP ] .get_child() )
+ ->set_label( FileSystem::get_generic_text ( CTEXT_DEACTIVATE_FILESYSTEM ) ) ;
menu_partition .items()[ MENU_TOGGLE_MOUNT_SWAP ] .show() ;
menu_partition .items()[ MENU_MOUNT ] .hide() ;
@@ -920,34 +922,37 @@ void Win_GParted::set_valid_operations()
if ( selected_partition .type != GParted::TYPE_UNALLOCATED && selected_partition .status == GParted::STAT_REAL )
allow_manage_flags( true ) ;
- //deal with swap...
- if ( selected_partition .filesystem == GParted::FS_LINUX_SWAP )
- {
- if ( selected_partition .status == GParted::STAT_REAL )
- allow_toggle_swap_mount_state( true ) ;
-
- if ( selected_partition .busy )
- {
- dynamic_cast<Gtk::Label*>(menu_partition .items()[ MENU_TOGGLE_MOUNT_SWAP ] .get_child() )
- ->set_label( _("_Swapoff") ) ;
-
- return ;
- }
- else
- dynamic_cast<Gtk::Label*>(menu_partition .items()[ MENU_TOGGLE_MOUNT_SWAP ] .get_child() )
- ->set_label( _("_Swapon") ) ;
- }
-
- //only unmount is allowed (if ! extended)
- if ( selected_partition .busy )
- {
- if ( selected_partition .type != GParted::TYPE_EXTENDED &&
- selected_partition .filesystem != GParted::FS_LVM2_PV )
- allow_toggle_swap_mount_state( true ) ;
+ //Activate / deactivate
+ if ( gparted_core .get_filesystem_object ( selected_partition .filesystem ) )
+ dynamic_cast<Gtk::Label*>( menu_partition .items()[ MENU_TOGGLE_MOUNT_SWAP ] .get_child() )
+ ->set_label( gparted_core .get_filesystem_object ( selected_partition .filesystem )
+ ->get_custom_text ( selected_partition .busy
+ ? CTEXT_DEACTIVATE_FILESYSTEM
+ : CTEXT_ACTIVATE_FILESYSTEM
+ )
+ ) ;
+ else
+ dynamic_cast<Gtk::Label*>( menu_partition .items()[ MENU_TOGGLE_MOUNT_SWAP ] .get_child() )
+ ->set_label( FileSystem::get_generic_text ( selected_partition .busy
+ ? CTEXT_DEACTIVATE_FILESYSTEM
+ : CTEXT_ACTIVATE_FILESYSTEM )
+ ) ;
+
+ //Only permit mount/unmount, swapon/swapoff, ... if action is available
+ if ( selected_partition .status == GParted::STAT_REAL
+ && selected_partition .type != GParted::TYPE_EXTENDED
+ && selected_partition .filesystem != GParted::FS_LVM2_PV
+ && ( selected_partition .busy
+ || selected_partition .get_mountpoints() .size() /* Have mount point(s) */
+ || selected_partition .filesystem == GParted::FS_LINUX_SWAP
+ )
+ )
+ allow_toggle_swap_mount_state( true ) ;
+ //only unmount/swapoff/... is allowed if busy
+ if ( selected_partition .busy )
return ;
- }
-
+
//UNALLOCATED
if ( selected_partition .type == GParted::TYPE_UNALLOCATED )
{
@@ -1050,8 +1055,6 @@ void Win_GParted::set_valid_operations()
&& selected_partition .get_mountpoints() .size()
)
{
- allow_toggle_swap_mount_state( true ) ;
-
menu = menu_partition .items()[ MENU_MOUNT ] .get_submenu() ;
menu ->items() .clear() ;
for ( unsigned int t = 0 ; t < selected_partition .get_mountpoints() .size() ; t++ )
diff --git a/src/linux_swap.cc b/src/linux_swap.cc
index aa345ef..05f7efb 100644
--- a/src/linux_swap.cc
+++ b/src/linux_swap.cc
@@ -22,6 +22,22 @@
namespace GParted
{
+const Glib::ustring linux_swap::get_custom_text( CUSTOM_TEXT ttype, int index )
+{
+ /*TO TRANSLATORS: these labels will be used in the partition menu */
+ static const Glib::ustring activate_text = _( "_Swapon" ) ;
+ static const Glib::ustring deactivate_text = _( "_Swapoff" ) ;
+
+ switch ( ttype ) {
+ case CTEXT_ACTIVATE_FILESYSTEM :
+ return index == 0 ? activate_text : "" ;
+ case CTEXT_DEACTIVATE_FILESYSTEM :
+ return index == 0 ? deactivate_text : "" ;
+ default :
+ return "" ;
+ }
+}
+
FS linux_swap::get_filesystem_support()
{
FS fs ;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]