580
560
void main_check_parallel_modules(void)
582
if (settings.parallel1Module)
584
main_is_module(settings.parallel1Module);
588
if (settings.parallel2Module)
590
main_is_module(settings.parallel2Module);
594
if (settings.parallel3Module)
596
main_is_module(settings.parallel3Module);
600
if (settings.parallel4Module)
602
main_is_module(settings.parallel4Module);
606
if (settings.parallel5Module)
608
main_is_module(settings.parallel5Module);
562
/* i don't know what it's good for, but we'll keep it for now. */
615
/******************************************************************************
617
* gui_change_int1_mod
620
* #include "main/parallel_view.h
622
* void gui_changeint1_mod(gchar * mod_name)
631
void main_change_parallel_module(GSParallel parallel, gchar * mod_name)
567
void get_heading(SWBuf &text, BackEnd *p, gint modidx)
637
xml_set_value("Xiphos", "modules", "int1",
639
settings.parallel1Module =
640
xml_get_value("modules", "int1");
642
main_is_module(settings.parallel1Module);
645
xml_set_value("Xiphos", "modules", "int2",
647
settings.parallel2Module =
648
xml_get_value("modules", "int2");
650
main_is_module(settings.parallel2Module);
653
xml_set_value("Xiphos", "modules", "int3",
655
settings.parallel3Module =
656
xml_get_value("modules", "int3");
658
main_is_module(settings.parallel3Module);
661
xml_set_value("Xiphos", "modules", "int4",
663
settings.parallel4Module =
664
xml_get_value("modules", "int4");
666
main_is_module(settings.parallel4Module);
669
xml_set_value("Xiphos", "modules", "int5",
671
settings.parallel5Module =
672
xml_get_value("modules", "int5");
674
main_is_module(settings.parallel5Module);
569
const gchar *preverse, *preverse2, *buf;
573
sprintf(heading, "%d", x);
574
while ((preverse = p->get_entry_attribute("Heading", "Preverse",
576
preverse2 = p->render_this_text(
577
settings.parallel_list[modidx], preverse);
578
buf = g_strdup_printf("<br/><b>%s</b><br/><br/>", preverse2);
582
g_free((gchar *)preverse2);
583
g_free((gchar *)preverse);
584
g_free((gchar *)buf);
586
sprintf(heading, "%d", x);
680
if (settings.dockedInt)
681
main_update_parallel_page();
683
main_update_parallel_page_detached();
686
#ifdef USE_GTKMOZEMBED
687
590
/******************************************************************************
689
592
* gui_update_parallel_page
705
608
gchar tmpBuf[256];
706
609
const gchar *rowcolor;
707
gchar *font_size_tmp = NULL, *font_size = NULL;
708
gchar *utf8str, *mod_name, *font_name = NULL;
710
gboolean use_gtkhtml_font;
610
gchar *utf8str, *mod_name;
711
612
gboolean is_rtol = FALSE;
717
if (!GTK_WIDGET_REALIZED(GTK_WIDGET(widgets.html_parallel))) return ;
718
GeckoHtml *html = GECKO_HTML(widgets.html_parallel);
719
gecko_html_open_stream(html,"text/html");
721
617
settings.cvparallel = settings.currentverse;
723
if (settings.havebible) {
724
sprintf(tmpBuf, HTML_START
725
"<body bgcolor=\"%s\" text=\"%s\" link=\"%s\"><table>",
726
settings.bible_bg_color,
727
settings.bible_text_color, settings.link_color);
729
utf8len = strlen(tmpBuf);
731
data = g_strconcat(tmpBuf,NULL);
734
for (i = 0, j = 0; i < 5; i++) {
740
settings.parallel1Module;
747
settings.parallel2Module;
754
settings.parallel3Module;
761
settings.parallel4Module;
768
settings.parallel5Module;
773
GS_message(("mod_name = %s",mod_name));
619
sprintf(tmpBuf, HTML_START
620
"<body bgcolor=\"%s\" text=\"%s\" link=\"%s\"><table>",
621
settings.bible_bg_color,
622
settings.bible_text_color, settings.link_color);
623
data = g_string_new(tmpBuf);
625
if (settings.parallel_list) {
627
(mod_name = settings.parallel_list[modidx]);
629
mf = get_font(mod_name);
778
631
is_rtol = main_is_mod_rtol(mod_name);
780
file = g_strdup_printf("%s/fonts.conf", settings.gSwordDir);
781
font_name = get_conf_file_item(file, mod_name, "Font");
782
if (!font_name || !strcmp(font_name, "none")) {
784
main_get_mod_config_entry(mod_name, "Font");
786
font_name = g_strdup("none");
788
if (strlen(font_name) < 2) {
789
use_gtkhtml_font = TRUE;
791
if (!strncmp(font_name, "none", 4)) {
792
use_gtkhtml_font = TRUE;
794
use_gtkhtml_font = FALSE;
798
font_size_tmp = get_conf_file_item(file, mod_name, "Fontsize");
800
if (!font_size_tmp) {
802
main_get_mod_config_entry(mod_name, "Fontsize");
806
g_strdup_printf("%+d",
807
(font_size_tmp ? atoi(font_size_tmp) : 0)
808
+ settings.base_font_size);
810
if (j == 0 || j == 2 || j == 4)
633
if (modidx % 2 == 1) /* alternating background color */
811
634
rowcolor = "#F1F1F1";
813
636
rowcolor = settings.bible_bg_color;
817
640
"<tr><td><i><font color=\"%s\" size=\"%d\">[%s]</font></i></td></tr>",
818
641
settings.bible_verse_num_color,
819
642
settings.verse_num_font_size + settings.base_font_size,
820
643
settings.currentverse);
822
utf8len = strlen(tmpBuf);
824
data = g_strconcat(data, tmpBuf, NULL);
644
g_string_append(data, tmpBuf);
829
"<tr bgcolor=\"%s\"><td><b><a href=\"xiphos.url?action=showModInfo&value=%s&module=%s\"><font color=\"%s\" size=\"%+d\"> [%s]</font></a></b>",
648
"<tr bgcolor=\"%s\"><td><b><a href=\"passagestudy.jsp?action=showModInfo&value=%s&module=%s\"><font color=\"%s\" size=\"%+d\"> [%s]</font></a></b>",
831
650
main_get_module_description(mod_name),
833
652
settings.bible_verse_num_color,
834
653
settings.verse_num_font_size + settings.base_font_size,
837
utf8len = strlen(tmpBuf);
839
data = g_strconcat(data, tmpBuf, NULL);
842
if (use_gtkhtml_font)
655
g_string_append(data, tmpBuf);
657
if ((strlen(mf->old_font) < 2) ||
658
!strncmp(mf->old_font, "none", 4))
843
659
sprintf(tmpBuf, "<font size=\"%s\">",
847
663
"<font face=\"%s\" size=\"%s\">",
848
font_name, font_size);
851
utf8len = strlen(tmpBuf);
853
data = g_strconcat(data, tmpBuf, NULL);
857
backend_p->get_render_text(mod_name,
861
buf = g_strdup_printf(
862
"%s","<br><DIV ALIGN=right>");
864
data = g_strconcat(data, buf, NULL);
868
if (strlen(utf8str)) {
869
data = g_strconcat(data, utf8str, NULL);
874
buf = g_strdup_printf(
877
data = g_strconcat(data, buf, NULL);
882
"</font><small>[<a href=\"xiphos.url?action=showParallel&"
883
"type=swap&value=%s\">%s</a>]</small></td></tr>",
884
mod_name,_("view context"));
886
utf8len = strlen(tmpBuf);
888
data = g_strconcat(data, tmpBuf, NULL);
892
sprintf(tmpBuf, "</table></body></html>");
894
utf8len = strlen(tmpBuf);
896
data = g_strconcat(data, tmpBuf, NULL);
897
gecko_html_write(html,data,-1);
900
gecko_html_close(html);
912
/******************************************************************************
914
* gui_update_parallel_page
917
* #include "main/parallel_view.h
919
* void gui_update_parallel_page(void)
928
void main_update_parallel_page(void)
930
gchar tmpBuf[256], *rowcolor;
931
gchar *font_size_tmp = NULL, *font_size = NULL;
932
gchar *utf8str, *mod_name, *font_name = NULL;
934
gboolean was_editable, use_gtkhtml_font;
935
gboolean is_rtol = FALSE;
939
settings.cvparallel = settings.currentverse;
941
if (settings.havebible) {
942
/* setup gtkhtml widget */
943
GtkHTML *html = GTK_HTML(widgets.html_parallel);
944
was_editable = gtk_html_get_editable(html);
946
gtk_html_set_editable(html, FALSE);
948
gtk_html_begin_content(html,
949
(gchar *)"text/html; charset=utf-8");
951
"<html><body bgcolor=\"%s\" text=\"%s\" link=\"%s\"><table>",
952
settings.bible_bg_color,
953
settings.bible_text_color, settings.link_color);
955
e_utf8_from_gtk_string(widgets.html_parallel,
957
utf8len = strlen(tmpBuf);
959
gtk_html_write(GTK_HTML(html), htmlstream,
963
for (i = 0, j = 0; i < 5; i++) {
969
settings.parallel1Module;
976
settings.parallel2Module;
983
settings.parallel3Module;
990
settings.parallel4Module;
997
settings.parallel5Module;
1004
GS_message(("mod_name = %s", mod_name));
1007
is_rtol = main_is_mod_rtol(mod_name);
1008
//font_name = get_module_font_name(mod_name);
1009
file = g_strdup_printf("%s/fonts.conf", settings.gSwordDir);
1010
font_name = get_conf_file_item(file, mod_name, "Font");
1011
if (!font_name || !strcmp(font_name, "none")) {
1013
main_get_mod_config_entry(mod_name, "Font");
1015
font_name = g_strdup("none");
1017
if (strlen(font_name) < 2) {
1018
use_gtkhtml_font = TRUE;
1019
GS_message(("use_gtkhtml_font = TRUE"));
1021
if (!strncmp(font_name, "none", 4)) {
1022
use_gtkhtml_font = TRUE;
1023
GS_message(("use_gtkhtml_font = TRUE"));
1025
use_gtkhtml_font = FALSE;
1026
GS_message(("use_gtkhtml_font = FALSE"));
1030
font_size_tmp = get_conf_file_item(file, mod_name, "Fontsize");
1032
if (!font_size_tmp) {
1034
main_get_mod_config_entry(mod_name, "Fontsize");
1038
g_strdup_printf("%+d",
1039
(font_size_tmp ? atoi(font_size_tmp) : 0)
1040
+ settings.base_font_size);
1042
if (j == 0 || j == 2 || j == 4)
1043
rowcolor = (gchar *)"#F1F1F1";
1045
rowcolor = settings.bible_bg_color;
1049
"<tr><td><i><font color=\"%s\" size=\"%d\">[%s]</font></i></td></tr>",
1050
settings.bible_verse_num_color,
1051
settings.verse_num_font_size + settings.base_font_size,
1052
settings.currentverse);
1054
utf8len = strlen(tmpBuf);
1056
gtk_html_write(GTK_HTML(html),
1064
"<tr bgcolor=\"%s\"><td><b><a href=\"xiphos.url?action=showModInfo&value=%s&module=%s\"><font color=\"%s\" size=\"%+d\"> [%s]</font></a></b>",
1066
main_get_module_description(mod_name),
1068
settings.bible_verse_num_color,
1069
settings.verse_num_font_size + settings.base_font_size,
1072
utf8len = strlen(tmpBuf);
1074
gtk_html_write(GTK_HTML(html),
1079
if (use_gtkhtml_font)
1080
sprintf(tmpBuf, "<font size=\"%s\">",
1084
"<font face=\"%s\"size=\"%s\">",
1085
font_name, font_size);
1088
utf8len = strlen(tmpBuf);
1090
gtk_html_write(GTK_HTML(html),
1096
backend_p->get_render_text(mod_name,
1100
if (!strcmp(mod_name,"KJV2006"))
1101
g_message("\nmod: %s\nRAW: %s\nRENDERED: %s", mod_name,
1102
backend_p->get_raw_text(mod_name,
1103
settings.currentverse),utf8str);
1107
buf = g_strdup_printf(
1108
"%s","<br><DIV ALIGN=right>");
1110
gtk_html_write(GTK_HTML(html),
1116
if (strlen(utf8str)) {
1117
gtk_html_write(GTK_HTML(html),
1118
htmlstream, utf8str,
1124
buf = g_strdup_printf(
1127
gtk_html_write(GTK_HTML(html),
1134
"</font><small>[<a href=\"xiphos.url?action=showParallel&"
1135
"type=swap&value=%s\">%s</a>]</small></td></tr>",
1136
mod_name,_("view context"));
1138
utf8len = strlen(tmpBuf);
1140
gtk_html_write(GTK_HTML(html),
1149
free(font_size_tmp);
1153
sprintf(tmpBuf, "</table></body></html>");
1155
utf8len = strlen(tmpBuf);
1157
gtk_html_write(GTK_HTML(html), htmlstream,
1161
gtk_html_end(GTK_HTML(html), htmlstream, status1);
1162
gtk_html_set_editable(html, was_editable);
1168
/******************************************************************************
1173
* #include "main/parallel_view.h
1175
* void int_display(SWBuf& text, gchar *key, char *mod_name[])
664
mf->old_font, mf->old_font_size);
666
g_string_append(data, tmpBuf);
669
g_string_append(data, "<br/><div align=right>");
671
backend_p->set_module_key(settings.parallel_list[modidx], settings.cvparallel);
673
get_heading(text, backend_p, modidx);
674
g_string_append(data, text.c_str());
676
utf8str = backend_p->get_render_text(mod_name, settings.currentverse);
678
g_string_append(data, utf8str);
683
g_string_append(data, "</div><br/>");
686
"</font><small>[<a href=\"passagestudy.jsp?action=showParallel&"
687
"type=swap&value=%s\">%s</a>]</small></td></tr>",
688
mod_name,_("view context"));
689
g_string_append(data, tmpBuf);
693
g_string_append(data, "</table></body></html>");
694
HtmlOutput(data->str, widgets.html_parallel, NULL, NULL);
695
g_string_free(data, TRUE);
698
/******************************************************************************
700
* interpolate_parallel_display
703
* #include "main/parallel_view.h
705
* void interpolate_parallel_display(SWBuf& text, gchar *key)
1178
708
* carry out the hard work of getting verses for parallel display.
1184
static void int_display(SWBuf& text, gchar *key, char *mod_name[])
714
static void interpolate_parallel_display(SWBuf& text, gchar *key, gint parallel_count, gint fraction)
1193
720
const gchar *bgColor;
1195
gboolean evenRow = FALSE;
1196
gboolean is_rtol = FALSE;
1198
gint cur_verse, cur_chapter, i = 1, j;
722
gint cur_verse, cur_chapter, verse, modidx;
1200
gboolean is_module[5] = { FALSE, FALSE, FALSE, FALSE, FALSE };
725
gboolean *is_rtol, *is_module;
1202
727
if (!GTK_WIDGET_REALIZED(GTK_WIDGET(widgets.notebook_bible_parallel))) return;
1204
// need #verses to process in this book.
729
is_module = g_new(gboolean, parallel_count);
730
is_rtol = g_new(gboolean, parallel_count);
731
mf = g_new(MOD_FONT *, parallel_count);
733
// quick cache of fonts/rtol info.
734
for (modidx = 0; modidx < parallel_count; ++modidx) {
735
// determine module presence once each.
736
is_module[modidx] = backend->is_module(settings.parallel_list[modidx]);
738
if (is_module[modidx]) {
739
is_rtol[modidx] = main_is_mod_rtol(settings.parallel_list[modidx]);
740
mf[modidx] = get_font(settings.parallel_list[modidx]);
744
// need #verses to process in this chapter.
1208
748
vkey.AutoNormalize(1);
1211
#ifdef SWORD_MULTIVERSE
1212
750
xverses = (vkey.getVerseMax());
1214
xverses = (vkey.books[vkey.Testament()-1]
1216
versemax[vkey.Chapter()-1]);
1219
// quick cache of fonts. (mod_name was passed in.)
1220
file = g_strdup_printf("%s/fonts.conf", settings.gSwordDir);
1221
for (j = 0; j < 5; ++j) {
1222
// determine module presence just once each for this routine.
1223
is_module[j] = (mod_name[j] &&
1225
backend->is_module(mod_name[j]));
1227
// collect decorations.
1228
font_size_tmp[j] = get_conf_file_item(file, mod_name[j], "Fontsize");
1229
if ((font_size_tmp[j] == NULL) ||
1230
!strcmp(font_size_tmp[j], "+0")) {
1231
g_free(font_size_tmp[j]);
1233
main_get_mod_config_entry(mod_name[j], "Fontsize");
1234
if ((font_size_tmp[j] == NULL) || (*font_size_tmp[j] == '\0'))
1235
font_size_tmp[j] = g_strdup("+0");
1239
g_strdup_printf("%+d",
1240
(font_size_tmp[j] ? atoi(font_size_tmp[j]) : 0)
1241
+ settings.base_font_size);
1243
use_font_name[j] = get_conf_file_item(file, mod_name[j], "Font");
1244
if ((use_font_name[j] == NULL) ||
1245
!strcmp(use_font_name[j], "none")) {
1247
main_get_mod_config_entry(mod_name[j], "Font");
1248
if (!use_font_name[j])
1249
use_font_name[j] = g_strdup("none");
1254
bgColor = "#f1f1f1";
1256
752
tmpkey = backend_p->get_valid_key(key);
1257
753
cur_verse = backend_p->key_get_verse(tmpkey);
1258
settings.intCurVerse = cur_verse;
1259
754
cur_chapter = backend_p->key_get_chapter(tmpkey);
1260
755
cur_book = backend_p->key_get_book(tmpkey);
756
settings.intCurVerse = cur_verse;
1262
for (i = 1; i <= xverses; ++i) {
1263
snprintf(tmpbuf, 255, "%s %d:%d", cur_book, cur_chapter, i);
758
for (verse = 1; verse <= xverses; ++verse) {
759
snprintf(tmpbuf, 255, "%s %d:%d", cur_book, cur_chapter, verse);
1265
761
tmpkey = backend_p->get_valid_key(tmpbuf);
1267
763
text += "<tr valign=\"top\">";
1269
765
// mark current verse properly.
766
if (verse == cur_verse)
1271
767
textColor = settings.currentverse_color;
1273
769
textColor = settings.bible_text_color;
1275
771
// alternate background colors.
1278
773
bgColor = "#f1f1f1";
1281
775
bgColor = settings.bible_bg_color;
1284
for (j = 0; j < 5; j++) {
1285
is_rtol = main_is_mod_rtol(mod_name[j]);
1287
char *num = main_format_number(i);
1289
"<td width=\"20%%\" bgcolor=\"%s\">"
1290
"<a href=\"xiphos.url?action=showParallel&"
1291
"type=verse&value=%s\" name=\"%d\">"
1292
"<font color=\"%s\">%s. </font></a>"
1293
"<font face=\"%s\" size=\"%s\" color=\"%s\">",
1295
main_url_encode(tmpkey),
1297
settings.bible_verse_num_color,
1307
text += "<br><DIV ALIGN=right>";
1309
utf8str = backend_p->get_render_text
1310
(mod_name[j], tmpkey);
1311
if (strlen(utf8str)) {
777
for (modidx = 0; modidx < parallel_count; modidx++) {
778
if (is_module[modidx]) {
780
const gchar *newurl = main_url_encode(tmpkey);
781
gchar *num = main_format_number(verse);
783
"<td width=\"%d%%\" bgcolor=\"%s\">"
784
"<a href=\"passagestudy.jsp?action=showParallel&"
785
"type=verse&value=%s\" name=\"%d\">"
786
"<font color=\"%s\">%s. </font></a>"
787
"<font face=\"%s\" size=\"%s\" color=\"%s\">",
792
settings.bible_verse_num_color,
794
mf[modidx]->old_font,
795
mf[modidx]->old_font_size,
797
g_free((gchar*)newurl);
802
text += "<br/><div align=right>";
804
backend_p->set_module_key(settings.parallel_list[modidx], tmpkey);
805
get_heading(text, backend_p, modidx);
807
utf8str = backend_p->get_render_text(settings.parallel_list[modidx], tmpkey);
1312
809
text += utf8str;
1320
817
text += "</font></td>";
1352
851
void main_update_parallel_page_detached(void)
1355
gchar buf[500], *mod_name[5];
1357
gchar space[2]; //there is surely a better way?
1360
mod_name[0] = (parallel1 ? settings.parallel1Module : space);
1361
mod_name[1] = (parallel2 ? settings.parallel2Module : space);
1362
mod_name[2] = (parallel3 ? settings.parallel3Module : space);
1363
mod_name[3] = (parallel4 ? settings.parallel4Module : space);
1364
mod_name[4] = (parallel5 ? settings.parallel5Module : space);
1366
snprintf(buf, 499, "<span color='blue' weight='bold'>%s</span>", mod_name[0]);
1367
gtk_label_set_markup(GTK_LABEL(plabels.label_1), buf);
1369
snprintf(buf, 499, "<span color='blue' weight='bold'>%s</span>", mod_name[1]);
1370
gtk_label_set_markup(GTK_LABEL(plabels.label_2), buf);
1372
snprintf(buf, 499, "<span color='blue' weight='bold'>%s</span>", mod_name[2]);
1373
gtk_label_set_markup(GTK_LABEL(plabels.label_3), buf);
1375
snprintf(buf, 499, "<span color='blue' weight='bold'>%s</span>", mod_name[3]);
1376
gtk_label_set_markup(GTK_LABEL(plabels.label_4), buf);
1378
snprintf(buf, 499, "<span color='blue' weight='bold'>%s</span>", mod_name[4]);
1379
gtk_label_set_markup(GTK_LABEL(plabels.label_5), buf);
855
gint modidx, parallel_count, fraction;
1381
857
#ifdef USE_GTKMOZEMBED
1382
858
if (!GTK_WIDGET_REALIZED(GTK_WIDGET(widgets.html_parallel_dialog))) return;
861
/* how big a pile of parallels have we got? */
862
if (settings.parallel_list == NULL)
864
for (parallel_count = 0; settings.parallel_list[parallel_count]; ++parallel_count)
865
/* just count non-null string ptrs */;
867
/* get the per-column percentage width. */
868
/* 2 => 50, 4 => 25, 5 => 20, 10 => 10, ... */
869
fraction = (parallel_count ? (100/parallel_count) : 100);
1385
871
snprintf(buf, 499, HTML_START
1386
872
"<body bgcolor=\"%s\" text=\"%s\" link=\"%s\"><table align=\"left\" valign=\"top\"><tr valign=\"top\" >",
1387
873
settings.bible_bg_color, settings.bible_text_color,
1388
874
settings.link_color);
1391
for (j = 0; j < 5; ++j){
877
for (modidx = 0; settings.parallel_list[modidx]; ++modidx) {
1392
878
snprintf(buf, 499,
1393
"<td valign=\"top\" width=\"20%%\" bgcolor=\"#f1f1f1\"><font color=\"%s\" size=\"%+d\"><b>%s</b></td>",
1394
settings.bible_verse_num_color,
1395
settings.verse_num_font_size + settings.base_font_size,
879
"<td valign=\"top\" width=\"%d%%\" bgcolor=\"#f1f1f1\"><font color=\"%s\" size=\"%+d\"><b>%s</b></font></td>",
881
settings.bible_verse_num_color,
882
settings.verse_num_font_size + settings.base_font_size,
883
settings.parallel_list[modidx]);
1400
887
text += "</tr>";
1401
int_display(text, settings.cvparallel, mod_name);
888
interpolate_parallel_display(text, settings.cvparallel, parallel_count, fraction);
1402
889
text += "</table></body></html>";
1404
891
snprintf(buf, 499, "%d", ((settings.intCurVerse > 1)