Article View: pl.comp.lang.c
Article #112Re: "Uczucia" w stosunku do C++
From: pio... Piotr Auksztulewicz
Date: Fri, 24 Oct 1997 00:00
Date: Fri, 24 Oct 1997 00:00
96 lines
3972 bytes
3972 bytes
Przemek Bak (prz...@mvii.uni.lodz.pl) wrote:
: A co to jest ten UIL ?
User Interface Language. Opisujesz w nim hierarchie widgetow.
Po prostu piszesz sobie jakie masz widgety, jakie sa dla nich resource'y,
callbacki, jakie maja child'y itd. Nie musisz babrac sie ze wskaznikami,
powiazania sa po nazwie. Nie musisz wolac setki razy XtCreateWidget().
Taki opis kompiluje sie do pliku .uid o jakiejs tam dziwnej postaci binarnej,
gdzie to wszystko jest jakos tam zapisane w sposob czytelniejszy dla maszyny,
zeby nie trzeba bylo w czasie wykonania programu robic analizy skladniowej.
W programie korzystasz z biblioteki MRM (Motif Resource Manager): musisz
zainicjalizowac MRM, otworzyc pliki .uid, zarejestrowac callbacki, stale
i zmienne (w UILu stosuje sie nazwy symboliczne, trzeba ustanowic powiazania
miedzy tymi nazwami a wskaznikami do funkcji i zmiennych C), po czym uzywasz
MrmFetchWidget() podajac nazwe widgeta, ktorego chcesz dostac i tworzone
jest cale drzewo poczawszy od wyspecyfikowanego widgeta w dol - dostajesz
wskaznik do tego glownego widgeta.
Glowna zaleta nie jest jednak wygoda (wprawdzie tez wazna), ale wyrazne
oddzielenie interfejsu od implementacji. Jesli chcesz cos pozmieniac w
interfejsie, wystarczy zmodyfikowac UILa i skompilowac go, co trwa moment.
Nie musisz ruszac w ogole programu w C. Wiecej: poniewaz poszukiwanie plikow
.uid podlega tym samym zasadom co np. app-defaults'ow, mozesz latwo zrobic
inne wersje jezykowe - wystarczy poprawic UILa, skompilowac i wrzucic do
odpowiedniego katalogu w systemie!
Dokladniejsze informacje: uil(3X), MrmFetchWidget(3X), MrmRegisterNames(3X)
i in. a takze "OSF Motif Programmer's Guide" - dostepny w sieci w postaci .ps
(na pewno jest gdzies na www.opengroup.org)
Wyglada to mniej wiecej tak (pokazuje tu fragment drzewa widgetow - od
glownego okna do guzika w menu):
object mainWindow : XmMainWindow {
arguments {
XmNmenuBar = XmMenuBar mainMenuBar;
XmNworkWindow = XmFrame mainWorkArea;
};
controls {
XmMenuBar mainMenuBar;
XmFrame mainWorkArea;
unmanaged XmMessageDialog aboutDialog;
unmanaged XmMessageDialog errorDialog;
unmanaged XmFileSelectionDialog openFileDialog;
unmanaged XmFileSelectionDialog includeFileDialog;
unmanaged XmFileSelectionDialog saveAsDialog;
unmanaged XmFileSelectionDialog saveBlockAsDialog;
};
};
object mainMenuBar : XmMenuBar {
arguments {
XmNmenuHelpWidget = XmCascadeButton helpCascade;
};
controls {
XmCascadeButton mainFileCascade;
XmCascadeButton editCascade;
XmCascadeButton helpCascade;
};
};
object mainFileCascade : XmCascadeButton {
arguments {
XmNlabelString = fileCascadeText;
XmNmnemonic = keysym(fileCascadeMnem);
};
controls {
XmPulldownMenu mainFilePulldown;
};
};
object mainFilePulldown : XmPulldownMenu {
controls {
XmPushButton newWindowButton;
XmPushButton openFileButton;
XmPushButton includeFileButton;
XmPushButton saveButton;
XmPushButton saveAsButton;
XmPushButton saveBlockAsButton;
XmSeparator fcSep1;
XmPushButton exitButton;
};
};
object newWindowButton : XmPushButton {
arguments {
XmNlabelString = newWindowButtonText;
XmNmnemonic = keysym(newWindowButtonMnem);
};
callbacks {
XmNactivateCallback = procedure NewWindowCB();
};
};
Technical Details
Message-ID:
<62q09h$ped@zeus.polsl.gliwice.pl>Path:
mbox-mo1.pugleaf.net!unknown!not-for-mailReferences:
<344CD8A6.8099877@microTOOL.com.pl> <62lg34$i6l@zeus.polsl.gliwice.pl> <344E6555.F8FA41BE@ee.pw.edu.pl> <62nqiu$fj2@zeus.polsl.gliwice.pl> <344FC3BA.43A147B3@mvii.uni.lodz.pl>Show Full Headers
Complete Article Headers
From: pio...@zeus.polsl.gliwice.pl (Piotr Auksztulewicz) Subject: Re: "Uczucia" w stosunku do C++ Date: 1997/10/24 Message-ID: <62q09h$ped@zeus.polsl.gliwice.pl> X-Deja-AN: 284633633 References: <344CD8A6.8099877@microTOOL.com.pl> <62lg34$i6l@zeus.polsl.gliwice.pl> <344E6555.F8FA41BE@ee.pw.edu.pl> <62nqiu$fj2@zeus.polsl.gliwice.pl> <344FC3BA.43A147B3@mvii.uni.lodz.pl> Organization: Politechnika Slaska, Gliwice Newsgroups: pl.comp.lang.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit