handle "filter result size = 0" without crashing
This commit is contained in:
parent
1bedac471d
commit
75b80507bd
24
Program.cs
24
Program.cs
@ -647,7 +647,11 @@ public class Game : GameWindow {
|
||||
}
|
||||
|
||||
// Make sure the photoIndex is actually valid.
|
||||
if (photos.Count == 0) {
|
||||
photoIndex = 0;
|
||||
} else {
|
||||
photoIndex = Math.Clamp(photoIndex, 0, photos.Count - 1);
|
||||
}
|
||||
|
||||
// Handle presses of the "rating" keys -- 0-5 and `.
|
||||
// A normal press just sets the rating of the current photo.
|
||||
@ -683,9 +687,11 @@ public class Game : GameWindow {
|
||||
if (shifted) {
|
||||
FilterByRating(rating);
|
||||
} else {
|
||||
if (photos.Count > 0) {
|
||||
photos[photoIndex].Rating = rating;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (input.IsKeyPressed(Keys.Q)) {
|
||||
zoomLevel = 0f;
|
||||
@ -714,7 +720,7 @@ public class Game : GameWindow {
|
||||
|
||||
void FilterByRating(int rating) {
|
||||
Console.WriteLine("filter to " + rating);
|
||||
Photo previouslyActive = photos[photoIndex];
|
||||
Photo previouslyActive = photos.Count > 0 ? photos[photoIndex] : allPhotos[0];
|
||||
photos = allPhotos.Where(p => p.Rating >= rating).ToList();
|
||||
// Move photoIndex to wherever the previously active photo was, or if it
|
||||
// was filtered out, to whichever unfiltered photo comes before it. This
|
||||
@ -773,8 +779,8 @@ public class Game : GameWindow {
|
||||
// string[] files = Directory.GetFiles(@"c:\users\colin\pictures\photos\2023\07\14\");
|
||||
// string[] files = Directory.GetFiles(@"G:\DCIM\100EOSR6\");
|
||||
// string[] files = Directory.GetFiles(@"C:\Users\colin\Pictures\photos\2018\06\23");
|
||||
// string[] files = Directory.GetFiles(@"C:\Users\colin\Desktop\Germany all\104D7000");
|
||||
string[] files = Directory.GetFiles(@"C:\Users\colin\Desktop\many-birds\");
|
||||
string[] files = Directory.GetFiles(@"C:\Users\colin\Desktop\Germany all\104D7000");
|
||||
// string[] files = Directory.GetFiles(@"C:\Users\colin\Desktop\many-birds\");
|
||||
|
||||
for (int i = 0; i < files.Count(); i++) {
|
||||
string file = files[i];
|
||||
@ -843,6 +849,16 @@ public class Game : GameWindow {
|
||||
GL.BindBuffer(BufferTarget.ArrayBuffer, VertexBufferObject);
|
||||
GL.ActiveTexture(TextureUnit.Texture0);
|
||||
|
||||
if (photos.Count > 0) {
|
||||
DrawPhotos();
|
||||
} else {
|
||||
DrawText("No photos found.", 10, 10);
|
||||
}
|
||||
|
||||
SwapBuffers();
|
||||
}
|
||||
|
||||
void DrawPhotos() {
|
||||
Photo activePhoto = photos[photoIndex];
|
||||
Texture active = activePhoto.Texture();
|
||||
|
||||
@ -892,8 +908,6 @@ public class Game : GameWindow {
|
||||
if (activePhoto.Loaded) {
|
||||
DrawText($"{(scale * 100):F1}%", geometry.StatusBox.Min.X, geometry.StatusBox.Min.Y + statusPadding);
|
||||
}
|
||||
|
||||
SwapBuffers();
|
||||
}
|
||||
|
||||
void DrawTexture(Texture texture, int x, int y) {
|
||||
|
Loading…
Reference in New Issue
Block a user