Commit Graph

78 Commits

Author SHA1 Message Date
Mike Fleetwood 2b51d87147 Make include guards unique (#539297)
Include guards need to be unique within GParted code and all included
library header files.
    http://en.wikipedia.org/wiki/Include_guard#Difficulties

Use this model for all include guards:
    #ifndef GPARTED_FILE_NAME_H
    #define GPARTED_FILE_NAME_H
    ...
    #endif /* GPARTED_FILE_NAME_H */

Closes Bug #539297 - Make include guards unique
2013-06-05 10:57:39 -06:00
Mike Fleetwood 4cc426c6cf Only allow Undo and Apply after merging operations (#699452)
It was possible to make GParted crash by adding a label, check or new
UUID operation and then applying the operation before the view of
pending operations had finished fully opening.  The operation would be
successfully applied but GParted would crash afterwards.

The fault was that Add_Operation() still enabled the Undo and Apply
buttons and processed the GTK event loop before merging the list of
pending operations.  Faulty code flow went like this:

    activate_*()
        Add_Operation()
            Add operation to the operations[] vector
            Enable Undo and Apply buttons
            Refresh_Visual()
                Process GTK event loop
                    Process Apply button callback applying operations,
                    refreshing display and clearing operations[] vector
        Merge operations in the operations[] vector
        << Core dump here >>
            Merge_Operations()
                Refresh_Visual()

This faulty code flow came about when merging of operations was added
and it didn't appreciate that the operations[] vector could have been
processed and cleared by Add_Operations() before the merge step.
Relevant commit:

    b10349ae37
    Merge overlapping operations (#438573)

Fragment of code in the label operation case:

  2454  void Win_GParted::activate_label_partition()
  2455  {
  ...
  2472          Add_Operation( operation ) ;
  2473
  2474          // Verify if the two operations can be merged
  2475          for ( unsigned int t = 0 ; t < operations .size() - 1 ; t++ )
  2476          {
  2477              if ( operations[ t ] ->type == OPERATION_LABEL_PARTITION )
  2478              {
  2479                  if ( Merge_Operations( t, operations .size() - 1 ) )
  2480                      break;
  2481              }
  2482          }

Commentary in the crashing label operation case:

  2472  The pending operation was already applied when Add_Operation()
        returned resulting in the operations[] vector being cleared
        setting its size to 0.
  2475  The return type of operations.size() is an unsigned integral, so
        the upper limit of the for loop is t < 0UL - 1.  Assuming a
        32-bit machine that's t < 4294967295.
  2477  operations[] vector is access from out of bounds offset 0
        upwards until unallocated memory is accessed resulting in a core
        dump.

Fix this by not enabling the Undo and Apply buttons and processing the
GTK event loop until after merging of operations has been performed.
Fixed code flow goes like this:

    activate_*()
        Add_Operation()
            Add operation to the operations[] vector
        Merge operations in the operations[] vector
            Merge_Operations()
        show_operationslist()
            Enable Undo and Apply buttons
            Refresh_Visual()
                Process GTK event loop
                    Process Apply button callback applying operations,
                    refreshing display and clearing operations[] vector

Not allowing the operations list to be process until after the merge
step is the be correct ordering.  This also prevents the new operation
from flashing up in the operations list and then immediately
disappearing if merged.  In the case of adding the first operation,
delaying enabling the Undo and Apply buttons is enough as the buttons
were previously disabled preventing the operation being applied before
the merge.  In the case of adding further operations, processing of the
GTK event loop must also be delayed until after the merge to prevent the
operations being applied before the merge.  Although that window of
opportunity would only be microseconds.

Bug #699452 - Crash when applying operations before pending operations
              fully displayed
2013-05-19 13:18:25 -06:00
Mike Fleetwood bc5b57ab35 Refactor Win_GParted::create_format_menu() (#688882)
Move some code into new create_format_menu_add_item() sub-function which
adds one file system entry to the Partition --> Format to -->
(file system list) menu.

Bug #688882 - Improve clearing of file system signatures
2013-03-25 10:06:39 -06:00
Phillip Susi 52a2a9b00a Reduce threading (#685740)
Win_Gparted and Dialog_Progress were creating threads to perform most
functions in the background.  Most of the time, the only reason the
threads blocked was to execute an external command.  The external command
execution has been changed to spawn the command asynchronously and wait
for completion with a nested main loop.  While waiting for completion,
the pipe output is captured via events.  In the future, this will allow
for it to be parsed in real time to obtain progress information.

Those tasks in GParted_Core that still block now spawn a background thread
and wait for it to complete with a nested main loop to avoid hanging the
gui.

Part of Bug #685740 - Refactor to use asynchronous command execution
2013-03-11 18:40:31 -06:00
Phillip Susi 124342e979 Use a full fledged nested main loop while waiting and pulsing progress bars (#685740)
Win_Gparted and Dialog_Progress were looping on Gtk::Main::events_pending()
and iteration() with usleeps in between.  Use a full mainloop instead and
a proper timeout to trigger pulsebar updates instead of usleeps.

Part of Bug 685740 - Refactor to use asynchronous command execution
2013-03-11 18:40:31 -06:00
Mike Fleetwood ca3d40d9c7 Rename *toggle_swap_mount* -> *toggle_busy*
Rename functions and a variable to use a generic term for the menu item
which changes the busy state of partitions now that it also activates
and deactivates LVM2 Physical Volumes as well as mounting and unmounting
file systems and enables and disables swap partitions.
2012-08-30 13:47:45 -06:00
Mike Fleetwood 69c8acce75 Add warning dialog when deleting non-empty LVM2 PVs (#670171)
When attempting to delete a non-empty LVM2 Physical Volume (one which is
still a member of a Volume Group) display a warning dialog which
includes the VG name and a list of the PV members to allow the user to
make an informed choice whether to go ahead and perform the deletion or
cancel to the operation.  This dialog is displayed when a partition
containing a PV is being deleted or being overwritten by being
reformatted or pasted into.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:45 -06:00
Mike Fleetwood 619bda5d8b Enable LVM2 VG activation / deactivation (#670171)
In the Partition menu enable activation / deactivation of the LVM2
Volume Group of which the Physical Volume is a member.

Bug #670171 - Add LVM PV read-write support
2012-08-30 13:47:45 -06:00
Rogier Goossens 9e96159bb2 Add support for setting UUID (#667278)
Add the ability to set a new random UUID on file systems that provide
the appropriate tools to perform this action.

Update the help manual to include this new functionality.  Also add
reference links to "setting a partition label" and "changing a
partition UUID" in the "copying and pasting a partition" section.

This patch does not include setting the UUID on an NTFS file system.

Bug #667278 - Add support for setting UUID

Bug #608308 - fix documentation - Copying and Pasting a Partition
2012-01-23 12:32:27 -07:00
Jérôme Dumesnil 03cdaed946 Improve Merge_Operations method parameters and checks 2011-10-13 11:26:16 -06:00
Jérôme Dumesnil b10349ae37 Merge overlapping operations (#438573)
When a new operation is added to operations list, check if a merge
is possible depending on the operation type:

    OPERATION_RESIZE_MOVE:  2 consecutive "resize" operations on the
                            same  partition
OPERATION_LABEL_PARTITION:  2 "label change" operations (need not be
                            consecutive) on the same partition
          OPERATION_CHECK:  2 "check" operations (need not be
                            consecutive) on the same partition
         OPERATION_FORMAT:  2 consecutive "format" operations on the
                            same partition

Closes Bug #438573 - Cancel out overlapping actions

Also fix a bug when copying partition using the Partition::Set(...)
method.  This method did not initialize "sectors_used" and
"sectors_unused" members.
2011-10-05 15:08:44 -06:00
Joan Lledó ef37bdb7de Added support to lost data recovery using gpart 2011-01-29 14:58:02 -07:00
Curtis Gedak f7cb37831a Add new method active_partitions_on_device_count 2010-08-10 13:01:40 -06:00
Curtis Gedak d5064dfe03 Move method to match header file
Also update copyright year
2010-08-10 13:01:40 -06:00
Curtis Gedak 44698448aa Add new method partition_in_operation_queue_count 2010-08-09 13:33:28 -06:00
Curtis Gedak 8cfb27b718 Cleanup file copyright entries
Restore copyright entries by original author to those of his last
known repository commit titled "released gparted-0.3.4 on
LarryT's request." on Feb 25, 2007.

Add my own copyright entries for files in which I changed source
code.  Files in which I only made spelling changes do not have my
copyright entry added.
2009-11-05 11:08:49 -07:00
Curtis Gedak c2d19a8ab4 Replace gnome-open with gtk_show_uri (#600046)
This change was performed to align with a GNOME goal:
http://live.gnome.org/GnomeGoals/RemoveGnomeOpenGnomeHelp

For backwards compatibility, the gnome-open command is used
when gtkmm < 2.14.0.
2009-11-03 10:27:35 -07:00
Curtis Gedak 0723c82f30 Update copyright year for Win_GParted class 2009-10-24 15:17:13 -06:00
Curtis Gedak 73471032c9 Improve feedback when creating or pasting partition (#579266)
Improve the feedback to the user when creating or pasting a
partition on a device with no partition table found.

Prior to this enhancement if a user tried to create or paste a
partition onto a device with no partition table found, GParted
would present the user with a Create Partition Table dialog.

When creating a new partition this could cause confusion for
users who were trying to format the disk.  The user could
mistakenly believe the choice of an MS-DOS file system was being
presented.

Similarly on a paste operation it could be confusing to be
presented with a dialog to create a partition table without any
explanation of why a partition table was suddenly required in the
midst of the paste operation.

Neither the new partition creation, nor the partition paste
actions were performed after the Create Partition Table dialog
was displayed.
2009-10-24 14:16:40 -06:00
Curtis Gedak 46ca7c74dc Added code hooks to prepare for GParted Manual
svn path=/trunk/; revision=876
2008-08-05 15:34:10 +00:00
Curtis Gedak 8d808c0b62 gparted-0.3.6 - code recreation from Source Forge
svn path=/trunk/; revision=810
2008-04-07 19:41:18 +00:00
Bart Hakvoort ef09ce0b97 added 'check' operation. The functionality was already there, but it was
* include/Makefile.am,
  include/Operation.h,
  include/Win_GParted.h,
  src/GParted_Core.cc,
  src/Makefile.am,
  src/Win_GParted.cc,
  include/OperationCheck.h (new),
  src/OperationCheck.cc (new): added 'check' operation. The
  functionality was already there, but it was not possible yet to
  activate it from the gui.
2006-11-26 14:27:16 +00:00
Bart Hakvoort 0693e7996f added popupmenu to operationslist and did some (higrelated) cleanups
* added popupmenu to operationslist and did some (higrelated) cleanups
2006-09-17 13:23:47 +00:00
Bart Hakvoort fc8014115e some small changes to make the GUI more consistent (#353140)
* include/Win_GParted.h,
  src/Win_GParted.cc: some small changes to make the GUI more
  consistent (#353140)
2006-09-16 11:27:05 +00:00
Bart Hakvoort ab8e1b586d replaced hardcoded menu and toolbar indices with variables. This is far
* include/Win_GParted.h,
  src/Win_GParted.cc: replaced hardcoded menu and toolbar indices with
  variables. This is far more flexible and reliable.
2006-08-20 16:51:18 +00:00
Bart Hakvoort b42982b884 construct operations in the activate*() functions instead of in
* include/Win_GParted.h,
  src/Win_GParted.cc: construct operations in the activate*()
  functions instead of in Add_Operation(). This approach allows for
  more customization of operations.
2006-08-01 20:19:17 +00:00
Bart Hakvoort 7ff0609962 made blocksize settable by the user.
* include/Dialog_Partition_Copy.h,
  include/GParted_Core.h,
  include/OperationCopy.h,
  include/Win_GParted.h,
  src/Dialog_Partition_Copy.cc,
  src/GParted_Core.cc,
  src/OperationCopy.cc,
  src/Win_GParted.cc: made blocksize settable by the user.
2006-05-27 19:51:55 +00:00
Bart Hakvoort 17e088553d disabled resizing of this dialog renamed 'Filesystems' to 'Features' in
* src/DialogManageFlags.cc: disabled resizing of this dialog
* include/DialogFeatures.h,
  include/Makefile.am,
  include/Win_GParted.h,
  src/DialogFeatures.cc,
  src/Makefile.am,
  src/Win_GParted.cc: renamed 'Filesystems' to 'Features' in the
  featuredialog to better reflect the actual functionality
* include/Dialog_Filesystems.h,
  src/Dialog_Filesystems.cc: removed
2006-04-05 09:33:04 +00:00
Bart Hakvoort 321f0a3dd1 override Gtk::Window::on_show instead of connecting to signal_show() added
* include/Win_GParted.h,
  src/Win_GParted.cc: override Gtk::Window::on_show instead of
  connecting to signal_show()
* include/Dialog_Filesystems.h,
  src/Dialog_Filesystems.cc: added columns 'detect' and 'read'
2006-04-02 14:04:44 +00:00
Bart Hakvoort f5ea37e310 add 'flag management' (#330453)
* include/DialogManageFlags.h,
  include/GParted_Core.h,
  include/Makefile.am,
  include/Utils.h,
  include/Win_GParted.h,
  src/DialogManageFlags.cc,
  src/GParted_Core.cc,
  src/Makefile.am,
  src/Win_GParted.cc: add 'flag management' (#330453)
2006-03-31 10:49:27 +00:00
Bart Hakvoort 99cebc81d3 lots of cleanups in operationhandling. This resulted in cleaner/less code
* lots of cleanups in operationhandling. This resulted in cleaner/less
  code and the fixing of some longstanding issues.
2006-03-24 19:08:41 +00:00
Bart Hakvoort 863dc0581b added submenu with mountpoints to 'mount' in partitionmenu. (see also
* include/Win_GParted.h,
  src/Win_GParted.cc: added submenu with mountpoints to 'mount' in
  partitionmenu. (see also #330327)
2006-03-16 17:09:17 +00:00
Bart Hakvoort ff3dd1accc added basic support for mounting unmounted partitions on mountpoints found
* include/Win_GParted.h,
  src/Win_GParted.cc: added basic support for mounting unmounted
  partitions on mountpoints found in /etc/fstab
2006-03-09 19:37:50 +00:00
Bart Hakvoort 8777cbd125 removed the frame from the visualdiskwidget and changed some visual
* include/DrawingAreaVisualDisk.h,
  include/Makefile.am,
  include/Win_GParted.h
  src/DrawingAreaVisualDisk.cc,
  src/Makefile.am
  src/Win_GParted.cc: removed the frame from the visualdiskwidget and
  changed some visual details. Also changed visual representation of
  selected partition. The latter might be considered as a work in
  progress.
* include/FrameVisualDisk.h,
  src/FrameVisualDisk.cc: Removed.
2006-03-09 13:12:44 +00:00
Bart Hakvoort 283b40b892 prevent crasher when visual_disks is empty. load devices at startup on
* src/FrameVisualDisk.cc: prevent crasher when visual_disks is empty.
* include/Win_GParted.h,
  src/Win_GParted.cc: load devices at startup on signal_show instead
  of dispatching it from the c'tor.
  Also did some cleanups in the behaviour of opening and closing of
  the operationslist.
2006-02-22 22:05:15 +00:00
Bart Hakvoort f6b01f342f added FIXME cleanups (mostly messagebox related) added some more
* include/Utils.h: added FIXME
* include/Win_GParted.h,
  src/Win_GParted.cc: cleanups (mostly messagebox related)
* src/GParted_Core.cc: added some more progressfeedback to create and
  resize
2006-02-17 21:18:07 +00:00
Bart Hakvoort 828d7a9e5b wrap mount/umount/swapon/swapoff instead of implementing it ourselves
* wrap mount/umount/swapon/swapoff instead of implementing it
  ourselves (#330641)
* moved execute_command() to Utils and made the filesystems use it. All
  in all this decreased the size of the binary with 10% and made stuff
  more readable.
2006-02-15 16:05:26 +00:00
Bart Hakvoort 49b31334cf removed legend after discussion with usability guys
* removed legend after discussion with usability guys
2006-02-10 23:47:02 +00:00
Bart Hakvoort f36b01f138 finally fixed #169683!! ( party, party! :p ) cleanups
* src/TreeView_Detail.cc: finally fixed #169683!! ( party, party! :p )
* include/Win_GParted.h,
  src/Win_GParted.cc,
  src/main.cc: cleanups
2006-02-10 22:16:31 +00:00
Bart Hakvoort a764f10df7 it shouldn't be possible to remove an extended partition which contains
* include/Win_GParted.h,
  src/Win_GParted.cc: it shouldn't be possible to remove an extended
  partition which contains logicals.
* src/TreeView_Detail.cc: only show mountpoint column when there is
  mountinfo.
2006-02-09 17:02:40 +00:00
Bart Hakvoort 1a46adf114 added support for activating swap (#392672)
* include/Win_GParted.h,
  src/Win_GParted.cc: added support for activating swap (#392672)
2006-02-08 20:36:18 +00:00
Bart Hakvoort 4161252b32 added support for commandline arguments (#329414)
* include/GParted_Core.h,
  include/Win_GParted.h,
  src/GParted_Core.cc,
  src/Win_GParted.cc,
  src/main.cc: added support for commandline arguments (#329414)
2006-02-02 13:50:37 +00:00
Bart Hakvoort 35593e5747 added mountpointcolumn (#304688) added submenu 'Devices' which allows one
* include/TreeView_Detail.h,
  src/TreeView_Detail.cc: added mountpointcolumn (#304688)
* include/Win_GParted.h,
  src/Win_GParted.cc: added submenu 'Devices' which allows one to
  select devices from the menu (#329415)
2006-02-02 10:59:44 +00:00
Bart Hakvoort 8a2624c3b8 cleanups
* include/Dialog_Partition_Info.h,
  include/Win_GParted.h,
  src/Win_GParted.cc: cleanups
2006-01-26 20:58:55 +00:00
Bart Hakvoort 591a8f3db0 :get_tmp_dir() instead of hardcoding it as '/tmp' :find_program_in_path()
* use Glib::get_tmp_dir() instead of hardcoding it as '/tmp'
* use Glib::find_program_in_path() instead af a system/which combi
* display current device in windowtitle
2006-01-24 12:31:58 +00:00
Bart Hakvoort 97a9a5fa87 p
* added detailed progressfeedback. It still needs some polishing, but
  is already far better then the old situation. And what's more, it's
  finally threadsafe :p
2006-01-19 19:15:15 +00:00
Bart Hakvoort 388ffffff0 added visual feedback when unmounting or deactivating swap. This can be
* include/Win_GParted.h,
  src/Win_GParted.cc: added visual feedback when unmounting or
  deactivating swap. This can be usefull when it takes longer then
  usual.
2006-01-08 15:20:14 +00:00
Bart Hakvoort 1e6ad5884a removed separator in accordance to the HIG it's now possible to deactivate
* src/Dialog_Partition_Info.cc: removed separator in accordance to the
  HIG
* include/Win_GParted.h,
  src/Win_GParted.cc: it's now possible to deactivate swap from within
  gparted.
* src/GParted_Core.cc: sleep one second after deletion of a partition to
  give the kernel some time to reread the partitiontable.
2006-01-07 21:23:09 +00:00
Bart Hakvoort fb672f5219 happy new year ;) fixed some alignment issues removed confirmationdialogs
* happy new year ;)
* src/TreeView_Detail.cc: fixed some alignment issues
* include/GParted_Core.h,
  src/GParted_Core.cc,
  include/Operation.h,
  src/Operation.cc,
  include/Win_GParted.h,
  src/Win_GParted.cc: removed confirmationdialogs for delete and
  convert partitions (#319841).
  Also renamed 'convert' to 'format' to reflect the actual
  functionality.
2006-01-02 15:18:29 +00:00
Bart Hakvoort 3a4b43e0ad replaced deprecated OptionMenu with ComboBox. also fixed some issues which
* include/Win_GParted.h,
  src/Win_GParted.cc: replaced deprecated OptionMenu with ComboBox.
  also fixed some issues which arised when no devices were detected.
2005-12-29 23:35:37 +00:00