Compare commits

..

4 Commits

Author SHA1 Message Date
309060a5ce merge stable version
Reviewed-on: https://gitea.doryan04.ru/doryan/AIT/pulls/2
2024-08-28 18:54:00 +03:00
27f9a8e10b refactor: pre-release build 2024-08-19 03:14:39 -07:00
229f525653 some changes + fix grammar mistakes 2024-08-18 13:41:54 -07:00
676594f9bf Update README.md 2024-08-10 00:55:17 +03:00
20 changed files with 225 additions and 15 deletions

BIN
.vs/AIT/v17/.wsuo Normal file

Binary file not shown.

View File

@@ -0,0 +1,54 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\msys64\\home\\doryan\\AIT\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\msys64\\home\\doryan\\AIT\\src\\main.rs||{3B902123-F8A7-4915-9F01-361F908088D0}",
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:src\\main.rs||{3B902123-F8A7-4915-9F01-361F908088D0}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\msys64\\home\\doryan\\AIT\\.gitignore||{3B902123-F8A7-4915-9F01-361F908088D0}",
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:.gitignore||{3B902123-F8A7-4915-9F01-361F908088D0}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": ".gitignore",
"DocumentMoniker": "C:\\msys64\\home\\doryan\\AIT\\.gitignore",
"RelativeDocumentMoniker": ".gitignore",
"ToolTip": "C:\\msys64\\home\\doryan\\AIT\\.gitignore",
"RelativeToolTip": ".gitignore",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF8SURBVDhPjVNLTgJBEG1lwpoFB3GNK9fieA48hD8iwT/ihwgSDAIHgAGXXsEV18CNzL/LquqZdsYM6kteXqcy3fWqpmpNRBgOhyABBEgpAFVKPIMUcYzUyOU\u002BXM/b2qtU3vkSfRjjZTCAMAw1A2LwzdFoBPP5HNqdzuL27n4juibWI\u002BUshBA1DIkhEx9iEorFotgslQqGYbxxAGFEqt1MxmPWJLbLZdZ\u002Bv89q5PMFPiTR6z2zdaxR0fXA0XTBcVywkb4fwHXjRteecIDNQ7UmExVYAdPcxYaqclN46na5WenMKjtlVnTYwcXlVYaDqImW9beD5N/TeGy32QHXm6hZ03ZgiSQHp2fnWQ4oBmJqWSqwAqZpZjt4aLXAD4J0VqyZsmoubfB8H2r1eoaD6NXZ9HcHO\u002BSA3f4AjifXl8rItOETM8ckB9WTWpYD9RdeZ1PWVWAHWXPQaDb59f/w8LiqHeh1pvGkCaP6qB8yXusoxmuNZ7XmII4O9vGuEF86osuDYRkpYQAAAABJRU5ErkJggg==",
"WhenOpened": "2024-08-18T21:59:06.655Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "main.rs",
"DocumentMoniker": "C:\\msys64\\home\\doryan\\AIT\\src\\main.rs",
"RelativeDocumentMoniker": "src\\main.rs",
"ToolTip": "C:\\msys64\\home\\doryan\\AIT\\src\\main.rs",
"RelativeToolTip": "src\\main.rs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
"WhenOpened": "2024-08-18T21:59:04.875Z",
"EditorCaption": ""
}
]
}
]
}
]
}

View File

