On 11/7/18 3:12 PM, JLuc wrote:
> Le 07/11/2018 ? 18:05, Gregory Pittman a ?crit?:
>>> 2. Image scaling:? when working on a magazine article image frames often 
>>> have similar scaling for the images within them, and image frames can be 
>>> cloned and copied? - however, every time a new image is inserted into a 
>>> frame, it defaults to 100% instead of the inherited frame aspect - which is 
>>> how I would expect it to happen.? This then necessitates lots of clicks to 
>>> reset the image scaling to the one it was copied from.
>>
>> If you are scaling to frame size, it will stay in that when you load a new 
>> image. Note that you can set the default behavior for frames in Preferences 
>> > Item Tools > Images, in case that might be helpful. Otherwise, it's a 
>> matter of looking at the Scaling of the image in Properties before you load 
>> a new image.
> 
> I agree with Colin that there is a usability issue when loading a new image 
> into an image frame.
> Most of the time i wish the scale would not change.
> The report is there :
> https://bugs.scribus.net/view.php?id=12253
> 

I've written a script, retainscaling.py that manages this issue. It's actually 
quite simple. After some error checking to make sure there is only one frame 
and it's an image frame, its scaling is obtained.
A file dialog opens to choose a new image file. The file is loaded and the 
scaling set to the previous settings.

Greg

#!/usr/bin/env python
# -*- coding: utf-8  -*-

"""
retainscaling.py

USAGE
You must have a single image frame selected. Its scaling is noted.
A file dialog opens to load a new image. New image is loaded, scaling set to
same as previous image.

"""

try:
    import scribus
except ImportError:
    print "Unable to import the 'scribus' module. This script will only run 
within"
    print "the Python interpreter embedded in Scribus. Try Script->Execute 
Script."
    sys.exit(1)

if scribus.selectionCount() != 1:
    scribus.messageBox('Selection Count', "You must have a frame selected",
                       scribus.ICON_WARNING, scribus.BUTTON_OK)
    sys.exit(2)

frame1 = scribus.getSelectedObject()
ftype1 = scribus.getObjectType(frame1)
if (ftype1 != "ImageFrame"):
    scribus.messageBox('Object Type', "Selected object must be an image frame",
                       scribus.ICON_WARNING, scribus.BUTTON_OK)
    sys.exit(2)

scribus.setRedraw(False)
currentscale = scribus.getImageScale(frame1)   # this returns a tuple x,y
newimage = scribus.fileDialog('Get Image', 'Image file (*.*)')
scribus.loadImage(newimage, frame1)
scribus.setImageScale(currentscale[0], currentscale[1], frame1)

scribus.setRedraw(True)


Reply via email to