98 lines
3.3 KiB
C++
98 lines
3.3 KiB
C++
/* Copyright (C) 2004 Bart
|
|
*
|
|
* 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/DialogManageFlags.h"
|
|
|
|
#include <gtkmm/main.h>
|
|
#include <gtkmm/stock.h>
|
|
#include <gdkmm/cursor.h>
|
|
|
|
namespace GParted
|
|
{
|
|
|
|
DialogManageFlags::DialogManageFlags( const Partition & partition, std::map<Glib::ustring, bool> flag_info )
|
|
{
|
|
any_change = false ;
|
|
|
|
set_title( String::ucompose( _("Manage flags on %1"), partition .get_path() ) );
|
|
set_has_separator( false ) ;
|
|
set_resizable( false ) ;
|
|
|
|
Glib::ustring str_temp = "<span weight=\"bold\" size=\"larger\">" ;
|
|
str_temp += String::ucompose( _("Manage flags on %1"), partition .get_path() ) ;
|
|
str_temp += "</span>\n" ;
|
|
get_vbox() ->pack_start( * Utils::mk_label( str_temp ), Gtk::PACK_SHRINK );
|
|
|
|
//setup treeview
|
|
liststore_flags = Gtk::ListStore::create( treeview_flags_columns ) ;
|
|
treeview_flags .set_model( liststore_flags ) ;
|
|
treeview_flags .set_headers_visible( false ) ;
|
|
|
|
treeview_flags .append_column( "", treeview_flags_columns .status ) ;
|
|
treeview_flags .append_column( "", treeview_flags_columns .flag ) ;
|
|
static_cast<Gtk::CellRendererToggle *>( treeview_flags .get_column_cell_renderer( 0 ) )
|
|
->property_activatable() = true ;
|
|
static_cast<Gtk::CellRendererToggle *>( treeview_flags .get_column_cell_renderer( 0 ) )
|
|
->signal_toggled() .connect( sigc::mem_fun( *this, &DialogManageFlags::on_flag_toggled ) ) ;
|
|
|
|
treeview_flags .set_size_request( 300, -1 ) ;
|
|
get_vbox() ->pack_start( treeview_flags, Gtk::PACK_SHRINK ) ;
|
|
|
|
this ->partition = partition ;
|
|
this ->flag_info = flag_info ;
|
|
|
|
load_treeview() ;
|
|
add_button( Gtk::Stock::CLOSE, Gtk::RESPONSE_OK ) ->grab_focus() ;
|
|
|
|
show_all_children() ;
|
|
}
|
|
|
|
void DialogManageFlags::load_treeview()
|
|
{
|
|
liststore_flags ->clear() ;
|
|
|
|
for ( std::map<Glib::ustring, bool>::iterator iter = flag_info .begin() ; iter != flag_info .end() ; ++iter )
|
|
{
|
|
row = *( liststore_flags ->append() ) ;
|
|
row[ treeview_flags_columns .flag ] = iter ->first ;
|
|
row[ treeview_flags_columns .status ] = iter ->second ;
|
|
}
|
|
}
|
|
|
|
void DialogManageFlags::on_flag_toggled( const Glib::ustring & path )
|
|
{
|
|
get_window() ->set_cursor( Gdk::Cursor( Gdk::WATCH ) ) ;
|
|
set_sensitive( false ) ;
|
|
while ( Gtk::Main::events_pending() )
|
|
Gtk::Main::iteration() ;
|
|
|
|
any_change = true ;
|
|
|
|
row = *( liststore_flags ->get_iter( path ) ) ;
|
|
row[ treeview_flags_columns .status ] = ! row[ treeview_flags_columns .status ] ;
|
|
|
|
signal_toggle_flag .emit( partition, row[ treeview_flags_columns .flag ], row[ treeview_flags_columns .status ] ) ;
|
|
|
|
flag_info = signal_get_flags .emit( partition ) ;
|
|
load_treeview() ;
|
|
|
|
set_sensitive( true ) ;
|
|
get_window() ->set_cursor() ;
|
|
}
|
|
|
|
}//GParted
|