2009-11-05 11:08:32 -07:00
|
|
|
/* Copyright (C) 2004 Bart
|
2010-02-24 11:39:42 -07:00
|
|
|
* Copyright (C) 2008, 2009, 2010 Curtis Gedak
|
2004-09-19 14:24:53 -06:00
|
|
|
*
|
|
|
|
* 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 Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "../include/Dialog_Partition_New.h"
|
|
|
|
|
|
|
|
namespace GParted
|
|
|
|
{
|
|
|
|
|
2006-02-25 03:09:30 -07:00
|
|
|
Dialog_Partition_New::Dialog_Partition_New()
|
2004-09-19 14:24:53 -06:00
|
|
|
{
|
|
|
|
/*TO TRANSLATORS: dialogtitle */
|
|
|
|
this ->set_title( _("Create new Partition") ) ;
|
|
|
|
Set_Resizer( false ) ;
|
|
|
|
Set_Confirm_Button( NEW ) ;
|
|
|
|
|
2004-12-12 07:57:04 -07:00
|
|
|
//set used (in pixels)...
|
2004-09-19 14:24:53 -06:00
|
|
|
frame_resizer_base ->set_used( 0 ) ;
|
|
|
|
}
|
|
|
|
|
2006-02-25 03:09:30 -07:00
|
|
|
void Dialog_Partition_New::Set_Data( const Partition & partition,
|
|
|
|
bool any_extended,
|
|
|
|
unsigned short new_count,
|
|
|
|
const std::vector<FS> & FILESYSTEMS,
|
|
|
|
bool only_unformatted,
|
2010-02-24 11:39:42 -07:00
|
|
|
Sector cylinder_size,
|
|
|
|
Glib::ustring disktype )
|
2004-09-19 14:24:53 -06:00
|
|
|
{
|
2004-10-06 09:32:40 -06:00
|
|
|
this ->new_count = new_count;
|
|
|
|
this ->selected_partition = partition;
|
2004-12-10 13:42:23 -07:00
|
|
|
this ->cylinder_size = cylinder_size ;
|
2008-12-07 11:43:35 -07:00
|
|
|
|
|
|
|
//copy GParted FILESYSTEMS
|
2004-10-06 09:32:40 -06:00
|
|
|
this ->FILESYSTEMS = FILESYSTEMS ;
|
2008-12-07 11:43:35 -07:00
|
|
|
|
|
|
|
//remove all non-valid file systems
|
|
|
|
for ( unsigned int t = this ->FILESYSTEMS .size( ) ; t > 0 ; t-- )
|
|
|
|
{
|
|
|
|
if ( this ->FILESYSTEMS[ t ] .filesystem == GParted::FS_UNKNOWN ||
|
2009-02-18 09:19:49 -07:00
|
|
|
this ->FILESYSTEMS[ t ] .filesystem == GParted::FS_LVM2 ||
|
2009-02-23 13:22:30 -07:00
|
|
|
this ->FILESYSTEMS[ t ] .filesystem == GParted::FS_LUKS ||
|
|
|
|
this ->FILESYSTEMS[ t ] .filesystem == GParted::FS_BTRFS
|
2009-02-18 09:19:49 -07:00
|
|
|
)
|
2008-12-07 11:43:35 -07:00
|
|
|
this ->FILESYSTEMS .erase( this->FILESYSTEMS .begin() + t ) ;
|
|
|
|
}
|
|
|
|
|
|
|
|
FS *fs_tmp ;
|
|
|
|
//add FS_UNFORMATTED
|
|
|
|
fs_tmp = new( FS ) ;
|
|
|
|
fs_tmp ->filesystem = GParted::FS_UNFORMATTED ;
|
|
|
|
fs_tmp ->create = GParted::FS::LIBPARTED ;
|
|
|
|
this ->FILESYSTEMS .push_back( * fs_tmp ) ;
|
|
|
|
|
|
|
|
//add FS_EXTENDED
|
|
|
|
fs_tmp = new( FS ) ;
|
|
|
|
fs_tmp ->filesystem = GParted::FS_EXTENDED ;
|
|
|
|
this ->FILESYSTEMS .push_back( * fs_tmp ) ;
|
2004-09-19 14:24:53 -06:00
|
|
|
|
2004-12-12 07:57:04 -07:00
|
|
|
//add table with selection menu's...
|
2004-09-19 14:24:53 -06:00
|
|
|
table_create .set_border_width( 10 ) ;
|
2004-12-12 07:57:04 -07:00
|
|
|
table_create .set_row_spacings( 5 ) ;
|
2004-09-19 14:24:53 -06:00
|
|
|
hbox_main .pack_start( table_create, Gtk::PACK_SHRINK );
|
|
|
|
|
|
|
|
/*TO TRANSLATORS: used as label for a list of choices. Create as: <optionmenu with choices> */
|
2006-02-25 03:09:30 -07:00
|
|
|
table_create .attach( * Utils::mk_label( static_cast<Glib::ustring>( _("Create as:") ) + "\t" ),
|
|
|
|
0, 1, 0, 1,
|
|
|
|
Gtk::FILL );
|
2004-09-19 14:24:53 -06:00
|
|
|
|
|
|
|
//fill partitiontype menu
|
2006-02-25 03:09:30 -07:00
|
|
|
menu_type .items() .push_back( Gtk::Menu_Helpers::MenuElem( _("Primary Partition") ) ) ;
|
|
|
|
menu_type .items() .push_back( Gtk::Menu_Helpers::MenuElem( _("Logical Partition") ) ) ;
|
|
|
|
menu_type .items() .push_back( Gtk::Menu_Helpers::MenuElem( _("Extended Partition") ) ) ;
|
2004-09-19 14:24:53 -06:00
|
|
|
|
|
|
|
//determine which PartitionType is allowed
|
2010-02-24 11:39:42 -07:00
|
|
|
if ( disktype != "msdos" && disktype != "dvh" )
|
|
|
|
{
|
|
|
|
menu_type .items()[ 1 ] .set_sensitive( false );
|
|
|
|
menu_type .items()[ 2 ] .set_sensitive( false );
|
|
|
|
menu_type .set_active( 0 );
|
|
|
|
}
|
|
|
|
else if ( partition .inside_extended )
|
2004-09-19 14:24:53 -06:00
|
|
|
{
|
2006-02-25 03:09:30 -07:00
|
|
|
menu_type .items()[ 0 ] .set_sensitive( false );
|
|
|
|
menu_type .items()[ 2 ] .set_sensitive( false );
|
2004-12-12 07:57:04 -07:00
|
|
|
menu_type .set_active( 1 );
|
2004-09-19 14:24:53 -06:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2006-02-25 03:09:30 -07:00
|
|
|
menu_type .items()[ 1 ] .set_sensitive( false );
|
2004-10-06 09:32:40 -06:00
|
|
|
if ( any_extended )
|
2006-02-25 03:09:30 -07:00
|
|
|
menu_type .items()[ 2 ] .set_sensitive( false );
|
2004-09-19 14:24:53 -06:00
|
|
|
}
|
|
|
|
|
2004-12-12 07:57:04 -07:00
|
|
|
optionmenu_type .set_menu( menu_type );
|
2006-02-25 03:09:30 -07:00
|
|
|
|
|
|
|
//160 is the ideal width for this table column.
|
|
|
|
//(when one widget is set, the rest wil take this width as well)
|
|
|
|
optionmenu_type .set_size_request( 160, -1 );
|
|
|
|
|
|
|
|
optionmenu_type .signal_changed() .connect(
|
|
|
|
sigc::bind<bool>( sigc::mem_fun( *this, &Dialog_Partition_New::optionmenu_changed ), true ) );
|
2004-12-12 07:57:04 -07:00
|
|
|
table_create .attach( optionmenu_type, 1, 2, 0, 1, Gtk::FILL );
|
2004-09-19 14:24:53 -06:00
|
|
|
|
2008-11-18 16:58:17 -07:00
|
|
|
//file systems to choose from
|
2009-10-18 13:25:35 -06:00
|
|
|
table_create .attach( * Utils::mk_label( static_cast<Glib::ustring>( _("File system:") ) + "\t" ),
|
2006-02-25 03:09:30 -07:00
|
|
|
0, 1, 1, 2,
|
|
|
|
Gtk::FILL );
|
2004-09-19 14:24:53 -06:00
|
|
|
|
2004-11-29 06:20:05 -07:00
|
|
|
Build_Filesystems_Menu( only_unformatted ) ;
|
2004-09-19 14:24:53 -06:00
|
|
|
|
2004-11-29 06:20:05 -07:00
|
|
|
optionmenu_filesystem .set_menu( menu_filesystem );
|
2006-02-25 03:09:30 -07:00
|
|
|
optionmenu_filesystem .signal_changed() .connect(
|
|
|
|
sigc::bind<bool>( sigc::mem_fun( *this, &Dialog_Partition_New::optionmenu_changed ), false ) );
|
2004-12-12 07:57:04 -07:00
|
|
|
table_create .attach( optionmenu_filesystem, 1, 2, 1, 2, Gtk::FILL );
|
2008-04-07 13:41:18 -06:00
|
|
|
|
|
|
|
//Label
|
|
|
|
table_create .attach( * Utils::mk_label( Glib::ustring( _("Label:") ) ),
|
|
|
|
0, 1, 3, 4, Gtk::FILL ) ;
|
|
|
|
//Create Text entry box
|
|
|
|
entry .set_max_length( 30 );
|
|
|
|
entry .set_width_chars( 20 );
|
|
|
|
entry .set_activates_default( true );
|
|
|
|
entry .set_text( partition.label );
|
|
|
|
entry .select_region( 0, entry .get_text_length() );
|
|
|
|
//Add entry box to table
|
|
|
|
table_create .attach( entry, 1, 2, 3, 4, Gtk::FILL ) ;
|
|
|
|
|
2004-09-19 14:24:53 -06:00
|
|
|
//set some widely used values...
|
|
|
|
START = partition.sector_start ;
|
|
|
|
total_length = partition.sector_end - partition.sector_start ;
|
2010-04-26 11:42:23 -06:00
|
|
|
TOTAL_MB = Utils::round( Utils::sector_to_unit( this ->selected_partition .get_length(), this ->selected_partition .sector_size, UNIT_MIB ) ) ;
|
2005-01-19 13:01:39 -07:00
|
|
|
MB_PER_PIXEL = TOTAL_MB / 500.00 ;
|
2004-09-19 14:24:53 -06:00
|
|
|
|
2008-11-18 16:58:17 -07:00
|
|
|
//set first enabled file system
|
2004-11-29 06:20:05 -07:00
|
|
|
optionmenu_filesystem .set_history( first_creatable_fs ) ;
|
|
|
|
optionmenu_changed( false ) ;
|
2004-12-10 13:42:23 -07:00
|
|
|
|
2004-12-12 07:57:04 -07:00
|
|
|
//set spinbuttons initial values
|
|
|
|
spinbutton_after .set_value( 0 ) ;
|
2010-04-26 11:42:23 -06:00
|
|
|
spinbutton_size .set_value( Utils::round( Utils::sector_to_unit( fs .MAX, 1 /* Byte */, UNIT_MIB ) ) ) ;
|
2004-12-12 07:57:04 -07:00
|
|
|
spinbutton_before .set_value( 0 ) ;
|
|
|
|
|
2004-12-10 13:42:23 -07:00
|
|
|
//euhrm, this wil only happen when there's a very small free space (usually the effect of a bad partitionmanager)
|
2010-04-26 13:21:18 -06:00
|
|
|
if ( TOTAL_MB * (MEBI_FACTOR / this ->selected_partition .sector_size) < this ->cylinder_size )
|
2004-12-10 13:42:23 -07:00
|
|
|
frame_resizer_base ->set_sensitive( false ) ;
|
|
|
|
|
2006-02-25 03:09:30 -07:00
|
|
|
this ->show_all_children() ;
|
2004-09-19 14:24:53 -06:00
|
|
|
}
|
|
|
|
|
2010-04-19 19:22:31 -06:00
|
|
|
Partition Dialog_Partition_New::Get_New_Partition( Byte_Value sector_size )
|
2004-09-19 14:24:53 -06:00
|
|
|
{
|
|
|
|
Partition part_temp ;
|
2005-12-07 04:21:27 -07:00
|
|
|
PartitionType part_type ;
|
2004-09-19 14:24:53 -06:00
|
|
|
Sector new_start, new_end;
|
|
|
|
|
2006-02-25 03:09:30 -07:00
|
|
|
switch ( optionmenu_type .get_history() )
|
2004-09-19 14:24:53 -06:00
|
|
|
{
|
2005-12-07 04:21:27 -07:00
|
|
|
case 0 : part_type = GParted::TYPE_PRIMARY; break;
|
|
|
|
case 1 : part_type = GParted::TYPE_LOGICAL; break;
|
|
|
|
case 2 : part_type = GParted::TYPE_EXTENDED; break;
|
|
|
|
|
|
|
|
default : part_type = GParted::TYPE_UNALLOCATED ;
|
2004-09-19 14:24:53 -06:00
|
|
|
}
|
2008-04-21 11:08:43 -06:00
|
|
|
|
2008-06-15 11:18:26 -06:00
|
|
|
//FIXME: Partition size is limited to just less than 1024 TeraBytes due
|
2008-04-21 11:08:43 -06:00
|
|
|
// to the maximum value of signed 4 byte integer.
|
2010-04-26 13:21:18 -06:00
|
|
|
new_start = START + (Sector(spinbutton_before .get_value_as_int()) * (MEBI_FACTOR / sector_size)) ;
|
|
|
|
new_end = new_start + (Sector(spinbutton_size .get_value_as_int()) * (MEBI_FACTOR / sector_size)) - 1 ;
|
2004-09-19 14:24:53 -06:00
|
|
|
|
2006-01-20 16:35:06 -07:00
|
|
|
/* due to loss of precision during calcs from Sector -> MiB and back, it is possible the new
|
2006-01-07 08:04:42 -07:00
|
|
|
* partition thinks it's bigger then it can be. Here we try to solve this.*/
|
2004-09-19 14:24:53 -06:00
|
|
|
if ( new_start < selected_partition.sector_start )
|
|
|
|
new_start = selected_partition.sector_start ;
|
|
|
|
if ( new_end > selected_partition.sector_end )
|
|
|
|
new_end = selected_partition.sector_end ;
|
|
|
|
|
2004-09-25 08:12:07 -06:00
|
|
|
part_temp .status = GParted::STAT_NEW ;
|
2005-12-07 15:44:40 -07:00
|
|
|
part_temp .Set( selected_partition .device_path,
|
|
|
|
String::ucompose( _("New Partition #%1"), new_count ),
|
2004-11-17 06:00:25 -07:00
|
|
|
new_count, part_type,
|
2006-02-25 03:09:30 -07:00
|
|
|
FILESYSTEMS[ optionmenu_filesystem .get_history() ] .filesystem,
|
2010-04-19 19:22:31 -06:00
|
|
|
new_start, new_end,
|
|
|
|
sector_size,
|
2008-04-07 13:41:18 -06:00
|
|
|
selected_partition .inside_extended, false ) ;
|
|
|
|
|
|
|
|
//Retrieve Label info
|
|
|
|
part_temp .label = Utils::trim( entry .get_text() );
|
2004-09-19 14:24:53 -06:00
|
|
|
|
2006-01-20 16:35:06 -07:00
|
|
|
//grow new partition a bit if freespaces are < 1 MiB
|
2010-04-26 13:21:18 -06:00
|
|
|
if ( (part_temp.sector_start - selected_partition.sector_start) < (MEBI_FACTOR / sector_size) )
|
2004-09-19 14:24:53 -06:00
|
|
|
part_temp.sector_start = selected_partition.sector_start ;
|
2010-04-26 13:21:18 -06:00
|
|
|
if ( (selected_partition.sector_end - part_temp.sector_end) < (MEBI_FACTOR / sector_size) )
|
2004-09-19 14:24:53 -06:00
|
|
|
part_temp.sector_end = selected_partition.sector_end ;
|
2004-11-06 04:55:03 -07:00
|
|
|
|
|
|
|
//if new is extended...
|
2005-12-07 04:21:27 -07:00
|
|
|
if ( part_temp .type == GParted::TYPE_EXTENDED )
|
2004-11-06 04:55:03 -07:00
|
|
|
{
|
|
|
|
Partition UNALLOCATED ;
|
2006-02-25 03:09:30 -07:00
|
|
|
UNALLOCATED .Set_Unallocated( part_temp .device_path,
|
|
|
|
part_temp .sector_start,
|
|
|
|
part_temp .sector_end,
|
2010-04-19 19:22:31 -06:00
|
|
|
sector_size,
|
2006-02-25 03:09:30 -07:00
|
|
|
true ) ;
|
2004-11-06 04:55:03 -07:00
|
|
|
part_temp .logicals .push_back( UNALLOCATED ) ;
|
|
|
|
}
|
2004-09-19 14:24:53 -06:00
|
|
|
|
2008-06-15 11:18:26 -06:00
|
|
|
//set indicator of whether to use strict sector values, or to round to cylinders
|
2006-01-07 08:04:42 -07:00
|
|
|
part_temp .strict = ! checkbutton_round_to_cylinders .get_active() ;
|
|
|
|
|
2004-09-19 14:24:53 -06:00
|
|
|
return part_temp;
|
|
|
|
}
|
|
|
|
|
2004-10-06 09:32:40 -06:00
|
|
|
void Dialog_Partition_New::optionmenu_changed( bool type )
|
2004-09-19 14:24:53 -06:00
|
|
|
{
|
|
|
|
//optionmenu_type
|
|
|
|
if ( type )
|
|
|
|
{
|
2006-02-25 03:09:30 -07:00
|
|
|
if ( optionmenu_type .get_history() == GParted::TYPE_EXTENDED &&
|
|
|
|
menu_filesystem .items() .size() < FILESYSTEMS .size() )
|
2004-09-19 14:24:53 -06:00
|
|
|
{
|
2006-02-25 03:09:30 -07:00
|
|
|
menu_filesystem .items() .push_back(
|
2006-03-28 05:40:29 -07:00
|
|
|
Gtk::Menu_Helpers::MenuElem( Utils::get_filesystem_string( GParted::FS_EXTENDED ) ) ) ;
|
2006-02-25 03:09:30 -07:00
|
|
|
optionmenu_filesystem .set_history( menu_filesystem .items() .size() -1 ) ;
|
2004-11-23 12:03:39 -07:00
|
|
|
optionmenu_filesystem .set_sensitive( false ) ;
|
2004-09-19 14:24:53 -06:00
|
|
|
}
|
2006-02-25 03:09:30 -07:00
|
|
|
else if ( optionmenu_type .get_history() != GParted::TYPE_EXTENDED &&
|
|
|
|
menu_filesystem .items() .size() == FILESYSTEMS .size() )
|
2004-09-19 14:24:53 -06:00
|
|
|
{
|
2006-02-25 03:09:30 -07:00
|
|
|
menu_filesystem .items() .remove( menu_filesystem .items() .back() ) ;
|
2004-11-23 12:03:39 -07:00
|
|
|
optionmenu_filesystem .set_sensitive( true ) ;
|
2004-11-29 06:20:05 -07:00
|
|
|
optionmenu_filesystem .set_history( first_creatable_fs ) ;
|
2004-09-19 14:24:53 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//optionmenu_filesystem
|
|
|
|
if ( ! type )
|
|
|
|
{
|
2006-01-07 08:04:42 -07:00
|
|
|
fs = FILESYSTEMS[ optionmenu_filesystem .get_history() ] ;
|
|
|
|
|
|
|
|
if ( checkbutton_round_to_cylinders .get_active() )
|
|
|
|
{
|
2010-04-26 11:42:23 -06:00
|
|
|
if ( (fs .MIN / selected_partition .sector_size) < cylinder_size )
|
|
|
|
fs .MIN = cylinder_size * selected_partition .sector_size ;
|
2006-01-07 08:04:42 -07:00
|
|
|
}
|
2010-04-26 11:42:23 -06:00
|
|
|
else if ( fs .MIN < MEBI_FACTOR )
|
2010-03-16 11:24:08 -06:00
|
|
|
fs .MIN = MEBI_FACTOR ;
|
2004-12-10 13:42:23 -07:00
|
|
|
|
2010-04-26 11:42:23 -06:00
|
|
|
if ( selected_partition .get_length() < (fs .MIN / selected_partition .sector_size) )
|
|
|
|
fs .MIN = selected_partition .get_length() * selected_partition .sector_size ;
|
2004-12-10 13:42:23 -07:00
|
|
|
|
2010-03-16 13:25:58 -06:00
|
|
|
fs .MAX = ( fs .MAX && ( fs .MAX < (TOTAL_MB * MEBI_FACTOR) ) ) ? fs .MAX : (TOTAL_MB * MEBI_FACTOR) ;
|
2004-12-09 15:56:33 -07:00
|
|
|
|
2010-03-16 11:24:08 -06:00
|
|
|
frame_resizer_base ->set_size_limits( Utils::round( fs .MIN / (MB_PER_PIXEL * MEBI_FACTOR) ),
|
2010-03-16 13:25:58 -06:00
|
|
|
Utils::round( fs .MAX / (MB_PER_PIXEL * MEBI_FACTOR) ) ) ;
|
2004-12-12 07:57:04 -07:00
|
|
|
|
2004-09-19 14:24:53 -06:00
|
|
|
//set new spinbutton ranges
|
2006-02-25 03:09:30 -07:00
|
|
|
spinbutton_before .set_range(
|
2010-04-26 11:42:23 -06:00
|
|
|
0, TOTAL_MB - Utils::round( Utils::sector_to_unit( fs .MIN, 1 /* Byte */, UNIT_MIB ) ) ) ;
|
2006-02-25 03:09:30 -07:00
|
|
|
spinbutton_size .set_range(
|
2010-04-26 11:42:23 -06:00
|
|
|
Utils::round( Utils::sector_to_unit( fs .MIN, 1 /* Byte */, UNIT_MIB ) ),
|
|
|
|
Utils::round( Utils::sector_to_unit( fs .MAX, 1 /* Byte */, UNIT_MIB ) ) ) ;
|
2006-02-25 03:09:30 -07:00
|
|
|
spinbutton_after .set_range(
|
2010-04-26 11:42:23 -06:00
|
|
|
0, TOTAL_MB - Utils::round( Utils::sector_to_unit( fs .MIN, 1 /* Byte */, UNIT_MIB ) ) ) ;
|
2004-12-01 14:31:59 -07:00
|
|
|
|
2004-09-19 14:24:53 -06:00
|
|
|
//set contents of label_minmax
|
2006-02-25 03:09:30 -07:00
|
|
|
Set_MinMax_Text(
|
2010-04-26 11:42:23 -06:00
|
|
|
Utils::round( Utils::sector_to_unit( fs .MIN, 1 /* Byte */, UNIT_MIB ) ),
|
|
|
|
Utils::round( Utils::sector_to_unit( fs .MAX, 1 /* Byte */, UNIT_MIB ) ) ) ;
|
2004-09-19 14:24:53 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
//set fitting resizer colors
|
|
|
|
//backgroundcolor..
|
2006-01-07 08:04:42 -07:00
|
|
|
color_temp .set( optionmenu_type .get_history() == 2 ? "darkgrey" : "white" ) ;
|
2004-09-19 14:24:53 -06:00
|
|
|
frame_resizer_base ->override_default_rgb_unused_color( color_temp );
|
|
|
|
|
|
|
|
//partitioncolor..
|
2006-03-28 05:40:29 -07:00
|
|
|
color_temp .set( Utils::get_color( fs .filesystem ) ) ;
|
2004-09-19 14:24:53 -06:00
|
|
|
frame_resizer_base ->set_rgb_partition_color( color_temp ) ;
|
|
|
|
|
2006-02-25 03:09:30 -07:00
|
|
|
frame_resizer_base ->Draw_Partition() ;
|
2004-09-19 14:24:53 -06:00
|
|
|
}
|
|
|
|
|
2004-11-29 06:20:05 -07:00
|
|
|
void Dialog_Partition_New::Build_Filesystems_Menu( bool only_unformatted )
|
2004-09-19 14:24:53 -06:00
|
|
|
{
|
2008-11-18 16:58:17 -07:00
|
|
|
//fill the file system menu with the file systems (except for extended)
|
2008-12-07 11:43:35 -07:00
|
|
|
for ( unsigned int t = 0 ; t < FILESYSTEMS .size( ) ; t++ )
|
2004-10-06 09:32:40 -06:00
|
|
|
{
|
2009-02-23 13:22:30 -07:00
|
|
|
//skip extended (btrfs, luks, lvm2, and unknown removed in Set_Data())
|
2008-12-07 11:43:35 -07:00
|
|
|
if( FILESYSTEMS[ t ] .filesystem == GParted::FS_EXTENDED )
|
|
|
|
continue ;
|
2006-02-25 03:09:30 -07:00
|
|
|
menu_filesystem .items() .push_back(
|
2006-03-28 05:40:29 -07:00
|
|
|
Gtk::Menu_Helpers::MenuElem( Utils::get_filesystem_string( FILESYSTEMS[ t ] .filesystem ) ) ) ;
|
2008-12-07 11:43:35 -07:00
|
|
|
menu_filesystem .items() .back() .set_sensitive(
|
2006-02-25 03:09:30 -07:00
|
|
|
! only_unformatted && FILESYSTEMS[ t ] .create &&
|
2010-04-26 11:42:23 -06:00
|
|
|
this ->selected_partition .get_length() >= (FILESYSTEMS[ t ] .MIN / this ->selected_partition .sector_size) ) ;
|
2004-10-06 09:32:40 -06:00
|
|
|
}
|
2004-09-19 14:24:53 -06:00
|
|
|
|
2004-11-29 06:20:05 -07:00
|
|
|
//unformatted is always available
|
2006-02-25 03:09:30 -07:00
|
|
|
menu_filesystem .items() .back() .set_sensitive( true ) ;
|
2004-09-19 14:24:53 -06:00
|
|
|
|
2008-11-18 16:58:17 -07:00
|
|
|
//find and set first enabled file system
|
2006-02-25 03:09:30 -07:00
|
|
|
for ( unsigned int t = 0 ; t < menu_filesystem .items() .size() ; t++ )
|
|
|
|
if ( menu_filesystem .items()[ t ] .sensitive() )
|
2004-12-01 14:31:59 -07:00
|
|
|
{
|
|
|
|
first_creatable_fs = t ;
|
|
|
|
break ;
|
|
|
|
}
|
2004-09-19 14:24:53 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
} //GParted
|