GUI w terminalu Linuxa - jak został napisany Midnight Commander ?

0

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

2

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.

1
  1. dwa menu ... Twoje pytanie jest dziwne. Został napisany program, samo się nie zrobiło.

  2. 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.

  3. 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

0
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):
  1. 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?".

  1. 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.

  1. 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.

0

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 ...

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1