diff --git a/Makefile b/Makefile index 6b0c821..e018f31 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,6 @@ TESTS = \ ${GOPKG_PREFIX}/graphic \ ${GOPKG_PREFIX}/grub_theme/font \ ${GOPKG_PREFIX}/grub_theme/themetxt \ - ${GOPKG_PREFIX}/gtk-thumbnailer \ ${GOPKG_PREFIX}/hans2pinyin \ ${GOPKG_PREFIX}/i18n_dependent \ ${GOPKG_PREFIX}/image-blur \ @@ -63,7 +62,6 @@ BINARIES = \ graphic \ locale-helper \ hans2pinyin \ - gtk-thumbnailer \ sound-theme-player \ deepin-shutdown-sound \ dde-open \ diff --git a/gtk-thumbnailer/main.go b/gtk-thumbnailer/main.go deleted file mode 100644 index 0d77db6..0000000 --- a/gtk-thumbnailer/main.go +++ /dev/null @@ -1,74 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -package main - -// #cgo pkg-config: gtk+-3.0 -// #cgo CFLAGS: -W -Wall -fPIC -fstack-protector-all -// #include -// void gtk_thumbnail(char *theme, char *dest, int width, int min_height); -import "C" - -import ( - "flag" - "fmt" - "os" - "path/filepath" - "unsafe" -) - -var ( - force = flag.Bool("force", false, "Force to generate thumbnail") - theme = flag.String("theme", "", "The theme name") - dest = flag.String("dest", "", "The destination of thumbnail file") - width = flag.Int("width", 0, "The thumbnail width") - height = flag.Int("height", 0, "The thumbnail min height") -) - -func main() { - flag.Parse() - if flag.Parsed() { - - if *theme == "" || *dest == "" || *width == 0 || *height == 0 { - flag.Usage() - os.Exit(1) - } - - err := doGenThumbnail(*theme, *dest, *width, *height, *force) - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(2) - } - } -} - -func doGenThumbnail(name, dest string, width, height int, force bool) error { - if _, err := os.Stat(dest); err != nil { - if !os.IsNotExist(err) { - return err - } - // file dest not exist - } else { - // file dest exist - if force { - os.Remove(dest) - } else { - return nil - } - } - - err := os.MkdirAll(filepath.Dir(dest), 0755) - if err != nil { - return err - } - cName := C.CString(name) - defer C.free(unsafe.Pointer(cName)) - cDest := C.CString(dest) - defer C.free(unsafe.Pointer(cDest)) - C.gtk_thumbnail(cName, cDest, C.int(width), C.int(height)) - - // check thumbnail result - _, err = os.Stat(dest) - return err -} diff --git a/gtk-thumbnailer/thumbnail.c b/gtk-thumbnailer/thumbnail.c deleted file mode 100644 index c6fa79a..0000000 --- a/gtk-thumbnailer/thumbnail.c +++ /dev/null @@ -1,94 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include -#include -#include -#include - -void append_page(GtkNotebook * notebook, const char *tab_label) -{ - GtkWidget *tab_header, *label, *close_button, *child; - - tab_header = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); - child = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); - - label = gtk_label_new(tab_label); - close_button = - gtk_button_new_from_icon_name("window-close-symbolic", - GTK_ICON_SIZE_MENU); - gtk_button_set_relief(GTK_BUTTON(close_button), GTK_RELIEF_NONE); - gtk_box_pack_start(GTK_BOX(tab_header), label, TRUE, TRUE, 0); - gtk_box_pack_end(GTK_BOX(tab_header), close_button, FALSE, FALSE, 0); - - gtk_notebook_append_page(notebook, child, tab_header); - gtk_container_child_set(GTK_CONTAINER(notebook), child, "tab-expand", - TRUE, NULL); - - gtk_widget_show_all(tab_header); -} - -void add_icon_button(GtkHeaderBar * header_bar, const char *icon_name) -{ - GtkWidget *button = - gtk_button_new_from_icon_name(icon_name, GTK_ICON_SIZE_BUTTON); - gtk_header_bar_pack_end(GTK_HEADER_BAR(header_bar), button); -} - -static void capture(GtkOffscreenWindow * w, GdkEvent * ev, gpointer user_data) -{ - char *dest = (char *)user_data; - - GdkWindow *tmp_window = gtk_widget_get_window(GTK_WIDGET(w)); - cairo_surface_t *tmp_surface = - gdk_offscreen_window_get_surface(tmp_window); - if (!tmp_surface) { - g_warning("Get offscreen surface failed"); - return; - } - - cairo_status_t status = cairo_surface_write_to_png(tmp_surface, dest); - g_printf("write png status: %s\n", cairo_status_to_string(status)); - gtk_main_quit(); -} - -void gtk_thumbnail(char *theme_name, char *dest, int width, int min_height) -{ - g_setenv("GTK_THEME", theme_name, TRUE); - - GtkWidget *window; - gboolean initialized = gtk_init_check(NULL, NULL); - if (!initialized) { - return; - } - - window = gtk_offscreen_window_new(); - gtk_window_set_title(GTK_WINDOW(window), "Window"); - gtk_window_set_default_size(GTK_WINDOW(window), width, min_height); - - // header bar - GtkWidget *header = gtk_header_bar_new(); - gtk_header_bar_set_title(GTK_HEADER_BAR(header), NULL); - gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(header), TRUE); - gtk_header_bar_set_has_subtitle(GTK_HEADER_BAR(header), FALSE); - - add_icon_button(GTK_HEADER_BAR(header), "open-menu-symbolic"); - add_icon_button(GTK_HEADER_BAR(header), "system-search-symbolic"); - - // notebook pages - GtkWidget *notebook = gtk_notebook_new(); - append_page(GTK_NOTEBOOK(notebook), "Tab 1"); - append_page(GTK_NOTEBOOK(notebook), "Tab 2"); - - GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); - gtk_box_pack_start(GTK_BOX(vbox), header, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); - gtk_container_add(GTK_CONTAINER(window), vbox); - - g_signal_connect(G_OBJECT(window), "damage-event", G_CALLBACK(capture), - dest); - - gtk_widget_show_all(window); - gtk_main(); -}