diff --git a/CMakeLists.txt b/CMakeLists.txt index 6bce16e..fb714a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ include (GNUInstallDirs) include (FindPkgConfig) set (PROJECT simple-fb2-reader) -set (VERSION 1.1.2) +set (VERSION 1.1.3) if (NOT DEFINED CMAKE_INSTALL_PREFIX) set(CMAKE_INSTALL_PREFIX "/usr") @@ -55,6 +55,7 @@ target_link_libraries (${PROJECT} ${LIBRARIES}) install (TARGETS ${PROJECT} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) install (FILES res/${PROJECT}.glade DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT}/) +install (FILES res/${PROJECT}.css DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT}/) install (FILES intl/mo/en_US/${PROJECT}.mo DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/en_US/LC_MESSAGES/) install (FILES intl/mo/ru/${PROJECT}.mo DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/ru/LC_MESSAGES/) diff --git a/NEWS b/NEWS index 0997bb1..936ba99 100644 --- a/NEWS +++ b/NEWS @@ -31,3 +31,6 @@ 1.1.1 (12/07/2016): Autoscroll, refactoring. + +1.1.3 (12/08/2019): + User themes based on css, update GTK API diff --git a/README.md b/README similarity index 57% rename from README.md rename to README index a53bf7a..bd5c592 100644 --- a/README.md +++ b/README @@ -11,7 +11,9 @@ Features: - full 2.1 format support(without stylesheet and partial table support) - navigation - russian and english gui -- user themes(see ~/.config/simple-fb2-reader/config.cfg) +- user themes + edit ~/.config/simple-fb2-reader/simple-fb2-reader.css + example dark theme /usr/share/simple-fb2-reader/simple-fb2-reader.css - auto scrolling(see config for customise scrolling speed) - hotkeys @@ -19,18 +21,18 @@ All features located in context menu. Hotkeys description in "About" menu item. Depends: -- libxml2 >= 2.9.1 -- libgtk-3-0 >= 3.14.5 -- libzip2 >= 0.11.2 -- libsqlite3-0 >= 3.8.7.1 +- libxml2 >= 2.9.4 +- libgtk-3-0 >= 3.24.10 +- libzip >= 1.5.1 +- libsqlite3-0 >= 3.29.0 Build Depends: -- debhelper >= 9.0.0 -- libxml2-dev >= 2.9.1 -- libgtk-3-dev >= 3.14.5 -- libzip-dev >= 0.11.2 -- pkg-config >= 0.28 -- gettext >= 0.19.3 -- libsqlite3-dev >= 3.8.7.1 -- cmake >= 3.0.2 +- debhelper >= 12.3 +- libxml2-dev >= 2.9.4 +- libgtk-3-dev >= 3.24.10 +- libzip-dev >= 1.5.1 +- pkg-config >= 0.29 +- gettext >= 0.19.8 +- libsqlite3-dev >= 3.29.0 +- cmake >= 3.13.4 diff --git a/autoconf/configure.ac b/autoconf/configure.ac index d8bbd60..ea88f75 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_INIT([simple-fb2-reader], [1.1.1], [medved_cool@mail.ru], [], [https://github.com/Cactus64k/simple-fb2-reader]) +AC_INIT([simple-fb2-reader], [1.1.3], [medved_cool@mail.ru], [], [https://github.com/Cactus64k/simple-fb2-reader]) # AM_INIT_AUTOMAKE # AC_CONFIG_SRCDIR([src/]) # AC_CONFIG_HEADERS([src/config.h.in]) @@ -15,7 +15,7 @@ PKG_CHECK_MODULES([XML], [libxml-2.0 >= 2.9.1]) PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.32.4]) PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.14.5]) PKG_CHECK_MODULES([ZIP], [libzip >= 0.11.2]) -PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.8.7.1]) +PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.8.7.1]) # Checks for header files. @@ -29,7 +29,7 @@ AC_TYPE_SSIZE_T AC_FUNC_REALLOC AC_CHECK_FUNCS([memset setlocale strchr strerror]) -AC_DEFINE_UNQUOTED([PACKAGE_VERSION], "${PACKAGE_VERSION}") +AC_DEFINE_UNQUOTED([PACKAGE_VERSION], "${PACKAGE_VERSION}") AC_DEFINE_UNQUOTED([PACKAGE_NAME], "${PACKAGE_NAME}") diff --git a/autoconf/makefile.in b/autoconf/makefile.in index 5dcd922..2a156be 100644 --- a/autoconf/makefile.in +++ b/autoconf/makefile.in @@ -13,9 +13,9 @@ SOURCES = $(shell find . -name '*.c' -printf './%P ') OBJECTS = $(SOURCES:.c=.o) DEFINIONS = -DGUI_CONSTRUCT_PATH='"$(datarootdir)/$(PACKAGE_NAME)/$(PACKAGE_NAME).glade"' \ - -DPACKAGE_VERSION='"$(PACKAGE_VERSION)"' \ - -DPACKAGE_NAME='"$(PACKAGE_NAME)"' -CC = @CC@ + -DPACKAGE_VERSION='"$(PACKAGE_VERSION)"' \ + -DPACKAGE_NAME='"$(PACKAGE_NAME)"' +CC = @CC@ CFLAGS = @CFLAGS@ $(DEFINIONS) LDFLAGS = -export-dynamic @@ -36,7 +36,7 @@ INCLUDE = @GTK_CFLAGS@\ all: $(SOURCES) $(PACKAGE_NAME) TRANSLATE_TARGET TRANSLATE_TARGET: - msgfmt intl/ru.po --output-file=intl/ru.mo + msgfmt intl/ru.po --output-file=intl/ru.mo msgfmt intl/en_US.po --output-file=intl/en_US.mo $(PACKAGE_NAME): $(OBJECTS) @@ -66,14 +66,15 @@ mk_folders: # FIXME for new project install:mk_folders - install $(PACKAGE_NAME) $(DESTDIR)$(bindir)/$(PACKAGE_NAME) - cp intl/ru.mo $(DESTDIR)$(localedir)/ru/LC_MESSAGES/$(PACKAGE_NAME).mo - cp intl/en_US.mo $(DESTDIR)$(localedir)/en_US/LC_MESSAGES/$(PACKAGE_NAME).mo - cp res/$(PACKAGE_NAME).desktop $(DESTDIR)$(datarootdir)/applications/$(PACKAGE_NAME).desktop - cp res/$(PACKAGE_NAME).svg $(DESTDIR)$(datarootdir)/icons/hicolor/scalable/apps/$(PACKAGE_NAME).svg - cp res/simple-fb2-reader.xml $(DESTDIR)$(datarootdir)/mime/packages/simple-fb2-reader.xml + install $(PACKAGE_NAME) $(DESTDIR)$(bindir)/$(PACKAGE_NAME) + cp intl/ru.mo $(DESTDIR)$(localedir)/ru/LC_MESSAGES/$(PACKAGE_NAME).mo + cp intl/en_US.mo $(DESTDIR)$(localedir)/en_US/LC_MESSAGES/$(PACKAGE_NAME).mo + cp res/$(PACKAGE_NAME).desktop $(DESTDIR)$(datarootdir)/applications/$(PACKAGE_NAME).desktop + cp res/$(PACKAGE_NAME).svg $(DESTDIR)$(datarootdir)/icons/hicolor/scalable/apps/$(PACKAGE_NAME).svg + cp res/simple-fb2-reader.xml $(DESTDIR)$(datarootdir)/mime/packages/simple-fb2-reader.xml cp res/application-x-fictionbook+xml.svg $(DESTDIR)$(datarootdir)/icons/hicolor/scalable/mimetypes/application-x-fictionbook+xml.svg - cp res/$(PACKAGE_NAME).glade $(DESTDIR)$(datarootdir)/$(PACKAGE_NAME)/$(PACKAGE_NAME).glade + cp res/$(PACKAGE_NAME).glade $(DESTDIR)$(datarootdir)/$(PACKAGE_NAME)/$(PACKAGE_NAME).glade + cp res/$(PACKAGE_NAME).css $(DESTDIR)$(datarootdir)/$(PACKAGE_NAME)/$(PACKAGE_NAME).css ln -sr $(DESTDIR)$(datarootdir)/icons/hicolor/scalable/mimetypes/application-x-fictionbook+xml.svg $(DESTDIR)$(datarootdir)/icons/hicolor/scalable/mimetypes/application-x-zip-compressed-fb2.svg diff --git a/debian/changelog b/debian/changelog index 01c2459..8301342 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -simple-fb2-reader (1.1.2) unstable; urgency=low +simple-fb2-reader (1.1.3) unstable; urgency=low * Initial release (Closes: #nnnn) diff --git a/debian/control b/debian/control index 5b9eb3b..997cd7d 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: simple-fb2-reader Section: text Priority: optional Maintainer: Cactus -Build-Depends: debhelper (>= 9.0.0), libxml2-dev (>= 2.9.1), libgtk-3-dev (>= 3.14.5), libzip-dev (>= 0.11.2), pkg-config (>= 0.28), gettext (>= 0.19.3), libsqlite3-dev (>= 3.8.7.1), cmake +Build-Depends: debhelper (>= 12.3), libxml2-dev (>= 2.9.4), libgtk-3-dev (>= 3.24.10), libzip-dev (>= 1.5.1), pkg-config (>= 0.29), gettext (>= 0.19.8), libsqlite3-dev (>= 3.29.0), cmake (>= 3.13.4) Standards-Version: 3.9.3 Homepage: https://github.com/Cactus64k/simple-fb2-reader #Vcs-Git: git://git.debian.org/collab-maint/simple-fb2-reader.git @@ -12,7 +12,7 @@ Package: simple-fb2-reader Architecture: amd64 Depends: ${shlibs:Depends} Description: Simple tool to read FB2 books. Developed using GTK+3. - Features ("-" - not supported yet, "~" - partial support): + Features: - supports fb2 and fb2.zip - saving reading position - saving window state, size and position @@ -21,4 +21,6 @@ Description: Simple tool to read FB2 books. Developed using GTK+3. - full 2.1 format support(without stylesheet and partial table tag support) - navigation - russian and english gui - - user themes(see ~/.config/simple-fb2-reader/config.cfg) + - user themes + edit ~/.config/simple-fb2-reader/simple-fb2-reader.css + example dark theme /usr/share/simple-fb2-reader/simple-fb2-reader.css diff --git a/intl/prepare.sh b/intl/prepare.sh index 8810e0c..b0ba512 100755 --- a/intl/prepare.sh +++ b/intl/prepare.sh @@ -8,7 +8,7 @@ export GLADE=`(find ../ -name '*.glade' -printf '../%P ')` echo ${SRC[0]} -xgettext --package-name=$PROGNAME --package-version=$VERSION --msgid-bugs-address=$MAIL --i --from-code=UTF-8 --output=./$PROGNAME.pot $GLADE +xgettext --package-name=$PROGNAME --package-version=$VERSION --msgid-bugs-address=$MAIL --i --from-code=UTF-8 --output=./$PROGNAME.pot $GLADE xgettext -j --keyword=$KEYWORD --package-name=$PROGNAME --package-version=$VERSION --msgid-bugs-address=$MAIL --i --from-code=UTF-8 --output=./$PROGNAME.pot $SRC if [ -f ru.po ]; diff --git a/res/simple-fb2-reader.css b/res/simple-fb2-reader.css new file mode 100644 index 0000000..325bffd --- /dev/null +++ b/res/simple-fb2-reader.css @@ -0,0 +1,11 @@ +.book_textview text selection { + color: white; + background-color: #888A85; +} + +.book_textview text { + color: #e8e2b7; + background-color: #293134; + font-family: Sans; +} + diff --git a/res/simple-fb2-reader.glade b/res/simple-fb2-reader.glade index c047b2c..1080ab1 100644 --- a/res/simple-fb2-reader.glade +++ b/res/simple-fb2-reader.glade @@ -1,7 +1,7 @@ - + - + 100 @@ -26,6 +26,9 @@ + + + True @@ -35,6 +38,7 @@ in + book_textview True True True @@ -50,6 +54,9 @@ + @@ -69,6 +76,9 @@ Cactus <medved_cool@mail.ru> simple-fb2-reader gpl-3-0 + + + False @@ -89,13 +99,13 @@ True False - 30 ctrl+n Navigation ctrl+f Search ctrl+h About ctrl+o Open book ctrl+q Exit +ctrl+w Close book ctrl+c Copy text ctrl+mouse-wheel Font scale ctrl+0 Default font scale @@ -112,6 +122,9 @@ left-arrow Previous position(link navigation) + False @@ -125,6 +138,9 @@ left-arrow Previous position(link navigation) + + + True @@ -154,7 +170,6 @@ left-arrow Previous position(link navigation) - False True True False @@ -188,11 +203,9 @@ left-arrow Previous position(link navigation) Backward - False True True False - 0 True search_forward_radiobutton @@ -205,11 +218,9 @@ left-arrow Previous position(link navigation) Forward - False True True False - 0 True True @@ -221,7 +232,6 @@ left-arrow Previous position(link navigation) - False True True True @@ -246,11 +256,9 @@ left-arrow Previous position(link navigation) Case ensitive - False True True False - 0 True @@ -282,11 +290,14 @@ left-arrow Previous position(link navigation) Navigation True center-on-parent - 400 - 400 + 640 + 480 simple-fb2-reader dialog main_wnd + + + False @@ -299,7 +310,6 @@ left-arrow Previous position(link navigation) gtk-cancel - False True True True @@ -314,7 +324,6 @@ left-arrow Previous position(link navigation) gtk-jump-to - False True True True @@ -402,6 +411,9 @@ left-arrow Previous position(link navigation) main_wnd fb2_files_filter + + + False @@ -414,7 +426,6 @@ left-arrow Previous position(link navigation) gtk-cancel - False True True True @@ -429,7 +440,6 @@ left-arrow Previous position(link navigation) gtk-open - False True True True diff --git a/slackbuild/simple-fb2-reader.info b/slackbuild/simple-fb2-reader.info index b0a23d8..60cf238 100644 --- a/slackbuild/simple-fb2-reader.info +++ b/slackbuild/simple-fb2-reader.info @@ -1,7 +1,7 @@ PRGNAM="simple-fb2-reader" -VERSION="1.1.2" +VERSION="1.1.3" HOMEPAGE="https://github.com/Cactus64k/simple-fb2-reader" -DOWNLOAD="https://github.com/Cactus64k/simple-fb2-reader/archive/1.1.2.tar.gz" +DOWNLOAD="https://github.com/Cactus64k/simple-fb2-reader/archive/1.1.3.tar.gz" MD5SUM="" DOWNLOAD_x86_64="" MD5SUM_x86_64="" diff --git a/src/callbacks/callbacks_chunk.h b/src/callbacks/callbacks_chunk.h index ce27756..8ca7d19 100644 --- a/src/callbacks/callbacks_chunk.h +++ b/src/callbacks/callbacks_chunk.h @@ -27,15 +27,9 @@ void navigation_menuitem_activate_cb (GtkMenuItem *menuitem, gpointer user_data); void about_menuitem_activate_cb (GtkMenuItem *menuitem, gpointer user_data); - void color_theme_checkmenuitem_toggled_cb (GtkCheckMenuItem* checkmenuitem, gpointer user_data); - void backward_itemmenu_cb (GtkMenuItem* menuitem, gpointer user_data); - void color_theme_activate_cb (GtkMenuItem* menuitem, gpointer user_data); - - void auto_scroll_disable_checkmenuitem_toggled_cb(GtkCheckMenuItem* checkmenuitem, gpointer user_data); - void auto_scroll_enable_checkmenuitem_toggled_cb(GtkCheckMenuItem* checkmenuitem, gpointer user_data); - void auto_scroll_activate_cb (GtkMenuItem* menuitem, gpointer user_data); + void auto_scroll_toggled_cb (GtkCheckMenuItem* menuitem, gpointer user_data); void exit_menuitem_activate_cb (GtkMenuItem *menuitem, gpointer user_data); diff --git a/src/callbacks/context_menu_callbacks/auto_scroll_callback.c b/src/callbacks/context_menu_callbacks/auto_scroll_callback.c index 75b9d96..bac4bc6 100644 --- a/src/callbacks/context_menu_callbacks/auto_scroll_callback.c +++ b/src/callbacks/context_menu_callbacks/auto_scroll_callback.c @@ -1,50 +1,18 @@ #include "../callbacks_chunk.h" -G_MODULE_EXPORT void auto_scroll_enable_checkmenuitem_toggled_cb(GtkCheckMenuItem* checkmenuitem, gpointer user_data) +G_MODULE_EXPORT void auto_scroll_toggled_cb(GtkCheckMenuItem* menuitem, gpointer user_data) { APP* app = (APP*)user_data; - if(app->book_type != BOOK_TYPE_NONE) + GKeyFile* app_config = app->app_config; + GtkWidget* sub_menu = gtk_menu_item_get_submenu(menuitem); + + if((gtk_check_menu_item_get_active(menuitem) == TRUE) && (app->book_type != BOOK_TYPE_NONE)) { - app->auto_scroll = TRUE; - double period = app->auto_scroll_period; + app->auto_scroll = TRUE; + int period = app->auto_scroll_period; g_timeout_add(period, auto_scroll_update, app); } - -} - -G_MODULE_EXPORT void auto_scroll_disable_checkmenuitem_toggled_cb(GtkCheckMenuItem* checkmenuitem, gpointer user_data) -{ - APP* app = (APP*)user_data; - app->auto_scroll = FALSE; -} - -G_MODULE_EXPORT void auto_scroll_activate_cb(GtkMenuItem* menuitem, gpointer user_data) -{ - APP* app = (APP*)user_data; - GKeyFile* app_config = app->app_config; - GtkWidget* sub_menu = gtk_menu_item_get_submenu(menuitem); - - GList* items_list = gtk_container_get_children(GTK_CONTAINER(sub_menu)); - g_list_free_full(items_list, (GDestroyNotify)gtk_widget_destroy); - - g_return_if_fail(sub_menu != NULL); - g_return_if_fail(app_config != NULL); - - GtkWidget* enable_item = gtk_check_menu_item_new_with_label(_C("Enable")); - gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(enable_item), TRUE); - gtk_menu_shell_append(GTK_MENU_SHELL(sub_menu), enable_item); - gtk_widget_show(enable_item); - - GtkWidget* disable_item = gtk_check_menu_item_new_with_label(_C("Disable")); - gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(disable_item), TRUE); - gtk_menu_shell_append(GTK_MENU_SHELL(sub_menu), disable_item); - gtk_widget_show(disable_item); - - if(app->auto_scroll == TRUE) - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(enable_item), TRUE); else - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(disable_item), TRUE); + app->auto_scroll = FALSE; - g_signal_connect(disable_item, "toggled", G_CALLBACK(auto_scroll_disable_checkmenuitem_toggled_cb), app); - g_signal_connect(enable_item, "toggled", G_CALLBACK(auto_scroll_enable_checkmenuitem_toggled_cb), app); } diff --git a/src/callbacks/context_menu_callbacks/color_theme_callback.c b/src/callbacks/context_menu_callbacks/color_theme_callback.c deleted file mode 100644 index 2fd3c31..0000000 --- a/src/callbacks/context_menu_callbacks/color_theme_callback.c +++ /dev/null @@ -1,51 +0,0 @@ -#include "../callbacks_chunk.h" - -G_MODULE_EXPORT void color_theme_checkmenuitem_toggled_cb(GtkCheckMenuItem* checkmenuitem, gpointer user_data) -{ - APP* app = (APP*)user_data; - GKeyFile* app_config = app->app_config; - const char* menu_item_name = gtk_widget_get_name(GTK_WIDGET(checkmenuitem)); - - reader_set_color_theme(app, menu_item_name); - - g_key_file_set_string(app_config, "app", "color_theme", menu_item_name); -} - -G_MODULE_EXPORT void color_theme_activate_cb(GtkMenuItem* menuitem, gpointer user_data) -{ - APP* app = (APP*)user_data; - GKeyFile* app_config = app->app_config; - GtkWidget* sub_menu = gtk_menu_item_get_submenu(menuitem); - - GList* items_list = gtk_container_get_children(GTK_CONTAINER(sub_menu)); - g_list_free_full(items_list, (GDestroyNotify)gtk_widget_destroy); - - g_return_if_fail(sub_menu != NULL); - g_return_if_fail(app_config != NULL); - - gsize groups_size = 0; - char** groups = g_key_file_get_groups(app_config, &groups_size); - char* color_theme = g_key_file_get_string(app_config, "app", "color_theme", NULL); - if(color_theme == NULL) - color_theme = g_strdup("default_theme"); - - for(size_t i=0;groups_size > i; i++) - { - if(strcmp(groups[i], "app") != 0) - { - GtkWidget* item = gtk_check_menu_item_new_with_label(groups[i]); - gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(item), TRUE); - gtk_widget_set_name(GTK_WIDGET(item), groups[i]); - - if(strcmp(groups[i], color_theme) == 0) - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE); - - g_signal_connect(item, "toggled", G_CALLBACK(color_theme_checkmenuitem_toggled_cb), app); - - gtk_menu_shell_append(GTK_MENU_SHELL(sub_menu), item); - gtk_widget_show(item); - } - } - g_free(color_theme); - g_strfreev(groups); -} diff --git a/src/callbacks/main_wnd_callbacks.c b/src/callbacks/main_wnd_callbacks.c index 01d35f6..229fb53 100644 --- a/src/callbacks/main_wnd_callbacks.c +++ b/src/callbacks/main_wnd_callbacks.c @@ -47,7 +47,9 @@ G_MODULE_EXPORT gboolean main_wnd_key_press_event_cb (GtkWidget* widget, GdkEven GtkTextView* text_view = app->text_view; BOOK_TYPE book_type = app->book_type; GtkClipboard* clipboard = app->clipboard; - GdkKeymap* default_key_map = gdk_keymap_get_default(); + GdkDisplay* default_display = gdk_display_get_default(); + GdkKeymap* default_key_map = gdk_keymap_get_for_display(default_display); + GdkKeymapKey key = {.keycode = event->hardware_keycode, .group = 0, @@ -67,10 +69,6 @@ G_MODULE_EXPORT gboolean main_wnd_key_press_event_cb (GtkWidget* widget, GdkEven if(book_type != BOOK_TYPE_NONE) search_menuitem_activate_cb(NULL, app); } - else if(keyval == 't') - { - color_theme_activate_cb(NULL, app); - } else if(keyval == 'h') { about_menuitem_activate_cb(NULL, app); @@ -107,6 +105,10 @@ G_MODULE_EXPORT gboolean main_wnd_key_press_event_cb (GtkWidget* widget, GdkEven if(gtk_text_buffer_get_has_selection(text_buff) == TRUE) gtk_text_buffer_copy_clipboard(text_buff, clipboard); } + else if(keyval == 'w') + { + reader_close_book(app); + } } else { diff --git a/src/callbacks/text_view_callback/link_tag_enevt_callback.c b/src/callbacks/text_view_callback/link_tag_enevt_callback.c index d214443..3f3beb2 100644 --- a/src/callbacks/text_view_callback/link_tag_enevt_callback.c +++ b/src/callbacks/text_view_callback/link_tag_enevt_callback.c @@ -43,7 +43,7 @@ G_MODULE_EXPORT gboolean a_tag_event_cb(GtkTextTag* tag, GObject* object, GdkEve else { GError* error = NULL; - if(gtk_show_uri(NULL, href, GDK_CURRENT_TIME, &error) == FALSE) + if(gtk_show_uri_on_window(NULL, href, GDK_CURRENT_TIME, NULL) == FALSE) g_log(NULL, G_LOG_LEVEL_WARNING, "%s: %s",error->message, href); } } diff --git a/src/callbacks/text_view_callback/popup_menu_callback.c b/src/callbacks/text_view_callback/popup_menu_callback.c index 2269230..7cb1931 100644 --- a/src/callbacks/text_view_callback/popup_menu_callback.c +++ b/src/callbacks/text_view_callback/popup_menu_callback.c @@ -34,18 +34,10 @@ G_MODULE_EXPORT void book_textview_populate_popup_cb(GtkTextView* entry, GtkMenu gtk_widget_show(item); //************************************************************************************************* - item = gtk_menu_item_new_with_label(_C("Auto scrolling")); - sub_menu = gtk_menu_new(); + item = gtk_check_menu_item_new_with_label(_C("Auto scrolling")); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), app->auto_scroll); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - g_signal_connect(item, "activate", G_CALLBACK(auto_scroll_activate_cb), app); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), sub_menu); - gtk_widget_show(item); - - item = gtk_menu_item_new_with_label(_C("Color Theme")); - sub_menu = gtk_menu_new(); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - g_signal_connect(item, "activate", G_CALLBACK(color_theme_activate_cb), app); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), sub_menu); + g_signal_connect(item, "toggled", G_CALLBACK(auto_scroll_toggled_cb), app); gtk_widget_show(item); item = gtk_menu_item_new_with_label(_C("About")); diff --git a/src/chunks.h b/src/chunks.h index fe902ee..70ee6d9 100644 --- a/src/chunks.h +++ b/src/chunks.h @@ -90,8 +90,10 @@ GKeyFile* app_config; char* app_config_path; + char* app_css_path; + gboolean auto_scroll; - double auto_scroll_period; + int auto_scroll_period; } APP; diff --git a/src/formats/fb2/FictionBook/body/section/poem.c b/src/formats/fb2/FictionBook/body/section/poem.c index b59f79b..d457a62 100644 --- a/src/formats/fb2/FictionBook/body/section/poem.c +++ b/src/formats/fb2/FictionBook/body/section/poem.c @@ -5,7 +5,7 @@ int parse_fb2_poem(APP* app, xmlNode* parent_node, GtkTextIter* text_buff_end) g_return_val_if_fail(parent_node != NULL, EXIT_FAILURE); g_return_val_if_fail(text_buff_end != NULL, EXIT_FAILURE); - GtkTextBuffer* text_buff = app->text_buff; + //GtkTextBuffer* text_buff = app->text_buff; xmlNode* node = parent_node->children; parse_fb2_id_attribute(app, parent_node, text_buff_end); diff --git a/src/formats/fb2/FictionBook/body/section/poem/v.c b/src/formats/fb2/FictionBook/body/section/poem/v.c index f111b63..9ddb247 100644 --- a/src/formats/fb2/FictionBook/body/section/poem/v.c +++ b/src/formats/fb2/FictionBook/body/section/poem/v.c @@ -5,7 +5,7 @@ int parse_fb2_v(APP* app, xmlNode* parent_node, GtkTextIter* text_buff_end) g_return_val_if_fail(parent_node != NULL, EXIT_FAILURE); g_return_val_if_fail(text_buff_end != NULL, EXIT_FAILURE); - GtkTextBuffer* text_buff = app->text_buff; + //GtkTextBuffer* text_buff = app->text_buff; parse_fb2_p_no_tab(app, parent_node, text_buff_end); //gtk_text_buffer_insert(text_buff, text_buff_end, "\n", -1); diff --git a/src/formats/fb2/FictionBook/body/section/style.c b/src/formats/fb2/FictionBook/body/section/style.c index 2b129dd..ecc875c 100644 --- a/src/formats/fb2/FictionBook/body/section/style.c +++ b/src/formats/fb2/FictionBook/body/section/style.c @@ -6,7 +6,7 @@ int parse_fb2_style(APP* app, xmlNode* parent_node, GtkTextIter* text_buff_end) g_return_val_if_fail(text_buff_end != NULL, EXIT_FAILURE); xmlNode* node = parent_node;//parent_node->children; - GtkTextBuffer* text_buff = app->text_buff; + //GtkTextBuffer* text_buff = app->text_buff; g_log(NULL, G_LOG_LEVEL_WARNING, "Tag