Commit Graph

57 Commits

Author SHA1 Message Date
Mike Fleetwood 24fa553385 Remove unnecessary sector_size parameter from Get_New_Partition methods
The sector_size parameter is unnecessary as the value can be retrieved
from the sector size of the selected Partition object on which the
create new, copy & paste or resize/move operation is being performed.

For the create new and resize/move operations it is trivial as the
existing unallocated or in use Partition object on which the operation
is being perform already contains the correct sector size.  For the copy
& paste operation, which can copy across disk devices of different
sector sizes, we merely have to use the sector size of the existing
selected (destination) Partition object rather than copied (source)
Partition object.  Hence these relevant lines in the new code:

    Dialog_Partition_Copy::set_data(selected_partition, copied_partition)
        new_partition = copied_partition.clone();
        ...
        new_partition->sector_size = selected_partition.sector_size;
2016-01-26 10:11:35 -07:00
Mike Fleetwood 4a6cbcd0f1 Use pointer to Partition in Dialog_Base_Partition and derived classes (#759726)
Now use a pointer to the Partition object in Dialog_Base_Partition class
and derived classes, Dialog_Partition_{Copy,New,Resize_Move}.  This is
equivalent to how the Partition objects are managed in the Operation and
derived classes.

The Partition object is allocated and copy constructed in each derived
classes' set_data() method, called from each constructor and deallocated
in the destructors.  Considering the remaining Big 3, these classes are
never copy constructed or copy assigned so provide private definitions
and no implementations so the compiler enforces this.

Bug 759726 - Implement Partition object polymorphism
2016-01-26 10:11:35 -07:00
Mike Fleetwood 48d898ebfd Include Partition.h header everywhere it's used
Lots of files which use the Partition class relied on the declaration
being included via other header files.  This is bad practice.

Add #include "Partition.h" into every file which uses the Partition
class which doesn't already include it.  Header file #include guards are
specifically to allow this.
2016-01-26 10:11:35 -07:00
Mike Fleetwood 2c4df87a2c Return reference from Get_New_Partition() (#757671)
Return newly constructed partition object by reference rather than by
copy from the Copy, Resize/Move and New dialog classes.  This is another
case of stopping copying partition objects in preparation for using
polymorphic Partition objects.  In C++ polymorphism has to use pass by
pointer and reference and not pass by value, copying, to avoid object
slicing.

The returned reference to the partition is only valid until the dialog
object containing the new_partition member is destroyed.  This is okay
because in all three cases the returned referenced partition is copied
into a context with new lifetime expectations before the dialog object
is destroyed.

Case 1: GParted_Core::activate_paste()
    Referenced new_partition is copied in the OperationCopy constructor
    before the dialog object goes out of scope.

    Operation * operation = new OperationCopy( ...,
                                               dialog.Get_New_Partition( ... ),
                                               ... );

Case 2: GParted_Core::activate_new()
    Referenced new_partition is copied in the OperationCreate
    constructor before the dialog object goes out of scope.

    Operation * operation = new OperationCreate( ...,
                                                 dialog.Get_New_Partition( ... ) );

Case 3: GParted_Core::activate_resize()
    Temporary partition object is copied from the referenced
    new_partition before the dialog object goes out of scope.

    Partition part_temp = dialog.Get_New_Partition( ... );

Bug 757671 - Rework Dialog_Partition_New::Get_New_Partition() a bit
2015-11-11 10:12:18 -07:00
Mike Fleetwood 32a5ace156 Rename Dialog_Base_Partition member to new_partition
The member variable was named selected_partition.  It is assigned from
Win_GParted::selected_partition_ptr (which is a pointer to a const
partition object so is never updated).  This gives connotations that it
won't be modified.

However it is updated freely as the new resultant partition object is
prepared before being returned from the dialog, most notable in the
Get_New_Partition() methods.

Therefore rename from selected_partition to new_partition.
2015-06-10 10:44:33 -06:00
Mike Fleetwood 8b96f8409f Stop copying selected_partition back on itself in the copy dialog (#750168)
The code goes like this:

    Dialog_Partition_Copy::Get_New_Partition()
        call Dialog_Base_Partition::Get_New_Partition()
            Update this->selected_partition with results from running
            the dialog.
            return this->selected_partition by value.
        Save value back to this->selected_partition.
        Update this->selected_partition some more.
        return this->selected_partition by value.

So there is an unnecessary copy of the partition object returned from
the base class Get_New_Partition() function back to the same variable in
the derived copy class Get_New_Partition() function.

Need to keep the base class Get_New_Partition() function as derived
class Dialog_Partition_Resize_Move uses that implementation as it
doesn't override it, and it's part of the interface.

Avoid this unnecessary copy by moving base class Get_New_Partition()
code into a new private function, called prepare_new_partition(), which
doesn't return anything.  Then have Get_New_Partition() in both classes
just return the required partition object.  Like this:

    Dialog_Base_Partition::Get_New_Partition()
        call prepare_new_partition()
        return this->selected_partition by value.

    Dialog_Partition_Copy::Get_New_Partition()
        call Dialog_Base_Partition::prepare_new_partition()
        Update this->selected_partition some more.
        return this->selected_partition by value.

Bug 750168 - Reduce the amount of copying of partition objects
2015-06-10 10:44:33 -06:00
Daniel Mustieles 3861b9257b Replace obsolete FSF postal address in copyright notices (#721565)
This is part of parent bug:
    Bug #721455 - Obsolete info in license text on multiple modules

and GNOME Goal:
    https://wiki.gnome.org/Initiatives/GnomeGoals/Proposals

    * verify all source files to make sure they have a license and a
      copyright, and that both are up-to-date

Bug #721565 -  License text contains obsolete FSF postal address
2014-01-26 10:53:23 +00:00
Mike Fleetwood 87625c2b0a Prevent crash from pressing Esc in dialogs with number entry (#682658)
Steps to reproduce:
1) Open any of these dialogs: Create New Partition, Resize/Move or
   Paste;
2) Update any of the following numeric entry fields to a different value
   using the keyboard: Free space preceding, New size or Free space
   following;
3) Press [Esc] key;
Gparted crashes.

What is happening is that the [Esc] key is leading to the dialog being
closed and calling the ~Dialog_Base_Partition() destructor.  However
after this the GTK widget is calling the on_spinbutton_value_change()
registered callbacks for the change to the other two values, on the now
just deleted object.

Fix by disconnecting the change notification callbacks in the
destructor.

Closes bug #682658 - GParted crash by pressing Esc in dialogs with
                     number entry
2012-08-30 13:14:04 -06:00
Mike Fleetwood 7ddbc9bd92 Set unallocated space for paste or resize/move operations (#499202)
When pasting a copied partition into free space or move/resizing a
partition set its space utilisation so that any unallocated space within
the partition is displayed correctly before the operation is applied.

NOTE:
If the file system does not support file system resizing the Paste and
Move/Resize dialogs don't allow resizing the partition so the preview
will always be correct, unlike the case in the previous patch:
    Set unallocated space when performing simple operations (#499202)

Also remove the deprecated and no longer used Partition::Set_Unused()
and Partition::set_used() methods.

Bug #499202 - gparted does not see the difference if partition size
              differs from filesystem size
2012-06-18 10:24:29 -06:00
Curtis Gedak 813010b148 Update AUTHORS file and minor variable rename
Add recognition for the work done by Markus Elfring.
Also minor variable rename and added comment for patch to bug #634090.
2011-07-18 13:28:49 -06:00
Markus Elfring 91b971691d Bug #634090: Change some attributes to local variables
Some classes contained private attributes which were used only by a single
member function. Such items were moved to the corresponding function implementations
to stress their limited usage scope.

A few unused variables were also deleted.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
2011-07-18 13:28:49 -06:00
Curtis Gedak 340d506c04 Update copyright year 2011-01-16 10:45:25 -07:00
Curtis Gedak 6ae39268f2 Fix paste destination partition smaller than source (#639393)
Re-work logic for copying a cylinder aligned partition to a new
MiB aligned partition.  Previously this was partially fixed in
bug #626946 - Destination partition smaller than source partition

Closes Bug #639393 - Redux: Destination partition smaller than
                     source partition
2011-01-15 11:00:42 -07:00
Curtis Gedak d330f9a518 Fix partitions moved or copied using MiB alignment are 1 MiB larger
Correct problem introduced in version 0.6.3 whereby move or copy
operations using MiB alignment resulted in the destination
partition being 1 MiB larger.

Closes bug #632478
2010-10-18 17:08:23 -06:00
Markus Elfring 1e2562adda Bug #539092: Deletion of unnecessary null pointer checks
A few null pointer checks were deleted because they were not needed any more.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
2010-10-06 12:24:51 -06:00
Curtis Gedak b77a5e229d Fix paste destination partition smaller than source (#626946)
Prior to this enhancement when copying and pasting a partition
after a cylinder aligned partition, the destination partition
would become smaller than the source partition if align to MiB
was selected.

Closes bug #626946 - Destination partition smaller than source
                     partition.
2010-09-09 13:18:01 -06:00
Curtis Gedak c17df56af0 Ensure default partition alignment is mebibyte 2010-09-09 13:18:01 -06:00
Curtis Gedak 9d4ae28759 Fix numerical mismatch when graphically moving logical partition (#628554) 2010-09-07 17:01:08 -06:00
Curtis Gedak a92f2dad39 Re-enable MiB partition alignment option 2010-07-22 17:18:48 -06:00
Curtis Gedak 1e1ea1f09c Disable MiB alignment temporarily until bug #623630 can be fixed 2010-07-08 09:22:43 -06:00
Curtis Gedak e62a23b5b5 Add partition alignment option to align to MiB (#617409)
Make align to MiB the default setting instead of align to cylinder.

Migrate logic for alignment to cylinder into its own method
snap_to_cylinder, and place common logic in snap_to_alignment.

Add alignment checks for situations where space is needed for Master
Boot Record or Extended Boot Record.

Adjust ranges on spin buttons according to required boot record space.

Copy fix for off by one sector (#596552) from
Dialog_Partition_New::Get_New_Partition to
Dialog_Base_Partition::Get_New_Partition

Enhance resize / move logic for checking locations of nearby logical
partitions to not depend on the partition ordering.

Note: This commit does not include limiting graphic movement according
to required boot record space.
2010-05-20 10:00:14 -06:00
Curtis Gedak 2cdfb4c55a Change partition alignment check box to a drop down menu
Also add signal handler to alignment menu to update file system
minimum size.
This enhancement is to prepare for adding a third alignment
option to align to MiB.
2010-05-09 14:45:26 -06:00
Curtis Gedak 3db6b074c9 Remove incorrect comment 2010-05-04 15:47:34 -06:00
Curtis Gedak b45b30c2ed Ensure sector size is set when getting a new partition
This change is in preparation for supporting sectors sizes > 512 bytes.
2010-05-04 15:19:49 -06:00
Curtis Gedak 7e2ca14756 Rename get_length method to get_sector_length
This rename is to try to reduce future confusion between
partition length in sectors versus partition length in bytes.
2010-04-28 09:11:44 -06:00
Curtis Gedak cb08e8c7dd Remove 512 byte based units and rename _FACTOR to BYTE
With the removal of the 512 byte constants, such as MEBIBYTE, it
was possible to rename the _FACTOR constants back to BYTE
constants.  The _FACTOR constants, such as MEBI_FACTOR, were a
temporary measure to help in the transition to support devices
with sector sizes > 512 bytes.
2010-04-26 13:40:38 -06:00
Curtis Gedak 81a903cda2 Replace constant MEBIBYTE with appropriate MEBI_FACTOR math
This change is in preparation for supporting sectors sizes > 512 bytes.
2010-04-26 13:21:18 -06:00
Curtis Gedak 74ecd2ed3f Set sector size and add to operation and dialog methods
This change is in preparation for supporting sectors sizes > 512 bytes.
2010-04-19 19:22:31 -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 a960d280d8 Change field labels to sentence capitalization (#583885)
This change done to align with the GNOME Human Interface Guidelines.
http://library.gnome.org/devel/hig-book/stable/design-text-labels.html.en
2009-10-21 15:25:44 -06:00
Curtis Gedak 42b63cc274 Enhanced move/resize functionality - Only move start sector if dialog space before value is changed.
svn path=/trunk/; revision=1070
2009-02-16 19:53:43 +00:00
Curtis Gedak b10f2325d7 Migrated Round to cylinders checkbutton from dialog partition new to dialog base partition so that it can be used by all dialogs that inherit from dialog base partion (e.g., New, Copy, and Resize/Move)
svn path=/trunk/; revision=856
2008-06-15 17:18:26 +00:00
Curtis Gedak 16afc3bb75 Corrected math in partition creation/resize dialogs that prevented operations on partition sizes >= 1 TB
svn path=/trunk/; revision=828
2008-04-21 17:08:43 +00:00
Bart Hakvoort 8d2e7dd26d replaced 'long' with 'Sector' to prefent overflows with really large
* include/Device.h,
  include/Dialog_Base_Partition.h,
  src/Dialog_Base_Partition.cc: replaced 'long' with 'Sector' to
  prefent overflows with really large devices.
2006-12-08 13:14:05 +00:00
Bart Hakvoort f96c8dea05 trivial cleanups
* trivial cleanups
2006-03-28 12:40:29 +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 58f812484c added FIXME force processing of all pending Gtk::Main events after
* src/Dialog_Base_Partition.cc,
  src/FrameVisualDisk.cc: added FIXME
* src/Win_GParted.cc: force processing of all pending Gtk::Main events
  after Refresh_Visual. This fixes an issue with incorrect displayed
  Visual Partition Display.
2006-03-01 21:50:52 +00:00
Bart Hakvoort 9830c8f63e did lots of work on the resizer, it's behaviour should be more natural and
* include/Frame_Resizer_Base.h,
  include/Frame_Resizer_Extended.h,
  src/Dialog_Base_Partition.cc,
  src/Dialog_Partition_Copy.cc,
  src/Dialog_Partition_New.cc,
  src/Dialog_Partition_Resize_Move.cc,
  src/Frame_Resizer_Base.cc,
  src/Frame_Resizer_Extended.cc: did lots of work on the resizer, it's
  behaviour should be more natural and satisfying now. (see also
  #331591)
* src/Win_GParted.cc: extended partition was resizable even when it's
  busy. fixed.
* src/ntfs.cc: made scan output more readable.
* src/FrameVisualDisk.cc: added FIXME
2006-03-01 19:16:13 +00:00
Bart Hakvoort 7d4b6a2eea :sector_to_unit() and use it in several places fixed errors with
* implemented Utils::sector_to_unit() and use it in several places
* (finally) fixed errors with ntfsresizing (had a lot to do with
  difference between MB and MiB)
* resizing of reiserfs now shows more detailed feedback
* support for TebiByte (TiB) unit
2006-01-22 00:07:27 +00:00
Bart Hakvoort 2b509a8332 //www.iec.ch/zone/si/si_bytes.htm
* changed KB/MB/GB/TB to KiB/MiB/GiB/TiB after reading http://www.iec.ch/zone/si/si_bytes.htm
2006-01-20 23:35:06 +00:00
Bart Hakvoort f9ab3cdd3c commented 'ss .imbue( std::locale( "" ) )' (#157871) cleanups allow forced
* src/Utils.cc: commented 'ss .imbue( std::locale( "" ) )' (#157871)
* src/Win_GParted.cc,
  src/TreeView_Detail.cc,
  src/Dialog_Base_Partition.cc: cleanups
* include/Dialog_Partition_New.h,
  include/Partition.h,
  src/Dialog_Partition_New.cc,
  src/GParted_Core.cc,
  src/Partition.cc: allow forced partitionsizes (aka: do not round to
  cylinder). (#169486)
2006-01-07 15:04:42 +00:00
Bart Hakvoort 808b777019 replaced the inline Utils functions with static functions. This shaves a
* replaced the inline Utils functions with static functions.
  This shaves a few kbytes (24 in fact) off the binary and is a bit
  cleaner code-wise (imho).
2005-12-13 21:30:13 +00:00
Bart Hakvoort f25b28be07 Fixed bug in copy functionality (due to unset ORIG_START startsector
* include/Dialog_Base_Partition.h,
  src/Dialog_Base_Partition.cc,
  src/Dialog_Partition_Copy.cc,
  src/Dialog_Partition_Resize_Move.cc: Fixed bug in copy functionality (due to unset ORIG_START startsector wasn't set correctly). Also have ORIG*
  initialized in ctor of dialogbase to prevent such errors from ever happening again (this one only showed up with gcc-3.3.5) .
2005-01-22 17:23:52 +00:00
Bart Hakvoort fa255c48de removed sleep( 1 ). This isn't needed anymore now the layout is scanned
* src/GParted_Core.cc: removed sleep( 1 ). This isn't needed anymore now the layout is scanned before the re-readtest. (saves seconds at scantime :) )
* replaced C-style typeconversion with static_casts throughout the project.
2005-01-19 20:01:39 +00:00
Bart Hakvoort e3a9b2d14c The fixes from 12-09 unearthed a number of long forgotten issues and
* The fixes from 12-09 unearthed a number of long forgotten issues and annoyances. Hopefully they're all resolved now.
2004-12-12 14:57:04 +00:00
Bart Hakvoort 951797caa7 added MIN and MAX to filesystemstruct to set min. and max sizes of a
* added MIN and MAX to filesystemstruct to set min. and max sizes of a filesystem. So instead of checking per filesystem
  i now simply check the fs.MIN or fs.MAX. this results in less and cleaner code. Also this will come in handy when adding
  support for new filesystems. (This also fixed several minor bugs with filesystemsizes and gained some improvement in resizer
  performance)
2004-12-09 22:56:33 +00:00
Bart Hakvoort 4ccf831ec7 P) It still needs a lot of love, but the foundations are laid =)
* Rewrote a large part of gparteds internal code. Filesystemssupport is now much more separated from the rest of gparted and
  adding support for other filesystems should be a piece of cake now (hope that's true :P)
  It still needs a lot of love, but the foundations are laid =)
2004-11-17 13:00:25 +00:00
Bart Hakvoort 641c4504bf Tweaked resizingbehaviour a bit. This solved some minor annoyances.
* src/Dialog_Base_Partition.cc (Get_New_Partition): Tweaked resizingbehaviour a bit. This solved some minor annoyances.
2004-10-20 10:32:19 +00:00
Bart Hakvoort 3bf218f8a0 fixed some resizing-issues with reiserfs.
* src/Dialog_Base_Partition.cc,src/Dialog_Partition_Resize_Move.cc: fixed some resizing-issues with reiserfs.
2004-10-08 15:59:03 +00:00
Bart Hakvoort 9db1a85a0d src/Dialog_Base_Partition.cc and src/Win_GParted.cc: removed spaces before some exclamation and question marks 2004-10-07 15:28:13 +00:00