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