Compare commits
29 commits
backup/pre
...
local/libc
| Author | SHA1 | Date | |
|---|---|---|---|
| 39a4e4beec | |||
| c3bd3782da | |||
| 30b334693f | |||
| 00e4487038 | |||
| cc2c274538 | |||
| 229b92c507 | |||
| cde36b1a5f | |||
| 6effc415e1 | |||
|
|
2600c6d38a | ||
|
|
dfcef22632 | ||
|
|
495f52cd5b | ||
|
|
eae9127fbe | ||
|
|
6ce200c84b | ||
|
|
b6627523f9 | ||
|
|
00a76ee709 | ||
|
|
bf217ab250 | ||
|
|
a56297f855 | ||
|
|
2db1c80078 | ||
|
|
4edfc6aa8e | ||
|
|
12cee06253 | ||
|
|
4b231042e7 | ||
|
|
aadff7540e | ||
|
|
2efddc1833 | ||
|
|
7bbe82ec3f | ||
|
|
448da77cd5 | ||
|
|
d123bc0a51 | ||
|
|
2a60283f14 | ||
|
|
7de9ba756c | ||
|
|
4c53d607f7 |
14 changed files with 1117 additions and 1283 deletions
1927
Cargo.lock
generated
1927
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
35
Cargo.toml
35
Cargo.toml
|
|
@ -1,10 +1,10 @@
|
|||
[package]
|
||||
name = "cosmic-edit"
|
||||
version = "1.0.11"
|
||||
version = "1.3.0"
|
||||
authors = ["Jeremy Soller <jeremy@system76.com>"]
|
||||
edition = "2024"
|
||||
license = "GPL-3.0-only"
|
||||
rust-version = "1.90"
|
||||
rust-version = "1.93"
|
||||
|
||||
[dependencies]
|
||||
dirs = "6"
|
||||
|
|
@ -33,21 +33,22 @@ i18n-embed-fl = "0.10"
|
|||
rust-embed = "8"
|
||||
|
||||
[dependencies.cosmic-files]
|
||||
git = "https://github.com/pop-os/cosmic-files.git"
|
||||
path = "../cosmic-files"
|
||||
default-features = false
|
||||
|
||||
[dependencies.cosmic-syntax-theme]
|
||||
git = "https://github.com/pop-os/cosmic-syntax-theme.git"
|
||||
|
||||
[dependencies.cosmic-text]
|
||||
git = "https://github.com/pop-os/cosmic-text.git"
|
||||
version = "0.19"
|
||||
features = ["syntect", "vi"]
|
||||
|
||||
[dependencies.libcosmic]
|
||||
git = "https://github.com/pop-os/libcosmic.git"
|
||||
# Yoda fork.
|
||||
[dependencies.libcosmic-yoda]
|
||||
path = "../libcosmic"
|
||||
default-features = false
|
||||
#TODO: a11y feature crashes file choser dialog
|
||||
features = ["about", "multi-window", "tokio", "winit", "surface-message"]
|
||||
features = ["about", "multi-window", "tokio", "wayland", "surface-message"]
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
fork = "0.2"
|
||||
|
|
@ -57,10 +58,10 @@ xdgen = "0.1"
|
|||
|
||||
[features]
|
||||
default = ["dbus-config", "gvfs", "wgpu", "wayland"]
|
||||
dbus-config = ["libcosmic/dbus-config"]
|
||||
dbus-config = ["libcosmic-yoda/dbus-config"]
|
||||
gvfs = ["cosmic-files/gvfs"]
|
||||
wgpu = ["libcosmic/wgpu", "cosmic-files/wgpu"]
|
||||
wayland = ["libcosmic/wayland", "cosmic-files/wayland"]
|
||||
wgpu = ["libcosmic-yoda/wgpu", "cosmic-files/wgpu"]
|
||||
wayland = ["libcosmic-yoda/wayland", "cosmic-files/wayland"]
|
||||
|
||||
[profile.release-with-debug]
|
||||
inherits = "release"
|
||||
|
|
@ -69,10 +70,12 @@ debug = true
|
|||
[patch.crates-io]
|
||||
onig = { git = "https://github.com/rust-onig/rust-onig.git", branch = "main" }
|
||||
onig_sys = { git = "https://github.com/rust-onig/rust-onig.git", branch = "main" }
|
||||
# Yoda: unify cosmic-text with the local checkout used by libcosmic/iced/glyphon.
|
||||
cosmic-text = { path = "../cosmic-text" }
|
||||
|
||||
[patch.'https://github.com/pop-os/libcosmic']
|
||||
libcosmic = { path = "../libcosmic" }
|
||||
cosmic-config = { path = "../libcosmic/cosmic-config" }
|
||||
cosmic-theme = { path = "../libcosmic/cosmic-theme" }
|
||||
iced_futures = { path = "../libcosmic/iced/futures" }
|
||||
iced_winit = { path = "../libcosmic/iced/winit" }
|
||||
# Yoda wayland cut v5: redirect window_clipboard to the local fork
|
||||
# (x11 gated behind opt-in feature).
|
||||
[patch.'https://forge.aditua.com/leyoda/window_clipboard.git']
|
||||
window_clipboard = { path = "/home/lionel/Projets/COSMIC/window_clipboard" }
|
||||
dnd = { path = "/home/lionel/Projets/COSMIC/window_clipboard/dnd" }
|
||||
mime = { path = "/home/lionel/Projets/COSMIC/window_clipboard/mime" }
|
||||
|
|
|
|||
42
debian/changelog
vendored
42
debian/changelog
vendored
|
|
@ -1,3 +1,45 @@
|
|||
cosmic-edit (1.2.0) noble; urgency=medium
|
||||
|
||||
* Epoch 1.2.0 version update
|
||||
|
||||
-- Jeremy Soller <jeremy@system76.com> Tue, 30 Jun 2026 12:20:53 -0600
|
||||
|
||||
cosmic-edit (1.1.0) noble; urgency=medium
|
||||
|
||||
* Epoch 1.1.0 version update
|
||||
|
||||
-- Jeremy Soller <jeremy@system76.com> Tue, 23 Jun 2026 08:47:04 -0600
|
||||
|
||||
cosmic-edit (1.0.16) noble; urgency=medium
|
||||
|
||||
* Epoch 1.0.16 version update
|
||||
|
||||
-- Jeremy Soller <jeremy@system76.com> Tue, 09 Jun 2026 10:25:21 -0600
|
||||
|
||||
cosmic-edit (1.0.15) noble; urgency=medium
|
||||
|
||||
* Epoch 1.0.15 version update
|
||||
|
||||
-- Jeremy Soller <jeremy@system76.com> Tue, 02 Jun 2026 11:02:06 -0600
|
||||
|
||||
cosmic-edit (1.0.14) noble; urgency=medium
|
||||
|
||||
* Epoch 1.0.14 version update
|
||||
|
||||
-- Jeremy Soller <jeremy@system76.com> Tue, 26 May 2026 08:30:39 -0600
|
||||
|
||||
cosmic-edit (1.0.13) noble; urgency=medium
|
||||
|
||||
* Epoch 1.0.13 version update
|
||||
|
||||
-- Jeremy Soller <jeremy@system76.com> Tue, 12 May 2026 09:37:51 -0600
|
||||
|
||||
cosmic-edit (1.0.12) noble; urgency=medium
|
||||
|
||||
* Epoch 1.0.12 version update
|
||||
|
||||
-- Jeremy Soller <jeremy@system76.com> Tue, 05 May 2026 10:23:41 -0600
|
||||
|
||||
cosmic-edit (1.0.11) noble; urgency=medium
|
||||
|
||||
* Epoch 1.0.11 version update
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
cancel = Cancel·lar
|
||||
quit = Surt
|
||||
settings = Configuració
|
||||
|
|
@ -7,7 +7,7 @@ open-project = Άνοιγμα έργου
|
|||
## Document statistics
|
||||
|
||||
document-statistics = Στατιστικά εγγράφου
|
||||
word-count = Λέξεις
|
||||
word-count = Πλήθος λέξεων
|
||||
character-count = Χαρακτήρες
|
||||
character-count-no-spaces = Χαρακτήρες (χωρίς κενά)
|
||||
line-count = Γραμμές
|
||||
|
|
@ -20,13 +20,13 @@ settings = Ρυθμίσεις
|
|||
|
||||
appearance = Εμφάνιση
|
||||
theme = Θέμα
|
||||
default-font = Γραμματοσειρά
|
||||
default-font-size = Μέγεθος γραμματοσειράς
|
||||
default-font = Προεπιλεγμένη γραμματοσειρά
|
||||
default-font-size = Προεπιλεγμένο μέγεθος γραμματοσειράς
|
||||
|
||||
### Keyboard shortcuts
|
||||
|
||||
keyboard-shortcuts = Συντομεύσεις πλήκτρων
|
||||
enable-vim-bindings = Ενεργοποίηση πλήκτρων vim
|
||||
keyboard-shortcuts = Συντομεύσεις πληκτρολογίου
|
||||
enable-vim-bindings = Ενεργοποίηση συντομεύσεων Vim
|
||||
|
||||
# Menu
|
||||
|
||||
|
|
@ -37,7 +37,7 @@ file = Αρχείο
|
|||
new-file = Νέο αρχείο
|
||||
new-window = Νέο παράθυρο
|
||||
open-file = Άνοιγμα αρχείου...
|
||||
todo = TODO
|
||||
todo = Λίστα εργασιών
|
||||
save = Αποθήκευση
|
||||
save-as = Αποθήκευση ως...
|
||||
revert-all-changes = Αναίρεση όλων των αλλαγών
|
||||
|
|
@ -62,23 +62,60 @@ spell-check = Έλεγχος ορθογραφίας...
|
|||
## View
|
||||
|
||||
view = Προβολή
|
||||
indentation = Εσοχές
|
||||
indentation = Εσοχές κειμένου
|
||||
|
||||
### Indentation
|
||||
|
||||
automatic-indentation = Αυτόματη εισαγωγή εσοχών
|
||||
tab-width = Πλάτος Tabs: { $tab_width }
|
||||
convert-indentation-to-spaces = Μετατροπή εσοχών σε spaces
|
||||
convert-indentation-to-tabs = Μετατροπή εσοχών σε tabs
|
||||
word-wrap = Περιτύλιξη λέξεων
|
||||
tab-width = Πλάτος στηλοθέτη: { $tab_width }
|
||||
convert-indentation-to-spaces = Μετατροπή εσοχών σε κενά
|
||||
convert-indentation-to-tabs = Μετατροπή εσοχών σε στηλοθέτες
|
||||
word-wrap = Αναδίπλωση λέξεων
|
||||
show-line-numbers = Εμφάνιση αριθμού γραμμών
|
||||
highlight-current-line = Υπογράμμιση τρέχουσας γραμμής
|
||||
syntax-highlighting = Υπογράμμιση συντακτικού...
|
||||
highlight-current-line = Επισήμανση τρέχουσας γραμμής
|
||||
syntax-highlighting = Επισήμανση συντακτικού...
|
||||
menu-settings = Ρυθμίσεις...
|
||||
menu-keyboard-shortcuts = Συντομεύσεις πλήκτρων...
|
||||
menu-about = Σχετικά με τον επεξεργαστή κειμένου COSMIC...
|
||||
menu-keyboard-shortcuts = Συντομεύσεις πληκτρολογίου...
|
||||
menu-about = Σχετικά με την Επεξεργασία κειμένου COSMIC...
|
||||
cancel = Ακύρωση
|
||||
repository = Αποθετήριο
|
||||
support = Υποστήριξη
|
||||
dark = Σκοτεινό
|
||||
light = Φωτεινό
|
||||
dark = Σκουρόχρωμο
|
||||
light = Ανοιχτόχρωμο
|
||||
close-file = Κλείσιμο αρχείου
|
||||
cosmic-text-editor = Επεξεργασία κειμένου COSMIC
|
||||
find-placeholder = Εύρεση...
|
||||
replace-placeholder = Αντικατάσταση...
|
||||
match-desktop = Συμφωνία με την επιφάνεια εργασίας
|
||||
discard = Απόρριψη αλλαγών
|
||||
select-all = Επιλογή όλων
|
||||
comment = Πρόγραμμα επεξεργασίας κειμένου για το περιβάλλον επιφάνειας εργασίας COSMIC
|
||||
git-management = Διαχείριση Git
|
||||
save-all = Αποθήκευση όλων
|
||||
find-previous = Εύρεση προηγούμενου
|
||||
find-next = Εύρεση επόμενου
|
||||
replace-all = Αντικατάσταση όλων
|
||||
close-project = Κλείσιμο έργου
|
||||
menu-git-management = Διαχείριση Git...
|
||||
find-in-project = Εύρεση στο έργο...
|
||||
default-size = Προεπιλεγμένο μέγεθος
|
||||
zoom-out = Σμίκρυνση
|
||||
zoom-in = Μεγέθυνση
|
||||
project-search = Αναζήτηση έργων
|
||||
prompt-save-changes-title = Αποθήκευση των αλλαγών πριν από το κλείσιμο;
|
||||
open-recent-file = Άνοιγμα πρόσφατου αρχείου
|
||||
menu-open-project = Άνοιγμα έργου...
|
||||
open-recent-project = Άνοιγμα πρόσφατου έργου
|
||||
git-management-loading = Φόρτωση διαχείρισης Git...
|
||||
prompt-unsaved-changes = Υπάρχουν μη αποθηκευμένες αλλαγές. Εάν συνεχίσετε χωρίς να κάνετε αποθήκευση, αυτές οι αλλαγές θα χαθούν.
|
||||
case-sensitive = Διάκριση πεζών-κεφαλαίων
|
||||
stage = Προετοιμασία
|
||||
staged-changes = Προετοιμασμένες αλλαγές
|
||||
unstage = Ακύρωση προετοιμασίας
|
||||
unstaged-changes = Απροετοίμαστες αλλαγές
|
||||
syntax-dark = Σκουρόχρωμο συντακτικό
|
||||
syntax-light = Ανοιχτόχρωμο συντακτικό
|
||||
default-zoom-step = Βήματα ζουμ
|
||||
git-management-description = Η διαχείριση Git είναι ένα εργαλείο για προγραμματιστές που χρησιμοποιείται για λειτουργίες ελέγχου εκδόσεων.
|
||||
use-regex = Χρήση κανονικών εκφράσεων
|
||||
wrap-around = Αναδίπλωση
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@ git-management-description = A Git-kezelő egy verziókezeléssel kapcsolatos fe
|
|||
git-management-loading = Git-kezelő betöltése…
|
||||
stage = Előkészítés
|
||||
staged-changes = Előkészített változtatások
|
||||
unstage = Változtatások visszavonása előkészítésből
|
||||
unstaged-changes = Előkészítésből visszavont változtatások
|
||||
unstage = Előkészítés visszavonása
|
||||
unstaged-changes = Nem előkészített változtatások
|
||||
|
||||
## Project search
|
||||
|
||||
|
|
@ -35,7 +35,7 @@ project-search = Projektkereső
|
|||
## Prompt save changes
|
||||
|
||||
prompt-save-changes-title = Mented a változtatásokat bezárás előtt?
|
||||
prompt-unsaved-changes = Vannak nem mentett változtatások. Ha nem mentesz, ezek el fognak veszni!
|
||||
prompt-unsaved-changes = Vannak nem mentett változtatások. Ha nem mentesz, ezek el fognak veszni.
|
||||
cancel = Mégse
|
||||
discard = Változtatások elvetése
|
||||
save-all = Összes mentése
|
||||
|
|
@ -68,7 +68,7 @@ find-next = Következő találat
|
|||
replace-placeholder = Csere…
|
||||
replace = Csere
|
||||
replace-all = Összes lecserélése
|
||||
case-sensitive = Kis- és nagybetű érzékenység
|
||||
case-sensitive = Kis- és nagybetű-érzékenység
|
||||
use-regex = Regex használata
|
||||
wrap-around = Körbefutás
|
||||
|
||||
|
|
@ -100,7 +100,7 @@ quit = Kilépés
|
|||
|
||||
edit = Szerkesztés
|
||||
undo = Visszavonás
|
||||
redo = Visszaállítás
|
||||
redo = Újra
|
||||
cut = Kivágás
|
||||
copy = Másolás
|
||||
paste = Beillesztés
|
||||
|
|
|
|||
0
i18n/lo/cosmic_edit.ftl
Normal file
0
i18n/lo/cosmic_edit.ftl
Normal file
|
|
@ -14,7 +14,7 @@ line-count = Eilučių skaičius
|
|||
|
||||
## Settings
|
||||
|
||||
settings = Nustatymai
|
||||
settings = Nuostatos
|
||||
|
||||
## Appearance
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ default-font-size = Numatytas šrifto dydis
|
|||
|
||||
### Keyboard shortcuts
|
||||
|
||||
keyboard-shortcuts = Klaviatūros greitieji klavišai
|
||||
keyboard-shortcuts = Spartieji klavišai
|
||||
enable-vim-bindings = Naudoti Vim sąsajas
|
||||
|
||||
# Menu
|
||||
|
|
@ -36,14 +36,14 @@ enable-vim-bindings = Naudoti Vim sąsajas
|
|||
file = Failas
|
||||
new-file = Naujas failas
|
||||
new-window = Naujas langas
|
||||
open-file = Atidaryti failą...
|
||||
open-file = Atverti failą...
|
||||
todo = TODO
|
||||
save = Išsaugoti
|
||||
save-as = Išsaugoti kaip...
|
||||
revert-all-changes = Atstatyti visus pakeitimus
|
||||
revert-all-changes = Atšaukti visus keitimus
|
||||
menu-document-statistics = Apie dokumentą...
|
||||
document-type = Dokumento tipas...
|
||||
encoding = Kodavimas...
|
||||
encoding = Koduotė...
|
||||
print = Spausdinti
|
||||
quit = Išeiti
|
||||
|
||||
|
|
@ -51,13 +51,13 @@ quit = Išeiti
|
|||
|
||||
edit = Redaguoti
|
||||
undo = Anuliuoti
|
||||
redo = Atkurti
|
||||
redo = Grąžinti
|
||||
cut = Iškirpti
|
||||
copy = Kopijuoti
|
||||
paste = Įklijuoti
|
||||
find = Surasti
|
||||
replace = Pakeisti
|
||||
spell-check = Rašybos tikrinimas...
|
||||
paste = Įdėti
|
||||
find = Rasti
|
||||
replace = Keisti
|
||||
spell-check = Tikrinti rašybą...
|
||||
|
||||
## View
|
||||
|
||||
|
|
@ -70,50 +70,51 @@ automatic-indentation = Automatinė įtrauka
|
|||
tab-width = Tabuliavimo žingsnio plotis: { $tab_width }
|
||||
convert-indentation-to-spaces = Pakeisti įtrauką tarpais
|
||||
convert-indentation-to-tabs = Pakeisti įtrauką tabuliavimo žingsniu
|
||||
word-wrap = Žodžių perkėlimas
|
||||
word-wrap = Žodžių kėlimas
|
||||
show-line-numbers = Rodyti eilučių numerius
|
||||
highlight-current-line = Paryškinti dabartinę eilutę
|
||||
syntax-highlighting = Sintaksės tikrinimas...
|
||||
menu-settings = Nustatymai...
|
||||
menu-keyboard-shortcuts = Klaviatūros greitieji klavišai...
|
||||
menu-about = Apie COSMIC Text Editor...
|
||||
menu-settings = Nuostatos...
|
||||
menu-keyboard-shortcuts = Spartieji klavišai...
|
||||
menu-about = Apie COSMIC Rašyklę...
|
||||
cancel = Atšaukti
|
||||
repository = Saugykla
|
||||
support = Palaikymas
|
||||
cosmic-text-editor = COSMIC Text Editor
|
||||
cosmic-text-editor = COSMIC Rašyklė
|
||||
git-management = Git valdymas
|
||||
git-management-description = Git valdymas - kūrėjų įrankis, naudojamas versijų kontrolės sistemos operacijoms įvykdyti.
|
||||
git-management-loading = Kraunamas Git valdymas...
|
||||
save-all = Išsaugoti viską
|
||||
syntax-dark = Tamsi sintaksė
|
||||
default-zoom-step = Priartinimo žingsniai
|
||||
open-recent-file = Atidaryti pastararąjį failą
|
||||
default-zoom-step = Artinimo žingsniai
|
||||
open-recent-file = Atverti pastarąjį failą
|
||||
close-file = Uždaryti failą
|
||||
menu-open-project = Atidaryti projektą...
|
||||
open-recent-project = Atidaryti pastarąjį projektą
|
||||
close-project = Uždaryti projektą
|
||||
select-all = Pažymėti viską
|
||||
select-all = Žymėti viską
|
||||
find-in-project = Ieškoti projekte...
|
||||
zoom-in = Priartinti
|
||||
zoom-in = Artinti
|
||||
default-size = Numatytas dydis
|
||||
zoom-out = Nutolinti
|
||||
zoom-out = Tolinti
|
||||
menu-git-management = Git valdymas...
|
||||
staged-changes = Patvirtinti pokyčiai
|
||||
unstaged-changes = Nepatvirtinti pokyčiai
|
||||
staged-changes = Patvirtinti keitimai
|
||||
unstaged-changes = Nepatvirtinti keitimai
|
||||
prompt-save-changes-title = Išsaugoti pakeitimus prieš uždarant?
|
||||
prompt-unsaved-changes = Yra neišsaugotų pakeitimų. Jeigu tęsite neišsaugojus, jūsų pakeitimai bus prarasti.
|
||||
discard = Pašalinti pakeitimus
|
||||
prompt-unsaved-changes = Yra neišsaugotų keitimų. Jei tęsite neišsaugoję, šie keitimai dings.
|
||||
discard = Pašalinti keitimus
|
||||
match-desktop = Pagal darbalaukio temą
|
||||
find-placeholder = Surasti...
|
||||
find-previous = Atgalinis ieškojimas
|
||||
find-next = Ieškoti sekančio
|
||||
replace-placeholder = Pakeisti...
|
||||
find-placeholder = Rasti...
|
||||
find-previous = Ieškoti ankstesnio
|
||||
find-next = Ieškoti tolesnio
|
||||
replace-placeholder = Keisti...
|
||||
replace-all = Pakeisti visus
|
||||
case-sensitive = Skirti raidžių dydžius
|
||||
use-regex = Naudoti regex
|
||||
wrap-around = Kelti į sekančią eilutę
|
||||
wrap-around = Laikinai skaidyti eilutes
|
||||
stage = Patvirtinti pakeitimai
|
||||
project-search = Paieška projekte
|
||||
dark = Tamsus
|
||||
light = Šviesus
|
||||
comment = COSMIC desktop teksto redaktorius
|
||||
comment = COSMIC aplinkos rašyklė
|
||||
unstage = Atšaukti patvirtinimą
|
||||
|
|
|
|||
|
|
@ -0,0 +1,91 @@
|
|||
quit = Изађи
|
||||
cancel = Откажи
|
||||
settings = Подешавања
|
||||
appearance = Изглед
|
||||
dark = Тамна
|
||||
light = Светла
|
||||
replace = Замени
|
||||
save = Сачувај
|
||||
undo = Опозови
|
||||
repository = Ризница
|
||||
support = Подршка
|
||||
theme = Тема
|
||||
match-desktop = Прати радну површину
|
||||
file = Датотека
|
||||
new-window = Нови прозор
|
||||
edit = Уреди
|
||||
cut = Исеци
|
||||
copy = Умножи
|
||||
paste = Залепи
|
||||
select-all = Означи све
|
||||
zoom-in = Увећајте приказ
|
||||
default-size = Подразумевана величина
|
||||
zoom-out = Умањите приказ
|
||||
view = Преглед
|
||||
menu-settings = Подешавања...
|
||||
cosmic-text-editor = Космик уређивач текста
|
||||
comment = Уређивач текста за Космик радну површину
|
||||
new-document = Нови документ
|
||||
open-project = Отвори пројекат
|
||||
todo = УРАДИТИ
|
||||
document-statistics = Статистика документа
|
||||
word-count = Број речи
|
||||
character-count = Знакови
|
||||
character-count-no-spaces = Знакови (без размака)
|
||||
line-count = Редови
|
||||
git-management = Управљање Гитом
|
||||
git-management-description = Управљање Гитом је алат за програмере који се користи за радње управљања издањима.
|
||||
git-management-loading = Учитавање управљања Гитом...
|
||||
stage = Припреми
|
||||
staged-changes = Припремљене измене
|
||||
unstage = Поништи припрему
|
||||
unstaged-changes = Неприпремљене измене
|
||||
project-search = Претрага пројекта
|
||||
prompt-save-changes-title = Сачувај измене пре затварања?
|
||||
prompt-unsaved-changes = Имате несачуване измене. Ако наставите без сачувања, ове измене ће бити изгубљене.
|
||||
discard = Одбаци измене
|
||||
save-all = Сачувај све
|
||||
syntax-dark = Тамна синтакса
|
||||
syntax-light = Светла синтакса
|
||||
default-font = Подразумевани фонт
|
||||
default-font-size = Подразумевана величина фонта
|
||||
default-zoom-step = Кораци увећања
|
||||
keyboard-shortcuts = Пречице тастатуре
|
||||
enable-vim-bindings = Омогући Вим везивања
|
||||
find-placeholder = Пронађи...
|
||||
find-previous = Нађи претходно
|
||||
find-next = Нађи следеће
|
||||
replace-placeholder = Замени…
|
||||
replace-all = Замени све
|
||||
case-sensitive = Разликује величину слова
|
||||
use-regex = Употреби регуларни израз
|
||||
wrap-around = Преламај около
|
||||
new-file = Нова датотека
|
||||
open-file = Отвори датотеку...
|
||||
open-recent-file = Отвори недавну датотеку
|
||||
close-file = Затвори датотеку
|
||||
menu-open-project = Отвори пројекат...
|
||||
open-recent-project = Отвори недавни пројекат
|
||||
close-project = Затвори пројекат
|
||||
save-as = Сачувај као...
|
||||
revert-all-changes = Врати све измене
|
||||
menu-document-statistics = Статистика документа...
|
||||
document-type = Врста документа...
|
||||
encoding = Кодирање...
|
||||
menu-git-management = Управљање Гитом...
|
||||
print = Штампај
|
||||
redo = Понови
|
||||
find = Пронађи
|
||||
find-in-project = Пронађи у пројекту...
|
||||
spell-check = Провера правописа...
|
||||
indentation = Увлачење
|
||||
automatic-indentation = Самостално увлачење
|
||||
tab-width = Ширина табулатора: { $tab_width }
|
||||
convert-indentation-to-spaces = Претворите увлачење у размаке
|
||||
convert-indentation-to-tabs = Претворите увлачење у табулаторе
|
||||
word-wrap = Прелом речи
|
||||
show-line-numbers = Приказује бројеве редова
|
||||
highlight-current-line = Истиче текући ред
|
||||
syntax-highlighting = Истицање синтаксе...
|
||||
menu-keyboard-shortcuts = Пречице на тастатури...
|
||||
menu-about = О Космик уређивачу текста...
|
||||
|
|
@ -5,7 +5,7 @@ Exec=cosmic-edit %F
|
|||
Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
MimeType=text/plain;
|
||||
MimeType=text/plain;application/x-zerosize;
|
||||
Icon=com.system76.CosmicEdit
|
||||
Categories=COSMIC;Utility;TextEditor;
|
||||
Keywords=Text;Editor;
|
||||
|
|
@ -26,6 +26,9 @@ pub fn key_binds() -> HashMap<KeyBind, Action> {
|
|||
bind!([Ctrl], Key::Character("f".into()), Find);
|
||||
bind!([Ctrl], Key::Character("h".into()), FindAndReplace);
|
||||
bind!([Ctrl], Key::Character("v".into()), Paste);
|
||||
bind!([Shift], Key::Named(Named::Insert), Paste);
|
||||
bind!([Ctrl], Key::Named(Named::Insert), Copy);
|
||||
bind!([Shift], Key::Named(Named::Delete), Cut);
|
||||
bind!([Ctrl], Key::Character("t".into()), NewFile);
|
||||
bind!([Ctrl], Key::Character("n".into()), NewWindow);
|
||||
bind!([Ctrl], Key::Character("o".into()), OpenFileDialog);
|
||||
|
|
|
|||
74
src/main.rs
74
src/main.rs
|
|
@ -366,7 +366,7 @@ pub enum Message {
|
|||
GitProjectStatus(Vec<(String, PathBuf, Vec<GitStatus>)>),
|
||||
GitStage(PathBuf, PathBuf),
|
||||
GitUnstage(PathBuf, PathBuf),
|
||||
Key(Modifiers, keyboard::Key),
|
||||
Key(Modifiers, keyboard::key::Physical, keyboard::Key),
|
||||
LaunchUrl(String),
|
||||
Modifiers(Modifiers),
|
||||
NewFile,
|
||||
|
|
@ -691,13 +691,7 @@ impl App {
|
|||
return Some(NewTab::Exists(entity));
|
||||
}
|
||||
|
||||
// Add to recent files, ensuring only one entry
|
||||
self.config_state.recent_files.retain(|x| x != &canonical);
|
||||
self.config_state
|
||||
.recent_files
|
||||
.push_front(canonical.to_path_buf());
|
||||
self.config_state.recent_files.truncate(10);
|
||||
self.save_config_state();
|
||||
self.add_to_recents(&canonical);
|
||||
|
||||
let mut tab = EditorTab::new(&self.config);
|
||||
tab.open(canonical);
|
||||
|
|
@ -707,6 +701,15 @@ impl App {
|
|||
}
|
||||
}
|
||||
|
||||
fn add_to_recents(&mut self, canonical: &PathBuf) {
|
||||
self.config_state.recent_files.retain(|x| x != canonical);
|
||||
self.config_state
|
||||
.recent_files
|
||||
.push_front(canonical.to_path_buf());
|
||||
self.config_state.recent_files.truncate(10);
|
||||
self.save_config_state();
|
||||
}
|
||||
|
||||
fn update_config(&mut self) -> Task<Message> {
|
||||
//TODO: provide iterator over data
|
||||
let entities: Vec<_> = self.tab_model.iter().collect();
|
||||
|
|
@ -1455,6 +1458,7 @@ impl Application for App {
|
|||
.author("System76")
|
||||
.comments(fl!("comment"))
|
||||
.license("GPL-3.0-only")
|
||||
.license_url("https://spdx.org/licenses/GPL-3.0-only")
|
||||
.developers([("Jeremy Soller", "jeremy@system76.com")])
|
||||
.links([
|
||||
(fl!("repository"), "https://github.com/pop-os/cosmic-edit"),
|
||||
|
|
@ -2124,9 +2128,9 @@ impl Application for App {
|
|||
|x| x,
|
||||
);
|
||||
}
|
||||
Message::Key(modifiers, key) => {
|
||||
Message::Key(modifiers, physical, key) => {
|
||||
for (key_bind, action) in self.key_binds.iter() {
|
||||
if key_bind.matches(modifiers, &key) {
|
||||
if key_bind.matches(modifiers, &key, Some(&physical)) {
|
||||
return self.update(action.message(None));
|
||||
}
|
||||
}
|
||||
|
|
@ -2586,11 +2590,18 @@ impl Application for App {
|
|||
|
||||
let entity = entity_opt.unwrap_or_else(|| self.tab_model.active());
|
||||
if let Some(Tab::Editor(tab)) = self.tab_model.data_mut::<Tab>(entity) {
|
||||
if tab.path_opt.is_none() {
|
||||
return self.update(Message::SaveAsDialog(Some(entity)));
|
||||
match tab.path_opt.clone() {
|
||||
Some(path) => {
|
||||
title_opt = Some(tab.title());
|
||||
tab.save();
|
||||
if let Ok(canonical) = fs::canonicalize(&path) {
|
||||
self.add_to_recents(&canonical);
|
||||
}
|
||||
}
|
||||
None => {
|
||||
return self.update(Message::SaveAsDialog(Some(entity)));
|
||||
}
|
||||
}
|
||||
title_opt = Some(tab.title());
|
||||
tab.save();
|
||||
}
|
||||
if let Some(title) = title_opt {
|
||||
self.tab_model.text_set(self.tab_model.active(), title);
|
||||
|
|
@ -2601,10 +2612,17 @@ impl Application for App {
|
|||
let entities: Vec<_> = self.tab_model.iter().collect();
|
||||
for entity in entities {
|
||||
if let Some(Tab::Editor(tab)) = self.tab_model.data_mut::<Tab>(entity) {
|
||||
if tab.path_opt.is_none() {
|
||||
log::warn!("{} has no path when doing save all", tab.title());
|
||||
match tab.path_opt.clone() {
|
||||
Some(path) => {
|
||||
tab.save();
|
||||
if let Ok(canonical) = fs::canonicalize(&path) {
|
||||
self.add_to_recents(&canonical);
|
||||
}
|
||||
}
|
||||
None => {
|
||||
log::warn!("{} has no path when doing save all", tab.title());
|
||||
}
|
||||
}
|
||||
tab.save();
|
||||
}
|
||||
}
|
||||
return self.update_dialogs();
|
||||
|
|
@ -2648,6 +2666,11 @@ impl Application for App {
|
|||
tab.path_opt = Some(paths.remove(0));
|
||||
title_opt = Some(tab.title());
|
||||
tab.save();
|
||||
if let Some(path) = tab.path_opt.clone() {
|
||||
if let Ok(canonical) = fs::canonicalize(&path) {
|
||||
self.add_to_recents(&canonical);
|
||||
}
|
||||
}
|
||||
}
|
||||
if let Some(title) = title_opt {
|
||||
self.tab_model.text_set(entity, title);
|
||||
|
|
@ -2779,7 +2802,7 @@ impl Application for App {
|
|||
|
||||
// If that was the last tab, exit the application
|
||||
if self.tab_model.iter().next().is_none() {
|
||||
return self.update(Message::QuitForce)
|
||||
return self.update(Message::QuitForce);
|
||||
}
|
||||
|
||||
// Close PromptSaveClose dialog if open for this entity
|
||||
|
|
@ -3307,12 +3330,15 @@ impl Application for App {
|
|||
|
||||
let mut subscriptions = vec![
|
||||
event::listen_with(|event, status, window_id| match event {
|
||||
event::Event::Keyboard(keyboard::Event::KeyPressed { modifiers, key, .. }) => {
|
||||
match status {
|
||||
event::Status::Ignored => Some(Message::Key(modifiers, key)),
|
||||
event::Status::Captured => None,
|
||||
}
|
||||
}
|
||||
event::Event::Keyboard(keyboard::Event::KeyPressed {
|
||||
modifiers,
|
||||
physical_key,
|
||||
key,
|
||||
..
|
||||
}) => match status {
|
||||
event::Status::Ignored => Some(Message::Key(modifiers, physical_key, key)),
|
||||
event::Status::Captured => None,
|
||||
},
|
||||
event::Event::Keyboard(keyboard::Event::ModifiersChanged(modifiers)) => {
|
||||
Some(Message::Modifiers(modifiers))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -121,10 +121,11 @@ pub fn context_menu<'a>(
|
|||
entity: segmented_button::Entity,
|
||||
) -> Element<'a, Message> {
|
||||
fn key_style(theme: &cosmic::Theme) -> TextStyle {
|
||||
let mut color = theme.cosmic().background.component.on;
|
||||
let mut color = theme.cosmic().background(false).component.on;
|
||||
color.alpha *= 0.75;
|
||||
TextStyle {
|
||||
color: Some(color.into()),
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -159,7 +160,7 @@ pub fn context_menu<'a>(
|
|||
//TODO: move style to libcosmic
|
||||
.style(|theme| {
|
||||
let cosmic = theme.cosmic();
|
||||
let component = &cosmic.background.component;
|
||||
let component = &cosmic.background(false).component;
|
||||
widget::container::Style {
|
||||
icon_color: Some(component.on.into()),
|
||||
text_color: Some(component.on.into()),
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ use cosmic::{
|
|||
Border, Radians, Shell, Transformation,
|
||||
clipboard::Clipboard,
|
||||
image,
|
||||
input_method::{Event as InputMethodEvent, InputMethod, Preedit, Purpose},
|
||||
keyboard::{Key, key::Named},
|
||||
layout::{self, Layout},
|
||||
renderer::{self, Quad, Renderer as _},
|
||||
|
|
@ -16,6 +17,7 @@ use cosmic::{
|
|||
operation::{self, Operation},
|
||||
tree,
|
||||
},
|
||||
window::Event as WindowEvent,
|
||||
},
|
||||
iced::{
|
||||
Color, Element, Length, Padding, Point, Rectangle, Size, Vector,
|
||||
|
|
@ -127,6 +129,35 @@ where
|
|||
self.on_focus = Some(on_focus);
|
||||
self
|
||||
}
|
||||
|
||||
fn input_method<'b>(
|
||||
&self,
|
||||
state: &'b State,
|
||||
scale_factor: f32,
|
||||
layout: Layout<'_>,
|
||||
) -> InputMethod<&'b str> {
|
||||
if !state.is_focused {
|
||||
return InputMethod::Disabled;
|
||||
};
|
||||
|
||||
let editor_pos = layout.position() + [self.padding.left, self.padding.top].into();
|
||||
let (caret_x, caret_y) = state.caret_position;
|
||||
InputMethod::Enabled {
|
||||
cursor: Rectangle::new(
|
||||
Point::new(
|
||||
editor_pos.x
|
||||
+ (caret_x as f32 + state.editor_offset_x.get() as f32) / scale_factor,
|
||||
editor_pos.y + (caret_y as f32) / scale_factor,
|
||||
),
|
||||
Size::new(
|
||||
1.0,
|
||||
(self.metrics.scale(scale_factor).line_height) / scale_factor,
|
||||
),
|
||||
),
|
||||
purpose: Purpose::Normal,
|
||||
preedit: state.preedit.as_ref().map(Preedit::as_ref),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn text_box<'a, Message>(
|
||||
|
|
@ -794,7 +825,7 @@ where
|
|||
let scrollbar_color = if pressed {
|
||||
// pressed_state_color, 0.5
|
||||
cosmic_theme
|
||||
.background
|
||||
.background(false)
|
||||
.component
|
||||
.pressed
|
||||
.without_alpha()
|
||||
|
|
@ -803,7 +834,7 @@ where
|
|||
} else if hover {
|
||||
// hover_state_color, 0.2
|
||||
cosmic_theme
|
||||
.background
|
||||
.background(false)
|
||||
.component
|
||||
.hover
|
||||
.without_alpha()
|
||||
|
|
@ -890,7 +921,7 @@ where
|
|||
let scrollbar_color = if pressed {
|
||||
// pressed_state_color, 0.5
|
||||
cosmic_theme
|
||||
.background
|
||||
.background(false)
|
||||
.component
|
||||
.pressed
|
||||
.without_alpha()
|
||||
|
|
@ -899,7 +930,7 @@ where
|
|||
} else if hover {
|
||||
// hover_state_color, 0.2
|
||||
cosmic_theme
|
||||
.background
|
||||
.background(false)
|
||||
.component
|
||||
.hover
|
||||
.without_alpha()
|
||||
|
|
@ -1101,6 +1132,33 @@ where
|
|||
}
|
||||
state.modifiers = *modifiers;
|
||||
}
|
||||
Event::InputMethod(event) => match event {
|
||||
InputMethodEvent::Opened | InputMethodEvent::Closed => {
|
||||
let metrics = self.metrics.scale(scale_factor);
|
||||
state.preedit = matches!(event, InputMethodEvent::Opened).then(|| {
|
||||
let mut preedit = Preedit::new();
|
||||
preedit.text_size = Some(metrics.font_size.into());
|
||||
preedit
|
||||
});
|
||||
}
|
||||
InputMethodEvent::Preedit(content, selection) => {
|
||||
if state.is_focused {
|
||||
state.preedit = Some(Preedit {
|
||||
content: content.to_owned(),
|
||||
selection: selection.clone(),
|
||||
text_size: Some(self.metrics.font_size.into()),
|
||||
});
|
||||
}
|
||||
}
|
||||
InputMethodEvent::Commit(text) => {
|
||||
if state.is_focused {
|
||||
editor.start_change();
|
||||
editor.insert_string(&text, None);
|
||||
editor.finish_change();
|
||||
shell.capture_event();
|
||||
}
|
||||
}
|
||||
},
|
||||
Event::Mouse(MouseEvent::ButtonPressed(button)) => {
|
||||
if let Some(p) = cursor_position.position_in(layout.bounds()) {
|
||||
state.is_focused = true;
|
||||
|
|
@ -1336,6 +1394,12 @@ where
|
|||
shell.capture_event();
|
||||
}
|
||||
}
|
||||
Event::Window(WindowEvent::RedrawRequested(_now)) => {
|
||||
if state.is_focused {
|
||||
state.caret_position = editor.cursor_position().unwrap_or(state.caret_position);
|
||||
shell.request_input_method(&self.input_method(state, scale_factor, layout));
|
||||
}
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
|
||||
|
|
@ -1385,6 +1449,8 @@ pub struct State {
|
|||
scrollbar_h_rect: Cell<Option<Rectangle<f32>>>,
|
||||
handle_opt: Mutex<Option<image::Handle>>,
|
||||
shift_anchor: Mutex<Option<Cursor>>,
|
||||
caret_position: (i32, i32),
|
||||
preedit: Option<Preedit>,
|
||||
}
|
||||
|
||||
impl State {
|
||||
|
|
@ -1402,6 +1468,8 @@ impl State {
|
|||
scrollbar_h_rect: Cell::new(None),
|
||||
handle_opt: Mutex::new(None),
|
||||
shift_anchor: Mutex::new(None),
|
||||
caret_position: (0, 0),
|
||||
preedit: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue