Commit graph

1334 commits

Author SHA1 Message Date
Sophie Herold
57f573f98a ui: Fix quotation marks 2022-11-04 20:48:32 +01:00
Sophie Herold
0f7115fe8b imageMetadata: Implement debug 2022-11-04 20:12:44 +01:00
Sophie Herold
db69cbe64e window: Do not panic on failed drag-and-drop 2022-11-04 20:12:15 +01:00
Sophie Herold
165861568c imageView: Fix two panics when file not exists 2022-11-04 19:28:48 +01:00
Sophie Herold
369b71b15c code: Fix clippy warnings 2022-11-04 19:27:43 +01:00
Sophie Herold
a2e6767584 image: Add rotation and auto rotate based on exif 2022-11-04 18:52:33 +01:00
Sophie Herold
3d6564377a cargo: Update dependencies 2022-11-03 00:57:18 +01:00
AsciiWolf
743577757f data: Rename appdata to metainfo
The appdata file/directory name is deprecated.

Also change the desktop component type to desktop-application. Same reason.
2022-10-06 16:38:46 +02:00
Christopher Davis
20c336b17f image_view: Fix carousel scrolling when loading files in same dir
With https://gitlab.gnome.org/GNOME/libadwaita/-/merge_requests/652
merged
we no longer crash when loading files from the same directory.
Now that we don't crash, we've exposed a logic error: we were
changing the state of the carousel while scrolling through it,
which ends with the carousel in a weird state.

This commit delays clearing and refilling the carousel until
after the `page-changed` signal is emitted.
2022-08-19 12:06:07 -04:00
Elton A Rodrigues
8679734a43 general: change wallpaper to background
- Change wallpaper term to background(string and code)
- Remove toast error when cancel background portal
2022-08-18 09:42:25 -03:00
Elton A Rodrigues
2f9c7793c8 window: Add "open..." to menu
add an option in menu to open new image
2022-08-17 21:20:02 -03:00
Sophie Herold
7029e6129b cargo: Update dependencies and rust edition 2022-08-12 15:56:30 +02:00
Christopher Davis
ca6e6c639c application: Port to AdwAboutWindow 2022-08-06 00:54:34 -04:00
Christopher Davis
81273c736e general: Update libadwaita-rs
Allows us to clean up our imports a bit.
2022-08-06 00:48:52 -04:00
Christopher Davis
1db46013d9 general: Add translation infrastructure 2022-08-05 19:09:17 -04:00
Christopher Davis
58a77ec9fa properties_view: Only show decimal places when dimensions are fractional 2022-08-05 17:56:07 -04:00
Christopher Davis
36cf667cc8 properties_view: Use glib::format_size() for file size
This handles appropriate localized unit names and rounding for us.
2022-08-05 17:19:47 -04:00
Christopher Davis
3395de4661 flatpak: Use mold linker 2022-08-05 00:55:26 -04:00
Christopher Davis
3825dc5598 flatpak: app-id -> id
app-id is deprecated
2022-08-05 00:55:13 -04:00
Christopher Davis
d8e8541059 build: Replace deprecated build_root() and source_root() calls
Also use variables since we call these functions multiple times
- might as well cache them since they stay the same the whole
time.
2022-08-05 00:39:50 -04:00
Christopher Davis
7b68bd78a0 build: Drop unused name_suffix variable 2022-08-05 00:39:50 -04:00
Christopher Davis
d443107146 build: Drop join_paths() in favor of / 2022-08-05 00:39:50 -04:00
Christopher Davis
8fd63ab9b7 build: Drop custom cargo script 2022-08-05 00:39:50 -04:00
Christopher Davis
38c00cc2ec build: Use gnome.post_install()
Allows us to remove the custom postinstall.py script.
2022-08-05 00:39:50 -04:00
Christopher Davis
bc091248d0 ci: Add flatpak aarch64 CI builds 2022-08-04 15:14:41 +00:00
Christopher Davis
d921cd8044 window: Take toast text as impl AsRef instead of &impl AsRef 2022-08-04 01:04:04 -04:00
Christopher Davis
37f170b165 general: Name spawned threads
This is for easier debugging in case a panic happens -
instead of dealing with "thread <unnamed> paniced...", etc.,
we get a name relevant to our context.
2022-08-03 19:53:32 -04:00
Christopher Davis
d99215bfd1 general: Use gtk_macros::spawn!()
Makes the code a tad cleaner because we're not manually
getting `glib::MainContext` every time we want to spawn
a future.
2022-08-03 19:37:03 -04:00
Christopher Davis
386b41e482 properties_view: Ignore result of sending SVG metadata across threads
`parse_svg_file_future()` is called in a cancellable async
block. This means that after it's called it can be cancelled,
which drops the receiver. When we fetch the metadata, we try
sending the result to the dropped receiver.

This is expected behavior in this case - the receiver
being gone at the time of sending the metadata is perfectly
valid. However, previously we would cause the thread to panic.
This didn't break anything but made for scary log message.

Since this is expected behavior we can use `_` to tell the
compiler that we don't care about the outcome of sending.
This is valid in this instance because we will only get an
error if the receiver is gone.
2022-08-02 21:15:45 -04:00
Christopher Davis
ba4661031f Implement Properties
Implement a properties sidebar. In order to prevent
the UI from freezing, we use futures to load and cancel
loading file information. We also make use of
`gdk_pixbuf` and `svg_metadata` in order to get the file's
metadata before the file fully loads, meaning there's
little to no delay between changing files and seeing
the metadata for large images.