@@ -0,0 +1,53 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\msys64\\home\\doryan\\AIT\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\msys64\\home\\doryan\\AIT\\src\\main.rs||{3B902123-F8A7-4915-9F01-361F908088D0}",
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:src\\main.rs||{3B902123-F8A7-4915-9F01-361F908088D0}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\msys64\\home\\doryan\\AIT\\.gitignore||{3B902123-F8A7-4915-9F01-361F908088D0}",
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:.gitignore||{3B902123-F8A7-4915-9F01-361F908088D0}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": ".gitignore",
"DocumentMoniker": "C:\\msys64\\home\\doryan\\AIT\\.gitignore",
"RelativeDocumentMoniker": ".gitignore",
"ToolTip": "C:\\msys64\\home\\doryan\\AIT\\.gitignore",
"RelativeToolTip": ".gitignore",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF8SURBVDhPjVNLTgJBEG1lwpoFB3GNK9fieA48hD8iwT/ihwgSDAIHgAGXXsEV18CNzL/LquqZdsYM6kteXqcy3fWqpmpNRBgOhyABBEgpAFVKPIMUcYzUyOU\u002BXM/b2qtU3vkSfRjjZTCAMAw1A2LwzdFoBPP5HNqdzuL27n4juibWI\u002BUshBA1DIkhEx9iEorFotgslQqGYbxxAGFEqt1MxmPWJLbLZdZ\u002Bv89q5PMFPiTR6z2zdaxR0fXA0XTBcVywkb4fwHXjRteecIDNQ7UmExVYAdPcxYaqclN46na5WenMKjtlVnTYwcXlVYaDqImW9beD5N/TeGy32QHXm6hZ03ZgiSQHp2fnWQ4oBmJqWSqwAqZpZjt4aLXAD4J0VqyZsmoubfB8H2r1eoaD6NXZ9HcHO\u002BSA3f4AjifXl8rItOETM8ckB9WTWpYD9RdeZ1PWVWAHWXPQaDb59f/w8LiqHeh1pvGkCaP6qB8yXusoxmuNZ7XmII4O9vGuEF86osuDYRkpYQAAAABJRU5ErkJggg==",
"WhenOpened": "2024-08-18T21:59:06.655Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "main.rs",
"DocumentMoniker": "C:\\msys64\\home\\doryan\\AIT\\src\\main.rs",
"RelativeDocumentMoniker": "src\\main.rs",
"ToolTip": "C:\\msys64\\home\\doryan\\AIT\\src\\main.rs",
"RelativeToolTip": "src\\main.rs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
"WhenOpened": "2024-08-18T21:59:04.875Z",
"EditorCaption": ""
}
]
}
]
}
]
}

3
.vs/ProjectSettings.json Normal file
View File

@@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}

View File

@@ -0,0 +1,7 @@
{
"ExpandedNodes": [
"",
"\\src"
],
"PreviewInSolutionExplorer": false
}

BIN
.vs/slnx.sqlite Normal file

Binary file not shown.

45
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,45 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug executable 'AIT'",
"cargo": {
"args": [
"build",
"--bin=AIT",
"--package=AIT"
],
"filter": {
"name": "AIT",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in executable 'AIT'",
"cargo": {
"args": [
"test",
"--no-run",
"--bin=AIT",
"--package=AIT"
],
"filter": {
"name": "AIT",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
}
]
}

21
Cargo.lock generated
View File

@@ -11,6 +11,7 @@ dependencies = [
"gtk4", "gtk4",
"libadwaita", "libadwaita",
"tokio", "tokio",
"winres",
] ]
[[package]] [[package]]
@@ -712,7 +713,7 @@ dependencies = [
"cfg-expr", "cfg-expr",
"heck", "heck",
"pkg-config", "pkg-config",
"toml", "toml 0.8.19",
"version-compare", "version-compare",
] ]
@@ -750,6 +751,15 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "toml"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
dependencies = [
"serde",
]
[[package]] [[package]]
name = "toml" name = "toml"
version = "0.8.19" version = "0.8.19"
@@ -898,6 +908,15 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "winres"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c"
dependencies = [
"toml 0.5.11",
]
[[package]] [[package]]
name = "wyz" name = "wyz"
version = "0.5.1" version = "0.5.1"

View File

