mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 06:05:58 -06:00
RichText: Fixed problem with GetWidth and paragraphs not aligned left
This commit is contained in:
parent
8fc23a3bf3
commit
93d4e8571d
5 changed files with 37 additions and 50 deletions
|
|
@ -41,34 +41,34 @@ AddressBook::AddressBook()
|
|||
tab.Add(search, "Search");
|
||||
ActiveFocus(search.name);
|
||||
search.oname = true;
|
||||
search.oname <<= search.osurname <<= search.oaddress
|
||||
<<= search.oemail <<= THISBACK(SetupSearch);
|
||||
search.oname ^= search.osurname ^= search.oaddress
|
||||
^= search.oemail ^= THISFN(SetupSearch);
|
||||
array.AddColumn("Name");
|
||||
array.AddColumn("Surname");
|
||||
array.AddColumn("Address");
|
||||
array.AddColumn("Email");
|
||||
modify.add <<= THISBACK(Add);
|
||||
modify.change <<= THISBACK(Change);
|
||||
search.search <<= THISBACK(Search);
|
||||
modify.add << THISFN(Add);
|
||||
modify.change << THISFN(Change);
|
||||
search.search << THISFN(Search);
|
||||
SetupSearch();
|
||||
fs.AllFilesType();
|
||||
menu.Set(THISBACK(MainMenu));
|
||||
menu.Set(THISFN(MainMenu));
|
||||
}
|
||||
|
||||
void AddressBook::FileMenu(Bar& bar)
|
||||
{
|
||||
bar.Add("Open..", CtrlImg::open(), THISBACK(Open));
|
||||
bar.Add("Save", CtrlImg::save(), THISBACK(Save));
|
||||
bar.Add("Save as..", CtrlImg::save_as(), THISBACK(SaveAs));
|
||||
bar.Add("Open..", CtrlImg::open(), THISFN(Open));
|
||||
bar.Add("Save", CtrlImg::save(), THISFN(Save));
|
||||
bar.Add("Save as..", CtrlImg::save_as(), THISFN(SaveAs));
|
||||
bar.Separator();
|
||||
bar.Add("Print", CtrlImg::print(), THISBACK(Print));
|
||||
bar.Add("Print", CtrlImg::print(), THISFN(Print));
|
||||
bar.Separator();
|
||||
bar.Add("Quit", THISBACK(Quit));
|
||||
bar.Add("Quit", THISFN(Quit));
|
||||
}
|
||||
|
||||
void AddressBook::MainMenu(Bar& bar)
|
||||
{
|
||||
bar.Add("File", THISBACK(FileMenu));
|
||||
bar.Sub("File", THISFN(FileMenu));
|
||||
}
|
||||
|
||||
void AddressBook::SetupSearch()
|
||||
|
|
|
|||
|
|
@ -48,34 +48,34 @@ AddressBook::AddressBook()
|
|||
tab.Add(search, "Search");
|
||||
ActiveFocus(search.name);
|
||||
search.oname = true;
|
||||
search.oname <<= search.osurname <<= search.oaddress
|
||||
<<= search.oemail <<= THISBACK(SetupSearch);
|
||||
search.oname ^= search.osurname ^= search.oaddress
|
||||
^= search.oemail ^= THISFN(SetupSearch);
|
||||
array.AddColumn(TAG_NAME, "Name");
|
||||
array.AddColumn(TAG_SURNAME, "Surname");
|
||||
array.AddColumn(TAG_ADDRESS, "Address");
|
||||
array.AddColumn(TAG_EMAIL, "Email");
|
||||
modify.add <<= THISBACK(Add);
|
||||
modify.change <<= THISBACK(Change);
|
||||
search.search <<= THISBACK(Search);
|
||||
modify.add << THISFN(Add);
|
||||
modify.change << THISFN(Change);
|
||||
search.search << THISFN(Search);
|
||||
SetupSearch();
|
||||
fs.AllFilesType();
|
||||
menu.Set(THISBACK(MainMenu));
|
||||
menu.Set(THISFN(MainMenu));
|
||||
}
|
||||
|
||||
void AddressBook::FileMenu(Bar& bar)
|
||||
{
|
||||
bar.Add("Open..", CtrlImg::open(), THISBACK(Open));
|
||||
bar.Add("Save", CtrlImg::save(), THISBACK(Save));
|
||||
bar.Add("Save as..", CtrlImg::save_as(), THISBACK(SaveAs));
|
||||
bar.Add("Open..", CtrlImg::open(), THISFN(Open));
|
||||
bar.Add("Save", CtrlImg::save(), THISFN(Save));
|
||||
bar.Add("Save as..", CtrlImg::save_as(), THISFN(SaveAs));
|
||||
bar.Separator();
|
||||
bar.Add("Print", CtrlImg::print(), THISBACK(Print));
|
||||
bar.Add("Print", CtrlImg::print(), THISFN(Print));
|
||||
bar.Separator();
|
||||
bar.Add("Quit", THISBACK(Quit));
|
||||
bar.Add("Quit", THISFN(Quit));
|
||||
}
|
||||
|
||||
void AddressBook::MainMenu(Bar& bar)
|
||||
{
|
||||
bar.Add("File", THISBACK(FileMenu));
|
||||
bar.Sub("File", THISFN(FileMenu));
|
||||
}
|
||||
|
||||
void AddressBook::SetupSearch()
|
||||
|
|
|
|||
|
|
@ -6,43 +6,30 @@ class HelloWorld : public TopWindow {
|
|||
MenuBar menu;
|
||||
StatusBar status;
|
||||
|
||||
void FileMenu(Bar& bar);
|
||||
void MainMenu(Bar& bar);
|
||||
void About();
|
||||
|
||||
public:
|
||||
typedef HelloWorld CLASSNAME;
|
||||
|
||||
HelloWorld();
|
||||
};
|
||||
|
||||
void HelloWorld::About()
|
||||
{
|
||||
PromptOK("{{1@5 [@9= This is the]::@2 [A5@0 Ultimate`+`+ Hello world sample}}");
|
||||
}
|
||||
|
||||
void HelloWorld::FileMenu(Bar& bar)
|
||||
{
|
||||
bar.Add("About..", THISBACK(About));
|
||||
bar.Separator();
|
||||
bar.Add("Exit", THISBACK(Close));
|
||||
}
|
||||
|
||||
void HelloWorld::MainMenu(Bar& bar)
|
||||
{
|
||||
menu.Add("File", THISBACK(FileMenu));
|
||||
}
|
||||
|
||||
HelloWorld::HelloWorld()
|
||||
{
|
||||
Title("Hello world!");
|
||||
AddFrame(menu);
|
||||
AddFrame(status);
|
||||
menu.Set(THISBACK(MainMenu));
|
||||
menu.Set([=](Bar& bar) {
|
||||
menu.Sub("File", [=](Bar& bar) {
|
||||
bar.Add("About..", [=] {
|
||||
PromptOK("{{1@5 [@9= This is the]::@2 [A5@0 Ultimate`+`+ Hello world sample}}");
|
||||
});
|
||||
bar.Separator();
|
||||
bar.Add("Exit", [=] { Close(); });
|
||||
});
|
||||
});
|
||||
status = "Welcome to the Ultimate++ !";
|
||||
}
|
||||
|
||||
GUI_APP_MAIN
|
||||
{
|
||||
SetLanguage(LNG_ENGLISH);
|
||||
HelloWorld().Run();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ void RichPara::Smh(Lines& lines, HeightInfo *th, int cx) const
|
|||
l.xpos = format.lm;
|
||||
cx -= format.lm + format.rm;
|
||||
l.xpos += lines.GetCount() == 1 ? lines.first_indent : lines.next_indent;
|
||||
if(!l.withtabs)
|
||||
if(!l.withtabs && cx != INT_MAX)
|
||||
switch(format.align) {
|
||||
case ALIGN_RIGHT:
|
||||
l.xpos += cx - l.cx;
|
||||
|
|
|
|||
|
|
@ -207,12 +207,12 @@ int RichTable::GetWidth(const RichStyles& st) const
|
|||
|
||||
int sum = 0;
|
||||
for(int i = 0; i < sz.cx; i++)
|
||||
sum += format.column[i];
|
||||
sum += format.column[i]; // sum of column ratios
|
||||
|
||||
int maxcx = 0;
|
||||
for(int i = 0; i < sz.cx; i++)
|
||||
maxcx = max(maxcx, (col[i] * sum + format.column[i] - 1) / format.column[i]);
|
||||
|
||||
//^^^^ round it up
|
||||
return maxcx + (sz.cx + 1) * format.grid + format.lm + format.rm;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue