From: Rob F. <rob...@us...> - 2002-10-17 21:23:12
|
Update of /cvsroot/gaim/gaim/plugins/win32/transparency In directory usw-pr-cvs1:/tmp/cvs-serv21764a/plugins/win32/transparency Added Files: Makefile.mingw win2ktrans.c wintransparency.c wintransparency.def wintransparency.h Log Message: ok --- NEW FILE: Makefile.mingw --- # # Makefile.mingw # # Description: Makefile for win32trans plugin. # # # PATHS # INCLUDE_DIR := . GTK_TOP := ../../../../win32-dev/gtk_2_0 GAIM_TOP := ../../.. TRANSPARENCY_ROOT := . GAIM_INSTALL_DIR := $(GAIM_TOP)/win32-install-dir DLL_INSTALL_DIR := $(GAIM_INSTALL_DIR)/plugins ## ## VARIABLE DEFINITIONS ## TARGET = win2ktrans VERSION := $(shell cat $(GAIM_TOP)/VERSION) # Compiler Options CC = gcc.exe CFLAGS = -O2 -Werror -Wall -mno-cygwin -fnative-struct DEFINES = -DGTK_ENABLE_BROKEN -DVERSION=\"$(VERSION)\" ## ## INCLUDE MAKEFILES ## ## ## INCLUDE PATHS ## INCLUDE_PATHS += -I$(TRANSPARENCY_ROOT) \ -I$(GTK_TOP)/include \ -I$(GTK_TOP)/include/gtk-2.0 \ -I$(GTK_TOP)/include/glib-2.0 \ -I$(GTK_TOP)/include/pango-1.0 \ -I$(GTK_TOP)/include/atk-1.0 \ -I$(GTK_TOP)/lib/glib-2.0/include \ -I$(GTK_TOP)/lib/gtk-2.0/include \ -I$(GAIM_TOP)/src \ -I$(GAIM_TOP)/src/win32 \ -I$(GAIM_TOP) LIB_PATHS = -L$(GTK_TOP)/lib \ -L$(GAIM_TOP)/src \ -L$(TRANSPARENCY_ROOT) ## ## SOURCES, OBJECTS ## C_SRC = win2ktrans.c \ wintransparency.c OBJECTS = $(C_SRC:%.c=%.o) ## ## LIBRARIES ## LIBS = -lgtk-win32-2.0 -lglib-2.0 -lgdk-win32-2.0 -lgmodule-2.0 -lgobject-2.0 -lws2_32 -lintl -lgaim -llibwintransparency ## ## RULES ## # How to make a C file %.o: %.c $(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@ -c $< ## ## TARGET DEFINITIONS ## .PHONY: all clean all: libwintransparency.lib $(TARGET).dll install: cp $(TRANSPARENCY_ROOT)/$(TARGET).dll $(DLL_INSTALL_DIR) ## ## BUILD Dependencies ## $(GAIM_TOP)/src/gaim.lib: $(MAKE) -C $(GAIM_TOP)/src -f Makefile.mingw gaim.lib ## ## BUILD DLL ## $(TARGET).def: $(OBJECTS) dlltool --dllname $(TARGET).dll -z $(TARGET).def \ $(OBJECTS) $(TARGET).base: $(OBJECTS) $(GAIM_TOP)/src/gaim.lib gcc -mdll -o junk.tmp -Wl,--base-file,$@ $(OBJECTS) $(LIB_PATHS) $(LIBS) rm -rf junk.tmp $(TARGET).exp: $(TARGET).def $(TARGET).base dlltool --dllname $(TARGET).dll --base-file $(TARGET).base \ --output-exp $(TARGET).exp --def $(TARGET).def rm -rf $(TARGET).base $(TARGET).dll: $(OBJECTS) $(TARGET).exp $(GAIM_TOP)/src/gaim.lib gcc -mdll -o $(TARGET).dll $(OBJECTS) -Wl,$(TARGET).exp $(LIB_PATHS) $(LIBS) rm -rf $(TARGET).exp libwintransparency.lib: $(OBJECTS) dlltool -k -l liblibwintransparency.a -d wintransparency.def ## ## CLEAN RULES ## clean: rm -rf *.o rm -rf $(TARGET).dll rm -rf $(TARGET).def rm -rf libwintransparency.a --- NEW FILE: win2ktrans.c --- /* * win2ktrans * * copyright (c) 1998-2002, rob flynn <ro...@ma...> * * this program is free software; you can redistribute it and/or modify * it under the terms of the gnu general public license as published by * the free software foundation; either version 2 of the license, or * (at your option) any later version. * * this program is distributed in the hope that it will be useful, * but without any warranty; without even the implied warranty of * merchantability or fitness for a particular purpose. see the * gnu general public license for more details. * * you should have received a copy of the gnu general public license * along with this program; if not, write to the free software * foundation, inc., 59 temple place, suite 330, boston, ma 02111-1307 usa * */ #define GAIM_PLUGINS #include <gtk/gtk.h> #include "wintransparency.h" #include "gaim.h" int alpha = 255; static void gaim_new_conversation(char *who) { struct conversation *c = find_conversation(who); if (!c) return; gdk_window_add_filter (GTK_WIDGET(c->window)->window, wgaim_window_filter, c); } G_MODULE_EXPORT char *gaim_plugin_init(GModule *handle) { gaim_signal_connect(handle, event_new_conversation, gaim_new_conversation, NULL); return NULL; } G_MODULE_EXPORT void gaim_plugin_remove() { } struct gaim_plugin_description desc; G_MODULE_EXPORT struct gaim_plugin_description *gaim_plugin_desc() { desc.api_version = PLUGIN_API_VERSION; desc.name = g_strdup(_("Transparency")); desc.version = g_strdup(VERSION); desc.description = g_strdup(_("This plugin enables variable alpha transparency on conversation windows.\n\n* Note: This plugin requires Win2000 or WinXP.")); desc.authors = g_strdup(_("Rob Flynn <ro...@ma...>")); desc.url = g_strdup(WEBSITE); return &desc; } G_MODULE_EXPORT char *name() { return _("Transparency"); } G_MODULE_EXPORT char *description() { return _("This plugin enables variable alpha transparency on conversation windows.\n\n* Note: This plugin requires Win2000 or WinXP."); } void alpha_value_changed(GtkWidget *w, gpointer data) { alpha = gtk_range_get_value(GTK_RANGE(w)); } G_MODULE_EXPORT GtkWidget *gaim_plugin_config_gtk() { GtkWidget *hbox; GtkWidget *label, *slider; hbox = gtk_hbox_new(FALSE, 5); label = gtk_label_new(_("Opacity:")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); slider = gtk_hscale_new_with_range(50,255,1); gtk_range_set_value(GTK_RANGE(slider), 255); gtk_widget_set_usize(GTK_WIDGET(slider), 200, -1); gtk_signal_connect(GTK_OBJECT(slider), "value-changed", GTK_SIGNAL_FUNC(alpha_value_changed), NULL); gtk_box_pack_start(GTK_BOX(hbox), slider, FALSE, TRUE, 5); gtk_widget_show_all(hbox); return hbox; } --- NEW FILE: wintransparency.c --- /* * win2ktrans * * Copyright (C) 1998-2002, Rob Flynn <ro...@ma...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #include <windows.h> #include <shellapi.h> #include <stdlib.h> #include <stdio.h> #include <glib.h> #include "gaim.h" #include "wintransparency.h" int alpha; static void SetWindowTransparency(HWND hWnd, int trans) { SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE) | WS_EX_LAYERED); SetLayeredWindowAttributes(hWnd,0,trans,LWA_ALPHA); } GdkFilterReturn wgaim_window_filter( GdkXEvent *xevent, GdkEvent *event, gpointer data) { MSG *msg = (MSG*)xevent; struct conversation *c = (struct conversation *)data; gdk_window_remove_filter(GTK_WIDGET(c->window)->window, wgaim_window_filter, c); SetWindowTransparency(msg->hwnd, alpha); return GDK_FILTER_REMOVE; } --- NEW FILE: wintransparency.def --- LIBRARY "USER32.dll" EXPORTS SetLayeredWindowAttributes@16 --- NEW FILE: wintransparency.h --- /* * wintransparency.h */ #ifndef _WINTRANSPARENCY_H_ #define _WINTRANSPARENCY_H_ #include <gdk/gdkevents.h> extern int alpha; /* These defines aren't found in the current version of mingw */ #ifndef LWA_ALPHA #define LWA_ALPHA 0x00000002 #endif #ifndef WS_EX_LAYERED #define WS_EX_LAYERED 0x00080000 #endif extern GdkFilterReturn wgaim_window_filter(GdkXEvent *xevent, GdkEvent *event, gpointer data); /* Needed for accessing global variables outside the current module */ extern void wgaim_init(void); #define unlink _unlink #define bzero( dest, size ) memset( ## dest ##, 0, ## size ## ) #define sleep(x) Sleep((x)*1000) #define snprintf _snprintf #define vsnprintf _vsnprintf #endif /* _WINTRANSPARENCY_H_ */ |