From: Baruch Even Date: Sat, 31 Mar 2001 15:59:17 +0000 (+0000) Subject: Added the formatting of the credits text. X-Git-Tag: 1.6.10~21362 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=276c6e9ca120a27d7ee72a73baf87895e8b4214c;p=features.git Added the formatting of the credits text. Currently there is no check if the needed font exists or not, the worst is that everything is rendered in the regular font. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1866 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/gnome/ChangeLog b/src/frontends/gnome/ChangeLog index b69bb20c67..bae1f4078c 100644 --- a/src/frontends/gnome/ChangeLog +++ b/src/frontends/gnome/ChangeLog @@ -1,3 +1,9 @@ +2001-03-30 Baruch Even + + * FormCredits.C: Added the formatting of the credits text. + + * gnome_helpers.[Ch]: Added functions to get font name from font. + 2001-03-30 Baruch Even * GnomeBase.[Ch]: Added the dialog as a responsibility. diff --git a/src/frontends/gnome/FormCredits.C b/src/frontends/gnome/FormCredits.C index f40f7ae948..af913b2254 100644 --- a/src/frontends/gnome/FormCredits.C +++ b/src/frontends/gnome/FormCredits.C @@ -16,11 +16,15 @@ #include +#include "debug.h" + #include "gnomeBC.h" #include "FormCredits.h" +#include "gnome_helpers.h" #include #include +#include FormCredits::FormCredits(ControlCredits & c) : FormCB(c, "diahelpcredits.glade", "DiaHelpCredits") @@ -34,8 +38,59 @@ void FormCredits::build() // get a click on "Cancel" ok()->clicked.connect(SigC::slot(this, &FormCredits::CancelClicked)); + // Do not update the dialog when we insert the text + text()->freeze(); + + // Get the credits into the string stream std::stringstream ss; - text()->insert(controller().getCredits(ss).str()); + string credits = controller().getCredits(ss).str(); + + // Create the strings that we need to detect. + string const bold("@b"); + string const italic("@i"); + + // Create the drawing contexts. + Gtk::Text_Helpers::Context c_italic; + Gtk::Text_Helpers::Context c_bold; + + { + string bold = get_font_name(text()->get_style()->get_font()); + //lyxerr << "Font name: " << bold << std::endl; + string italic(bold); + + string const medium("Medium-"); + std::string::size_type index = bold.find(medium); + bold.replace(index, medium.size()-1, "bold"); + + string const r("R-"); + index = italic.find(r); + italic.replace(index, r.size()-1, "i"); + + //lyxerr << "Bold: " << bold << "\nItalic: " << italic << std::endl; + c_bold.set_font(Gdk_Font(bold)); + c_italic.set_font(Gdk_Font(italic)); + } + + // Insert it into the text and parse the attributes. + while (!credits.empty()) { + std::string::size_type end = credits.find('\n'); + string const line = credits.substr(0, ++end); + credits = credits.substr(end); + +// lyxerr << "Line got: '" << line << "'\nend = " << end << std::endl; + + string const prefix = line.substr(0, 2); + if (prefix == bold) { + text()->insert(c_bold, line.substr(2)); + } else if (prefix == italic) { + text()->insert(c_italic, line.substr(2)); + } else { + text()->insert(line); + } + } + + // Allow the text area to be drawn. + text()->thaw(); } diff --git a/src/frontends/gnome/Makefile.am b/src/frontends/gnome/Makefile.am index 8338d1132b..29c1335520 100644 --- a/src/frontends/gnome/Makefile.am +++ b/src/frontends/gnome/Makefile.am @@ -73,6 +73,7 @@ libgnome_la_SOURCES = \ Timeout_pimpl.h \ gnomeBC.C \ gnomeBC.h \ + gnome_helpers.C \ gnome_helpers.h \ mainapp.C \ mainapp.h \ diff --git a/src/frontends/gnome/dialogs/diahelpcredits.glade b/src/frontends/gnome/dialogs/diahelpcredits.glade index f3d22547d0..4883e4d95f 100644 --- a/src/frontends/gnome/dialogs/diahelpcredits.glade +++ b/src/frontends/gnome/dialogs/diahelpcredits.glade @@ -26,6 +26,7 @@ GTK_WINDOW_DIALOG GTK_WIN_POS_NONE False + 330 300 True True @@ -121,8 +122,7 @@ Matthias credits_text True False - - + diff --git a/src/frontends/gnome/gnome_helpers.h b/src/frontends/gnome/gnome_helpers.h index e6a89dca08..8c7094e0fe 100644 --- a/src/frontends/gnome/gnome_helpers.h +++ b/src/frontends/gnome/gnome_helpers.h @@ -19,6 +19,11 @@ #include // Glade Helper Function. + + +/** This function will get a widget from the glade XML representation and + * will wrap it into the gtk--/gnome-- representation. + */ template T* getWidgetPtr(GladeXML* xml, char const * name) { @@ -31,6 +36,19 @@ T* getWidgetPtr(GladeXML* xml, char const * name) return result; } +class Gdk_Font; + +/** Takes a Gdk::Font object reference and returns the name associated + * with the font it holds. + */ +string get_font_name(Gdk_Font const & font); +/** Takes a GdkFont pointer and returns the name associated with the font + * it holds. It returns a newly allocated gchar* string. + * + * This function was lifted from e-font.c from the gabber package. + */ +gchar * get_font_name(GdkFont const * font); + #endif