This project has moved and is read-only. For the latest updates, please go here.

Files with the same name will be overwrited.

Dec 15, 2009 at 2:14 AM
Files with the same name will be overwrited.

I think it is better to give more options to the users, such as overwrite, ignore or rename. Or we can use (1), (2)... as suffix automatically. 

Thanks!
Dec 16, 2009 at 7:52 AM

Hi,

I want to keep this tool simple and easy to use. The more options the worse it will get. Thats why I opted for downloading each album in a fixed directory based on Picasa id & Album Title. That way all you overwrite is the album itself (and you have to download it with this tool to get it there anyway).

So basically I want to avoid an ever growing setup dialog as long as possible.

In my option (and usage) the tool is just for downloading/getting the images to do something with it in another location (so you have to get rid of the picasa id in the name anyway and your problem is gone). In my case i was sick and tired of downloading 40+ albums from a single user. In the time it would have taken me to do that with Picasa I wrote the first version of PicasaDownloader!

A feature of the latest release is that the tool detects if the download directory is already there and puts a marker in the rightmost column.

I can imagine if you start tagging/correcting your downloaded photo's in their original directories and then accidently overwrite you've got a case. 

But thanks for the suggestion. I'll note it down in the issues and If I can find a elegant solution I'll include it in the next update.

Dec 16, 2009 at 8:24 AM

Thanks for your answer.

I need this feature because I have lots of photos with the same name in one album. I know it is unusual in fact.

Would you please how to tell me how to get the "Swiss" namespace and "WaitCursor" reference mentioned in your code? I think I can recompile it to fit my requirement.

Thanks.

Dec 18, 2009 at 8:32 AM
Edited Dec 18, 2009 at 8:38 AM

Hi,

The swiss namespace will be available soon (when i have all the components nicely documented) at http://swiss.codeplex.com.

I think I can solve your problem by prefixing the photo's by their position in the album (so they are sorted correctly too) or do you have a better sugestion? Maybe I'll intruduce a string pattern that you can enter where I replace some markers with picasa data like position, albumid, picasaid, original name, date etc. That way I can solve more problems with a single code change. I will probably code it this afternoon when I have some spare time (should not be to much work)

I did not implement any special naming because I thought it was not possible to have multiple images with the same name in one album. I only thought of re-downloading when overwriting is not a big issue (unless you tagged them after downloading).

In the meantime, here's the sourcecode of the waitcursor class:

#region License
/*
Copyright (c) 2009, G.W. van der Vegt
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided 
that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the 
  following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and 
  the following disclaimer in the documentation and/or other materials provided with the distribution.

* Neither the name of G.W. van der Vegt nor the names of its contributors may be 
  used to endorse or promote products derived from this software without specific prior written 
  permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 
THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 
THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
*/
#endregion License

#region changelog

//----------   ---   -------------------------------------------------------------------------------
//Purpose:           Nestable WaitCursor based on IDisplosable
//By:                G.W. van der Vegt (wvd_vegt@knoware.nl)
//Url:               http://swiss.codeplex.com
//Depends:           -
//License:           New BSD License
//----------   ---   -------------------------------------------------------------------------------
//dd-mm-yyyy - who - description
//----------   ---   -------------------------------------------------------------------------------
//dd-mm-yyyy   veg - Created.
//----------  ----   -------------------------------------------------------------------------------
//dd-mm-yyyy  todo
//                 - .
//                 * .
//----------  ----   -------------------------------------------------------------------------------

#endregion changelog
namespace Swiss
{
    using System;
    using System.Windows.Forms;

    /// <summary>
    /// Nestable WaitCursor based on IDisposable
    /// 
    /// usage:
    /// 
    /// using (WaitCursor wc as new WaitCursor()) {
    ///   ..your code
    /// }
    /// 
    /// Because of the IDisplosable, the WaitCursor 
    /// automatically reverts back to the value it had 
    /// at the start of the using statement. A nice effect of
    /// this construct is that one can also use it nested like:
    ///
    /// using (WaitCursor wc1 as new WaitCursor()) {
    ///   ..your code
    ///   
    ///   using (WaitCursor wc2 as new WaitCursor()) {
    ///     ..more of your code
    ///   }
    /// }
    /// 
    /// The inner using statement can also be localed in another 
    /// method or even library without problems of a premature
    /// reverting to a non waitcursor.
    /// 
    /// The IDisposable should also be Exception proof.
    /// </summary>
    public class WaitCursor : IDisposable
    // define class
    {
        //Private storage for replaced cursor. 
        //Assures that nested usage also works
        private Cursor fCursor;

        //Change Mouse Cursor to Cursors.WaitCursor
        public WaitCursor()
            : this(Cursors.WaitCursor)
        {
        }

        //Change Mouse Cursor
        public WaitCursor(Cursor curs)
        {
            fCursor = Cursor.Current;
            Cursor.Current = curs;
        }

        //Change the Mouse Pointer back to the Default
        public void Dispose()
        {
            Cursor.Current = fCursor;
        }
    }
}

 

Dec 18, 2009 at 1:37 PM

Hi,

I've created a new release with new setup functionality to control the naming of files (including the number of the photo in the album). I think this will solve your problem.

Dec 21, 2009 at 5:32 AM

Thanks! I will try it.