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.)?
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.
-
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
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.
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 ...
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ć.