📄 gtk.c
字号:
/* $Aumix: aumix/src/gtk.c,v 1.8 2002/10/29 21:27:52 trevor Exp $ * * gtk.c: GTK+ interface for aumix * (c) 1998-2001 the authors (see AUTHORS file) * * based on: * Freestyle DJ sample playing tool * Revision 1.11 1998/06/18 18:17:39 * (C) 1998 Pete Hollobon hollobon@bigfoot.com * http://www.york.ac.uk/~ph116/freestyle.html * * also based on: * gmixer 0.98 (22.2.1999) * Copyleft (C) 1998, 1999 Sergey Kiselev * sergey@junior.technion.ac.il * * also based on: * filesel.c and pixmap.c examples * GTK v1.2 Tutorial * Tony Gale <gale@gtk.org>, Ian Main <imain@gtk.org> * February 23rd, 2000 * * This file is part of aumix. * * Aumix 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. * * Aumix 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 * aumix; if not, write to the Free Software Foundation, Inc., 59 Temple Place, * Suite 330, Boston, MA 02111-1307, USA. */#include "common.h"#if defined (HAVE_GTK1) || defined (HAVE_GTK)#include "gtk.h"#include "../data/aumix.xpm"#include "record.xpm"#include "play.xpm"#include "interactive.h"#include <signal.h> /* SIGALRM */void SaveSettingsGTK(void){ (void) SaveSettings();}void LoadSettingsGTK(void){ (void) LoadSettings();}void HideShowNumbersGTK(void){ int ii; if (valuesvisible) { for (ii = 0; ii < SOUND_MIXER_NRDEVICES; ii++) { if ((1 << ii) & devmask && visible[ii]) { gtk_scale_set_draw_value(GTK_SCALE(levels[ii]), FALSE); if ((1 << ii) & stereodevs) gtk_scale_set_draw_value(GTK_SCALE(baltracks[ii]), FALSE); } } gtk_widget_hide(labelzero); gtk_widget_hide(labelcent); } else { for (ii = 0; ii < SOUND_MIXER_NRDEVICES; ii++) { if ((1 << ii) & devmask && visible[ii]) { gtk_scale_set_draw_value(GTK_SCALE(levels[ii]), TRUE); if ((1 << ii) & stereodevs) gtk_scale_set_draw_value(GTK_SCALE(baltracks[ii]), TRUE); } } gtk_widget_show(labelzero); gtk_widget_show(labelcent); } valuesvisible = !valuesvisible;}void HideShowBalancesGTK(void){ int ii; if (balancevisible) { gtk_widget_hide(labelbalance); gtk_widget_hide(labelleft); gtk_widget_hide(labelright); for (ii = 0; ii < SOUND_MIXER_NRDEVICES; ii++) { if (visible[ii] && (1 << ii) & stereodevs) gtk_widget_hide(baltracks[ii]); } } else { gtk_widget_show(labelbalance); gtk_widget_show(labelleft); gtk_widget_show(labelright); for (ii = 0; ii < SOUND_MIXER_NRDEVICES; ii++) { if (visible[ii] && (1 << ii) & stereodevs) gtk_widget_show(baltracks[ii]); } } balancevisible = !balancevisible;}void HideShowMenuGTK(GtkWidget * menu){ if (menuvisible) { gtk_widget_hide(GTK_WIDGET(menu)); } else { gtk_widget_show(GTK_WIDGET(menu)); } menuvisible = !menuvisible;}void HideShowChannelGTK(int device){ if (visible[device]) { /* Hide the record/play button, if any. */ if ((1 << device) & recmask) gtk_widget_hide(GTK_WIDGET(rpbuttons[device])); /* Hide the level track. */ gtk_scale_set_draw_value(GTK_SCALE(levels[device]), FALSE); gtk_widget_hide(GTK_WIDGET(levels[device]));/* Hide the name of the channel. */ gtk_widget_hide(channellabel[device]); /* Hide the balance track, if any. */ if ((1 << device) & stereodevs) {/* Hide the balance track, if any. */ gtk_scale_set_draw_value(GTK_SCALE(baltracks[device]), FALSE); gtk_widget_hide(baltracks[device]); } } else { /* Show the record/play button, if any. */ if ((1 << device) & recmask) gtk_widget_show(GTK_WIDGET(rpbuttons[device])); /* Show the level track. */ gtk_scale_set_draw_value(GTK_SCALE(levels[device]), TRUE); gtk_widget_show(GTK_WIDGET(levels[device])); /* Show the name of the channel. */ gtk_widget_show(channellabel[device]); /* Show the balance track, if any. */ if ((1 << device) & stereodevs && balancevisible) { /* Show the balance track, if any. */ gtk_scale_set_draw_value(GTK_SCALE(baltracks[device]), TRUE); gtk_widget_show(baltracks[device]); } }/* Toggle visibility flag for the device. */ visible[device] = !visible[device];}void AdjustLevelGTK(int device){ AdjustLevel(device, 0, adjustment[device]->value); return;}void AdjustBalanceGTK(int device){ AdjustBalance(device, 0, balance[device]->value); return;}void InitScreenGTK(void){ GdkColormap *colormap; GdkBitmap *bitmap; GdkPixmap *icon_pixmap; GtkStyle *style; GtkWidget *window; GtkWidget *mainbox; GtkWidget *filemenu; GtkWidget *filemenuitems[5]; GtkWidget *viewmenu; GtkWidget *viewmenuitems[SOUND_MIXER_NRDEVICES + 3]; GtkWidget *separator; GtkWidget *mutemenu; GtkWidget *muteallitem; GtkWidget *menubar; GtkWidget *menubarlabel; GtkAccelGroup *accel; GtkWidget *labelrec; GtkWidget *labellevel; GtkWidget *control_box; int balset, max, y, tmp, left, right; long int ii; GtkSignalFunc filefuncs[] = {&LoadSettingsGTK, &SaveSettingsGTK, &LoadDialog, &SaveDialog, &CloseScreenGTK}; char *filemenutext[] = {LOCAL_TEXT_NOOP("Load"), LOCAL_TEXT_NOOP("Save"), LOCAL_TEXT_NOOP("Load From"), LOCAL_TEXT_NOOP("Save To"), LOCAL_TEXT_NOOP("Quit")}; char *fileacceltext[5] = {LOCAL_TEXT_NOOP("l"), LOCAL_TEXT_NOOP("s"), LOCAL_TEXT_NOOP("f"), LOCAL_TEXT_NOOP("t"), LOCAL_TEXT_NOOP("q")}; char *viewmenutext[] = {LOCAL_TEXT_NOOP("Menu"), LOCAL_TEXT_NOOP("Balance"), LOCAL_TEXT_NOOP("Numbers")}; char *viewacceltext[] = {LOCAL_TEXT_NOOP("v"), LOCAL_TEXT_NOOP("b"), LOCAL_TEXT_NOOP("n")}; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "aumix"); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); gtk_container_border_width(GTK_CONTAINER(window), BORDER); mainbox = gtk_vbox_new(FALSE, BORDER); gtk_widget_show(mainbox); gtk_container_add(GTK_CONTAINER(window), mainbox); accel = gtk_accel_group_new();#ifdef HAVE_GTK1 gtk_accel_group_attach(accel, GTK_OBJECT(window));#else gtk_window_add_accel_group(GTK_WINDOW(window), accel);#endif menubar = gtk_menu_bar_new(); gtk_widget_show(menubar); gtk_box_pack_start(GTK_BOX(mainbox), menubar, FALSE, TRUE, 0); filemenu = gtk_menu_new(); mutemenu = gtk_menu_new(); viewmenu = gtk_menu_new(); for (ii = 0; ii < 5; ii++) { filemenuitems[ii] = gtk_menu_item_new_with_label(LOCAL_TEXT(filemenutext[ii])); gtk_menu_append(GTK_MENU(filemenu), filemenuitems[ii]); gtk_widget_show(filemenuitems[ii]); gtk_widget_add_accelerator(filemenuitems[ii], "activate", accel, *LOCAL_TEXT(fileacceltext[ii]), 0, GTK_ACCEL_VISIBLE); gtk_signal_connect(GTK_OBJECT(filemenuitems[ii]), "activate", filefuncs[ii], NULL); } for (ii = 0; ii < SOUND_MIXER_NRDEVICES; ii++) { visible[ii] = TRUE; if ((1 << ii) & (devmask | recmask)) { viewmenuitems[ii] = gtk_check_menu_item_new_with_label(LOCAL_TEXT(dev_label[ii])); gtk_menu_append(GTK_MENU(viewmenu), viewmenuitems[ii]); gtk_widget_show(viewmenuitems[ii]); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(viewmenuitems[ii]), TRUE); } } separator = gtk_menu_item_new(); gtk_widget_show(separator); gtk_menu_append(GTK_MENU(viewmenu), separator); menuvisible = TRUE; balancevisible = TRUE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -