Beispiel #1
0
		public ImportDialog (ImportController controller, Window parent) : base ("import.ui", "import_dialog")
		{
			Controller = controller;
			BuildUI (parent);
			ResetPreview ();
			LoadPreferences ();
			ScanSources ();
			ConnectEvents ();
		}
Beispiel #2
0
 protected override void ScanPhotos(ImportController controller, PhotoList photo_list)
 {
     foreach (var uri in uris)
     {
         Log.Debug("Scanning " + uri);
         ScanPhotoDirectory(controller, uri, photo_list);
     }
     ThreadAssist.ProxyToMain(() => controller.PhotoScanFinished());
 }
Beispiel #3
0
        public void StartPhotoScan(ImportController controller, PhotoList photo_list)
        {
            if (PhotoScanner != null)
            {
                run_photoscanner = false;
                PhotoScanner.Join();
            }

            run_photoscanner = true;
            PhotoScanner     = ThreadAssist.Spawn(() => ScanPhotos(controller, photo_list));
        }
Beispiel #4
0
        public void FindImportDestinationTest()
        {
            var fileUri       = new SafeUri("/path/to/photo.jpg");
            var targetBaseUri = new  SafeUri("/photo/store");
            var targetUri     = new SafeUri("/photo/store/2016/02/06");
            var date          = new DateTime(2016, 2, 6);
            var source        = PhotoMock.Create(fileUri, date);

            var result = ImportController.FindImportDestination(source, targetBaseUri);

            Assert.AreEqual(targetUri, result);
        }
Beispiel #5
0
        protected void ScanPhotoDirectory(ImportController controller, SafeUri uri, PhotoList photo_list)
        {
            var enumerator = new RecursiveFileEnumerator(uri)
            {
                Recurse        = controller.RecurseSubdirectories,
                CatchErrors    = true,
                IgnoreSymlinks = true
            };

            foreach (var file in enumerator)
            {
                if (ImageFile.HasLoader(new SafeUri(file.Uri.ToString(), true)))
                {
                    var info = new FileImportInfo(new SafeUri(file.Uri.ToString(), true));
                    ThreadAssist.ProxyToMain(() =>
                                             photo_list.Add(info));
                }
                if (!run_photoscanner)
                {
                    return;
                }
            }
        }
Beispiel #6
0
        protected void ScanPhotoDirectory(ImportController controller, SafeUri uri, PhotoList photo_list)
        {
            var enumerator = new RecursiveFileEnumerator(uri)
            {
                Recurse        = controller.RecurseSubdirectories,
                CatchErrors    = true,
                IgnoreSymlinks = true
            };
            var infos = new List <FileImportInfo> ();

            foreach (var file in enumerator)
            {
                if (ImageFile.HasLoader(new SafeUri(file.Uri.ToString(), true)))
                {
                    infos.Add(new FileImportInfo(new SafeUri(file.Uri.ToString(), true)));
                }

                if (infos.Count % 10 == 0 || infos.Count < 10)
                {
                    var to_add = infos;                     // prevents race condition
                    ThreadAssist.ProxyToMain(() => photo_list.Add(to_add.ToArray()));
                    infos = new List <FileImportInfo> ();
                }

                if (!run_photoscanner)
                {
                    return;
                }
            }

            if (infos.Count > 0)
            {
                var to_add = infos;                 // prevents race condition
                ThreadAssist.ProxyToMain(() => photo_list.Add(to_add.ToArray()));
            }
        }
Beispiel #7
0
 protected virtual void ScanPhotos(ImportController controller, PhotoList photo_list)
 {
     ScanPhotoDirectory(controller, Root, photo_list);
     ThreadAssist.ProxyToMain(() => controller.PhotoScanFinished());
 }