@@ -6,8 +6,11 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
adw = { version = "0.7.0", package = "libadwaita", features = ["v1_4"] } adw = { version = "0.7.0", package = "libadwaita"}
bitvec = "1.0.1" bitvec = "1.0.1"
gio = { version = "0.20.0", features = ["v2_74"] } gio = { version = "0.20.0", features = ["v2_74"] }
gtk = { version = "0.9.0", package = "gtk4", features = ["v4_12"] } gtk = { version = "0.9.0", package = "gtk4", features = ["v4_12"] }
tokio = { version = "1.39.2", features = ["rt", "time", "rt-multi-thread", "macros", "sync"] } tokio = { version = "1.39.2", features = ["rt", "time", "rt-multi-thread", "macros", "sync"] }
[build-dependencies]
winres = "0.1"

View File

@@ -0,0 +1,7 @@
# AIT (Applied Information Theory), или же ПТИ (Прикладная теория информаций).
Программа разрабатывается с использованием таких библиотек, как [tokio](https://tokio.rs/) (асинхронный рантайм), [bitvec](https://docs.rs/bitvec/latest/bitvec/) и [gtk-rs c libadwaita](https://gtk-rs.org/).
## Сфера применения
Данная программа разрабатывается для студентов УлГТУ 2-ого курса направления "Приборостроение" с целью включить это ПО в лабораторные работы с кодом Хэмминга и затуханием сигналов для проверки расчётов.

9
build.rs Normal file
View File

@@ -0,0 +1,9 @@
extern crate winres;
fn main() {
if cfg!(target_os = "windows") {
let mut res = winres::WindowsResource::new();
res.set_icon("./src/view/resources/icon.ico"); // Replace this with the filename of your .ico file.
res.compile().unwrap();
}
}

View File

@@ -22,7 +22,7 @@ pub fn open_about_dialogue(_action: &SimpleAction, _var: Option<&Variant>) {
AboutDialog::builder() AboutDialog::builder()
.authors(vec!["Сагиев А.Д.", "Ефимов И.П."]) .authors(vec!["Сагиев А.Д.", "Ефимов И.П."])
.version("1.0-beta") .version("1.0-beta")
.program_name("Прикладная теория информаций") .program_name("Прикладная теория информации")
.license_type(License::Apache20) .license_type(License::Apache20)
.logo(&logo) .logo(&logo)
.website("https://gitea.doryan04.ru/doryan/AIT") .website("https://gitea.doryan04.ru/doryan/AIT")
@@ -57,8 +57,8 @@ pub fn open_help_dialogue(_action: &SimpleAction, _var: Option<&Variant>) {
let custom_header = HeaderBar::new(); let custom_header = HeaderBar::new();
Window::builder() Window::builder()
.width_request(400) .width_request(800)
.height_request(300) .height_request(600)
.name("help") .name("help")
.title("Помощь") .title("Помощь")
.titlebar(&custom_header) .titlebar(&custom_header)

View File

@@ -3,11 +3,11 @@
В данной лабораторной работе используется код Хэмминга 7-4, другими словами, код, который нужно закодировать, имеет длину в 4 бита, в то же время выходной код будет иметь 7 бит. В данной лабораторной работе используется код Хэмминга 7-4, другими словами, код, который нужно закодировать, имеет длину в 4 бита, в то же время выходной код будет иметь 7 бит.
Программа умеет как закодировать ключевые слова, так и их проверять. Программа умеет как кодировать ключевые слова, так и проверять их.
<b> Режим кодирования </b> <b> Режим кодирования </b>
В этом режиме мы вводим код, в котором каждое "слово" имеет 4 бита. Это должно выглядеть следующим образом: В этом режиме мы вводим код, в котором каждое "слово" имеет 4 бита. Это может выглядеть следующим образом:
<tt>1010 1100 1110 0000</tt> <tt>1010 1100 1110 0000</tt>
@@ -15,13 +15,13 @@
<tt>1100110 0111100 0101010 0000000</tt> <tt>1100110 0111100 0101010 0000000</tt>
В противном случае вылезет информационный блок с предупреждением: "Проверьте корректность кода". В противном случае появится информационный блок с предупреждением: "Проверьте корректность кода".
<b> Режим проверки </b> <b> Режим проверки </b>
Данный режим проверяет код на ошибки. Проверка в лучшем случае пишет: "Все коды корректны", в противном случае, построчно показывает, в каких кодах есть ошибка. Данный режим проверяет код на ошибки. Проверка в лучшем случае пишет: "Все коды корректны". При ошибочно введённом коде, программа построчно отобразит в каких кодах есть ошибка.
Пример ввода возьмём из предыдущего примера: Пример ввода аналогичен предыдущему:
<tt>1100110 0111100 0101010 0000000</tt> <tt>1100110 0111100 0101010 0000000</tt>
@@ -44,8 +44,8 @@
<span size="x-large"><b> Затухание сигнала </b></span> <span size="x-large"><b> Затухание сигнала </b></span>
Лабораторная работа подразумевает рассчитать для 19 значений частоты реактивное сопротивление конденсатора X<sub>c</sub>, напряжения сигнала на стороне приёмника информации V<sub>п</sub> и коэффициент затухания сигнала ζ. Лабораторная работа подразумевает рассчитать для каждого из девятнадцати значений частоты реактивного сопротивление конденсатора X<sub>c</sub>, напряжение сигнала на стороне приёмника информации V<sub>п</sub> и коэффициент затухания сигнала ζ.
Значения вводятся согласно исходным данным для расчёта затухания сигнала. Значения можно вводить как с ",", так и ".". Значения вводятся согласно исходным данным для расчёта затухания сигнала. Значения можно вводить как с ",", так и с ".".
При вводе одних и тех же данных без изменений будет вылезать предупреждение и операция расчёта не будет выполнена. Можно не менять данные в случае частоты, чтобы обновить данные расчёта в соответствии с новыми (К примеру, в случае длины провода, или сопротивления провода). При вводе одних и тех же данных без изменений, будет показано предупреждение и операция расчёта не будет выполнена. Можно не менять данные в случае частоты, чтобы обновить данные расчёта в соответствии с новыми (К примеру, в случае длины провода, или сопротивления провода).

BIN
src/view/resources/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
src/view/resources/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1023 B

View File

@@ -1,3 +1,6 @@
label{
font-size: 11pt;
}
textview { textview {
border-radius: 7px; border-radius: 7px;
padding: 7px 8px; padding: 7px 8px;

View File

@@ -1,7 +1,10 @@
label{
font-size: 11pt;
}
textview { textview {
border-radius: 7px; border-radius: 7px;
padding: 7px 8px; padding: 7px 8px;
background: rgba(141, 141, 141, 0.5); background: rgba(141, 141, 141, 0.18);
outline-offset: 2px; outline-offset: 2px;
outline: 2px solid #81ABDF00; outline: 2px solid #81ABDF00;
transition-duration: .15s; transition-duration: .15s;

View File

@@ -22,6 +22,10 @@ pub fn ui(application: &adw::Application) {
let default_settings = Settings::default(); let default_settings = Settings::default();
if let Some(settings) = default_settings { if let Some(settings) = default_settings {
{
#[cfg(target_os = "windows")]
settings.set_gtk_font_name(Some("Segoe UI 9"));
}
settings.connect_gtk_application_prefer_dark_theme_notify(load_css); settings.connect_gtk_application_prefer_dark_theme_notify(load_css);
settings.connect_gtk_theme_name_notify(load_css); settings.connect_gtk_theme_name_notify(load_css);
load_css(&settings); load_css(&settings);
@@ -82,7 +86,7 @@ pub fn ui(application: &adw::Application) {
.hexpand(true) .hexpand(true)
.vexpand(true) .vexpand(true)
.use_markup(true) .use_markup(true)
.label("<b>Комплексная программа для лаб. работ</b>") .label("<span size=\"larger\"><b>Комплексная программа для лаб. работ</b></span>")
.build(), .build(),
); );
title_bar.append(menu_button.get_button()); title_bar.append(menu_button.get_button());