Re: Suggestions and Stuff (& Linux)
- Posted by "Cuny, David" <David.Cuny at DSS.CA.GOV> Apr 01, 1999
- 562 views
Ralf wrote: > libx --> liby --> libz >=20 > What if, a small part of liby would need to be=20 > different in some cases. (due to different platform, etc.) Yes and no; it depends on the class. Many of the classes will not be portable. For example, I plan to implement a base class called Generic, which implements most of the common behaviors shared by Win32 controls and windows: size, position, graphics, and so on. Obviously, the Generic = class is not going to be portable. And I also plan on following the Win32 = scheme of =20 =C4=BF =B3 Win32 Control Class Structure =B3 =20 =C4=D9 =20 child window control =C4=C4=C4=C2=C4=C4=C4 button =C2=C4=C4 = pushButton =B3 =C3=C4=C4 checkBox=20 =B3 =C3=C4=C4 radioButton =B3 =C3=C4=C4 groupBox =B3 =C0=C4=C4 custom =B3 =C3=C4=C4 static =C4=C2=C4=C4 frame =B3 =C3=C4=C4 rectangle =B3 =C0=C4=C4 text =B3 =C3=C4=C4 scrollbar =C3=C4=C4 edit =C4=C4=C4=C2=C4=C4 = singleLine =B3 =C3=C4=C4 multiLine =B3 =C0=C4=C4 combo =C3=C4=C4 listBox =C3=C4=C4 icon =C3=C4=C4 menu =C4=C4=C4=C2=C4=C4 = dropDownMenu =B3 =C0=C4=C4 popUpMenu =B3 =C3=C4=C4 dialog =C4=C2=C4=C4 modal =B3 =C3=C4=C4 modeless =B3 =C3=C4=C4 messageBox =B3 =C0=C4=C4 = commonDialog=C2=C4=C4 fontDialog =B3 =C3=C4=C4 = searchDialog =B3 =C3=C4=C4 = searchDialog =B3 =C3=C4=C4 replaceDialog =B3 =C3=C4=C4 = openFile =B3 =C0=C4=C4 saveFileDialog =B3 =C0=C4=C4 common =C4=C2=C4=C4 = frameWindow =C2=C4=C4 toolBar =B3 =C3=C4=C4 = toolTip =B3 =C0=C4=C4 = statusBar =B3 =C3=C4=C4 compound = =C4=C4=C4=C2=C4=C4 propertyPage =B3 =C0=C4=C4 propertySheet =B3 =C3=C4=C4 explorer = =C4=C4=C4=C2=C4=C4 treeView =B3 =C0=C4=C4 = listView =C3=C4=C4 animation =C3=C4=C4 dragList =C3=C4=C4 header =C3=C4=C4 imageList =C3=C4=C4 progressBar =C3=C4=C4 richEdit =C3=C4=C4 tab =C3=C4=C4 trackbar =C0=C4=C4 upDown =20 =C4=BF =B3 Qt Control Class Structure =B3 =20 =C4=D9 =20 widget =C4=C2=C4=C4 button =C4=C2=C4=C4 checkbox =B3 =C3=C4=C4 pushButton =B3 =C3=C4=C4 radioButton =B3 =C0=C4=C4 comboBox =B3 =20 =C3=C4=C4 dialog =C4=C2=C4=C4 fileDialog =B3 =C3=C4=C4 messageBox =B3 =C0=C4=C4 tabDialog =B3 =20 =C3=C4=C4 frame =C4=C2=C4=C4 groupBox = =C4=C4=C4=C4=C4=C4=C4 buttonGroup =B3 =C3=C4=C4 LCDNumber =B3 =C3=C4=C4 label =B3 =C3=C4=C4 menuBar =B3 =C3=C4=C4 progressBar =B3 =C0=C4=C4 tableView =C4=C4=C2=C4=C4=C4 = listBox =B3 =C3=C4=C4=C4 = multiLineEdit =B3 =C0=C4=C4=C4 popupMenu =C3=C4=C4 lineEdit =C3=C4=C4 scrollBar =C3=C4=C4 semiModal =C4 progressDialog =C3=C4=C4 slider =C3=C4=C4 tabBar =C0=C4=C4 window =20 =20 =C4=BF =B3 Prolog++ Classes and Attributes =B3 =20 =C4=D9 =20 Class Attribute =20 widget position size bgColor fgColor pattern =20 =20 item itemNumber used for tab order name textSize textStyle textFont alignment icon text visible =20 button dimmed hilite =20 toggleButton state =20 editBox focus keyVerify =20 listBox items multiple =20 popup items =20 rectangle lineThickness =20 scrollBar value minimum maximum increment page =20 group texts on height =20 =C4=BF =B3 Prolog++ Messages =B3 =20 =C4=D9 =20 Class Message =20 =C4 button activate arm disarm =20 field enter leave newValue changeVerify =20 popup entry map unmap =20 listBox selection =20 custom buttonDown buttonUp enter leave =20 scrollbar newValue =20 =20 You are right, most of the classes will not be portable. For example, = all native control widgets will inherit from Generic (probably better named Native or Win32) which will implement the common functionalities, such = as=20 That's why a number of cross-platform libraries (such as Qt) choose to emulate everything except for the windows. That way, you only have the graphics and event codes to translate. I plan on using native controls in WinLib, but had considered placing a translator on the Win32 events, so the events would be portable: Win32 event --> translator --> Generic event sent to class This turns out not to be a good plan, since the control needs the = original parameters to do it's default behavior. Instead, each class will see = the events as Win32 events. One of the duties of the class is to trigger = the appropriate user defined behavior. For example, a ComboBox will trigger = it's onChange action when it sees a CBN_EDITCHANGE, while a ListBox will = trigger on it's onChange action when it sees an LBN_SELCHANGE. The 'onChange' part is what the user is aware of, not the Win32 events. = So=20 libx --> libg --> libz libg =3D libd --> libe The problem really lies in the fact, to make libg, you have to use, and probably recode most of what you had already done in liby. Therefor, either, the choices which parts should be modular, should be = made at forehand, or you should come up with a system, where splitting code up in different modular parts is quite easy. I'm = not saying it should consist of thousands of different modular parts, but the way different parts address each other, should = be modular to how they address themselves. This way, you can split up one part into a few different modular parts with not that = much effort. In which case, a library such as Win32Lib can be developed and added to on demand, without at any time, have = version conflicts (my code doesn't work with the latest version). By now, most are probably confused to what I mean. This is just a = project management suggestion. [Linux] Ok, I've been able to install Linux, without loosing my normal data. (borrowed Partition Magic 4) and it resides on a different partition, lilo-bootmanager, etc. Now to the problem, I can't seem to = get X-Windows up and running. And I kind of dislike the bash-shell. I can get around a little, but this is not what I had in = mind. I've installed XFree86, because it seems to be more a standard than the Metro-X Server, however each time I start X, it goes = blank and a few seconds later I'm looking at the linux-login again. Xconfigurator, sets up my Ati-card right (it seems), = but the real issue, I think is my monitor. Whenever a resolution is changed, it goes blank. This is most likely due to bad = H/V - Syncs, setup. But my range: 50 - 120 is not any of the default ranges, and the Xconfigurator says, I can _either_ choose = any of these industry standards or choose a _custom_ range. But how do I choose a custom rate ? I suspect I need to be editing the configuration file myself, but where = is it ? And are there any better text-mode editors in (red-hat, Hurricane release) Linux than edlin ? Thanks for any help, I now some of you have installed Linux = successfully, so if you could help me, please do. Also, does any one know some good beginner references, all I've learned = from the bash shell is from its help and info commands, and just trying out. I've noticed I have multiple consoles available to login, this is normal ? (chosen with Alt+F1/F2/F3 depending on how many consoles are already open) Ralf