first and final commit
This commit is contained in:
commit
ac939f84e4
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
commands.txt
|
||||
.vscode
|
9
Dockerfile
Normal file
9
Dockerfile
Normal file
@ -0,0 +1,9 @@
|
||||
FROM swipl:latest
|
||||
|
||||
RUN apt-get update && apt-get install -y swi-prolog-x && apt-get clean
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY . /app
|
||||
|
||||
ENTRYPOINT swipl -g [todo]
|
60
README.md
Normal file
60
README.md
Normal file
@ -0,0 +1,60 @@
|
||||
# Aplikacja TODO w Prologu
|
||||
|
||||
## Opis
|
||||
|
||||
Jest to prosty program TODO napisany w języku Prolog, który umożliwia dodawanie i usuwanie zadań do zrobienia.
|
||||
|
||||
## Wymagania
|
||||
|
||||
Do uruchomienia programu w kontenerze Docker potrzebne są:
|
||||
|
||||
- Docker
|
||||
- X11 (X Window System)
|
||||
|
||||
### Linux
|
||||
|
||||
Na systemie Linux X11 zazwyczaj jest już dostępny.
|
||||
|
||||
### Windows
|
||||
|
||||
Na systemie Windows konieczna jest instalacja programu obsługującego X11, np. Xming. Należy upewnić się, że w Xming jest wyłączone Access Control, aby umożliwić uruchamianie okien aplikacji z kontenera.
|
||||
|
||||
## Instalacja
|
||||
|
||||
1. Sklonuj to repozytorium do lokalnego środowiska:
|
||||
|
||||
```
|
||||
git clone https://git.wmi.amu.edu.pl/s490042/prolog_todo.git
|
||||
cd todo-prolog
|
||||
```
|
||||
|
||||
2. Znajdź swój lokalny adres IP, który będzie potrzebny do konfiguracji X11.
|
||||
|
||||
3. Zbuduj obraz Docker za pomocą polecenia:
|
||||
|
||||
```
|
||||
docker build -t todo_prolog .
|
||||
```
|
||||
|
||||
## Uruchomienie
|
||||
|
||||
### Windows
|
||||
|
||||
Uruchom kontener Docker, ustawiając zmienną środowiskową `DISPLAY` na swój adres IP:
|
||||
|
||||
```
|
||||
docker run -it --rm -e DISPLAY=<ADRES_IP>:0.0 todo_prolog
|
||||
```
|
||||
|
||||
### Linux
|
||||
|
||||
Uruchom kontener Docker, ustawiając zmienną środowiskową `DISPLAY` oraz montując odpowiednio gniazdo X11:
|
||||
|
||||
```
|
||||
docker run -it --rm -e DISPLAY=<ADRES_IP>:0.0 -v /tmp/.X11-unix:/tmp/.X11-unix todo_prolog
|
||||
```
|
||||
|
||||
## Uwagi dodatkowe
|
||||
|
||||
- Upewnij się, że Xming na Windowsie lub odpowiedni serwer X na Linuxie jest uruchomiony przed uruchomieniem kontenera Docker.
|
||||
- Adres IP (`<ADRES_IP>`) należy zastąpić rzeczywistym adresem IP Twojego hosta, na którym uruchomiony jest serwer X.
|
32
todo.pl
Normal file
32
todo.pl
Normal file
@ -0,0 +1,32 @@
|
||||
:- use_module(library(pce)).
|
||||
|
||||
create_todo :-
|
||||
new(Window, dialog('Prolog TODO')),
|
||||
new(TaskName, text_item('Nazwa zadania')),
|
||||
new(TaskList, list_browser),
|
||||
new(AddButton, button('Dodaj zadanie', message(@prolog, add_task, TaskName, TaskList))),
|
||||
new(RemoveButton, button('Usuń zadanie', message(@prolog, remove_task, TaskList))),
|
||||
send(Window, append, TaskName),
|
||||
send(Window, append, AddButton),
|
||||
send(Window, append, TaskList, below),
|
||||
send(Window, append, RemoveButton),
|
||||
send(Window, open).
|
||||
|
||||
add_task(TaskName, TaskList) :-
|
||||
get(TaskName, selection, SelectedName),
|
||||
send(TaskList, append, SelectedName),
|
||||
send(@display, inform, string('Dodano zadanie: "%s".', SelectedName)),
|
||||
open('todo_list.txt', append, Stream),
|
||||
format(Stream, '~w~n', [SelectedName]),
|
||||
close(Stream).
|
||||
|
||||
remove_task(TaskList) :-
|
||||
get(TaskList, selection, DictItem),
|
||||
( DictItem \== @nil
|
||||
-> get(DictItem, key, TaskName),
|
||||
send(TaskList, delete, DictItem),
|
||||
send(@display, inform, string('Usunięto zadanie: "%s".', TaskName))
|
||||
; send(@display, inform, 'Nie wybrano zadania.')
|
||||
).
|
||||
|
||||
:- create_todo.
|
Loading…
Reference in New Issue
Block a user