Beispiel #8
0
		void StartImport (SafeUri uri)
		{
			var controller = new ImportController (true);
			controller.StatusEvent += evnt => {
				if (evnt == ImportEvent.ImportFinished) {
					if (controller.PhotosImported > 0) {
						query.RollSet = new RollSet (Database.Rolls.GetRolls (1));
					}
				}
			};
			var import_window = new ImportDialog (controller, Window);
			import_window.Show ();
		}
Beispiel #9
0
		public void ImportUriList (UriList list, bool copy)
		{
			// Drag'n drop import.
			var controller = new ImportController (false);
			controller.StatusEvent += (evnt) => ThreadAssist.ProxyToMain (() => {
				if (evnt == ImportEvent.ImportFinished) {
					if (controller.PhotosImported > 0) {
						query.RollSet = new RollSet (Database.Rolls.GetRolls (1));
					}
				}
			});

			var source = new MultiFileImportSource (list.ToArray ());
			controller.ActiveSource = source;
			controller.CopyFiles = copy;
			controller.DuplicateDetect = true;
			controller.RecurseSubdirectories = true;
			controller.RemoveOriginals = false;

			var import_window = new ImportDialog (controller, Window);
			import_window.Show ();

			controller.StartImport ();
		}
Beispiel #10
0
 protected override void ScanPhotos(ImportController controller, PhotoList photo_list)
 {
     foreach (var uri in uris) {
         Log.Debug ("Scanning " + uri);
         ScanPhotoDirectory (controller, uri, photo_list);
     }
     ThreadAssist.ProxyToMain (() => controller.PhotoScanFinished ());
 }
Beispiel #11
0
 protected virtual void ScanPhotos(ImportController controller, PhotoList photo_list)
 {
     ScanPhotoDirectory (controller, Root, photo_list);
     ThreadAssist.ProxyToMain (() => controller.PhotoScanFinished ());
 }
Beispiel #12
0
 protected void ScanPhotoDirectory(ImportController controller, SafeUri uri, PhotoList photo_list)
 {
     var enumerator = new RecursiveFileEnumerator (uri) {
                 Recurse = controller.RecurseSubdirectories,
                 CatchErrors = true,
                 IgnoreSymlinks = true
     };
     foreach (var file in enumerator) {
         if (ImageFile.HasLoader (new SafeUri (file.Uri.ToString(), true))) {
             var info = new FileImportInfo (new SafeUri (file.Uri.ToString (), true));
             ThreadAssist.ProxyToMain (() =>
                 photo_list.Add (info));
         }
         if (!run_photoscanner)
             return;
     }
 }
Beispiel #13
0
        public void StartPhotoScan(ImportController controller, PhotoList photo_list)
        {
            if (PhotoScanner != null) {
                run_photoscanner = false;
                PhotoScanner.Join ();
            }

            run_photoscanner = true;
            PhotoScanner = ThreadAssist.Spawn (() => ScanPhotos (controller, photo_list));
        }
Beispiel #14
0
        protected void ScanPhotoDirectory(ImportController controller, SafeUri uri, PhotoList photo_list)
        {
            var enumerator = new RecursiveFileEnumerator (uri) {
                        Recurse = controller.RecurseSubdirectories,
                        CatchErrors = true,
                        IgnoreSymlinks = true
            };
            var infos = new List<FileImportInfo> ();
            foreach (var file in enumerator) {
                if (ImageFile.HasLoader (new SafeUri (file.Uri.ToString(), true))) {
                    infos.Add (new FileImportInfo (new SafeUri (file.Uri.ToString(), true)));
                }

                if (infos.Count % 10 == 0 || infos.Count < 10) {
                    var to_add = infos; // prevents race condition
                    ThreadAssist.ProxyToMain (() => photo_list.Add (to_add.ToArray ()));
                    infos = new List<FileImportInfo> ();
                }

                if (!run_photoscanner)
                    return;
            }

            if (infos.Count > 0) {
                var to_add = infos; // prevents race condition
                ThreadAssist.ProxyToMain (() => photo_list.Add (to_add.ToArray ()));
            }
        }