www/netsurf: Fix preferences dialog bug and fix build warnings

PR:		254702
Submitted by:	waitman AT waitman DOT net
This commit is contained in:
Neel Chauhan 2021-04-06 09:23:54 -07:00
parent 0bea3f1759
commit c7d712568c
8 changed files with 218 additions and 23 deletions

View file

@ -29,14 +29,15 @@ LIB_DEPENDS= libcurl.so:ftp/curl \
libwapcaplet.so:textproc/libwapcaplet \
libhubbub.so:www/libhubbub \
libexpat.so:textproc/expat2 \
libnspsl.so:dns/libnspsl
libnspsl.so:dns/libnspsl \
libwebp.so:graphics/webp
RUN_DEPENDS= duk:lang/duktape \
${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss
USES= bison desktop-file-utils gettext-runtime gmake gnome iconv jpeg \
localbase pkgconfig shebangfix ssl
USES= bison desktop-file-utils gmake gnome jpeg \
localbase pkgconfig shebangfix ssl iconv:translit
ALL_TARGET= #empty
LDFLAGS+= -L${OPENSSLLIB} -lssl -lcrypto ${ICONV_LIB}
LDFLAGS+= -L${OPENSSLLIB} -lssl -lcrypto
CFLAGS+= -I${OPENSSLINC}
MAKE_ARGS= HOST_CC="${CC}" CC="${CC}" CCOPT="" HOST="${OPSYS}" \
TARGET="gtk3" \
@ -47,30 +48,18 @@ USE_GNOME= glib20 gtk30 cairo librsvg2
WRKSRC= ${WRKDIR}/${DISTNAME:S/-src//}
SHEBANG_FILES= utils/split-messages.pl
perl_CMD= ${SETENV} perl
perl_CMD= ${PERL}
OPTIONS_DEFINE= GSTREAMER
OPTIONS_EXCLUDE= GSTREAMER
GSTREAMER_USE= GSTREAMER=yes, good
NLS_USES= gettext
NLS_CONFIGURE_ENABLE= nls
post-patch:
@${REINPLACE_CMD} '/CFLAGS/d' \
${WRKSRC}//Makefile.defaults
@${REINPLACE_CMD} 's| -O2||' \
${WRKSRC}/frontends/gtk/Makefile.defaults
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|' \
${WRKSRC}/frontends/gtk/gui.c
@${CP} ${FILESDIR}/buildui.pl ${WRKSRC}/utils/
do-configure:
@${CP} ${FILESDIR}/Makefile.config ${WRKSRC}
.if empty(ICONV_LIB)
@${REINPLACE_CMD} '/NETSURF_USE_LIBICONV_PLUG/ s|NO|YES|' \
${WRKSRC}/Makefile.config
.endif
do-configure-GSTREAMER-on:
@${REINPLACE_CMD} '/NETSURF_USE_VIDEO/ s|NO|YES|' \
${WRKSRC}/Makefile.config
post-install:
cd ${STAGEDIR}${PREFIX}/bin && ${LN} -sf netsurf-gtk3 \
@ -78,6 +67,16 @@ post-install:
.for d in applications pixmaps
${MKDIR} ${STAGEDIR}${PREFIX}/share/${d}
.endfor
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/deoptions.gtk3.ui \
${STAGEDIR}${PREFIX}/share/netsurf
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/enoptions.gtk3.ui \
${STAGEDIR}${PREFIX}/share/netsurf
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/froptions.gtk3.ui \
${STAGEDIR}${PREFIX}/share/netsurf
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/itoptions.gtk3.ui \
${STAGEDIR}${PREFIX}/share/netsurf
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/nloptions.gtk3.ui \
${STAGEDIR}${PREFIX}/share/netsurf
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/netsurf-gtk.desktop \
${STAGEDIR}${PREFIX}/share/applications
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/netsurf.xpm \

View file

@ -1,4 +1,4 @@
NETSURF_USE_LIBICONV_PLUG=NO
NETSURF_USE_LIBICONV_PLUG=YES
NETSURF_USE_NSSVG=NO
NETSURF_USE_RSVG=YES
NETSURF_USE_VIDEO=NO

View file

@ -0,0 +1,82 @@
#!
#
# Create ui files for each language listed in FatMessages
my $inputfn = $ARGV[0]; # path to FatMessages
my $templatefn = $ARGV[1]; # path to UI Template
my $output = $ARGV[2]; # output path
my $stub = $ARGV[3]; # filename stub. like options.gtk3.ui will become enoptions.gtk3.ui
if (length($stub)<3) {
print "invalid stub.\n";
exit;
}
my $template;
my %langs = {'en'=>1};
my %trans;
$trans{'en'}{'foo'}='bar';
open(my $fh, '<', $templatefn) or die "cannot open template file $templatefn";
{
local $/;
$template = <$fh>;
}
close($fh);
$template =~ s/translatable="yes"/translatable="no"/g;
open(my $input, '<', $inputfn) or die "cannot open FatMessages file $inputfn";
while (<$input>)
{
# skip comment and empty lines
/^#/ && next;
/^\s*$/ && next;
# only parsing things that look like message lines:
if( /^([a-z]{2}).([^.]+).([^:]+):(.*)/ )
{
my( $lang, $plat, $key, $val ) = ( $1, $2, $3, $4 );
if ($plat == 'gtk')
{
$val =~ s|<.+?>||g; #remove HTML
$langs{$lang}=1;
$trans{$lang}{$key}=$val;
}
}
}
# load up langs hash with copy of the template for each lang
foreach $key (keys %langs)
{
if (length($key)==2)
{
$langs{$key} = $template
}
}
# iterate through each and key replace with translated text
foreach my $tran (keys %trans)
{
foreach my $key (keys %{$trans{$tran}})
{
$langs{$tran} =~ s/\>$key\</\>$trans{$tran}{$key}\</g;
}
}
# save the ui file for each language
foreach $key (keys %langs)
{
if (length($key)==2)
{
open (OFN, '>', $output.'/'.$key.$stub) or die "cannot open output file ".$output.'/'.$key.$stub;
print OFN $langs{$key};
close (OFN);
}
}

View file

@ -1,6 +1,23 @@
--- Makefile.orig 2020-05-24 20:55:29 UTC
+++ Makefile
@@ -547,7 +547,6 @@ ifeq ($(HOST),mint)
@@ -484,16 +484,6 @@ ifneq ($(CC_MAJOR),2)
COMMON_WARNFLAGS += -Wno-unused-parameter
endif
-# deal with lots of unwanted warnings from javascript
-ifeq ($(call cc_ver_ge,4,6),1)
- COMMON_WARNFLAGS += -Wno-unused-but-set-variable
-endif
-
-# Implicit fallthrough warnings suppressed by comment
-ifeq ($(call cc_ver_ge,7,1),1)
- COMMON_WARNFLAGS += -Wimplicit-fallthrough=3
-endif
-
# deal with chaging warning flags for different platforms
ifeq ($(HOST),OpenBSD)
# OpenBSD headers are not compatible with redundant declaration warning
@@ -547,7 +537,6 @@ ifeq ($(HOST),mint)
else
$(eval $(call pkg_config_find_and_add_enabled,CURL,libcurl,Curl))
endif
@ -8,3 +25,34 @@
$(eval $(call pkg_config_find_and_add_enabled,UTF8PROC,libutf8proc,utf8))
$(eval $(call pkg_config_find_and_add_enabled,WEBP,libwebp,WEBP))
@@ -680,14 +669,21 @@ $$(MESSAGES_TARGET)/$(1)/Messages: resources/FatMessag
$$(Q)$$(SPLIT_MESSAGES) -l $(1) -p $$(MESSAGES_FILTER) -f messages -o $$@ -z $$<
CLEAN_MESSAGES += $$(MESSAGES_TARGET)/$(1)/Messages
+CLEAN_MESSAGES += $$(MESSAGES_TARGET)/$(1)options.gtk3.ui
MESSAGES += $$(MESSAGES_TARGET)/$(1)/Messages
endef
+buildui:
+ @echo "BUILDUI: options ui for each language in resources/FatMessages"
+ @$(PERL) utils/buildui.pl resources/FatMessages frontends/gtk/res/options.gtk3.ui $(MESSAGES_TARGET) options.gtk3.ui
+
# generate the message file rules
$(eval $(foreach LANG,$(MESSAGES_LANGUAGES), \
$(call split_messages,$(LANG))))
+MESSAGES += buildui
+
clean-messages:
$(VQ)echo " CLEAN: $(CLEAN_MESSAGES)"
$(Q)$(RM) $(CLEAN_MESSAGES)
@@ -710,7 +706,7 @@ OBJECTS := $(sort $(addprefix $(OBJROOT)/,$(subst /,_,
# Include directory flags
IFLAGS = $(addprefix -I,$(INCLUDE_DIRS))
-$(EXETARGET): $(OBJECTS) $(RESOURCES) $(MESSAGES)
+$(EXETARGET): $(OBJECTS) $(RESOURCES) $(MESSAGES)
$(VQ)echo " LINK: $(EXETARGET)"
ifneq ($(TARGET)$(SUBTARGET),riscos-elf)
$(Q)$(CC) -o $(EXETARGET) $(OBJECTS) $(LDFLAGS)

View file

@ -1,4 +1,4 @@
--- frontends/gtk/Makefile.defaults.orig 2016-11-19 13:37:41 UTC
--- frontends/gtk/Makefile.defaults.orig 2020-05-24 20:55:29 UTC
+++ frontends/gtk/Makefile.defaults
@@ -4,7 +4,7 @@
@ -9,3 +9,9 @@
# Where to install the netsurf binary
NETSURF_GTK_BIN := $(PREFIX)/bin/
@@ -39,4 +39,4 @@ NETSURF_FS_BACKING_STORE := YES
NETSURF_GTK_MAJOR ?= 2
# Optimisation levels
-CFLAGS += -O2
+CFLAGS +=

View file

@ -0,0 +1,33 @@
--- frontends/gtk/preferences.c.orig 2021-04-01 17:51:28 UTC
+++ frontends/gtk/preferences.c
@@ -962,11 +962,26 @@ GtkWidget* nsgtk_preferences(struct browser_window *bw
return GTK_WIDGET(priv->dialog);
}
- res = nsgtk_builder_new_from_resname("options", &preferences_builder);
- if (res != NSERROR_OK) {
- NSLOG(netsurf, INFO, "Preferences UI builder init failed");
- return NULL;
+ const char *client_lang;
+ char ui_lang[10] = "en";
+ client_lang = getenv("LANG");
+
+ if (strlen(client_lang)>1)
+ {
+ strncpy(ui_lang,client_lang,2);
}
+
+ strcat(ui_lang,"options");
+
+ res = nsgtk_builder_new_from_resname(ui_lang, &preferences_builder);
+ if (res != NSERROR_OK) {
+ //LANG not found, so fall back to english i guess
+ res = nsgtk_builder_new_from_resname("enoption", &preferences_builder);
+ }
+ if (res != NSERROR_OK) {
+ NSLOG(netsurf, INFO, "Preferences UI builder init failed");
+ return NULL;
+ }
priv->dialog = gtk_builder_get_object(preferences_builder,
"dialogPreferences");

View file

@ -0,0 +1,22 @@
--- frontends/gtk/resources.c.orig 2021-04-01 19:00:43 UTC
+++ frontends/gtk/resources.c
@@ -82,6 +82,11 @@ static struct nsgtk_resource_s ui_resource[] = {
RES_ENTRY("globalhistory"),
RES_ENTRY("localhistory"),
RES_ENTRY("options"),
+ RES_ENTRY("deoptions"),
+ RES_ENTRY("enoptions"),
+ RES_ENTRY("froptions"),
+ RES_ENTRY("itoptions"),
+ RES_ENTRY("nloptions"),
RES_ENTRY("hotlist"),
RES_ENTRY("cookies"),
RES_ENTRY("viewdata"),
@@ -552,6 +557,7 @@ nsgtk_builder_new_from_resname(const char *resname, Gt
error->message);
g_error_free(error);
g_object_unref(G_OBJECT(new_builder));
+
return NSERROR_INIT_FAILED;
}
} else {

View file

@ -47,6 +47,11 @@ share/applications/netsurf-gtk.desktop
%%DATADIR%%/nl/licence.html
%%DATADIR%%/nl/welcome.html
%%DATADIR%%/options.gtk3.ui
%%DATADIR%%/deoptions.gtk3.ui
%%DATADIR%%/enoptions.gtk3.ui
%%DATADIR%%/froptions.gtk3.ui
%%DATADIR%%/itoptions.gtk3.ui
%%DATADIR%%/nloptions.gtk3.ui
%%DATADIR%%/pageinfo.gtk3.ui
%%DATADIR%%/password.gtk3.ui
%%DATADIR%%/quirks.css