gparted/include/DialogFeatures.h
Mike Fleetwood 7ea91bca61 Fix File System Support dialog not showing changes after rescan (!38)
Open the File System Support dialog, either add or remove some file
system specific commands used by GParted and press the
[Rescan For Supported Actions] button.  The supported actions don't
change.  However after just closing and reopening the dialog, the
supported actions do reflect the added or removed file system specific
commands.

Bisected to this commit:
    4d6d464664
    Display "other" in the File System Support dialog (!13)

The problem is that commit made a subset copy of the
GParted_Core::FILESYSTEMS vector, obtained from get_filesystems(), so
when the rescan ran and the FILESYSTEMS vector was updated with new
supported actions, the dialog still displayed the original subset copy,
so didn't reflect the changed supported actions.

Fix by passing a reference to the GParted_Core::FILESYSTEMS vector,
obtained from get_filesystems(), and perform the necessary filtering
inside the dialog, like before the above faulty commit.  Additionally
finding and adding "other" file system to the end of the list.

Closes !38 - Fixes for minor issues with File System Support rescanning
2019-04-22 21:51:28 +01:00

90 lines
2.6 KiB
C++

/* Copyright (C) 2004-2006 Bart 'plors' Hakvoort
* Copyright (C) 2008 Curtis Gedak
*
* 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_DIALOGFEATURES_H
#define GPARTED_DIALOGFEATURES_H
#include "FileSystem.h"
#include <gtkmm/dialog.h>
#include <gtkmm/frame.h>
#include <gtkmm/treeview.h>
#include <gtkmm/liststore.h>
#include <gtkmm/scrolledwindow.h>
#include <gtkmm/image.h>
namespace GParted
{
class DialogFeatures : public Gtk::Dialog
{
public:
DialogFeatures() ;
~DialogFeatures() ;
void load_filesystems(const std::vector<FS>& fss);
private:
void show_filesystem( const FS & fs ) ;
Gtk::Frame legend_frame ;
Gtk::TreeView treeview_filesystems;
Gtk::TreeRow treerow;
Gtk::ScrolledWindow filesystems_scrolled ;
Glib::RefPtr<Gtk::ListStore> liststore_filesystems;
struct treeview_filesystems_Columns : public Gtk::TreeModelColumnRecord
{
Gtk::TreeModelColumn<Glib::ustring> filesystem;
Gtk::TreeModelColumn< Glib::RefPtr<Gdk::Pixbuf> > create ;
Gtk::TreeModelColumn< Glib::RefPtr<Gdk::Pixbuf> > grow ;
Gtk::TreeModelColumn< Glib::RefPtr<Gdk::Pixbuf> > online_grow ;
Gtk::TreeModelColumn< Glib::RefPtr<Gdk::Pixbuf> > shrink ;
Gtk::TreeModelColumn< Glib::RefPtr<Gdk::Pixbuf> > online_shrink ;
Gtk::TreeModelColumn< Glib::RefPtr<Gdk::Pixbuf> > move ;
Gtk::TreeModelColumn< Glib::RefPtr<Gdk::Pixbuf> > copy ;
Gtk::TreeModelColumn< Glib::RefPtr<Gdk::Pixbuf> > check ;
Gtk::TreeModelColumn< Glib::RefPtr<Gdk::Pixbuf> > label ;
Gtk::TreeModelColumn< Glib::RefPtr<Gdk::Pixbuf> > uuid ;
Gtk::TreeModelColumn<Glib::ustring> software ;
treeview_filesystems_Columns()
{
add( filesystem );
add( create ) ;
add( grow ) ;
add( online_grow ) ;
add( shrink ) ;
add( online_shrink ) ;
add( move ) ;
add( copy ) ;
add( check ) ;
add( label ) ;
add( uuid ) ;
add( software ) ;
}
};
treeview_filesystems_Columns treeview_filesystems_columns ;
Glib::RefPtr<Gdk::Pixbuf> icon_yes, icon_no, icon_blank ;
};
} //GParted
#endif /* GPARTED_DIALOGFEATURES_H */