connect sourceview5

This commit is contained in:
yggverse 2024-12-08 15:11:57 +02:00
parent 614aa1d71a
commit c1fc022643
5 changed files with 29 additions and 11 deletions

View File

@ -41,6 +41,10 @@ version = "5.2.0"
[dependencies.ansi-parser]
version = "0.9.1"
[dependencies.sourceview]
package = "sourceview5"
version = "0.9.1"
# development
[patch.crates-io]
# ggemini = { path = "ggemini" }

View File

@ -97,7 +97,7 @@ GTK 4 / Libadwaita client written in Rust
* [ ] `file://` - localhost browser
* [ ] System
* [ ] `config:` - low-level key/value settings editor
* [x] `view-source:` - page source viewer (where supported)
* [x] `source:` - page source viewer (where supported)
### Media types
@ -129,13 +129,14 @@ GTK 4 / Libadwaita client written in Rust
* GDK PixBuf `2.42`
* Glib `2.80`
* GTK `4.14`
* GtkSourceView `5.14`
* Libadwaita `1.5` (Ubuntu 24.04+)
#### Debian
``` bash
sudo apt install git curl build-essential\
libgtk-4-dev libadwaita-1-dev\
libgtk-4-dev libgtksourceview-5-dev libadwaita-1-dev\
libsqlite3-dev libssl-dev
```
@ -143,7 +144,7 @@ sudo apt install git curl build-essential\
``` bash
sudo dnf install git curl gcc\
gtk4-devel libadwaita-devel\
gtk4-devel gtksourceview5-devel libadwaita-devel\
sqlite-devel openssl-devel
```

View File

@ -11,11 +11,17 @@ impl About {
// Collect debug info
let debug = &[
format!(
"GTK {}.{}.{}",
"Gtk {}.{}.{}",
gtk::major_version(),
gtk::minor_version(),
gtk::micro_version()
),
format!(
"GtkSourceView {}.{}.{}",
sourceview::major_version(),
sourceview::minor_version(),
sourceview::micro_version()
),
format!("SQLite {}", sqlite::version()),
// @TODO
];

View File

@ -198,8 +198,8 @@ impl Page {
};
// Detect source view mode, return `request` string prepared for route
let (request, is_view_source) = match request.strip_prefix("view-source:") {
Some(postfix) => (gformat!("{}", postfix.to_string()), true),
let (request, is_view_source) = match request.strip_prefix("source:") {
Some(postfix) => (GString::from(postfix), true),
None => (request, false),
};

View File

@ -1,22 +1,29 @@
use gtk::{TextBuffer, TextView};
use sourceview::{Buffer, StyleScheme, View};
const MARGIN: i32 = 8;
pub struct Source {
pub text_view: TextView,
pub text_view: View,
}
impl Source {
pub fn new(data: &str) -> Self {
Self {
text_view: TextView::builder()
text_view: View::builder()
.bottom_margin(MARGIN)
.buffer(&TextBuffer::builder().text(data).build())
.buffer(
&Buffer::builder()
.text(data)
.style_scheme(&StyleScheme::builder().build()) // adaptive
.highlight_syntax(true)
.build(),
)
.cursor_visible(false)
.editable(false)
.left_margin(MARGIN)
.monospace(true)
.right_margin(MARGIN)
.show_line_marks(true)
.show_line_numbers(true)
.top_margin(MARGIN)
.vexpand(true)
.build(),