The properties widget uses expressions and
properties to avoid glue code for setting each label,
allowing us to have a clean separation between UI
and data.
2022-08-02 19:31:44 -04:00
Christopher Davis
1e95dd4cbb image_view: Expose file as a property instead of filename
The GFile is more useful for other data. The window can
use expressions to calculate an appropriate title, so
we no longer need to call `set_title()` or connect to
a signal manually.

This commit also adjusts the `uri()` and `print()`
functions to use `active_file()`
2022-08-02 19:30:08 -04:00
Christopher Davis
fa513596b2 CI: Update configuration
Update:
 * images
 * template path
 * flatpak stage configuration
2022-07-30 17:55:17 -04:00
Christopher Davis
9ba6cced6c window,image_view: Move fullscreen controls to the image view
Allan Day's latest mockups have the fullscreen icon on the bottom
left of the image. This commit moves the icon there, using a
GtkExpression for the icon name.
2022-07-14 17:35:20 -04:00
Christopher Davis
689f975bf0 window: Add copy button to top left
Allan Day's latest mockups put a copy button in the top left
of the window. This commits adds the button and the toast along
with it.
2022-07-14 16:27:38 -04:00
Christopher Davis
fadb6bfb9b image_view: Move controls to the bottom
Per Allan Day's latest mockups
2022-07-14 16:27:38 -04:00
Christopher Davis
5f7aa595db file_model: Use binary search to find index
Binary search is a fast method to sort for an item within
a sorted list. We have a sorted list, so we can take advantage
of binary search instead of having a linear traversal through
the list.

Because binary search requires a sorted list, we need to use
the same logic for sorting and searching. Here we factor out
the filename comparison logic into `util::compare_by_name()`.
In the future we may want to have a module for sorting algorithm
logic and checking what sorting algortihm Nautilus uses.
2022-07-14 15:25:03 -04:00
Christopher Davis
d609c4e0b2 image_view: Adjust model index name
Previously we used `prev_index` everywhere, which could
get confusing - it's not really the "previous" index
until we've moved. So, only `page_changed_cb ()` refers
to it as `prev_index`. Everywhere else it's called
`current_model_index`.

In accordance with this change, we can get rid
of a call to `current_page()` and `index_of()`
since we already know the index of the current page.
2022-07-14 13:30:38 -04:00
Christopher Davis
f10066b73c Revert "flatpak: Downgrade SDK, build libadwaita"
This reverts commit 6b5e4bbd53
2022-07-14 06:37:47 +00:00
Christopher Davis
6b5e4bbd53 flatpak: Downgrade SDK, build libadwaita
Currently the master SDK is broken, and can't
be easily fixed due to build issues.
2022-07-01 16:52:38 -04:00
Christopher Davis
6e869ebb1b window: Remove unecessary String cast in pick_file()
Per clippy lints
2022-06-29 20:10:37 -04:00
Christopher Davis
f0973f6cf6 window: map().flatten() -> and_then()
Per clippy lints
2022-06-29 20:09:45 -04:00
Christopher Davis
e8511bf5d5 image_view: Pass model to update_action_state()
Due to the latest refactoring passes, it was possible
for the model to be borrowed twice when navigating
to a file. This commit makes model an argument
to update_action_state() so we don't need to acquire
another borrow. We have the model already in all cases
where we use update_action_state().
2022-06-29 18:45:45 -04:00
Christopher Davis
ddb02d0eb7 image_view: Rename N_PAGES to BUFFER
This is for better readability. Also changes the comment,
which I forgot to update while reworking how we handle the
model.
2022-06-29 18:25:45 -04:00
Christopher Davis
8c56e2c66a file_model: Make index_of() return a u32
We only ever use it as a u32 elsewhere, so cut out
the casting.
2022-06-29 16:58:11 -04:00
Christopher Davis
70054971d9 file_model: Add file() function
Adds a function to get the file at a given index directly,
instead of going through GListModel::item().
2022-06-29 16:51:16 -04:00
Christopher Davis
e13ecb4df4 file_model: Remove next() and previous() functions
These functions required iterating to find the
index of a file and then adding one to it.
We can be smarter, using an index we already
have and adding or subtracting where appropriate.
2022-06-29 13:37:55 -04:00
Christopher Davis
10cdb2c519 image_view: Create functions to fill and clear carousel
This way we don't need to duplicate code for this functionality.
2022-06-29 12:22:39 -04:00
Christopher Davis
8612c317ba image_view: Implement loading a file within the current model
Currently broken due to a crash in AdwAnimation
2022-06-29 12:22:28 -04:00
Christopher Davis
8acf76bd5e image_view: Clear the carousel when creating a new model
This way we properly handle switching directories within the
same window.
2022-06-28 21:28:55 -04:00
Christopher Davis
3557b15034 image_view: Rework model loading and page navigation
Rework the model loading to not care about the edges.
Now we only care about where we are in the model and
the number of buffer pages. This algorithm handles
the edges without special casing.
2022-06-28 18:59:33 -04:00