...
 
Commits (142)
......@@ -6,3 +6,7 @@ Makefile
_build
vendor
*.gresource
# Files configured by meson
fractal-gtk/src/config.rs
fractal-gtk/src/static_resources.rs
......@@ -7,7 +7,6 @@ stages:
variables:
BUNDLE: "org.gnome.FractalDevel.flatpak"
MANIFEST_PATH: "flatpak/org.gnome.Fractal.json"
MANIFEST_PATH: "flatpak/org.gnome.Fractal.json"
FLATPAK_MODULE: "fractal"
DBUS_ID: "org.gnome.FractalDevel"
......@@ -16,7 +15,7 @@ variables:
key: "flatpak"
paths:
- .flatpak-builder/cache/
- target/
- _build/target/
- target_docs/
- target_test/
......@@ -24,6 +23,10 @@ check:
image: "registry.gitlab.com/alatiera/rustfmt-oci-image/rustfmt:stable"
stage: "check"
script:
# Create blank versions of our configured files
# so rustfmt does not yell about non-existent files or completely empty files
- echo -e "" >> fractal-gtk/src/config.rs
- echo -e "" >> fractal-gtk/src/static_resources.rs
- rustc -Vv && cargo -Vv
- cargo --version
- cargo fmt --all -- --check
......@@ -33,8 +36,6 @@ flatpak:
stage: "test"
script:
- flatpak-builder --stop-at=${FLATPAK_MODULE} --force-clean app ${MANIFEST_PATH}
# Force regeneration of gresources regardless of artifacts chage
- flatpak-builder --run app ${MANIFEST_PATH} glib-compile-resources --sourcedir=fractal-gtk/res/ fractal-gtk/res/resources.xml
# Build the flatpak repo
- flatpak-builder --run app ${MANIFEST_PATH} meson --prefix=/app -Dprofile=development _build
......@@ -47,7 +48,7 @@ flatpak:
--env=CARGO_HOME="target/cargo-home" \
--env=CARGO_TARGET_DIR="target_test/" \
app ${MANIFEST_PATH} \
cargo test
ninja -C _build test
# Create a flatpak bundle
- flatpak-builder --finish-only app ${MANIFEST_PATH}
......@@ -97,23 +98,12 @@ pages:
stage: deploy
script:
- flatpak-builder --stop-at=${FLATPAK_MODULE} --force-clean app ${MANIFEST_PATH}
# Force regeneration of gresources regardless of artifacts chage
- flatpak-builder --run app ${MANIFEST_PATH} glib-compile-resources --sourcedir=fractal-gtk/res/ fractal-gtk/res/resources.xml
- |
flatpak-builder --run \
--env=CARGO_HOME="target/cargo-home" \
app ${MANIFEST_PATH} \
cargo doc --no-deps
- flatpak-builder --run app ${MANIFEST_PATH} meson _build
- |
flatpak-builder --run \
--env=CARGO_HOME="target/cargo-home" \
app ${MANIFEST_PATH} \
cargo rustdoc -p fractal-gtk -- --document-private-items
- flatpak-builder --run app ${MANIFEST_PATH} ninja -C _build doc
- rm -rf public
- mv target/doc/ public
- mv _build/target/doc/ public
artifacts:
paths:
- public
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -4,5 +4,9 @@ members = [
"fractal-gtk",
]
[patch.crates-io]
secret-service = { git = "https://github.com/jhaye/secret-service-rs", rev = "3c265527e43376fe8e00ddfa645a70813c35f449" }
[profile.release]
panic = "abort"
[profile.dev]
panic = "abort"
......@@ -39,7 +39,7 @@ flatpak install --user flathub org.freedesktop.Sdk.Extension.rust-stable//18.08
Then you go ahead and build Fractal.
```
flatpak-builder --user --install fractal org.gnome.Fractal.json
flatpak-builder --user --install fractal flatpak/org.gnome.Fractal.json
```
### GNU/Linux
......
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies within all project spaces, and it also applies when
an individual is representing the project or its community in public spaces.
Examples of representing a project or community include using an official
project e-mail address, posting via an official social media account, or acting
as an appointed representative at an online or offline event. Representation of
a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
#!/bin/bash
#flatpak --user install flathub org.freedesktop.Sdk.Extension.rust-stable
flatpak-builder --repo=repo fractal org.gnome.Fractal.json
#flatpak --user remote-add --no-gpg-verify --if-not-exists fractal-repo repo
#flatpak --user install fractal-repo org.gnome.Fractal
#flatpak-builder --run fractal org.gnome.Fractal-local.json fractal
......@@ -60,29 +60,41 @@
},
{
"name" : "gtksourceview",
"config-opts" : [
"--disable-Werror"
],
"buildsystem" : "meson",
"sources" : [
{
"type" : "git",
"url" : "https://gitlab.gnome.org/GNOME/gtksourceview.git",
"branch" : "gnome-3-24"
"url" : "https://gitlab.gnome.org/GNOME/gtksourceview.git"
}
]
},
{
"name": "gspell",
"sources" : [
{
"type" : "archive",
"url" : "https://download.gnome.org/sources/gspell/1.8/gspell-1.8.1.tar.xz",
"sha256" : "819a1d23c7603000e73f5e738bdd284342e0cd345fb0c7650999c31ec741bbe5"
}
]
},
{
"name" : "gst-editing-services",
"config-opts" : [
"--disable-Werror"
],
"sources" : [
{
"type" : "git",
"url" : "https://gitlab.gnome.org/GNOME/gspell.git"
"url" : "https://gitlab.freedesktop.org/gstreamer/gst-editing-services.git",
"tag" : "1.14.4"
}
]
},
{
"name" : "fractal",
"buildsystem" : "meson",
"builddir" : true,
"config-opts" : [
"-Dprofile=development"
],
......
[package]
authors = ["Daniel Garcia <danigm@wadobo.com>"]
build = "build.rs"
name = "fractal-gtk"
version = "4.0.0"
version = "4.2.0"
workspace = "../"
edition = "2018"
[dependencies]
clap = "2.32.0"
comrak = "0.4.0"
dirs = "1.0.4"
failure = "0.1.3"
fragile = "0.3.0"
gdk = "0.9.0"
gdk-pixbuf = "0.5.0"
gdk-pixbuf-sys = "0.7.0"
gio = "0.5.1"
glib = "0.6.1"
gspell = "0.3.0"
gdk = "0.11.0"
gdk-pixbuf = "0.7.0"
gdk-pixbuf-sys = "0.9.0"
gstreamer-editing-services = "0.14.0"
glib = "0.8.0"
html2pango = "0.3.1"
itertools = "0.8.0"
lazy_static = "1.2.0"
letter-avatar = "1.0.2"
letter-avatar = "1.2.0"
log = "0.4.6"
loggerv = "0.7.1"
mdl = "1.0.4"
pango = "0.5.0"
pangocairo = "0.6.0"
pango = "0.7.0"
pangocairo = "0.8.0"
rand = "0.6.1"
regex = "1.1.0"
secret-service = "0.4.0"
secret-service = "1.0.0"
serde_json = "1.0.33"
sourceview = "0.5.0"
sourceview4 = "0.1.0"
url = "1.7.2"
[dependencies.gst]
version = "0.12.2"
version = "0.14.0"
package = "gstreamer"
[dependencies.gst_player]
version = "0.12.2"
version = "0.14.0"
package = "gstreamer-player"
[dependencies.html2pango]
git = "https://gitlab.gnome.org/World/html2pango"
[dependencies.cairo-rs]
version = "0.5.0"
version = "0.7.0"
features = ["png"]
[dependencies.chrono]
......@@ -54,7 +54,8 @@ path = "../fractal-matrix-api"
package = "fractal-matrix-api"
[dependencies.libhandy]
git = "https://gitlab.gnome.org/jsparber/libhandy-rs"
version = "0.4.0"
features = ["v0_0_10"]
[dependencies.gettext-rs]
git = "https://github.com/danigm/gettext-rs"
......@@ -62,12 +63,13 @@ branch = "no-gettext"
features = ["gettext-system"]
[dependencies.gtk]
version = "0.5.0"
version = "0.7.0"
features = ["v3_22"]
[dependencies.gspell]
git = "https://gitlab.gnome.org/World/Rust/gspell-rs"
[dependencies.serde]
version = "1.0.82"
features = ["derive"]
[dependencies.gio]
version = "0.7.0"
features = ["v2_56"]
use std::process::Command;
fn main() {
// Compile Gresource
let out = Command::new("glib-compile-resources")
.args(&["--generate", "resources.xml"])
.current_dir("res")
.status()
.expect("failed to generate resources");
assert!(out.success());
}
......@@ -5,10 +5,16 @@ cs
de
eo
es
eu
fi
fr
fur
hu
id
nl
pl
pt_BR
ru
sk
sv
uk
......@@ -15,7 +15,9 @@ fractal-gtk/res/ui/filechooser.ui
fractal-gtk/res/ui/invite.ui
fractal-gtk/res/ui/invite_user.ui
fractal-gtk/res/ui/join_room.ui
fractal-gtk/res/ui/kicked_room.ui
fractal-gtk/res/ui/leave_room.ui
fractal-gtk/res/ui/login_flow.ui
fractal-gtk/res/ui/main_menu.ui
fractal-gtk/res/ui/main_window.ui
fractal-gtk/res/ui/markdown_popover.ui
......@@ -46,7 +48,6 @@ fractal-gtk/src/app/connect/headerbar.rs
fractal-gtk/src/app/connect/invite.rs
fractal-gtk/src/app/connect/join_room.rs
fractal-gtk/src/app/connect/leave_room.rs
fractal-gtk/src/app/connect/login.rs
fractal-gtk/src/app/connect/markdown.rs
fractal-gtk/src/app/connect/mod.rs
fractal-gtk/src/app/connect/new_room.rs
......@@ -76,7 +77,6 @@ fractal-gtk/src/cache/state.rs
fractal-gtk/src/globals.rs
fractal-gtk/src/main.rs
fractal-gtk/src/passwd.rs
fractal-gtk/src/static_resources.rs
fractal-gtk/src/uibuilder.rs
fractal-gtk/src/uitypes.rs
fractal-gtk/src/util.rs
......@@ -88,6 +88,7 @@ fractal-gtk/src/widgets/error_dialog.rs
fractal-gtk/src/widgets/file_dialog.rs
fractal-gtk/src/widgets/image.rs
fractal-gtk/src/widgets/inline_player.rs
fractal-gtk/src/widgets/kicked_dialog.rs
fractal-gtk/src/widgets/media_viewer.rs
fractal-gtk/src/widgets/member.rs
fractal-gtk/src/widgets/members_list.rs
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -79,6 +79,16 @@
font-size: x-small;
}
frame.room-directory > border {
border-top-left-radius: 6px;
border-top-right-radius: 6px;
}
.room-directory {
border-top-left-radius: 6px;
border-top-right-radius: 6px;
}
.room-directory row {
padding-top: 18px;
padding-bottom: 18px;
......@@ -224,24 +234,6 @@ row .timestamp {
background-color: @theme_bg_color;
}
.advanced_revealer {
border-radius: 3px;
border: 1px solid @borders;
background-color: @theme_base_color;
}
.advanced_revealer_header {
padding: 18px;
}
.advanced_revealer_divider {
border-radius: 0px;
border-bottom: 1px solid @borders;
}
.advanced_revealer_body {
padding: 18px;
}
.no_member_search {
padding: 12px;
background: @theme_base_color;
......@@ -310,3 +302,57 @@ stack.titlebar:not(headerbar) > box > separator {
.scrollarea-top-border {
border-top: 1px solid @borders;
}
.typing_label {
margin: 6px;
/** list-padding-left + avatar-size + row-padding * 2 **/
/** 18 + 40 + 18 **/
margin-left: 76px;
margin-bottom: 8px;
color: @theme_selected_bg_color;
}
.folded-history .typing_label {
/** list-padding-left + avatar-size + row-padding * 2 **/
/** 6 + 40 + 18 **/
margin-left: 64px;
}
.badge {
border-radius: 5px;
padding: 0.1em 5px;
font-size: 0.8em;
}
.badge-circle {
border-radius: 99999px;
}
.badge-gold {
background-color: #E5A50A;
}
.badge-silver {
background-color: #99A8B0;
}
.badge-grey {
background-color: #D9D9D9;
}
button.forgot-password {
padding: 0px;
outline-offset: 0px;
}
.error-label {
color: @error_color;
}
box.folded-history
> overlay
> scrolledwindow
> viewport
> box
> hdycolumn
> box
> list {
padding-left: 6px;
padding-right: 6px;
}
......@@ -25,6 +25,62 @@
<property name="title" translatable="yes" context="shortcut window">Open / close the room sidebar search</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">true</property>
<property name="accelerator">&lt;Ctrl&gt;Page_Up</property>
<property name="title" translatable="yes" context="shortcut window">Open the previous room in the list</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">true</property>
<property name="accelerator">&lt;Ctrl&gt;Page_Down</property>
<property name="title" translatable="yes" context="shortcut window">Open the next room in the list</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">true</property>
<property name="accelerator">&lt;Ctrl&gt;&lt;Shift&gt;Page_Up</property>
<property name="title" translatable="yes" context="shortcut window">Open the previous room with unread messages in the list</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">true</property>
<property name="accelerator">&lt;Ctrl&gt;&lt;Shift&gt;Page_Down</property>
<property name="title" translatable="yes" context="shortcut window">Open the next room with unread messages in the list</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">true</property>
<property name="accelerator">&lt;Ctrl&gt;Home</property>
<property name="title" translatable="yes" context="shortcut window">Open the first room of the list</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">true</property>
<property name="accelerator">&lt;Ctrl&gt;End</property>
<property name="title" translatable="yes" context="shortcut window">Open the last room of the list</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">true</property>
<property name="accelerator">Page_Up</property>
<property name="title" translatable="yes" context="shortcut window">View older messages</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">true</property>
<property name="accelerator">Page_Down</property>
<property name="title" translatable="yes" context="shortcut window">View newer messages</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">true</property>
......
......@@ -49,3 +49,10 @@ if appstream_util.found()
)
endif
install_data('org.gnome.Fractal.gschema.xml', install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas'))
fractal_resources = gnome.compile_resources(
'resources',
'resources.xml',
gresource_bundle: true,
source_dir: meson.current_build_dir()
)
......@@ -17,6 +17,42 @@
</screenshot>
</screenshots>
<releases>
<release version="4.2.0" type="stable" date="2019-07-27" urgency="high">
<description>
<p>This new major release is the result of 7 months of hard work by 37 contributors pushing over 200 commits.</p>
<p>New features:</p>
<ul>
<li>Adaptive window, mobile friendly</li>
<li>Window size and position are remembered</li>
<li>Redesigned login</li>
<li>Spellcheck</li>
<li>Network proxy support</li>
<li>Typing notifications</li>
<li>Badges are shown for operators and moderators</li>
<li>Keyboard shortcuts for easier navigation across rooms</li>
<li>Better uploads:
<ul>
<li>Audio and video files are now tagged correctly</li>
<li>Image files have a thumbnail</li>
<li>Various tweaks to the file chooser</li>
</ul>
</li>
</ul>
<p>Bugfixes:</p>
<ul>
<li>Logs actually output something now</li>
<li>A few issues with invites and direct chats have been resolved</li>
<li>More reliable scrolling</li>
<li>Some crashes fixed</li>
</ul>
<p>Under the hood:</p>
<ul>
<li>Code refactor continues</li>
<li>We’re now using Rust 2018</li>
<li>Many improvements to the build system and CI</li>
</ul>
</description>
</release>
<release version="4.0.0" type="stable" date="2018-12-22" urgency="high">
<description>
<p>This new major release is the result of 3 months of hard work by 25 contributors pushing over 340 commits.</p>
......
......@@ -24,6 +24,31 @@
</description>
</key>
<key name="main-window-state-x" type="i">
<default>-1</default>
<summary>X position of the main window on startup</summary>
</key>
<key name="main-window-state-y" type="i">
<default>-1</default>
<summary>Y position of the main window on startup</summary>
</key>
<key name="main-window-state-width" type="i">
<default>860</default>
<summary>Width of the main window on startup</summary>
</key>
<key name="main-window-state-height" type="i">
<default>640</default>
<summary>Height of the main window on startup</summary>
</key>
<key name="main-window-state-maximized" type="b">
<default>false</default>
<summary>Whether the main window is maximized on startup</summary>
</key>
</schema>
</schemalist>
......@@ -14,6 +14,8 @@
<file preprocess="xml-stripblanks">ui/invite_user.ui</file>
<file preprocess="xml-stripblanks">ui/join_room.ui</file>
<file preprocess="xml-stripblanks">ui/leave_room.ui</file>
<file preprocess="xml-stripblanks">ui/kicked_room.ui</file>
<file preprocess="xml-stripblanks">ui/login_flow.ui</file>
<file preprocess="xml-stripblanks">ui/main_window.ui</file>
<file preprocess="xml-stripblanks">ui/scroll_widget.ui</file>
<file preprocess="xml-stripblanks">ui/members.ui</file>
......
This diff is collapsed.
......@@ -3,8 +3,8 @@
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkDialog" id="direct_chat_dialog">
<property name="width_request">400</property>
<object class="HdyDialog" id="direct_chat_dialog">
<property name="default_width">400</property>
<property name="height_request">300</property>
<property name="can_focus">False</property>
<property name="modal">True</property>
......@@ -120,6 +120,7 @@
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="width_request">360</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">New direct chat</property>
......
......@@ -16,7 +16,8 @@
<property name="transient_for">main_window</property>
<property name="message_type">question</property>
<property name="text" translatable="yes">Invitation</property>
<property name="secondary_text" translatable="yes">You’ve been invited to join "", you can accept or reject</property>
<!-- Translators: This string is replaced not user-visible -->
<property name="secondary_text">You’ve been invited to join "", you can accept or reject</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can_focus">False</property>
......
......@@ -3,8 +3,8 @@
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkDialog" id="invite_user_dialog">
<property name="width_request">400</property>
<object class="HdyDialog" id="invite_user_dialog">
<property name="default_width">400</property>
<property name="height_request">300</property>
<property name="can_focus">False</property>
<property name="modal">True</property>
......@@ -120,6 +120,7 @@
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="invite_headerbar">
<property name="width_request">360</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">Invite</property>
......
......@@ -3,7 +3,7 @@
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkDialog" id="join_room_dialog">
<object class="HdyDialog" id="join_room_dialog">
<property name="can_focus">False</property>
<property name="modal">True</property>
<property name="window_position">center</property>
......@@ -84,6 +84,7 @@
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="width_request">360</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">Join room</property>
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkMessageDialog" id="kicked_room_dialog">
<property name="can_focus">False</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="window_position">center-on-parent</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<property name="urgency_hint">True</property>
<property name="deletable">False</property>
<property name="gravity">center</property>
<property name="message_type">warning</property>
<property name="text">You have been kicked from ROOM</property>
<property name="secondary_text">Reason: Unknown</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="homogeneous">True</property>
<property name="layout_style">expand</property>
<child>
<object class="GtkButton" id="kicked_room_confirm">
<property name="label" translatable="yes">Close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
<style>
<class name="kicked-room"/>
</style>
</object>
</interface>
This diff is collapsed.
This diff is collapsed.
......@@ -220,9 +220,6 @@
</packing>
</child>
</object>
<object class="GtkEntryBuffer" id="zoom_level">
<property name="max_length">4</property>
</object>
<object class="GtkBox" id="media_viewer_headerbar_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
......@@ -230,7 +227,8 @@
<object class="GtkHeaderBar" id="media_viewer_headerbar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">Media viewer</property>
<!-- Translators: This string is replaced not user-visible -->
<property name="title">Media viewer</property>
<property name="show_close_button">True</property>
<child>
<object class="GtkButton" id="media_viewer_back_button">
......@@ -252,73 +250,6 @@
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkButton" id="zoom_out_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">zoom-out-symbolic</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="zoom_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="buffer">zoom_level</property>
<property name="width_chars">5</property>
<property name="max_width_chars">4</property>
<property name="primary_icon_activatable">False</property>
<property name="primary_icon_sensitive">False</property>
<property name="input_purpose">digits</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="zoom_in_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">zoom-in-symbolic</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="linked"/>
</style>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="media_viewer_menu_button">
<property name="visible">True</property>
......
......@@ -2,7 +2,7 @@
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<requires lib="gtksourceview" version="3.0"/>
<requires lib="gtksourceview" version="4.0"/>
<object class="GtkSourceBuffer" id="source_buffer">
</object>
......
......@@ -20,7 +20,7 @@
</row>
</data>
</object>
<object class="GtkDialog" id="new_room_dialog">
<object class="HdyDialog" id="new_room_dialog">
<property name="can_focus">False</property>
<property name="modal">True</property>
<property name="window_position">center</property>
......@@ -33,6 +33,7 @@
<property name="transient_for">main_window</property>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="width_request">360</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">Create new room</property>
......
......@@ -28,7 +28,7 @@ pub fn new(window: &gtk::Window, backend: &Sender<BKCommand>) -> gio::SimpleActi
let window = upgrade_weak!(window_weak);
let filter = gtk::FileFilter::new();
filter.add_mime_type("image/*");
FileFilterExt::set_name(&filter, Some(i18n("Images").as_str()));
filter.set_name(Some(i18n("Images").as_str()));
if let Some(path) = open(&window, i18n("Select a new avatar").as_str(), &[filter]) {
if let Some(file) = path.to_str() {
a.change_state(&ButtonState::Insensitive.into());
......
This diff is collapsed.
This diff is collapsed.
use gio::SimpleAction;
use gio::SimpleActionExt;
use glib::Cast;
use glib::ObjectExt;
use glib::ToVariant;
......@@ -7,12 +6,15 @@ use gtk::WidgetExt;
pub mod account_settings;
pub mod global;
pub mod login;
pub mod room_history;
pub mod room_settings;
pub use self::account_settings as AccountSettings;
pub use self::global as Global;
pub use self::global::AppState;
pub use self::login as Login;
pub use self::login::LoginState;
pub use self::room_history as RoomHistory;
pub use self::room_settings as RoomSettings;
......
This diff is collapsed.
......@@ -32,7 +32,7 @@ pub fn new(window: &gtk::Window, backend: &Sender<BKCommand>) -> gio::SimpleActi
if let Some(id) = data.as_ref().map(|x| x.to_string()) {
let window = upgrade_weak!(window_weak);
let filter = gtk::FileFilter::new();
FileFilterExt::set_name(&filter, Some(i18n("Images").as_str()));
filter.set_name(Some(i18n("Images").as_str()));
filter.add_mime_type("image/*");
if let Some(path) = open(&window, i18n("Select a new avatar").as_str(), &[filter]) {
if let Some(file) = path.to_str() {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.