Mamy teraz na studia napisać jakiś bardziej skomplikowany skrypt bash'a z interfejsem graficznym typu dialog.
Chciałem napisać coś w stylu uproszczonego Total Commander'a, ale ten pomysł pojawił się wcześniej niż głębsze zapoznanie się z możliwościami dialog'u. Myślałem na początku o napisaniu prymitywnej wersji Midnight Commander'a, ale internet nie podpowiada w żadnym stopniu jak osiągnąć chociaż częściowo zbliżone efekty graficzne do wspomnianego programu. W związku z tym rodzą się pytania - w jaki sposób został napisany Midnight Commander i w jaki sposób zostały osiągnięte w terminalu te efekty graficzne? Gdzie mógłbym znaleźć jakieś informacje, które pomogłyby mi osiągnąć chociaż częściowo zbliżony efekt (przede wszystkim wybór opcji z klawiatury lub chociaż dwa menu w układzie pionowym i poziomym na raz, ewentualnie jakiś dynamiczny podgląd treści jeśli plik jest tekstowy lub podkatalogu jeśli wybrany jest katalog itp.)?
GUI w terminalu Linuxa - jak został napisany Midnight Commander ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 19
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1620
Midnight Commander bazuje na bibliotece ncurses. Możesz sobie poczytać jej kod źródłowy, jeśli Cię interesuje, jak dokładnie ona to robi, ale z góry ostrzegam, że jest z tym bardzo dużo „zabawy”… Lepiej ją samemu wykorzystać „na gotowo”, niż próbować odtwarzać jej funkcjonalność od zera.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3561
-
dwa menu ... Twoje pytanie jest dziwne. Został napisany program, samo się nie zrobiło.
-
G w GUI znaczy Graphic. Mówisz o trybie znakowym w konsoli, czy graficznych okienkach? MC został napisany w trybie znakowym, jest mniej czy bardziej ładny zależnie od okoliczności.
-
w konsolach (unixowych / linuksowych - choć nie jest to niemożliwe w Windows) pisze się w bibliotece curses / ncurses. Umożliwia ona zmienienie punktu aktywnego (przeniesienie kursora, malowanie ramek)
Więc musisz zadawać pytania konkretniej
- Rejestracja: dni
- Ostatnio: dni
- Postów: 19
Althorion napisał(a):
Midnight Commander bazuje na bibliotece ncurses. Możesz sobie poczytać jej kod źródłowy, jeśli Cię interesuje, jak dokładnie ona to robi, ale z góry ostrzegam, że jest z tym bardzo dużo „zabawy”… Lepiej ją samemu wykorzystać „na gotowo”, niż próbować odtwarzać jej funkcjonalność od zera.
Dziękuję bardzo za odpowiedź. Na pierwszy rzut oka wygląda, że o to właśnie chodziło.
AnyKtokolwiek napisał(a):
- dwa menu ... Twoje pytanie jest dziwne. Został napisany program, samo się nie zrobiło.
Zadałem pytanie konkretnie. Dialog nie pozwala narysować w terminalu dwóch menu na raz ani zorientować opcji inaczej niż pionowo.
Opcji --menu można użyć tylko raz (kolejne nie będą miały efektu), gdyż ta odpowiada za wyświetlenie maksymalnie jednego okna dialogowego w terminalu.
Właśnie pytam - "JAK ZOSTAŁ NAPISANY?".
- G w GUI znaczy Graphic. Mówisz o trybie znakowym w konsoli, czy graficznych okienkach? MC został napisany w trybie znakowym, jest mniej czy bardziej ładny zależnie od okoliczności.
gRaFiCzNy iNtErFeJs uŻyTkOwNiKa
Nie mieliśmy niczego o interfejsach graficznych, ani jak one działają. Czy to w terminalach czy poza.
O graficznych okienkach tutaj nie ma mowy (słowo "terminal" padło tutaj już kilka krotnie), więc musi chodzić o tryb znakowy.
- w konsolach (unixowych / linuksowych - choć nie jest to niemożliwe w Windows) pisze się w bibliotece curses / ncurses. Umożliwia ona zmienienie punktu aktywnego (przeniesienie kursora, malowanie ramek)
No i to jest ta odpowiedź, której szukałem.
Więc musisz zadawać pytania konkretniej
Nie da się bardziej konkretnie.
Dziękuję za odpowiedzi. Zrobię research i możliwe, że wrócę jeszcze z paroma pytaniami.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3561
A kto powiedział, że musi się pisać w Dialogu? Dialog też jest libką nad ncurses. - AnyKtokolwiek 22 minuty temu
Prowadzący powiedział. Układając treść zadania. - Eschaton 20 minut temu
No to nie musisz klonować zachowania MC.
Dialog jest taki bardziej wysokopoziomowy, z niewielkiej ilości kodu masz dostać ramki, menu, editboxy ale w jakiś defaultach które proponuje (a czasem dyskusji o tym nie ma). Lubię czasem zrobić na wyższym poziomie abstrakcji, tzreba się zgodzić na pewne layouty którą są automatyczne, i "podporządkowując się" robić swój projekt,
Milion lat w tym jakieś ćwiczenia robiłem, pamiętam że kolor był niebieski ;)
Dla objaśnienia, jestem głęboko przekonany, że programiści MC tez na pewno mieli swoją bibliotekę wysokopoziomową, choćby żeby nie pipkać się kategoriami "przenieś kursor", "postaw "|" , tylko ramka, editbox itd...
Miłego ...
- Rejestracja: dni
- Ostatnio: dni
- Postów: 666
Nie mieliście nic o GUI się błędnie używasz go w tytule zestawiając z konsolą... No to czego Ty chcesz? Btw polecam ncurses (dostępny pod Windows także) lub FreeVision. Niemniej pytanie managera plików dwupanelowego w Bash to dość karkołomne.... Poczytaj też o kodach escapowych terminala VT100 bo na tym to się wszystko opiera i można to na czcionkach porobić.