Changeset 505
- Timestamp:
- 09/27/07 02:14:18 (4 years ago)
- Files:
-
- sweep/branches/sweep-jack-testing/ChangeLog (modified) (1 diff)
- sweep/branches/sweep-jack-testing/Makefile.am (modified) (1 diff)
- sweep/branches/sweep-jack-testing/NEWS (modified) (1 diff)
- sweep/branches/sweep-jack-testing/README (modified) (1 diff)
- sweep/branches/sweep-jack-testing/README.ALSA (modified) (1 diff)
- sweep/branches/sweep-jack-testing/README.OSS (copied) (copied from sweep/trunk/README.OSS)
- sweep/branches/sweep-jack-testing/TODO (modified) (2 diffs)
- sweep/branches/sweep-jack-testing/acconfig.h (deleted)
- sweep/branches/sweep-jack-testing/acinclude.m4 (modified) (1 diff)
- sweep/branches/sweep-jack-testing/configure.ac (modified) (11 diffs)
- sweep/branches/sweep-jack-testing/doc/Makefile.am (modified) (1 diff)
- sweep/branches/sweep-jack-testing/doc/sweep.1 (deleted)
- sweep/branches/sweep-jack-testing/doc/sweep.1.in (copied) (copied from sweep/trunk/doc/sweep.1.in)
- sweep/branches/sweep-jack-testing/include/sweep/sweep_selection.h (modified) (1 diff)
- sweep/branches/sweep-jack-testing/include/sweep/sweep_types.h (modified) (1 diff)
- sweep/branches/sweep-jack-testing/intl/localcharset.c (modified) (2 diffs)
- sweep/branches/sweep-jack-testing/intl/printf.c (modified) (1 diff)
- sweep/branches/sweep-jack-testing/intl/vasnprintf.c (modified) (7 diffs)
- sweep/branches/sweep-jack-testing/m4/speex.m4 (modified) (1 diff)
- sweep/branches/sweep-jack-testing/pixmaps/cursor-closedhand.xbm (copied) (copied from sweep/trunk/pixmaps/cursor-closedhand.xbm)
- sweep/branches/sweep-jack-testing/pixmaps/cursor-closedhand_mask.xbm (copied) (copied from sweep/trunk/pixmaps/cursor-closedhand_mask.xbm)
- sweep/branches/sweep-jack-testing/pixmaps/cursor-openhand.xbm (copied) (copied from sweep/trunk/pixmaps/cursor-openhand.xbm)
- sweep/branches/sweep-jack-testing/pixmaps/cursor-openhand_mask.xbm (copied) (copied from sweep/trunk/pixmaps/cursor-openhand_mask.xbm)
- sweep/branches/sweep-jack-testing/pixmaps/hand.xpm (copied) (copied from sweep/trunk/pixmaps/hand.xpm)
- sweep/branches/sweep-jack-testing/plugins/byenergy/Makefile.am (modified) (1 diff)
- sweep/branches/sweep-jack-testing/plugins/echo/Makefile.am (modified) (1 diff)
- sweep/branches/sweep-jack-testing/plugins/fade/Makefile.am (modified) (1 diff)
- sweep/branches/sweep-jack-testing/plugins/ladspa/Makefile.am (modified) (1 diff)
- sweep/branches/sweep-jack-testing/plugins/normalise/Makefile.am (modified) (1 diff)
- sweep/branches/sweep-jack-testing/plugins/reverse/Makefile.am (modified) (1 diff)
- sweep/branches/sweep-jack-testing/release_notes/sweep-0.9.2.txt (copied) (copied from sweep/trunk/release_notes/sweep-0.9.2.txt)
- sweep/branches/sweep-jack-testing/src/Makefile.am (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/about_dialog.c (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/cursors.c (modified) (6 diffs)
- sweep/branches/sweep-jack-testing/src/cursors.h (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/driver.c (modified) (6 diffs)
- sweep/branches/sweep-jack-testing/src/driver.h (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/driver_alsa.c (modified) (4 diffs)
- sweep/branches/sweep-jack-testing/src/driver_oss.c (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/driver_solaris.c (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/file_dialogs.c (modified) (2 diffs)
- sweep/branches/sweep-jack-testing/src/file_mad.c (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/file_sndfile0.c (deleted)
- sweep/branches/sweep-jack-testing/src/file_speex.c (modified) (3 diffs)
- sweep/branches/sweep-jack-testing/src/interface.c (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/interface.h (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/main.c (modified) (6 diffs)
- sweep/branches/sweep-jack-testing/src/notes.c (modified) (4 diffs)
- sweep/branches/sweep-jack-testing/src/pcmio.h (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/play.c (modified) (4 diffs)
- sweep/branches/sweep-jack-testing/src/play.h (modified) (2 diffs)
- sweep/branches/sweep-jack-testing/src/preferences.c (modified) (2 diffs)
- sweep/branches/sweep-jack-testing/src/question_dialogs.c (modified) (3 diffs)
- sweep/branches/sweep-jack-testing/src/record.c (modified) (2 diffs)
- sweep/branches/sweep-jack-testing/src/sample-display.c (modified) (11 diffs)
- sweep/branches/sweep-jack-testing/src/sample-display.h (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/sample.c (deleted)
- sweep/branches/sweep-jack-testing/src/samplerate.c (modified) (2 diffs)
- sweep/branches/sweep-jack-testing/src/sweep_app.h (modified) (2 diffs)
- sweep/branches/sweep-jack-testing/src/sweep_selection.c (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/sweep_sounddata.c (modified) (4 diffs)
- sweep/branches/sweep-jack-testing/src/tdb/tdb.h (modified) (1 diff)
- sweep/branches/sweep-jack-testing/src/time_ruler.c (modified) (5 diffs)
- sweep/branches/sweep-jack-testing/src/view.c (modified) (41 diffs)
- sweep/branches/sweep-jack-testing/src/view_pixmaps.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
sweep/branches/sweep-jack-testing/ChangeLog
r355 r505 1 Tue Jan 30 00:00:00 GMT 2007 Peter Shorthose <kickback@users.sourceforge.net> 2 3 * ALSA is now the default driver. see README.OSS for oss 4 * minimum supported gtk version raised to 2.4 5 * added the "hand tool" for panning the display with inertia 6 (Radoslaw Korzeniewski) 7 * can now open multiple files via the gtk file selector 8 * implemented accel editing via the usual gtk method 9 * added tdb lock override (Takashi Iwai) 10 * remove support for libsndfile0 (Erik de Castro Lopo) 11 * remove direct flac support as it's supported by libsndfile now 12 (Erik de Castro Lopo) 13 * added a new splash screen (Pascal Klein) 14 * fix segfault when closing windows while others were still loading 15 * other bugs addressed and changes made. run "svn log" on a copy of svn 16 trunk for details, or check http://trac.metadecks.org/timeline 17 * released 0.9.2 18 1 19 Mon Jan 30 23:58:00 GMT 2006 Peter Shorthose <kickback@users.sourceforge.net> 2 20 sweep/branches/sweep-jack-testing/Makefile.am
r355 r505 14 14 15 15 EXTRA_DIST = config.rpath mkinstalldirs $(desktop_DATA) $(pkgdata_DATA) $(pixmap_DATA) \ 16 sweep.spec README.Solaris README.ALSA README.i18n acconfig.hTODO16 sweep.spec README.Solaris README.ALSA README.i18n TODO 17 17 18 18 MAINTAINERCLEANFILES = Makefile.in aclocal.m4 configure config.h.in \ sweep/branches/sweep-jack-testing/NEWS
r355 r505 1 Tue Jan 30 2007 -- Version 0.9.2 2 -------------------------------- 3 4 New in this release: 5 6 * ALSA is now the default driver. see README.OSS for oss 7 * minimum supported gtk version raised to 2.4 8 * added the "hand tool" for panning the display with inertia 9 (Radoslaw Korzeniewski) 10 * can now open multiple files via the gtk file selector 11 * implemented accel editing via the usual gtk method 12 * added tdb lock override (Takashi Iwai) 13 * remove support for libsndfile0 (Erik de Castro Lopo) 14 * remove direct flac support as it's supported by libsndfile now 15 (Erik de Castro Lopo) 16 * added a new splash screen (Pascal Klein) 17 * fix segfault when closing windows while others were still loading 18 * other bugs addressed and changes made. run "svn log" on a copy of svn 19 trunk for details, or check http://trac.metadecks.org/timeline 20 * released 0.9.2 21 22 1 23 Mon Jan 30 2006 -- Version 0.9.1 2 24 -------------------------------- sweep/branches/sweep-jack-testing/README
r287 r505 34 34 REQUIRED: 35 35 36 * GTK+ 2.0, (version 2. 2.0 or higher) standard in most36 * GTK+ 2.0, (version 2.4.0 or higher) standard in most 37 37 distributions and available from: 38 38 sweep/branches/sweep-jack-testing/README.ALSA
r124 r505 1 Sun Jun 25 2006 2 --------------- 3 4 the default driver is now the ALSA driver. see README.OSS for 5 information on using the OSS driver instead. 6 1 7 Wed Apr 30 2003 2 8 --------------- sweep/branches/sweep-jack-testing/TODO
r355 r505 3 3 4 4 * JACK support 5 * FLAC support6 5 * caching of undo data on disk 7 6 * sample bank management … … 11 10 * LADSPA browser 12 11 * modular drivers 13 14 Done15 ----16 17 * ALSA 0.9 support18 * Ogg Vorbis support19 * MP3 support (read-only)20 * GTK2 portsweep/branches/sweep-jack-testing/acinclude.m4
r62 r505 10 10 dnl Test for AUDIOFILE, and define AUDIOFILE_CFLAGS and AUDIOFILE_LIBS 11 11 dnl 12 AC_DEFUN( AM_PATH_AUDIOFILE,12 AC_DEFUN([AM_PATH_AUDIOFILE], 13 13 [dnl 14 14 dnl Get the cflags and libraries from the audiofile-config script sweep/branches/sweep-jack-testing/configure.ac
r355 r505 1 1 dnl Process this file with autoconf to produce a configure script. 2 2 3 dnl Require minimum autoconf version 4 AC_PREREQ(2.50) 5 3 6 AC_INIT(configure.ac) 4 AM_INIT_AUTOMAKE(sweep, 0.9. 1)7 AM_INIT_AUTOMAKE(sweep, 0.9.2) 5 8 AM_CONFIG_HEADER(config.h) 6 9 … … 64 67 dnl 65 68 66 PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2. 2.0, HAVE_GTK="yes", sweep_config_ok="no")69 PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4.0, HAVE_GTK="yes", sweep_config_ok="no") 67 70 AC_SUBST(GTK_CFLAGS) 68 71 AC_SUBST(GTK_LIBS) … … 89 92 dnl 90 93 91 LIBSNDFILE_VERSION="???"92 93 # !!! libsndfile0 backport94 95 ac_enable_libsndfile0=no96 AC_ARG_ENABLE(libsndfile0,97 [ --enable-libsndfile0 enable building against libsndfile version 0],98 [ ac_enable_libsndfile0=yes ])99 100 if test "x${ac_enable_libsndfile0}" != xno ; then101 102 HAVE_LIBSNDFILE1="ignore"103 104 AC_CHECK_LIB(sndfile, sf_open_read, HAVE_LIBSNDFILE0="yes")105 AC_CHECK_LIB(sndfile, sf_command, HAVE_LIBSNDFILE0="yes")106 107 if test "x$HAVE_LIBSNDFILE0" = xyes ; then108 SNDFILE_LIBS="-lsndfile"109 AC_SUBST(SNDFILE_LIBS)110 LIBSNDFILE_VERSION="0"111 else112 AC_MSG_ERROR([113 ***114 *** You have explicitly enabled to build against libsndfile version 0,115 *** but there is no compatible version of libsndfile version 0 installed.116 ***117 *** To continue this build, you must first install libsndfile version118 *** 0.27.0 or 0.28.0.119 ***120 *** Note that unless you are building against an older system distribution,121 *** it is highly recommended that you install and build against122 *** libsndfile version 1.123 ***124 ])125 fi126 127 else # !!!128 129 94 PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.0, 130 95 HAVE_LIBSNDFILE1="yes", HAVE_LIBSNDFILE1="no") … … 133 98 AC_DEFINE([HAVE_LIBSNDFILE1], [], [Define if we have libsndfile1.]) 134 99 AC_SUBST(SNDFILE_LIBS) 135 LIBSNDFILE_VERSION="1"136 100 else 137 101 sweep_config_ok="no" 138 102 AC_CHECK_LIB(sndfile, sf_open, HAVE_LIBSNDFILE1="maybe") 139 AC_CHECK_LIB(sndfile, sf_open_read, HAVE_LIBSNDFILE0="yes")140 103 fi 141 104 … … 161 124 fi 162 125 fi 163 164 fi # !!! libsndfile0 backport165 126 166 127 AC_CHECK_SIZEOF(off_t,1) … … 362 323 363 324 364 ac_enable_alsa= no325 ac_enable_alsa=yes 365 326 AC_ARG_ENABLE(alsa, 366 [ -- enable-alsa enable use of ALSA, and disable use of OSS],367 [ ac_enable_alsa= yes])327 [ --disable-alsa Disable ALSA, and enable use of OSS], 328 [ ac_enable_alsa=no ]) 368 329 369 330 if test "x${ac_enable_alsa}" != xno ; then … … 387 348 [ ac_enable_jack_playback=yes ]) 388 349 389 if test "x${ac_enable_jack_playback}" = xyes && test "x${ac_enable_alsa}" = xyes ; then 390 AC_MSG_ERROR([ 391 *** 392 *** You cannot supply both --enable-alsa and --enable-jack-playback 393 *** together. you must choose one or the other. 394 *** 395 ]) 396 fi 397 398 if test "x${ac_enable_jack_playback}" = xyes && test "x${ac_enable_alsa}" != xyes ; then 350 351 if test "x${ac_enable_jack_playback}" = xyes; then 399 352 400 353 PKG_CHECK_MODULES(JACK, jack >= 0.100.0,, [AC_MSG_ERROR([ … … 470 423 471 424 425 AC_ARG_ENABLE(gcc-werror, 426 AC_HELP_STRING([--enable-gcc-werror], [enable -Werror in all Makefiles])) 427 472 428 dnl Use -Wall if we have gcc. 473 429 dnl changequote(,)dnl 474 430 if test "x$ac_cv_prog_gcc" = xyes ; then 475 431 CFLAGS="$CFLAGS -Wall" 432 433 if test x$enable_gcc_werror = "xyes" ; then 434 CFLAGS="$CFLAGS -Werror" 435 fi 436 476 437 fi 477 438 dnl changequote([,])dnl … … 571 532 ]) 572 533 fi 573 if test "x$HAVE_LIBSNDFILE0" = xyes ; then574 AC_MSG_RESULT([575 Development files missing: Your system appears to have an old576 version of libsndfile (below 1.0.0) installed.577 ])578 fi579 534 580 535 if test "x$HAVE_ALSA" = xmaybe ; then … … 669 624 intl/Makefile 670 625 po/Makefile.in 626 doc/sweep.1 671 627 ]) 672 628 … … 679 635 ** Experimental code: ....... ${ac_enable_experimental} 680 636 ** Audio device handling: ... $sweep_config_driver 681 ** PCM: libsndfile version .. $LIBSNDFILE_VERSION637 ** PCM: libsndfile .......... $HAVE_LIBSNDFILE1 682 638 ** Ogg Vorbis support: ...... $HAVE_VORBIS 683 639 ** MPEG (MP3) loading: ...... $HAVE_MAD sweep/branches/sweep-jack-testing/doc/Makefile.am
r85 r505 3 3 man_MANS = sweep.1 4 4 5 EXTRA_DIST = $(man_MANS) plugin_writers_guide.txt5 EXTRA_DIST = $(man_MANS) sweep.1.in plugin_writers_guide.txt 6 6 sweep/branches/sweep-jack-testing/include/sweep/sweep_selection.h
r124 r505 24 24 sw_sel * 25 25 sel_new (sw_framecount_t start, sw_framecount_t end); 26 27 void 28 sel_free (sw_sel * sel); 26 29 27 30 sw_sel * sweep/branches/sweep-jack-testing/include/sweep/sweep_types.h
r124 r505 112 112 113 113 gpointer data; 114 114 GMutex * data_mutex; /* Mutex for access to sample data */ 115 115 116 GList * sels; /* selection: list of sw_sels */ 116 117 GMutex * sels_mutex; /* Mutex for access to sels */ sweep/branches/sweep-jack-testing/intl/localcharset.c
r183 r505 327 327 328 328 /* Woe32 has a function returning the locale's codepage as a number. */ 329 s printf (buf, "CP%u", GetACP ());329 snprintf (buf, sizeof (buf), "CP%u", GetACP ()); 330 330 codeset = buf; 331 331 … … 378 378 else 379 379 { 380 s printf (buf, "CP%u", cp[0]);380 snprintf (buf, sizeof (buf), "CP%u", cp[0]); 381 381 codeset = buf; 382 382 } sweep/branches/sweep-jack-testing/intl/printf.c
r183 r505 126 126 va_start (args, format); 127 127 retval = libintl_vprintf (format, args); 128 va_end (args);129 return retval;130 }131 132 DLL_EXPORTED133 int134 libintl_vsprintf (char *resultbuf, const char *format, va_list args)135 {136 if (strchr (format, '$') == NULL)137 return vsprintf (resultbuf, format, args);138 else139 {140 size_t length = (size_t) ~0 / (4 * sizeof (char));141 char *result = libintl_vasnprintf (resultbuf, &length, format, args);142 if (result != resultbuf)143 {144 free (result);145 return -1;146 }147 else148 return length;149 }150 }151 152 DLL_EXPORTED153 int154 libintl_sprintf (char *resultbuf, const char *format, ...)155 {156 va_list args;157 int retval;158 159 va_start (args, format);160 retval = libintl_vsprintf (resultbuf, format, args);161 128 va_end (args); 162 129 return retval; sweep/branches/sweep-jack-testing/intl/vasnprintf.c
r183 r505 1 /* v sprintf with automatic memory allocation.1 /* vasnprintf with automatic memory allocation. 2 2 Copyright (C) 1999, 2002-2005 Free Software Foundation, Inc. 3 3 … … 38 38 #endif 39 39 40 #include <stdio.h> /* snprintf() , sprintf()*/40 #include <stdio.h> /* snprintf() */ 41 41 #include <stdlib.h> /* abort(), malloc(), realloc(), free() */ 42 42 #include <string.h> /* memcpy(), strlen() */ … … 149 149 150 150 /* Allocate a small buffer that will hold a directive passed to 151 s printf or snprintf. */151 snprintf. */ 152 152 buf_neededlength = 153 153 xsum4 (7, d.max_width_length, d.max_precision_length, 6); … … 272 272 unsigned int prefix_count; 273 273 int prefixes[2]; 274 #if !USE_SNPRINTF 275 size_t tmp_length; 276 CHAR_T tmpbuf[700]; 277 CHAR_T *tmp; 278 279 /* Allocate a temporary buffer of sufficient size for calling 280 sprintf. */ 281 { 282 size_t width; 283 size_t precision; 284 285 width = 0; 286 if (dp->width_start != dp->width_end) 287 { 288 if (dp->width_arg_index != ARG_NONE) 289 { 290 int arg; 291 292 if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) 293 abort (); 294 arg = a.arg[dp->width_arg_index].a.a_int; 295 width = (arg < 0 ? (unsigned int) (-arg) : arg); 296 } 297 else 298 { 299 const CHAR_T *digitp = dp->width_start; 300 301 do 302 width = xsum (xtimes (width, 10), *digitp++ - '0'); 303 while (digitp != dp->width_end); 304 } 305 } 306 307 precision = 6; 308 if (dp->precision_start != dp->precision_end) 309 { 310 if (dp->precision_arg_index != ARG_NONE) 311 { 312 int arg; 313 314 if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) 315 abort (); 316 arg = a.arg[dp->precision_arg_index].a.a_int; 317 precision = (arg < 0 ? 0 : arg); 318 } 319 else 320 { 321 const CHAR_T *digitp = dp->precision_start + 1; 322 323 precision = 0; 324 while (digitp != dp->precision_end) 325 precision = xsum (xtimes (precision, 10), *digitp++ - '0'); 326 } 327 } 328 329 switch (dp->conversion) 330 { 331 332 case 'd': case 'i': case 'u': 333 # ifdef HAVE_LONG_LONG 334 if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) 335 tmp_length = 336 (unsigned int) (sizeof (unsigned long long) * CHAR_BIT 337 * 0.30103 /* binary -> decimal */ 338 * 2 /* estimate for FLAG_GROUP */ 339 ) 340 + 1 /* turn floor into ceil */ 341 + 1; /* account for leading sign */ 342 else 343 # endif 344 if (type == TYPE_LONGINT || type == TYPE_ULONGINT) 345 tmp_length = 346 (unsigned int) (sizeof (unsigned long) * CHAR_BIT 347 * 0.30103 /* binary -> decimal */ 348 * 2 /* estimate for FLAG_GROUP */ 349 ) 350 + 1 /* turn floor into ceil */ 351 + 1; /* account for leading sign */ 352 else 353 tmp_length = 354 (unsigned int) (sizeof (unsigned int) * CHAR_BIT 355 * 0.30103 /* binary -> decimal */ 356 * 2 /* estimate for FLAG_GROUP */ 357 ) 358 + 1 /* turn floor into ceil */ 359 + 1; /* account for leading sign */ 360 break; 361 362 case 'o': 363 # ifdef HAVE_LONG_LONG 364 if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) 365 tmp_length = 366 (unsigned int) (sizeof (unsigned long long) * CHAR_BIT 367 * 0.333334 /* binary -> octal */ 368 ) 369 + 1 /* turn floor into ceil */ 370 + 1; /* account for leading sign */ 371 else 372 # endif 373 if (type == TYPE_LONGINT || type == TYPE_ULONGINT) 374 tmp_length = 375 (unsigned int) (sizeof (unsigned long) * CHAR_BIT 376 * 0.333334 /* binary -> octal */ 377 ) 378 + 1 /* turn floor into ceil */ 379 + 1; /* account for leading sign */ 380 else 381 tmp_length = 382 (unsigned int) (sizeof (unsigned int) * CHAR_BIT 383 * 0.333334 /* binary -> octal */ 384 ) 385 + 1 /* turn floor into ceil */ 386 + 1; /* account for leading sign */ 387 break; 388 389 case 'x': case 'X': 390 # ifdef HAVE_LONG_LONG 391 if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) 392 tmp_length = 393 (unsigned int) (sizeof (unsigned long long) * CHAR_BIT 394 * 0.25 /* binary -> hexadecimal */ 395 ) 396 + 1 /* turn floor into ceil */ 397 + 2; /* account for leading sign or alternate form */ 398 else 399 # endif 400 if (type == TYPE_LONGINT || type == TYPE_ULONGINT) 401 tmp_length = 402 (unsigned int) (sizeof (unsigned long) * CHAR_BIT 403 * 0.25 /* binary -> hexadecimal */ 404 ) 405 + 1 /* turn floor into ceil */ 406 + 2; /* account for leading sign or alternate form */ 407 else 408 tmp_length = 409 (unsigned int) (sizeof (unsigned int) * CHAR_BIT 410 * 0.25 /* binary -> hexadecimal */ 411 ) 412 + 1 /* turn floor into ceil */ 413 + 2; /* account for leading sign or alternate form */ 414 break; 415 416 case 'f': case 'F': 417 # ifdef HAVE_LONG_DOUBLE 418 if (type == TYPE_LONGDOUBLE) 419 tmp_length = 420 (unsigned int) (LDBL_MAX_EXP 421 * 0.30103 /* binary -> decimal */ 422 * 2 /* estimate for FLAG_GROUP */ 423 ) 424 + 1 /* turn floor into ceil */ 425 + 10; /* sign, decimal point etc. */ 426 else 427 # endif 428 tmp_length = 429 (unsigned int) (DBL_MAX_EXP 430 * 0.30103 /* binary -> decimal */ 431 * 2 /* estimate for FLAG_GROUP */ 432 ) 433 + 1 /* turn floor into ceil */ 434 + 10; /* sign, decimal point etc. */ 435 tmp_length = xsum (tmp_length, precision); 436 break; 437 438 case 'e': case 'E': case 'g': case 'G': 439 case 'a': case 'A': 440 tmp_length = 441 12; /* sign, decimal point, exponent etc. */ 442 tmp_length = xsum (tmp_length, precision); 443 break; 444 445 case 'c': 446 # if defined HAVE_WINT_T && !WIDE_CHAR_VERSION 447 if (type == TYPE_WIDE_CHAR) 448 tmp_length = MB_CUR_MAX; 449 else 450 # endif 451 tmp_length = 1; 452 break; 453 454 case 's': 455 # ifdef HAVE_WCHAR_T 456 if (type == TYPE_WIDE_STRING) 457 { 458 tmp_length = 459 local_wcslen (a.arg[dp->arg_index].a.a_wide_string); 460 461 # if !WIDE_CHAR_VERSION 462 tmp_length = xtimes (tmp_length, MB_CUR_MAX); 463 # endif 464 } 465 else 466 # endif 467 tmp_length = strlen (a.arg[dp->arg_index].a.a_string); 468 break; 469 470 case 'p': 471 tmp_length = 472 (unsigned int) (sizeof (void *) * CHAR_BIT 473 * 0.25 /* binary -> hexadecimal */ 474 ) 475 + 1 /* turn floor into ceil */ 476 + 2; /* account for leading 0x */ 477 break; 478 479 default: 480 abort (); 481 } 482 483 if (tmp_length < width) 484 tmp_length = width; 485 486 tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ 487 } 488 489 if (tmp_length <= sizeof (tmpbuf) / sizeof (CHAR_T)) 490 tmp = tmpbuf; 491 else 492 { 493 size_t tmp_memsize = xtimes (tmp_length, sizeof (CHAR_T)); 494 495 if (size_overflow_p (tmp_memsize)) 496 /* Overflow, would lead to out of memory. */ 497 goto out_of_memory; 498 tmp = (CHAR_T *) malloc (tmp_memsize); 499 if (tmp == NULL) 500 /* Out of memory. */ 501 goto out_of_memory; 502 } 503 #endif 504 505 /* Construct the format string for calling snprintf or 506 sprintf. */ 274 275 /* Construct the format string for calling snprintf. */ 507 276 p = buf; 508 277 *p++ = '%'; … … 567 336 #endif 568 337 569 /* Construct the arguments for calling snprintf or sprintf. */338 /* Construct the arguments for calling snprintf. */ 570 339 prefix_count = 0; 571 340 if (dp->width_arg_index != ARG_NONE) … … 615 384 prefixes[0], prefixes[1], arg, \ 616 385 &count); \ 617 break; \618 default: \619 abort (); \620 }621 #else622 # define SNPRINTF_BUF(arg) \623 switch (prefix_count) \624 { \625 case 0: \626 count = sprintf (tmp, buf, arg); \627 break; \628 case 1: \629 count = sprintf (tmp, buf, prefixes[0], arg); \630 break; \631 case 2: \632 count = sprintf (tmp, buf, prefixes[0], prefixes[1],\633 arg); \634 386 break; \ 635 387 default: \ … … 835 587 } 836 588 837 #if USE_SNPRINTF838 /* The snprintf() result did fit. */839 #else840 /* Append the sprintf() result. */841 memcpy (result + length, tmp, count * sizeof (CHAR_T));842 if (tmp != tmpbuf)843 free (tmp);844 #endif845 846 589 length += count; 847 590 break; sweep/branches/sweep-jack-testing/m4/speex.m4
r148 r505 8 8 dnl Test for libspeex, and define SPEEX_CFLAGS and SPEEX_LIBS 9 9 dnl 10 AC_DEFUN( XIPH_PATH_SPEEX,10 AC_DEFUN([XIPH_PATH_SPEEX], 11 11 [dnl 12 12 dnl Get the cflags and libraries sweep/branches/sweep-jack-testing/plugins/byenergy/Makefile.am
r355 r505 15 15 mkdir -p $(DESTDIR)/$(libdir) 16 16 $(INSTALL_PROGRAM) .libs/libbyenergy.so $(DESTDIR)/$(libdir); 17 18 uninstall: 19 rm -f $(DESTDIR)/$(libdir)/libbyenergy.so sweep/branches/sweep-jack-testing/plugins/echo/Makefile.am
r355 r505 15 15 mkdir -p $(DESTDIR)/$(libdir) 16 16 $(INSTALL_PROGRAM) .libs/libecho.so $(DESTDIR)/$(libdir); 17 18 uninstall: 19 rm -f $(DESTDIR)/$(libdir)/libecho.so sweep/branches/sweep-jack-testing/plugins/fade/Makefile.am
r355 r505 14 14 mkdir -p $(DESTDIR)/$(libdir) 15 15 $(INSTALL_PROGRAM) .libs/libfade.so $(DESTDIR)/$(libdir); 16 17 uninstall: 18 rm -f $(DESTDIR)/$(libdir)/libfade.so 19 sweep/branches/sweep-jack-testing/plugins/ladspa/Makefile.am
r355 r505 15 15 mkdir -p $(DESTDIR)/$(libdir) 16 16 $(INSTALL_PROGRAM) .libs/libladspameta.so $(DESTDIR)/$(libdir); 17 18 uninstall: 19 rm -f $(DESTDIR)/$(libdir)/libladspameta.so sweep/branches/sweep-jack-testing/plugins/normalise/Makefile.am
r355 r505 14 14 mkdir -p $(DESTDIR)/$(libdir) 15 15 $(INSTALL_PROGRAM) .libs/libnormalise.so $(DESTDIR)/$(libdir); 16 17 uninstall: 18 rm -f $(DESTDIR)/$(libdir)/libnormalise.so sweep/branches/sweep-jack-testing/plugins/reverse/Makefile.am
r355 r505 15 15 mkdir -p $(DESTDIR)/$(libdir) 16 16 $(INSTALL_PROGRAM) .libs/libreverse.so $(DESTDIR)/$(libdir); 17 18 uninstall: 19 rm -f $(DESTDIR)/$(libdir)/libreverse.so sweep/branches/sweep-jack-testing/src/Makefile.am
r356 r505 37 37 file_dialogs.c file_dialogs.h \ 38 38 file_sndfile.h \ 39 file_sndfile0.c \40 39 file_sndfile1.c \ 41 40 file_mad.c \ sweep/branches/sweep-jack-testing/src/about_dialog.c
r355 r505 85 85 gtk_box_pack_start(GTK_BOX(vbox), about_ebox, TRUE, TRUE, 0); 86 86 gtk_widget_show(about_ebox); 87 s printf(buf2, "%s/sweep_splash.png", PACKAGE_DATA_DIR);87 snprintf(buf2, sizeof (buf2), "%s/sweep_splash.png", PACKAGE_DATA_DIR); 88 88 about_image = gtk_image_new_from_file (buf2); 89 89 gtk_container_add(GTK_CONTAINER(about_ebox), about_image); sweep/branches/sweep-jack-testing/src/cursors.c
r124 r505 41 41 #include "../pixmaps/zoom_out.xbm" 42 42 #include "../pixmaps/zoom_out_mask.xbm" 43 #include "../pixmaps/cursor-openhand.xbm" 44 #include "../pixmaps/cursor-openhand_mask.xbm" 45 #include "../pixmaps/cursor-closedhand.xbm" 46 #include "../pixmaps/cursor-closedhand_mask.xbm" 43 47 44 48 GdkCursor * sweep_cursors[SWEEP_CURSOR_MAX]; … … 101 105 sweep_cursors[SWEEP_CURSOR_NOISE] = gdk_cursor_new (GDK_SPRAYCAN); 102 106 107 103 108 create_bitmap_and_mask_from_xpm (&bitmap, &mask, horiz_xpm); 104 109 105 110 sweep_cursors[SWEEP_CURSOR_HORIZ] = 106 111 gdk_cursor_new_from_pixmap (bitmap, mask, &white, &black, 8, 8); 112 107 113 108 114 create_bitmap_and_mask_from_xpm (&bitmap, &mask, horiz_plus_xpm); … … 111 117 gdk_cursor_new_from_pixmap (bitmap, mask, &white, &black, 8, 8); 112 118 119 113 120 create_bitmap_and_mask_from_xpm (&bitmap, &mask, horiz_minus_xpm); 114 121 115 122 sweep_cursors[SWEEP_CURSOR_HORIZ_MINUS] = 116 123 gdk_cursor_new_from_pixmap (bitmap, mask, &white, &black, 8, 8); 124 117 125 118 126 bitmap = … … 139 147 140 148 bitmap = 141 gdk_bitmap_create_from_data (NULL, needle_bits,149 gdk_bitmap_create_from_data (NULL, (const gchar *) needle_bits, 142 150 needle_width, needle_height); 143 151 mask = 144 gdk_bitmap_create_from_data (NULL, needle_mask_bits,152 gdk_bitmap_create_from_data (NULL, (const gchar *) needle_mask_bits, 145 153 needle_mask_width, needle_mask_height); 146 154 … … 151 159 152 160 bitmap = 153 gdk_bitmap_create_from_data (NULL, hand_bits,161 gdk_bitmap_create_from_data (NULL, (const gchar *) hand_bits, 154 162 hand_width, hand_height); 155 163 mask = 156 gdk_bitmap_create_from_data (NULL, hand_mask_bits,164 gdk_bitmap_create_from_data (NULL, (const gchar *) hand_mask_bits, 157 165 hand_mask_width, hand_mask_height); 158 166 … … 162 170 163 171 172 bitmap = 173 gdk_bitmap_create_from_data (NULL, (const gchar *) cursor_openhand_bits, 174 cursor_openhand_width, cursor_openhand_height); 175 mask = 176 gdk_bitmap_create_from_data (NULL, (const gchar *) cursor_openhand_mask_bits, 177 cursor_openhand_mask_width, cursor_openhand_mask_height); 178 179 sweep_cursors[SWEEP_CURSOR_HAND_OPEN] = 180 gdk_cursor_new_from_pixmap (bitmap, mask, &black, &white, 181 cursor_openhand_x_hot, cursor_openhand_y_hot); 182 183 184 bitmap = 185 gdk_bitmap_create_from_data (NULL, (const gchar *) cursor_closedhand_bits, 186 cursor_closedhand_width, cursor_closedhand_height); 187 mask = 188 gdk_bitmap_create_from_data (NULL, (const gchar *) cursor_closedhand_mask_bits, 189 cursor_closedhand_mask_width, cursor_closedhand_mask_height); 190 191 sweep_cursors[SWEEP_CURSOR_HAND_CLOSE] = 192 gdk_cursor_new_from_pixmap (bitmap, mask, &black, &white, 193 cursor_closedhand_x_hot, cursor_closedhand_y_hot); 194 195 164 196 } sweep/branches/sweep-jack-testing/src/cursors.h
r124 r505 33 33 SWEEP_CURSOR_PENCIL, 34 34 SWEEP_CURSOR_NOISE, 35 SWEEP_CURSOR_HAND_OPEN, 36 SWEEP_CURSOR_HAND_CLOSE, 35 37 SWEEP_CURSOR_MAX 36 38 }; sweep/branches/sweep-jack-testing/src/driver.c
r367 r505 97 97 char * main_dev; 98 98 99 main_dev = prefs_get_string ( DEV_KEY);99 main_dev = prefs_get_string (pref->primary_device_key); 100 100 101 101 if (main_dev == NULL) return pcmio_get_default_main_dev(); … … 109 109 char * monitor_dev; 110 110 111 monitor_dev = prefs_get_string ( MONITOR_DEV_KEY);111 monitor_dev = prefs_get_string (pref->monitor_device_key); 112 112 113 113 if (monitor_dev == NULL) return pcmio_get_default_monitor_dev (); … … 132 132 int * log_frags; 133 133 134 log_frags = prefs_get_int (LOG_FRAGS_KEY); 135 134 log_frags = prefs_get_int (pref->log_frags_key); 136 135 if (log_frags == NULL) return DEFAULT_LOG_FRAGS; 137 136 else return (*log_frags); … … 165 164 adj = g_object_get_data (G_OBJECT(dialog), "buff_adj"); 166 165 167 prefs_set_int ( LOG_FRAGS_KEY, adj->value);166 prefs_set_int (pref->log_frags_key, adj->value); 168 167 169 168 main_dev = 170 169 gtk_entry_get_text (GTK_ENTRY(GTK_COMBO(main_combo)->entry)); 171 170 172 prefs_set_string ( DEV_KEY, (gchar *)main_dev);171 prefs_set_string (pref->primary_device_key, (gchar *)main_dev); 173 172 174 173 if (monitor_checked (dialog)) { 175 174 monitor_dev = 176 175 gtk_entry_get_text (GTK_ENTRY(GTK_COMBO(monitor_combo)->entry)); 177 prefs_set_string ( MONITOR_DEV_KEY, (gchar *)monitor_dev);176 prefs_set_string (pref->monitor_device_key, (gchar *)monitor_dev); 178 177 179 178 prefs_set_int (USE_MONITOR_KEY, 1); … … 671 670 if (pref->startup) 672 671 return pref->startup(); 672 else 673 return 1; 673 674 } 674 675 … … 765 766 play_mutex = g_mutex_new (); 766 767 767 pref->startup();768 device_startup(); 768 769 769 }770 } sweep/branches/sweep-jack-testing/src/driver.h
r367 r505 53 53 void (*drain) (sw_handle * handle); 54 54 void (*close) (sw_handle * handle); 55 //GtkWidget (*preferences_dialog) (void); 55 56 char * primary_device_key; 57 char * monitor_device_key; 58 char * log_frags_key; 56 59 }; 57 60 sweep/branches/sweep-jack-testing/src/driver_alsa.c
r367 r505 287 287 handle->driver_rate = r; 288 288 handle->driver_channels = c; 289 290 if (c < 1) { 291 fprintf (stderr, "sweep: alsa_setup: alsa says channels == %i\n", c); 292 return; 293 } 289 294 } 290 295 … … 316 321 int err; 317 322 318 uframes = count / handle->driver_channels;323 uframes = handle->driver_channels > 0 ? count / handle->driver_channels : 0; 319 324 320 325 err = snd_pcm_readi (pcm_handle, buf, uframes); … … 357 362 /*printf ("sweep: alsa_write \n");*/ 358 363 359 uframes = count / handle->driver_channels;364 uframes = handle->driver_channels > 0 ? count / handle->driver_channels : 0; 360 365 //printf ("sweep: alsa_write 1\n"); 361 366 … … 453 458 alsa_device_flush, 454 459 alsa_device_drain, 455 alsa_device_close 460 alsa_device_close, 461 "alsa_primary_device", 462 "alsa_monitor_device", 463 "alsa_log_frags" 456 464 }; 457 465 sweep/branches/sweep-jack-testing/src/driver_oss.c
r367 r505 446 446 drain_dev_dsp, 447 447 close_dev_dsp, 448 "oss_primary_device", 449 "oss_monitor_device", 450 "oss_log_frags" 448 451 }; 449 452 sweep/branches/sweep-jack-testing/src/driver_solaris.c
r367 r505 126 126 drain_dev_audio, 127 127 close_dev_audio, 128 "solaris_primary_device", 129 "solaris_monitor_device", 130 "solaris_log_frags" 128 131 }; 129 132 sweep/branches/sweep-jack-testing/src/file_dialogs.c
r286 r505 279 279 sample_load_ok_cb(GtkWidget * widget, gpointer data) 280 280 { 281 gchar *dir; 282 283 dir = (gchar *)gtk_file_selection_get_filename(GTK_FILE_SELECTION(data)); 284 285 sample_load(dir); 281 gchar **dir; 282 gint i; 283 284 dir = (gchar **)gtk_file_selection_get_selections(GTK_FILE_SELECTION(data)); 285 for( i = 0; dir[i]; i++) 286 { 287 sample_load(dir[i]); 288 } 286 289 287 290 gtk_widget_destroy(GTK_WIDGET(data)); … … 305 308 306 309 filesel = gtk_file_selection_new(_("Sweep: Load file")); 310 gtk_file_selection_set_select_multiple(GTK_FILE_SELECTION(filesel), TRUE); 307 311 sweep_set_window_icon (GTK_WINDOW(filesel)); 308 312 gtk_window_set_position (GTK_WINDOW (filesel), GTK_WIN_POS_CENTER); sweep/branches/sweep-jack-testing/src/file_mad.c
r355 r505 230 230 231 231 if (info->nr_frames > sample->sounddata->nr_frames) { 232 sample->sounddata->data = 233 g_realloc (sample->sounddata->data, 232 g_mutex_lock(sample->sounddata->data_mutex); 233 234 sample->sounddata->data = g_realloc(sample->sounddata->data, 234 235 frames_to_bytes (sample->sounddata->format, 235 236 info->nr_frames)); 237 g_mutex_unlock(sample->sounddata->data_mutex); 238 236 239 } 237 240 sweep/branches/sweep-jack-testing/src/file_speex.c
r355 r505 289 289 speex_decoder_ctl(st, SPEEX_SET_HANDLER, &callback); 290 290 } 291 if ( !*rate)291 if (*rate==-1) 292 292 *rate = header->rate; 293 293 /* Adjust rate if --force-* options are used */ … … 344 344 SpeexBits bits; 345 345 int frame_size = 0; 346 int rate ;346 int rate = -1; 347 347 int channels = -1; 348 348 int extra_headers; … … 797 797 798 798 { 799 longbytes = op.bytes;799 int bytes = op.bytes; 800 800 op.packet = (unsigned char *) 801 801 speex_header_to_packet (&header, &bytes); sweep/branches/sweep-jack-testing/src/interface.c
r279 r505 53 53 54 54 55 55 void init_accels (void) 56 { 57 gchar * accels_path; 58 59 accels_path = (char *)g_get_home_dir (); 60 accels_path = g_strconcat (accels_path, "/.sweep/keybindings", NULL); 61 gtk_accel_map_load (accels_path); 62 63 } 64 65 void save_accels (void) 66 { 67 gchar * accels_path; 68 69 accels_path = (char *)g_get_home_dir (); 70 accels_path = g_strconcat (accels_path, "/.sweep/keybindings", NULL); 71 gtk_accel_map_save (accels_path); 72 73 } 56 74 57 75 sweep/branches/sweep-jack-testing/src/interface.h
r279 r505 54 54 void 55 55 attach_window_close_accel(GtkWindow *window); 56 void 57 init_accels (void); 58 59 void 60 save_accels (void); 56 61 57 62 #endif /* __INTERFACE_H__ */ sweep/branches/sweep-jack-testing/src/main.c
r230 r505 46 46 47 47 extern void sweep_timeouts_init (void); 48 48 extern gboolean ignore_failed_tdb_lock; 49 49 /* 50 50 * initial_sample_load () … … 162 162 show_version = TRUE; 163 163 argv[i] = NULL; 164 } else if ((strcmp (argv[i], "--ignore-failed-lock") == 0)) { 165 ignore_failed_tdb_lock = TRUE; 166 argv[i] = NULL; 164 167 #if 0 165 168 } else if (strcmp (argv[i], "--no-toolbox") == 0) { … … 195 198 g_print (_(" -v --version Output version info.\n")); 196 199 g_print (_(" --display <display> Use the designated X display.\n")); 200 g_print (_(" --ignore-failed-lock Continue when attempt to lock the\n" 201 " preferences file fails. For use when\n" 202 " the users home directory is on an NFS\n" 203 " file system. (possibly unsafe) \n" )); 204 197 205 #if 0 198 206 g_print (_(" --no-toolbox Do not show the toolbox window.\n")); … … 210 218 g_idle_add ((GSourceFunc)initial_sample_ask, NULL); 211 219 } 212 220 213 221 /* initialise preferences */ 214 222 prefs_init (); … … 222 230 /* initialise styles */ 223 231 init_styles (); 232 233 /* initialise key bindings (accelerators) */ 234 init_accels (); 224 235 225 236 /* initialise devices */ … … 236 247 #endif 237 248 249 250 238 251 gtk_main (); 252 239 253 240 254 /* close preferences database */ 241 255 prefs_close (); 256 257 /* save key bindings */ 258 save_accels (); 242 259 243 260 exit (0); 244 261 } 245 sweep/branches/sweep-jack-testing/src/notes.c
r290 r505 52 52 float pitch; 53 53 guint accel_key; 54 char accel_basename [4]; 54 55 }; 55 56 … … 58 59 static sw_noteplay notes [] = 59 60 { 60 { N_("C3") , 0.500000, GDK_z },61 { N_("C#3"), 0.529732, GDK_s },62 { N_("D3") , 0.561231, GDK_x },63 { N_("Eb3"), 0.594604, GDK_d },64 { N_("E3") , 0.629961, GDK_c },65 { N_("F3") , 0.667420, GDK_v },66 { N_("F#3"), 0.707107, GDK_g },67 { N_("G3") , 0.749154, GDK_b },68 { N_("G#3"), 0.793701, GDK_h },69 { N_("A3") , 0.840896, GDK_n },70 { N_("Bb3"), 0.890899, GDK_j },71 { N_("B3") , 0.943874, GDK_m },61 { N_("C3") , 0.500000, GDK_z, "C3" }, 62 { N_("C#3"), 0.529732, GDK_s, "C#3"}, 63 { N_("D3") , 0.561231, GDK_x, "D3" }, 64 { N_("Eb3"), 0.594604, GDK_d, "Eb3"}, 65 { N_("E3") , 0.629961, GDK_c, "E3" }, 66 { N_("F3") , 0.667420, GDK_v, "F3" }, 67 { N_("F#3"), 0.707107, GDK_g, "F#3"}, 68 { N_("G3") , 0.749154, GDK_b, "G3" }, 69 { N_("G#3"), 0.793701, GDK_h, "G#3"}, 70 { N_("A3") , 0.840896, GDK_n, "A3" }, 71 { N_("Bb3"), 0.890899, GDK_j, "Bb3"}, 72 { N_("B3") , 0.943874, GDK_m, "B3" }, 72 73 73 { N_("C4") , 1.000000, GDK_q },74 { N_("C4") , 1.000000, GDK_q, "C4" }, 74 75 75 { N_("C#4"), 1.059463, GDK_2 },76 { N_("D4") , 1.122462, GDK_w },77 { N_("Eb4"), 1.189207, GDK_3 },78 { N_("E4") , 1.259921, GDK_e },79 { N_("F4") , 1.334840, GDK_r },80 { N_("F#4"), 1.414214, GDK_5 },81 { N_("G4") , 1.498307, GDK_t },82 { N_("G#4"), 1.587401, GDK_6 },83 { N_("A4") , 1.681793, GDK_y },84 { N_("Bb4"), 1.781797, GDK_7 },85 { N_("B4") , 1.887749, GDK_u },76 { N_("C#4"), 1.059463, GDK_2, "C#4"}, 77 { N_("D4") , 1.122462, GDK_w, "D4" }, 78 { N_("Eb4"), 1.189207, GDK_3, "Eb4"}, 79 { N_("E4") , 1.259921, GDK_e, "E4" }, 80 { N_("F4") , 1.334840, GDK_r, "F4" }, 81 { N_("F#4"), 1.414214, GDK_5, "F#4"}, 82 { N_("G4") , 1.498307, GDK_t, "G4" }, 83 { N_("G#4"), 1.587401, GDK_6, "G#4"}, 84 { N_("A4") , 1.681793, GDK_y, "A4" }, 85 { N_("Bb4"), 1.781797, GDK_7, "Bb4"}, 86 { N_("B4") , 1.887749, GDK_u, "B4" }, 86 87 87 { N_("C5") , 2.000000, GDK_i },88 { N_("C#5"), 2.118926, GDK_9 },89 { N_("D5") , 2.244924, GDK_o },90 { N_("D#5"), 2.378414, GDK_0 },91 { N_("E5") , 2.519842, GDK_p },88 { N_("C5") , 2.000000, GDK_i, "C5" }, 89 { N_("C#5"), 2.118926, GDK_9, "C#5"}, 90 { N_("D5") , 2.244924, GDK_o, "D5" }, 91 { N_("D#5"), 2.378414, GDK_0, "D#5"}, 92 { N_("E5") , 2.519842, GDK_p, "E5" }, 92 93 #if 0 93 { N_("F5") , 2.669680, GDK_bracketleft },94 { N_("F#5"), 2.828427, GDK_None },95 { N_("G5") , 2.996614, GDK_None },96 { N_("G#5"), 3.174802, GDK_None },97 { N_("A5") , 3.363586, GDK_None },98 { N_("Bb5"), 3.563595, GDK_None },99 { N_("B5") , 3.775497, GDK_None },94 { N_("F5") , 2.669680, GDK_bracketleft, "F5" }, 95 { N_("F#5"), 2.828427, GDK_None, "F#5" }, 96 { N_("G5") , 2.996614, GDK_None, "G5" }, 97 { N_("G#5"), 3.174802, GDK_None, "G#5" }, 98 { N_("A5") , 3.363586, GDK_None, "A5" }, 99 { N_("Bb5"), 3.563595, GDK_None, "Bb5" }, 100 { N_("B5") , 3.775497, GDK_None, "B5" }, 100 101 #endif 101 102 … … 109 110 GtkWidget *menuitem; 110 111 int k; 112 gchar * tmpchar; 111 113 112 114 for (k = 0 ; k < sizeof (notes) / sizeof (notes [0]) ; k++) { 113 115 menuitem = gtk_menu_item_new_with_label (_(notes [k].name)); 114 116 gtk_menu_append (GTK_MENU(subsubmenu), menuitem); 117 gtk_menu_set_accel_group(GTK_MENU(subsubmenu), accel_group); 115 118 g_signal_connect (G_OBJECT(menuitem), "activate", 116 119 G_CALLBACK(play_view_note_cb), view); 117 gtk_widget_show (menuitem); 118 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 119 notes [k].accel_key, 0, 120 GTK_ACCEL_VISIBLE); 120 tmpchar = g_strdup_printf("<Sweep-View>/Playback/Play Note/%s", 121 notes[k].accel_basename); 122 123 gtk_menu_item_set_accel_path (GTK_MENU_ITEM(menuitem), tmpchar); 124 gtk_accel_map_add_entry ( tmpchar, notes[k].accel_key, 0); 121 125 122 126 g_object_set_data (G_OBJECT(menuitem), "default", 123 127 GINT_TO_POINTER(k)); 128 gtk_widget_show (menuitem); 124 129 } 125 130 … … 150 155 151 156 } 152 sweep/branches/sweep-jack-testing/src/pcmio.h
r124 r505 24 24 #include <glib.h> 25 25 26 #define DEV_KEY "OSS_Device"27 #define MONITOR_DEV_KEY "OSS_MonitorDevice"28 #define LOG_FRAGS_KEY "OSS_Logfrags"29 30 26 #define USE_MONITOR_KEY "UseMonitor" 31 27 sweep/branches/sweep-jack-testing/src/play.c
r369 r505 86 86 static int pbuf_chans = 0, devbuf_chans = 0; 87 87 88 #ifdef DRIVER_JACK 88 89 extern jack_process_data_t *process_data; 89 90 #endif 90 91 /* 91 92 * update_playmarker () … … 191 192 p = po - (gdouble)si; 192 193 si *= f->channels; 194 g_mutex_lock(head->sample->sounddata->data_mutex); 193 195 194 196 if (interpolate) { 195 197 si_next = si+f->channels; 196 198 for (j = 0; j < f->channels; j++) { 197 buf[b] = head->gain * (d[si] * p + d[si_next] * (1 - p));199 buf[b] = head->gain * (((sw_audio_t *)head->sample->sounddata->data)[si] * p + ((sw_audio_t *)head->sample->sounddata->data)[si_next] * (1 - p)); 198 200 if (do_smoothing) { 199 201 sw_framecount_t b1, b2; … … 208 210 } else { 209 211 for (j = 0; j < f->channels; j++) { 210 buf[b] = head->gain * d[si];212 buf[b] = head->gain * ((sw_audio_t *)head->sample->sounddata->data)[si]; 211 213 if (do_smoothing) { 212 214 sw_framecount_t b1, b2; … … 220 222 } 221 223 } 224 g_mutex_unlock(head->sample->sounddata->data_mutex); 222 225 } 223 226 sweep/branches/sweep-jack-testing/src/play.h
r367 r505 24 24 #include "sweep_app.h" 25 25 #ifdef DRIVER_JACK 26 int 27 process_callback(jack_nframes_t nframes, void *data); 28 26 29 #include <jack/jack.h> 27 30 #endif … … 30 33 init_playback (void); 31 34 32 int 33 process_callback(jack_nframes_t nframes, void *data); 35 34 36 35 37 gboolean monitor_active(void); sweep/branches/sweep-jack-testing/src/preferences.c
r355 r505 40 40 41 41 static TDB_CONTEXT * prefs_tdb = NULL; 42 gboolean ignore_failed_tdb_lock = FALSE; 43 42 44 43 45 #define DIR_MODE (S_IRWXU) … … 110 112 111 113 if (prefs_tdb == NULL) { 112 perror (_("Error opening ~/.sweep/preferences.tdb")); 114 115 if (ignore_failed_tdb_lock == TRUE) 116 { 117 prefs_tdb = tdb_open (prefs_path, 0, TDB_NOLOCK, O_RDWR | O_CREAT, FILE_MODE); 118 if (prefs_tdb != NULL) { 119 fprintf(stderr, "Warning: couldn't get lock to ~/.sweep/preferences.tdb.\n" 120 " opened without locking\n"); 121 return; 122 } 123 } 124 perror (_("Error opening ~/.sweep/preferences.tdb")); 113 125 exit (1); 114 return;115 126 } 116 127 } sweep/branches/sweep-jack-testing/src/question_dialogs.c
r279 r505 136 136 gtk_widget_show (label); 137 137 138 /* New layout of buttons */ 139 140 gtk_button_box_set_layout (GTK_BUTTON_BOX(GTK_DIALOG(window)->action_area), GTK_BUTTONBOX_SPREAD); 141 138 142 /* OK */ 139 143 … … 142 146 GTK_WIDGET_SET_FLAGS (GTK_WIDGET (ok_button), GTK_CAN_DEFAULT); 143 147 gtk_box_pack_start (GTK_BOX (GTK_DIALOG(window)->action_area), 144 ok_button, FALSE, TRUE, 0);148 ok_button, TRUE, TRUE, 0); 145 149 g_object_set_data (G_OBJECT(ok_button), "default", ok_callback); 146 150 gtk_widget_show (ok_button); … … 156 160 GTK_WIDGET_SET_FLAGS (GTK_WIDGET (button), GTK_CAN_DEFAULT); 157 161 gtk_box_pack_start (GTK_BOX (GTK_DIALOG(window)->action_area), 158 button, FALSE, TRUE, 0);162 button, TRUE, TRUE, 0); 159 163 g_object_set_data (G_OBJECT(button), "default", no_callback); 160 164 gtk_widget_show (button); sweep/branches/sweep-jack-testing/src/record.c
r272 r505 435 435 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 436 436 sweep_set_window_icon (GTK_WINDOW(window)); 437 rec_dialog = window; 438 437 438 attach_window_close_accel(GTK_WINDOW(window)); 439 rec_dialog = window; 440 439 441 main_vbox = gtk_vbox_new (FALSE, 0); 440 442 gtk_container_add (GTK_CONTAINER(window), main_vbox); … … 450 452 g_signal_connect (G_OBJECT(rec_dialog), "destroy", 451 453 G_CALLBACK(rec_dialog_destroy), head); 452 /* FIXME: what's the equiv of gtk_accel_group_add 453 gtk_accel_group_add (accel_group, GDK_w, GDK_CONTROL_MASK, 0, 454 GTK_OBJECT(rec_dialog), "hide"); 455 */ 454 456 455 hbox = gtk_hbox_new (FALSE, 8); 457 456 gtk_box_pack_start (GTK_BOX(main_vbox), hbox, FALSE, TRUE, 8); sweep/branches/sweep-jack-testing/src/sample-display.c
r355 r505 112 112 #define MARCH_INTERVAL 300 113 113 #define PULSE_INTERVAL 450 114 #define HAND_SCROLL_INTERVAL 50 114 115 115 116 extern sw_view * last_tmp_view; … … 200 201 SELECTING_PENCIL, 201 202 SELECTING_NOISE, 203 SELECTING_HAND, 202 204 }; 203 205 … … 487 489 cursor = sweep_cursors[SWEEP_CURSOR_NOISE]; 488 490 break; 491 case TOOL_HAND: 492 cursor = sweep_cursors[SWEEP_CURSOR_HAND_OPEN]; 493 break; 489 494 default: 490 495 cursor = NULL; … … 634 639 s->height = h; 635 640 641 window = GTK_WIDGET(s)->window; 642 visual = gdk_rgb_get_visual(); 643 644 #if DOUBLE_BUFFER 636 645 if(s->backing_pixmap) { 637 646 g_object_unref(s->backing_pixmap); 638 647 } 639 window = GTK_WIDGET(s)->window;640 visual = gdk_rgb_get_visual();641 642 648 s->backing_pixmap = gdk_pixmap_new (GTK_WIDGET(s)->window, 643 649 w, h, visual->depth); 650 #endif 651 644 652 } 645 653 … … 1616 1624 1617 1625 return FALSE; 1626 } 1627 1628 static gint 1629 sample_display_hand_scroll (SampleDisplay * s) 1630 { 1631 gint new_win_start, win_length; 1632 gfloat step; 1633 1634 win_length = s->view->end - s->view->start; 1635 1636 step = win_length * 1.0 / s->width; 1637 1638 new_win_start = s->view->start + s->hand_scroll_delta * step; 1639 1640 new_win_start = CLAMP(new_win_start, 0, 1641 s->view->sample->sounddata->nr_frames - 1642 (s->view->end - s->view->start)); 1643 1644 if(new_win_start != s->view->start) { 1645 sample_display_set_window (s, 1646 new_win_start, 1647 new_win_start + win_length); 1648 } else { 1649 s->hand_scroll_delta = 0; 1650 } 1651 /* 1652 g_print ("s->delta: %i new_win_start: %i\n", s->hand_scroll_delta, new_win_start); 1653 */ 1654 s->hand_scroll_delta *= 0.98; 1655 1656 return (s->hand_scroll_delta != 0); 1618 1657 } 1619 1658 … … 1878 1917 1879 1918 static void 1919 sample_display_handle_hand_motion (SampleDisplay * s, int x, int y) 1920 { 1921 gdouble move, vstart, vend; 1922 gdouble step = (gdouble)(s->view->end - s->view->start) / ((gdouble)s->width); 1923 GtkAdjustment * adj = GTK_ADJUSTMENT(s->view->adj); 1924 gint delta; 1925 1926 delta = s->view->hand_offset - x; 1927 1928 s->hand_scroll_delta *= 0.9; 1929 1930 if (abs (delta) > abs (s->hand_scroll_delta)) 1931 s->hand_scroll_delta = delta; 1932 1933 if (s->view->hand_offset != x){ 1934 move = s->view->hand_offset - x; 1935 move *= step; 1936 1937 vstart = s->view->start + move; 1938 vend = s->view->end + move; 1939 1940 if (vstart < 0){ 1941 vstart = 0; 1942 vend = adj->page_size; 1943 } 1944 if (vend > s->view->sample->sounddata->nr_frames){ 1945 vstart = s->view->sample->sounddata->nr_frames - adj->page_size; 1946 vend = s->view->sample->sounddata->nr_frames; 1947 } 1948 1949 vstart = ceil(vstart + (move < 0 ? 0.5 : -0.5)); 1950 vend = ceil(vend + (move < 0 ? 0.5 : -0.5)); 1951 1952 if (s->view->start != vstart && s->view->end != vend) 1953 s->view->hand_offset = x; 1954 1955 s->view->start = vstart; 1956 s->view->end = vend; 1957 1958 view_refresh_display(s->view); 1959 1960 gtk_adjustment_set_value( GTK_ADJUSTMENT(s->view->adj), vstart); 1961 } 1962 } 1963 1964 static void 1880 1965 sample_display_handle_noise_motion (SampleDisplay * s, int x, int y) 1881 1966 { … … 2095 2180 gdk_window_get_pointer (event->window, &x, &y, &state); 2096 2181 sample_display_handle_playmarker_motion (s, x, y); 2097 } else if(s->selecting && event->button != last_button) { 2182 } else 2183 if(s->selecting && event->button != last_button) { 2098 2184 /* Cancel the current operation if a different button is pressed. */ 2099 2185 sample_display_clear_sel (s); 2100 } else if (last_tmp_view && last_tmp_view != s->view &&2101 event->button != last_button) {2186 } else 2187 if (last_tmp_view && last_tmp_view != s->view && event->button != last_button) { 2102 2188 view_clear_last_tmp_view (); 2103 2189 } else { … … 2159 2245 #endif 2160 2246 break; 2247 case TOOL_HAND: 2248 s->selecting = SELECTING_HAND; 2249 s->view->hand_offset = x; 2250 s->hand_scroll_delta = 0; 2251 if (s->hand_scroll_tag){ 2252 g_source_remove (s->hand_scroll_tag); 2253 s->hand_scroll_tag = 0; 2254 } 2255 SET_CURSOR(widget, HAND_CLOSE); 2256 sample_display_handle_hand_motion (s, x, y); 2257 break; 2161 2258 case TOOL_ZOOM: 2162 o = XPOS_TO_OFFSET(x);2163 view_center_on (s->view, o);2164 if (state & GDK_SHIFT_MASK) {2165 view_zoom_out (s->view, 2.0);2166 } else {2167 view_zoom_in (s->view, 2.0);2168 }2259 o = XPOS_TO_OFFSET(x); 2260 view_center_on (s->view, o); 2261 if (state & GDK_SHIFT_MASK) { 2262 view_zoom_out (s->view, 2.0); 2263 } else { 2264 view_zoom_in (s->view, 2.0); 2265 } 2169 2266 break; 2170 2267 case TOOL_PENCIL: … … 2295 2392 if (s->meta_down) return TRUE; 2296 2393 break; 2394 case TOOL_HAND: 2395 s->view->hand_offset = -1; 2396 2397 s->hand_scroll_tag = g_timeout_add (HAND_SCROLL_INTERVAL, 2398 (GSourceFunc)sample_display_hand_scroll, 2399 s); 2400 2401 break; 2297 2402 case TOOL_MOVE: 2298 2403 break; … … 2351 2456 sample_display_handle_playmarker_motion (s, x, y); 2352 2457 break; 2458 case SELECTING_HAND: 2459 sample_display_handle_hand_motion (s, x, y); 2460 break; 2353 2461 case SELECTING_PENCIL: 2354 2462 sample_display_handle_pencil_motion (s, x, y); … … 2867 2975 s->pulsing_tag = 0; 2868 2976 s->pulse = FALSE; 2977 s->hand_scroll_tag = 0; 2869 2978 s->mouse_x = 0; 2870 2979 s->mouse_offset = 0; sweep/branches/sweep-jack-testing/src/sample-display.h
r241 r505 90 90 gboolean pulse; 91 91 92 gint hand_scroll_tag; /* gtk_timeout tag for natural hand scrolling */ 93 gint hand_scroll_delta; /* natural hand scrolling */ 94 92 95 /* Window panning */ 93 96 int selecting_x0; /* the coordinate where the mouse was clicked */ sweep/branches/sweep-jack-testing/src/samplerate.c
r236 r505 296 296 } 297 297 298 static gboolean samplerate_dialog_delete_event_cb( GtkWidget *widget, 299 GdkEvent *event, 300 gpointer data ) 301 { 302 samplerate_dialog_cancel_cb(widget, data); 303 return FALSE; 304 } 305 298 306 static void 299 307 src_update_ok_button (GtkWidget * widget) … … 437 445 gtk_window_set_title (GTK_WINDOW(dialog), _("Sweep: Resample")); 438 446 gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); 447 448 g_signal_connect (G_OBJECT (dialog), "delete_event", G_CALLBACK (samplerate_dialog_delete_event_cb), sample); 439 449 440 450 main_vbox = GTK_DIALOG(dialog)->vbox; sweep/branches/sweep-jack-testing/src/sweep_app.h
r124 r505 45 45 TOOL_PENCIL, 46 46 TOOL_NOISE, 47 TOOL_HAND 47 48 } sw_tool_t; 48 49 … … 86 87 87 88 gboolean following; /* whether or not to follow playmarker */ 89 90 gint hand_offset; 88 91 89 92 GtkWidget * window; sweep/branches/sweep-jack-testing/src/sweep_selection.c
r124 r505 50 50 51 51 return sel; 52 } 53 54 void 55 sel_free (sw_sel * sel) 56 { 57 if (!sel) 58 return; 59 60 g_free(sel); 52 61 } 53 62 sweep/branches/sweep-jack-testing/src/sweep_sounddata.c
r124 r505 92 92 s->sels = NULL; 93 93 s->sels_mutex = g_mutex_new(); 94 s->data_mutex = g_mutex_new(); 94 95 95 96 return s; … … 99 100 sounddata_clear_selection (sw_sounddata * sounddata) 100 101 { 102 GList * gl; 103 sw_sel * sel; 104 105 for (gl = sounddata->sels; gl; gl = gl->next){ 106 sel = (sw_sel*)gl->data; 107 sel_free(sel); 108 } 109 101 110 g_list_free(sounddata->sels); 102 111 … … 120 129 sounddata_clear_selection (sounddata); 121 130 g_free (sounddata); 131 g_mutex_free(sounddata->data_mutex); 122 132 } 123 133 } … … 243 253 244 254 /* Clear the old selection */ 245 g_list_free (sounddata->sels);255 sounddata_clear_selection (sounddata); 246 256 247 257 /* Set the newly created (normalised) selection */ sweep/branches/sweep-jack-testing/src/tdb/tdb.h
r196 r505 150 150 int tdb_chainunlock(TDB_CONTEXT *tdb, TDB_DATA key); 151 151 152 int tdb_chainlock_read(TDB_CONTEXT *tdb, TDB_DATA key); 153 int tdb_chainunlock_read(TDB_CONTEXT *tdb, TDB_DATA key); 154 152 155 /* Debug functions. Not used in production. */ 153 156 void tdb_dump_all(TDB_CONTEXT *tdb); sweep/branches/sweep-jack-testing/src/time_ruler.c
r278 r505 179 179 gint ythickness; 180 180 gint length, ideal_length; 181 g floatlower, upper; /* Upper and lower limits, in ruler units */182 g floatincrement, abs_increment; /* Number of pixels per unit */181 gdouble lower, upper; /* Upper and lower limits, in ruler units */ 182 gdouble increment, abs_increment; /* Number of pixels per unit */ 183 183 gint scale; /* Number of units per major unit */ 184 g floatsubd_incr;185 g floatstart, end, cur;184 gdouble subd_incr; 185 gdouble start, end, cur; 186 186 #define UNIT_STR_LEN 32 187 187 gchar unit_str[UNIT_STR_LEN]; … … 236 236 return; 237 237 238 increment = (g float) width / (upper - lower);239 abs_increment = (g float) fabs((double)increment);238 increment = (gdouble) width / (upper - lower); 239 abs_increment = (gdouble) fabs((double)increment); 240 240 241 241 /* determine the scale … … 247 247 snprint_time (unit_str, UNIT_STR_LEN, (sw_time_t)scale); 248 248 /* snprint_time_smpte (unit_str, UNIT_STR_LEN, (sw_time_t)scale, 10.0);*/ 249 /* text_width = strlen (unit_str) * digit_height + 1;*/ 250 text_width = PANGO_PIXELS (ink_rect.width) + 2; 249 250 text_width = strlen (unit_str) * digit_height + 1; 251 251 252 for (scale = 0; scale < MAXIMUM_SCALES; scale++) 252 253 if (ruler_scale[scale] * abs_increment > 2 * text_width) … … 260 261 for (i = MAXIMUM_SUBDIVIDE - 1; i >= 0; i--) 261 262 { 262 subd_incr = (g float) ruler_scale[scale] /263 (g float) subdivide[i];263 subd_incr = (gdouble) ruler_scale[scale] / 264 (gdouble) subdivide[i]; 264 265 if (subd_incr * fabs(increment) <= MINIMUM_INCR) 265 266 continue; … … 292 293 pos, height - length + ythickness); 293 294 294 /* draw label */ 295 /* draw label */ 295 296 if (i == 0) 296 297 { sweep/branches/sweep-jack-testing/src/view.c
r285 r505 39 39 #include <sweep/sweep_typeconvert.h> 40 40 #include <sweep/sweep_sample.h> 41 #include <sweep/sweep_undo.h> 41 42 42 43 #include "view.h" … … 65 66 #define USER_GTKRC 66 67 67 /* #define SCROLL_SMOOTHLY*/68 /* #define SCROLL_SMOOTHLY */ 68 69 69 70 /* Default initial dimensions. … … 103 104 #endif 104 105 106 static GtkWidget * create_view_menu_item(GtkWidget * menu, gchar * label, gchar * accel_path, 107 sw_view *view,gpointer callback, gboolean nomodify, 108 guint accel_key, GdkModifierType accel_mods, gpointer user_data); 109 105 110 void 106 111 view_set_vzoom (sw_view * view, sw_audio_t low, sw_audio_t high); … … 176 181 G_CALLBACK(apply_procedure_cb), pi); 177 182 gtk_widget_show(menuitem); 178 179 if (accel_group && proc->accel_key) { 180 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 183 /* these accels are not editable */ 184 /* gtk_widget_add_accelerator (menuitem, "activate", accel_group, 181 185 proc->accel_key, proc->accel_mods, 182 GTK_ACCEL_VISIBLE); 183 } 184 186 GTK_ACCEL_VISIBLE); */ 185 187 } 186 188 … … 270 272 GList * gl; 271 273 int old_channels, channels; 274 GtkAccelGroup *accel_group; 272 275 273 276 channels = view->sample->sounddata->format->channels; … … 297 300 /* Create the new channelops submenu */ 298 301 submenu = gtk_menu_new (); 302 accel_group = GTK_ACCEL_GROUP(g_object_get_data(G_OBJECT(view->window), "accel_group")); 303 gtk_menu_set_accel_group (GTK_MENU (submenu), accel_group); 304 299 305 300 306 g_object_set_data (G_OBJECT(submenu), "default", GINT_TO_POINTER(channels)); 301 307 302 308 if (channels == 1) { 303 menuitem = gtk_menu_item_new_with_label(_("Duplicate to stereo")); 304 gtk_menu_append(GTK_MENU(submenu), menuitem); 305 g_signal_connect (G_OBJECT(menuitem), "activate", 306 G_CALLBACK(dup_stereo_cb), view); 307 gtk_widget_show(menuitem); 308 309 NOMODIFY(menuitem); 309 menuitem = create_view_menu_item (submenu, _("Duplicate to stereo"), 310 "<Sweep-View>/Sample/Channels/Duplicate to stereo", 311 view, 312 dup_stereo_cb, TRUE, 313 0, 0, view); 314 view->channelops_widgets = 315 g_list_append (view->channelops_widgets, menuitem); 316 317 menuitem = create_view_menu_item (submenu, _("Duplicate to multichannel"), 318 "<Sweep-View>/Channels/Duplicate to multichannel", 319 view, 320 dup_channels_dialog_new_cb, TRUE, 321 0, 0, view); 310 322 view->channelops_widgets = 311 323 g_list_append (view->channelops_widgets, menuitem); 312 313 menuitem = gtk_menu_item_new_with_label(_("Duplicate to multichannel")); 314 gtk_menu_append(GTK_MENU(submenu), menuitem); 315 g_signal_connect (G_OBJECT(menuitem), "activate", 316 G_CALLBACK(dup_channels_dialog_new_cb), view); 317 gtk_widget_show(menuitem); 318 319 NOMODIFY(menuitem); 324 325 } 326 327 if (channels == 2) { 328 329 menuitem = create_view_menu_item (submenu, _("Swap left and right"), 330 "<Sweep-View>/Sample/Channels/Swap left and right", 331 view, 332 stereo_swap_cb, TRUE, 333 0, 0, view); 320 334 view->channelops_widgets = 321 335 g_list_append (view->channelops_widgets, menuitem); 322 } 323 324 if (channels == 2) { 325 menuitem = gtk_menu_item_new_with_label(_("Swap left and right")); 326 gtk_menu_append(GTK_MENU(submenu), menuitem); 327 g_signal_connect (G_OBJECT(menuitem), "activate", 328 G_CALLBACK(stereo_swap_cb), view); 329 gtk_widget_show(menuitem); 330 331 NOMODIFY(menuitem); 336 337 338 menuitem = create_view_menu_item (submenu, _("Remove left channel"), 339 "<Sweep-View>/Sample/Channels/Remove left channel", 340 view, 341 remove_left_cb, TRUE, 342 0, 0, view); 332 343 view->channelops_widgets = 333 344 g_list_append (view->channelops_widgets, menuitem); 334 345 335 menuitem = gtk_menu_item_new_with_label(_("Remove left channel")); 336 gtk_menu_append(GTK_MENU(submenu), menuitem); 337 g_signal_connect (G_OBJECT(menuitem), "activate", 338 G_CALLBACK(remove_left_cb), view); 339 gtk_widget_show(menuitem); 340 341 NOMODIFY(menuitem); 346 347 menuitem = create_view_menu_item (submenu, _("Remove right channel"), 348 "<Sweep-View>/Sample/Channels/Remove right channel", 349 view, 350 remove_right_cb, TRUE, 351 0, 0, view); 342 352 view->channelops_widgets = 343 353 g_list_append (view->channelops_widgets, menuitem); 344 354 345 menuitem = gtk_menu_item_new_with_label(_("Remove right channel")); 346 gtk_menu_append(GTK_MENU(submenu), menuitem); 347 g_signal_connect (G_OBJECT(menuitem), "activate", 348 G_CALLBACK(remove_right_cb), view); 349 gtk_widget_show(menuitem); 350 351 NOMODIFY(menuitem); 355 } 356 357 if (channels > 1) { 358 359 menuitem = create_view_menu_item (submenu, _("Mix down to mono"), 360 "<Sweep-View>/Sample/Channels/Mix down to mono", 361 view, 362 mono_mixdown_cb, TRUE, 363 0, 0, view); 352 364 view->channelops_widgets = 353 365 g_list_append (view->channelops_widgets, menuitem); 354 355 } 356 357 if (channels > 1) { 358 menuitem = gtk_menu_item_new_with_label(_("Mix down to mono")); 359 gtk_menu_append(GTK_MENU(submenu), menuitem); 360 g_signal_connect (G_OBJECT(menuitem), "activate", 361 G_CALLBACK(mono_mixdown_cb), view); 362 gtk_widget_show(menuitem); 363 364 NOMODIFY(menuitem); 365 view->channelops_widgets = 366 g_list_append (view->channelops_widgets, menuitem); 367 } 368 369 menuitem = gtk_menu_item_new_with_label(_("Add/Remove channels")); 370 gtk_menu_append(GTK_MENU(submenu), menuitem); 371 g_signal_connect (G_OBJECT(menuitem), "activate", 372 G_CALLBACK(channels_dialog_new_cb), view); 373 gtk_widget_show(menuitem); 374 375 NOMODIFY(menuitem); 366 } 367 368 369 menuitem = create_view_menu_item (submenu, _("Add/Remove channels"), 370 "<Sweep-View>/Sample/Channels/Add/Remove channels", 371 view, 372 channels_dialog_new_cb, TRUE, 373 0, 0, view); 374 376 375 view->channelops_widgets = 377 376 g_list_append (view->channelops_widgets, menuitem); … … 386 385 } 387 386 387 /* 388 * Convenience function to Create and setup individual menuitems 389 */ 390 391 static GtkWidget * create_view_menu_item(GtkWidget * menu, gchar * label, gchar * accel_path, 392 sw_view *view,gpointer callback, gboolean nomodify, 393 guint accel_key, GdkModifierType accel_mods, gpointer user_data) 394 { 395 GtkWidget * menuitem; 396 397 menuitem = gtk_menu_item_new_with_label(label); 398 /* register accel path enabling runtime changes by the user */ 399 gtk_menu_item_set_accel_path (GTK_MENU_ITEM(menuitem), accel_path); 400 gtk_menu_append(GTK_MENU(menu), menuitem); 401 g_signal_connect (G_OBJECT(menuitem), "activate", 402 G_CALLBACK(callback), user_data); 403 404 /* register default key binding (if one is supplied */ 405 if (accel_key) 406 gtk_accel_map_add_entry (accel_path, accel_key, accel_mods); 407 408 if (nomodify) 409 NOMODIFY(menuitem); 410 411 gtk_widget_show(menuitem); 412 413 return menuitem; 414 } 388 415 389 416 /* … … 408 435 /* Create a GtkAccelGroup and add it to the window. */ 409 436 accel_group = gtk_accel_group_new(); 437 g_object_set_data(G_OBJECT(view->window), "accel_group", accel_group); 410 438 #if 0 411 439 if (GTK_IS_MENU(m)) … … 418 446 gtk_widget_show(menuitem); 419 447 submenu = gtk_menu_new(); 448 gtk_menu_set_accel_group (GTK_MENU (submenu), accel_group); 449 420 450 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); 421 451 422 menuitem = gtk_menu_item_new_with_label(_("New ...")); 423 gtk_menu_append(GTK_MENU(submenu), menuitem); 424 g_signal_connect (G_OBJECT(menuitem), "activate", 425 G_CALLBACK(sample_new_empty_cb), view); 426 gtk_widget_show(menuitem); 427 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 428 GDK_n, GDK_CONTROL_MASK, 429 GTK_ACCEL_VISIBLE); 430 431 menuitem = gtk_menu_item_new_with_label(_("Open ...")); 432 gtk_menu_append(GTK_MENU(submenu), menuitem); 433 g_signal_connect (G_OBJECT(menuitem), "activate", 434 G_CALLBACK(sample_load_cb), s); 435 gtk_widget_show(menuitem); 436 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 437 GDK_o, GDK_CONTROL_MASK, 438 GTK_ACCEL_VISIBLE); 439 440 menuitem = gtk_menu_item_new_with_label(_("Save")); 441 gtk_menu_append(GTK_MENU(submenu), menuitem); 442 g_signal_connect (G_OBJECT(menuitem), "activate", 443 G_CALLBACK(sample_save_cb), view); 444 gtk_widget_show(menuitem); 445 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 446 GDK_s, GDK_CONTROL_MASK, 447 GTK_ACCEL_VISIBLE); 448 449 NOMODIFY(menuitem); 450 451 menuitem = gtk_menu_item_new_with_label(_("Save As ...")); 452 gtk_menu_append(GTK_MENU(submenu), menuitem); 453 g_signal_connect (G_OBJECT(menuitem), "activate", 454 G_CALLBACK(sample_save_as_cb), view); 455 gtk_widget_show(menuitem); 456 457 NOMODIFY(menuitem); 458 459 menuitem = gtk_menu_item_new_with_label(_("Revert")); 460 gtk_menu_append(GTK_MENU(submenu), menuitem); 461 g_signal_connect (G_OBJECT(menuitem), "activate", 462 G_CALLBACK(sample_revert_cb), view); 463 gtk_widget_show(menuitem); 464 465 NOMODIFY(menuitem); 452 create_view_menu_item (submenu, _("New ..."), "<Sweep-View>/File/New ...", view, 453 sample_new_empty_cb, FALSE, 454 GDK_n, GDK_CONTROL_MASK, view); 455 456 create_view_menu_item (submenu, _("Open ..."), "<Sweep-View>/File/Open ...", view, 457 sample_load_cb, FALSE, 458 GDK_o, GDK_CONTROL_MASK, view); 459 460 create_view_menu_item (submenu, _("Save"), "<Sweep-View>/File/Save", view, 461 sample_save_cb, TRUE, 462 GDK_s, GDK_CONTROL_MASK, view); 463 464 create_view_menu_item (submenu, _("Save As ..."), "<Sweep-View>/File/Save As ...", view, 465 sample_save_as_cb, TRUE, 466 0, 0, view); 467 468 create_view_menu_item (submenu, _("Revert"), "<Sweep-View>/File/Revert", view, 469 sample_revert_cb, TRUE, 470 0, 0, view); 466 471 467 472 menuitem = gtk_menu_item_new(); /* Separator */ … … 469 474 gtk_widget_show(menuitem); 470 475 471 menuitem = gtk_menu_item_new_with_label(_("Properties ...")); 472 gtk_menu_append(GTK_MENU(submenu), menuitem); 473 g_signal_connect (G_OBJECT(menuitem), "activate", 474 G_CALLBACK(show_info_dialog_cb), view); 475 gtk_widget_show(menuitem); 476 476 create_view_menu_item (submenu, _("Properties ..."), "<Sweep-View>/File/Properties ...", view, 477 show_info_dialog_cb, FALSE, 478 0, 0, view); 477 479 478 480 menuitem = gtk_menu_item_new(); /* Separator */ 479 481 gtk_menu_append(GTK_MENU(submenu), menuitem); 480 482 gtk_widget_show(menuitem); 481 482 menuitem = gtk_menu_item_new_with_label(_("Close")); 483 gtk_menu_append(GTK_MENU(submenu), menuitem); 484 g_signal_connect (G_OBJECT(menuitem), "activate", 485 G_CALLBACK(view_close_cb), s); 486 gtk_widget_show(menuitem); 487 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 488 GDK_w, GDK_CONTROL_MASK, 489 GTK_ACCEL_VISIBLE); 490 491 menuitem = gtk_menu_item_new_with_label(_("Quit")); 492 gtk_menu_append(GTK_MENU(submenu), menuitem); 493 g_signal_connect (G_OBJECT(menuitem), "activate", 494 G_CALLBACK(exit_cb), s); 495 gtk_widget_show(menuitem); 496 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 497 GDK_q, GDK_CONTROL_MASK, 498 GTK_ACCEL_VISIBLE); 483 484 create_view_menu_item (submenu, _("Close"), "<Sweep-View>/File/Close", view, 485 exit_cb, FALSE, 486 GDK_q, GDK_CONTROL_MASK, s); 487 488 create_view_menu_item (submenu, _("Quit"), "<Sweep-View>/File/Quit", view, 489 view_close_cb, FALSE, 490 GDK_w, GDK_CONTROL_MASK, s); 491 499 492 500 493 /* Edit */ … … 503 496 gtk_widget_show(menuitem); 504 497 submenu = gtk_menu_new(); 498 gtk_menu_set_accel_group (GTK_MENU (submenu), accel_group); 499 gtk_menu_item_set_accel_path (GTK_MENU_ITEM(menuitem), "<Sweep-View>/Edit"); 505 500 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); 506 501 507 menuitem = gtk_menu_item_new_with_label(_("Cancel")); 508 gtk_menu_append(GTK_MENU(submenu), menuitem); 509 g_signal_connect (G_OBJECT(menuitem), "activate", 510 G_CALLBACK(cancel_cb), view); 511 gtk_widget_show(menuitem); 512 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 513 GDK_Escape, GDK_BUTTON1_MASK, 514 GTK_ACCEL_VISIBLE); 502 menuitem = create_view_menu_item (submenu, _("Cancel"), "<Sweep-View>/Edit/Cancel", view, 503 cancel_cb, FALSE, 504 GDK_Escape, GDK_BUTTON1_MASK, view); 515 505 NOREADY(menuitem); 516 517 menuitem = gtk_menu_item_new_with_label(_("Undo")); 518 gtk_menu_append(GTK_MENU(submenu), menuitem); 519 g_signal_connect (G_OBJECT(menuitem), "activate", 520 G_CALLBACK(undo_cb), view); 521 gtk_widget_show(menuitem); 522 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 523 GDK_z, GDK_CONTROL_MASK, 524 GTK_ACCEL_VISIBLE); 525 526 NOMODIFY(menuitem); 527 528 menuitem = gtk_menu_item_new_with_label(_("Redo")); 529 gtk_menu_append(GTK_MENU(submenu), menuitem); 530 g_signal_connect (G_OBJECT(menuitem), "activate", 531 G_CALLBACK(redo_cb), view); 532 gtk_widget_show(menuitem); 533 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 534 GDK_r, GDK_CONTROL_MASK, 535 GTK_ACCEL_VISIBLE); 536 537 NOMODIFY(menuitem); 538 539 menuitem = gtk_menu_item_new_with_label(_("Show history ...")); 540 gtk_menu_append(GTK_MENU(submenu), menuitem); 541 g_signal_connect (G_OBJECT(menuitem), "activate", 542 G_CALLBACK(show_undo_dialog_cb), view); 543 gtk_widget_show(menuitem); 506 507 create_view_menu_item (submenu, _("Undo"), "<Sweep-View>/Edit/Undo", view, 508 undo_cb, TRUE, 509 GDK_z, GDK_CONTROL_MASK, view); 510 511 create_view_menu_item (submenu, _("Redo"), "<Sweep-View>/Edit/Redo", view, 512 redo_cb, TRUE, 513 GDK_r, GDK_CONTROL_MASK, view); 514 515 create_view_menu_item (submenu, _("Show history ..."), "<Sweep-View>/Edit/Show history ...", view, 516 show_undo_dialog_cb, FALSE, 517 0, 0, view); 544 518 545 519 menuitem = gtk_menu_item_new(); /* Separator */ 546 520 gtk_menu_append(GTK_MENU(submenu), menuitem); 547 521 gtk_widget_show(menuitem); 548 549 menuitem = gtk_menu_item_new_with_label(_("Delete")); 550 gtk_menu_append(GTK_MENU(submenu), menuitem); 551 g_signal_connect (G_OBJECT(menuitem), "activate", 552 G_CALLBACK(delete_cb), view); 553 gtk_widget_show(menuitem); 554 555 NOMODIFY(menuitem); 556 557 menuitem = gtk_menu_item_new_with_label(_("Cut")); 558 gtk_menu_append(GTK_MENU(submenu), menuitem); 559 g_signal_connect (G_OBJECT(menuitem), "activate", 560 G_CALLBACK(cut_cb), view); 561 gtk_widget_show(menuitem); 562 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 563 GDK_x, GDK_CONTROL_MASK, 564 GTK_ACCEL_VISIBLE); 565 NOMODIFY(menuitem); 566 567 menuitem = gtk_menu_item_new_with_label(_("Copy")); 568 gtk_menu_append(GTK_MENU(submenu), menuitem); 569 g_signal_connect (G_OBJECT(menuitem), "activate", 570 G_CALLBACK(copy_cb), view); 571 gtk_widget_show(menuitem); 572 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 573 GDK_c, GDK_CONTROL_MASK, 574 GTK_ACCEL_VISIBLE); 575 NOMODIFY(menuitem); 576 577 menuitem = gtk_menu_item_new_with_label(_("Clear")); 578 gtk_menu_append(GTK_MENU(submenu), menuitem); 579 g_signal_connect (G_OBJECT(menuitem), "activate", 580 G_CALLBACK(clear_cb), view); 581 gtk_widget_show(menuitem); 582 #if 0 583 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 584 GDK_Delete, GDK_BUTTON1_MASK, 585 GTK_ACCEL_VISIBLE); 586 #endif 587 NOMODIFY(menuitem); 588 589 menuitem = gtk_menu_item_new_with_label(_("Crop")); 590 gtk_menu_append(GTK_MENU(submenu), menuitem); 591 g_signal_connect (G_OBJECT(menuitem), "activate", 592 G_CALLBACK(crop_cb), view); 593 gtk_widget_show(menuitem); 594 #if 0 595 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 596 GDK_Delete, GDK_BUTTON1_MASK, 597 GTK_ACCEL_VISIBLE); 598 #endif 599 NOMODIFY(menuitem); 522 523 create_view_menu_item (submenu, _("Delete"), "<Sweep-View>/Edit/Delete", view, 524 delete_cb, TRUE, 525 0, 0, view); 526 527 create_view_menu_item (submenu, _("Cut"), "<Sweep-View>/Edit/Cut", view, 528 cut_cb, TRUE, 529 GDK_x, GDK_CONTROL_MASK, view); 530 531 create_view_menu_item (submenu, _("Copy"), "<Sweep-View>/Edit/Copy", view, 532 copy_cb, TRUE, 533 GDK_c, GDK_CONTROL_MASK, view); 534 535 create_view_menu_item (submenu, _("Clear"), "<Sweep-View>/Edit/Clear", view, 536 clear_cb, TRUE, 537 0, 0, view); 538 539 create_view_menu_item (submenu, _("Crop"), "<Sweep-View>/Edit/Crop", view, 540 crop_cb, TRUE, 541 0, 0, view); 600 542 601 543 menuitem = gtk_menu_item_new(); /* Separator */ … … 603 545 gtk_widget_show(menuitem); 604 546 605 menuitem = gtk_menu_item_new_with_label(_("Paste: Insert")); 606 gtk_menu_append(GTK_MENU(submenu), menuitem); 607 g_signal_connect (G_OBJECT(menuitem), "activate", 608 G_CALLBACK(paste_cb), view); 609 gtk_widget_show(menuitem); 610 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 611 GDK_v, GDK_CONTROL_MASK, 612 GTK_ACCEL_VISIBLE); 613 NOMODIFY(menuitem); 614 615 menuitem = gtk_menu_item_new_with_label(_("Paste: Mix")); 616 gtk_menu_append(GTK_MENU(submenu), menuitem); 617 g_signal_connect (G_OBJECT(menuitem), "activate", 618 G_CALLBACK(paste_mix_cb), view); 619 gtk_widget_show(menuitem); 620 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 621 GDK_m, GDK_CONTROL_MASK, 622 GTK_ACCEL_VISIBLE); 623 NOMODIFY(menuitem); 624 625 menuitem = gtk_menu_item_new_with_label(_("Paste: Crossfade")); 626 gtk_menu_append(GTK_MENU(submenu), menuitem); 627 g_signal_connect (G_OBJECT(menuitem), "activate", 628 G_CALLBACK(paste_xfade_cb), view); 629 gtk_widget_show(menuitem); 630 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 631 GDK_f, GDK_CONTROL_MASK, 632 GTK_ACCEL_VISIBLE); 633 NOMODIFY(menuitem); 634 635 menuitem = gtk_menu_item_new_with_label(_("Paste as New")); 636 gtk_menu_append(GTK_MENU(submenu), menuitem); 637 g_signal_connect (G_OBJECT(menuitem), "activate", 638 G_CALLBACK(paste_as_new_cb), view); 639 gtk_widget_show(menuitem); 640 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 641 GDK_e, GDK_CONTROL_MASK, 642 GTK_ACCEL_VISIBLE); 643 NOMODIFY(menuitem); 547 create_view_menu_item (submenu, _("Paste: Insert"), "<Sweep-View>/Edit/Paste: Insert", view, 548 paste_cb, TRUE, 549 GDK_v, GDK_CONTROL_MASK, view); 550 551 create_view_menu_item (submenu, _("Paste: Mix"), "<Sweep-View>/Edit/Paste: Mix", view, 552 paste_mix_cb, TRUE, 553 GDK_m, GDK_CONTROL_MASK, view); 554 555 create_view_menu_item (submenu, _("Paste: Crossfade"), "<Sweep-View>/Edit/Paste: Crossfade", view, 556 paste_xfade_cb, TRUE, 557 GDK_f, GDK_CONTROL_MASK, view); 558 559 create_view_menu_item (submenu, _("Paste as New"), "<Sweep-View>/Edit/Paste as New", view, 560 paste_as_new_cb, TRUE, 561 GDK_e, GDK_CONTROL_MASK, view); 644 562 645 563 menuitem = gtk_menu_item_new(); /* Separator */ … … 647 565 gtk_widget_show(menuitem); 648 566 649 menuitem = gtk_menu_item_new_with_label(_("Preview Cut/Cursor")); 650 gtk_menu_append(GTK_MENU(submenu), menuitem); 651 g_signal_connect (G_OBJECT(menuitem), "activate", 652 G_CALLBACK(preview_cut_cb), view); 653 gtk_widget_show(menuitem); 654 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 655 GDK_k, GDK_CONTROL_MASK, 656 GTK_ACCEL_VISIBLE); 657 658 menuitem = gtk_menu_item_new_with_label(_("Pre-roll to Cursor")); 659 gtk_menu_append(GTK_MENU(submenu), menuitem); 660 g_signal_connect (G_OBJECT(menuitem), "activate", 661 G_CALLBACK(preroll_cb), view); 662 gtk_widget_show(menuitem); 663 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 664 GDK_k, GDK_SHIFT_MASK|GDK_CONTROL_MASK, 665 GTK_ACCEL_VISIBLE); 567 create_view_menu_item (submenu, _("Preview Cut/Cursor"), "<Sweep-View>/Edit/Preview Cut-Cursor", view, 568 preview_cut_cb, FALSE, 569 GDK_k, GDK_CONTROL_MASK, view); 570 571 create_view_menu_item (submenu, _("Pre-roll to Cursor"), "<Sweep-View>/Edit/Pre-roll to Cursor", view, 572 preroll_cb, FALSE, 573 GDK_k, GDK_SHIFT_MASK|GDK_CONTROL_MASK, view); 574 666 575 667 576 /* Select */ … … 670 579 gtk_widget_show(menuitem); 671 580 submenu = gtk_menu_new(); 581 gtk_menu_set_accel_group (GTK_MENU (submenu), accel_group); 582 672 583 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); 673 584 674 menuitem = gtk_menu_item_new_with_label(_("Invert")); 675 gtk_menu_append(GTK_MENU(submenu), menuitem); 676 g_signal_connect (G_OBJECT(menuitem), "activate", 677 G_CALLBACK(select_invert_cb), s); 678 gtk_widget_show(menuitem); 679 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 680 GDK_i, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); 681 NOMODIFY(menuitem); 682 683 menuitem = gtk_menu_item_new_with_label(_("All")); 684 gtk_menu_append(GTK_MENU(submenu), menuitem); 685 g_signal_connect (G_OBJECT(menuitem), "activate", 686 G_CALLBACK(select_all_cb), s); 687 gtk_widget_show(menuitem); 688 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 689 GDK_a, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); 690 NOMODIFY(menuitem); 691 692 menuitem = gtk_menu_item_new_with_label(_("None")); 693 gtk_menu_append(GTK_MENU(submenu), menuitem); 694 g_signal_connect (G_OBJECT(menuitem), "activate", 695 G_CALLBACK(select_none_cb), s); 696 gtk_widget_show(menuitem); 697 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 698 GDK_a, GDK_SHIFT_MASK|GDK_CONTROL_MASK, 699 GTK_ACCEL_VISIBLE); 700 NOMODIFY(menuitem); 585 create_view_menu_item (submenu, _("Invert"), "<Sweep-View>/Select/Invert", view, 586 select_invert_cb, TRUE, 587 GDK_i, GDK_CONTROL_MASK, s); 588 589 create_view_menu_item (submenu, _("All"), "<Sweep-View>/Select/All", view, 590 select_all_cb, TRUE, 591 GDK_a, GDK_CONTROL_MASK, s); 592 593 create_view_menu_item (submenu, _("None"), "<Sweep-View>/Select/None", view, 594 select_none_cb, TRUE, 595 GDK_a, GDK_SHIFT_MASK|GDK_CONTROL_MASK, s); 701 596 702 597 menuitem = gtk_menu_item_new(); /* Separator */ … … 704 599 gtk_widget_show(menuitem); 705 600 706 menuitem = gtk_menu_item_new_with_label(_("Halve")); 707 gtk_menu_append(GTK_MENU(submenu), menuitem); 708 g_signal_connect (G_OBJECT(menuitem), "activate", 709 G_CALLBACK(selection_halve_cb), s); 710 gtk_widget_show(menuitem); 711 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 712 GDK_semicolon, GDK_BUTTON1_MASK, 713 GTK_ACCEL_VISIBLE); 714 NOMODIFY(menuitem); 715 716 menuitem = gtk_menu_item_new_with_label(_("Double")); 717 gtk_menu_append(GTK_MENU(submenu), menuitem); 718 g_signal_connect (G_OBJECT(menuitem), "activate", 719 G_CALLBACK(selection_double_cb), s); 720 gtk_widget_show(menuitem); 721 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 722 GDK_quoteright, GDK_BUTTON1_MASK, 723 GTK_ACCEL_VISIBLE); 724 NOMODIFY(menuitem); 725 726 menuitem = gtk_menu_item_new_with_label(_("Shift left")); 727 gtk_menu_append(GTK_MENU(submenu), menuitem); 728 g_signal_connect (G_OBJECT(menuitem), "activate", 729 G_CALLBACK(select_shift_left_cb), s); 730 gtk_widget_show(menuitem); 731 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 732 GDK_less, GDK_BUTTON1_MASK, 733 GTK_ACCEL_VISIBLE); 734 NOMODIFY(menuitem); 735 736 menuitem = gtk_menu_item_new_with_label(_("Shift right")); 737 gtk_menu_append(GTK_MENU(submenu), menuitem); 738 g_signal_connect (G_OBJECT(menuitem), "activate", 739 G_CALLBACK(select_shift_right_cb), s); 740 gtk_widget_show(menuitem); 741 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 742 GDK_greater, GDK_BUTTON1_MASK, 743 GTK_ACCEL_VISIBLE); 744 NOMODIFY(menuitem); 601 create_view_menu_item (submenu, _("Halve"), "<Sweep-View>/Select/Halve", view, 602 selection_halve_cb, TRUE, 603 GDK_semicolon, GDK_BUTTON1_MASK, s); 604 605 create_view_menu_item (submenu, _("Double"), "<Sweep-View>/Select/Double", view, 606 selection_double_cb, TRUE, 607 GDK_quoteright, GDK_BUTTON1_MASK, s); 608 609 create_view_menu_item (submenu, _("Shift left"), "<Sweep-View>/Select/Shift left", view, 610 select_shift_left_cb, TRUE, 611 GDK_less, GDK_BUTTON1_MASK, s); 612 613 create_view_menu_item (submenu, _("Shift right"), "<Sweep-View>/Select/Shift right", view, 614 select_shift_right_cb, TRUE, 615 GDK_greater, GDK_BUTTON1_MASK, s); 745 616 746 617 /* View */ … … 749 620 gtk_widget_show(menuitem); 750 621 submenu = gtk_menu_new(); 622 gtk_menu_set_accel_group (GTK_MENU (submenu), accel_group); 751 623 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); 752 624 753 754 625 menuitem = gtk_check_menu_item_new_with_label(_("Autoscroll: follow playback cursor")); 626 gtk_menu_item_set_accel_path(GTK_MENU_ITEM(menuitem), "<Sweep-View>/View/Autoscroll: follow playback cursor"); 755 627 gtk_menu_append(GTK_MENU(submenu), menuitem); 756 628 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menuitem), … … 761 633 view->follow_checkmenu = menuitem; 762 634 635 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menuitem), 636 view->following); 637 view->follow_checkmenu = menuitem; 638 763 639 menuitem = gtk_menu_item_new(); /* Separator */ 764 640 gtk_menu_append(GTK_MENU(submenu), menuitem); 765 641 gtk_widget_show(menuitem); 766 642 767 768 menuitem = gtk_menu_item_new_with_label(_("Center")); 769 gtk_menu_append(GTK_MENU(submenu), menuitem); 770 g_signal_connect (G_OBJECT(menuitem), "activate", 771 G_CALLBACK(zoom_center_cb), s); 772 gtk_widget_show(menuitem); 773 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 774 GDK_slash, GDK_BUTTON1_MASK, 775 GTK_ACCEL_VISIBLE); 776 643 create_view_menu_item (submenu, _("Center"), "<Sweep-View>/View/Center", view, 644 zoom_center_cb, FALSE, 645 GDK_slash, GDK_BUTTON1_MASK, s); 646 777 647 menuitem = gtk_menu_item_new(); /* Separator */ 778 648 gtk_menu_append(GTK_MENU(submenu), menuitem); 779 649 gtk_widget_show(menuitem); 780 781 menuitem = gtk_menu_item_new_with_label(_("Zoom in")); 782 gtk_menu_append(GTK_MENU(submenu), menuitem); 783 g_signal_connect (G_OBJECT(menuitem), "activate", 784 G_CALLBACK(zoom_in_cb), view); 785 gtk_widget_show(menuitem); 786 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 787 GDK_equal, GDK_BUTTON1_MASK, 788 GTK_ACCEL_VISIBLE); 789 790 menuitem = gtk_menu_item_new_with_label(_("Zoom out")); 791 gtk_menu_append(GTK_MENU(submenu), menuitem); 792 g_signal_connect (G_OBJECT(menuitem), "activate", 793 G_CALLBACK(zoom_out_cb), view); 794 gtk_widget_show(menuitem); 795 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 796 GDK_minus, GDK_BUTTON1_MASK, 797 GTK_ACCEL_VISIBLE); 798 799 menuitem = gtk_menu_item_new_with_label(_("Zoom to selection")); 800 gtk_menu_append(GTK_MENU(submenu), menuitem); 801 g_signal_connect (G_OBJECT(menuitem), "activate", 802 G_CALLBACK(zoom_to_sel_cb), s); 803 gtk_widget_show(menuitem); 650 651 create_view_menu_item (submenu, _("Zoom in"), "<Sweep-View>/View/Zoom in", view, 652 zoom_in_cb, FALSE, 653 GDK_equal, GDK_BUTTON1_MASK, view); 654 655 create_view_menu_item (submenu, _("Zoom out"), "<Sweep-View>/View/Zoom out", view, 656 zoom_out_cb, FALSE, 657 GDK_minus, GDK_BUTTON1_MASK, view); 658 659 create_view_menu_item (submenu, _("Zoom to selection"), "<Sweep-View>/View/Zoom to selection", view, 660 zoom_to_sel_cb, FALSE, 661 0, 0, s); 662 804 663 805 664 #if 0 806 menuitem = gtk_menu_item_new_with_label(_("Left")); 807 gtk_menu_append(GTK_MENU(submenu), menuitem); 808 g_signal_connect (G_OBJECT(menuitem), "activate", 809 G_CALLBACK(zoom_left_cb), s); 810 gtk_widget_show(menuitem); 811 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 812 GDK_Left, GDK_BUTTON1_MASK, 813 GTK_ACCEL_VISIBLE); 814 815 menuitem = gtk_menu_item_new_with_label(_("Right")); 816 gtk_menu_append(GTK_MENU(submenu), menuitem); 817 g_signal_connect (G_OBJECT(menuitem), "activate", 818 G_CALLBACK(zoom_right_cb), s); 819 gtk_widget_show(menuitem); 820 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 821 GDK_Right, GDK_BUTTON1_MASK, 822 GTK_ACCEL_VISIBLE); 665 create_view_menu_item (submenu, _("Left"), "<Sweep-View>/View/Left", view, 666 zoom_left_cb, FALSE, 667 GDK_Left, GDK_BUTTON1_MASK, s); 668 669 create_view_menu_item (submenu, _("Right"), "<Sweep-View>/View/Right", view, 670 zoom_right_cb, FALSE, 671 GDK_Right, GDK_BUTTON1_MASK, s); 823 672 #endif 824 673 825 menuitem = gtk_menu_item_new_with_label(_("Zoom normal")); 826 gtk_menu_append(GTK_MENU(submenu), menuitem); 827 g_signal_connect (G_OBJECT(menuitem), "activate", 828 G_CALLBACK(zoom_norm_cb), s); 829 gtk_widget_show(menuitem); 830 831 menuitem = gtk_menu_item_new_with_label(_("Zoom all")); 832 gtk_menu_append(GTK_MENU(submenu), menuitem); 833 g_signal_connect (G_OBJECT(menuitem), "activate", 834 G_CALLBACK(zoom_all_cb), view); 835 gtk_widget_show(menuitem); 836 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 837 GDK_1, GDK_CONTROL_MASK, 838 GTK_ACCEL_VISIBLE); 839 840 menuitem = gtk_menu_item_new_with_label(_("1:1")); 841 gtk_menu_append(GTK_MENU(submenu), menuitem); 842 g_signal_connect (G_OBJECT(menuitem), "activate", 843 G_CALLBACK(zoom_1to1_cb), s); 844 gtk_widget_show(menuitem); 845 674 create_view_menu_item (submenu, _("Zoom normal"), "<Sweep-View>/View/Zoom normal", view, 675 zoom_norm_cb, FALSE, 676 0, 0, s); 677 678 create_view_menu_item (submenu, _("Zoom all"), "<Sweep-View>/View/Zoom all", view, 679 zoom_all_cb, FALSE, 680 GDK_1, GDK_CONTROL_MASK, view); 681 682 create_view_menu_item (submenu, _("1:1"), "<Sweep-View>/View/1:1", view, 683 zoom_1to1_cb, FALSE, 684 0, 0, s); 846 685 847 686 menuitem = gtk_menu_item_new(); /* Separator */ … … 855 694 gtk_widget_show(menuitem); 856 695 subsubmenu = gtk_menu_new(); 696 gtk_menu_set_accel_group (GTK_MENU (subsubmenu), accel_group); 857 697 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), subsubmenu); 858 698 859 #define REMEMBER_AS(title,index) \ 699 700 #define REMEMBER_AS(title,index,accel_path) \ 860 701 menuitem = gtk_menu_item_new_with_label ((title)); \ 861 702 g_object_set_data (G_OBJECT(menuitem), "default", GINT_TO_POINTER((index))); \ … … 864 705 g_signal_connect (G_OBJECT(menuitem), "activate", \ 865 706 G_CALLBACK(view_store_cb), view); \ 866 gtk_ widget_add_accelerator (menuitem, "activate", accel_group,\867 GDK_KP_##index, GDK_CONTROL_MASK,\868 G TK_ACCEL_VISIBLE);869 870 REMEMBER_AS(_("Area 1"), 1 );871 REMEMBER_AS(_("Area 2"), 2 );872 REMEMBER_AS(_("Area 3"), 3 );873 REMEMBER_AS(_("Area 4"), 4 );874 REMEMBER_AS(_("Area 5"), 5 );875 REMEMBER_AS(_("Area 6"), 6 );876 REMEMBER_AS(_("Area 7"), 7 );877 REMEMBER_AS(_("Area 8"), 8 );878 REMEMBER_AS(_("Area 9"), 9 );879 REMEMBER_AS(_("Area 10"), 0 );707 gtk_menu_item_set_accel_path (GTK_MENU_ITEM(menuitem), accel_path); \ 708 gtk_accel_map_add_entry (accel_path, \ 709 GDK_KP_##index, GDK_CONTROL_MASK); 710 711 REMEMBER_AS(_("Area 1"), 1, "<Sweep-View>/View/Remember As/Area 1"); 712 REMEMBER_AS(_("Area 2"), 2, "<Sweep-View>/View/Remember As/Area 2"); 713 REMEMBER_AS(_("Area 3"), 3, "<Sweep-View>/View/Remember As/Area 3"); 714 REMEMBER_AS(_("Area 4"), 4, "<Sweep-View>/View/Remember As/Area 4"); 715 REMEMBER_AS(_("Area 5"), 5, "<Sweep-View>/View/Remember As/Area 5"); 716 REMEMBER_AS(_("Area 6"), 6, "<Sweep-View>/View/Remember As/Area 6"); 717 REMEMBER_AS(_("Area 7"), 7, "<Sweep-View>/View/Remember As/Area 7"); 718 REMEMBER_AS(_("Area 8"), 8, "<Sweep-View>/View/Remember As/Area 8"); 719 REMEMBER_AS(_("Area 9"), 9, "<Sweep-View>/View/Remember As/Area 9"); 720 REMEMBER_AS(_("Area 10"), 0, "<Sweep-View>/View/Remember As/Area 10"); 880 721 881 722 /* Retrieve view */ … … 885 726 gtk_widget_show(menuitem); 886 727 subsubmenu = gtk_menu_new(); 728 gtk_menu_set_accel_group (GTK_MENU (subsubmenu), accel_group); 887 729 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), subsubmenu); 888 730 889 #define ZOOM_TO(title,index ) \731 #define ZOOM_TO(title,index,accel_path) \ 890 732 menuitem = gtk_menu_item_new_with_label ((title)); \ 891 733 g_object_set_data (G_OBJECT(menuitem), "default", GINT_TO_POINTER((index))); \ … … 894 736 g_signal_connect (G_OBJECT(menuitem), "activate", \ 895 737 G_CALLBACK(view_retrieve_cb), view); \ 896 gtk_ widget_add_accelerator (menuitem, "activate", accel_group,\897 GDK_KP_##index, GDK_BUTTON1_MASK,\898 G TK_ACCEL_VISIBLE);899 900 ZOOM_TO(_("Area 1"), 1 );901 ZOOM_TO(_("Area 2"), 2 );902 ZOOM_TO(_("Area 3"), 3 );903 ZOOM_TO(_("Area 4"), 4 );904 ZOOM_TO(_("Area 5"), 5 );905 ZOOM_TO(_("Area 6"), 6 );906 ZOOM_TO(_("Area 7"), 7 );907 ZOOM_TO(_("Area 8"), 8 );908 ZOOM_TO(_("Area 9"), 9 );909 ZOOM_TO(_("Area 10"), 0 );738 gtk_menu_item_set_accel_path (GTK_MENU_ITEM(menuitem), accel_path); \ 739 gtk_accel_map_add_entry (accel_path, \ 740 GDK_KP_##index, GDK_BUTTON1_MASK); 741 742 ZOOM_TO(_("Area 1"), 1, "<Sweep-View>/View/Zoom To/Area 1"); 743 ZOOM_TO(_("Area 2"), 2, "<Sweep-View>/View/Zoom To/Area 2"); 744 ZOOM_TO(_("Area 3"), 3, "<Sweep-View>/View/Zoom To/Area 3"); 745 ZOOM_TO(_("Area 4"), 4, "<Sweep-View>/View/Zoom To/Area 4"); 746 ZOOM_TO(_("Area 5"), 5, "<Sweep-View>/View/Zoom To/Area 5"); 747 ZOOM_TO(_("Area 6"), 6, "<Sweep-View>/View/Zoom To/Area 6"); 748 ZOOM_TO(_("Area 7"), 7, "<Sweep-View>/View/Zoom To/Area 7"); 749 ZOOM_TO(_("Area 8"), 8, "<Sweep-View>/View/Zoom To/Area 8"); 750 ZOOM_TO(_("Area 9"), 9, "<Sweep-View>/View/Zoom To/Area 9"); 751 ZOOM_TO(_("Area 10"), 0, "<Sweep-View>/View/Zoom To/Area 10"); 910 752 911 753 menuitem = gtk_menu_item_new(); /* Separator */ 912 754 gtk_menu_append(GTK_MENU(submenu), menuitem); 913 755 gtk_widget_show(menuitem); 914 756 915 757 menuitem = gtk_menu_item_new_with_label(_("Color scheme")); 916 758 gtk_menu_append(GTK_MENU(submenu), menuitem); … … 986 828 gtk_menu_append(GTK_MENU(submenu), menuitem); 987 829 gtk_widget_show(menuitem); 988 989 menuitem = gtk_menu_item_new_with_label(_("New View")); 990 gtk_menu_append(GTK_MENU(submenu), menuitem); 991 g_signal_connect (G_OBJECT(menuitem), "activate", 992 G_CALLBACK(view_new_cb), s); 993 gtk_widget_show(menuitem); 830 831 create_view_menu_item (submenu, _("New View"), "<Sweep-View>/View/New View", view, 832 view_new_cb, FALSE, 833 0, 0, s); 994 834 995 835 /* Sample */ … … 998 838 gtk_widget_show(menuitem); 999 839 submenu = gtk_menu_new(); 840 gtk_menu_set_accel_group (GTK_MENU (submenu), accel_group); 1000 841 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); 1001 842 … … 1009 850 1010 851 #ifdef HAVE_LIBSAMPLERATE 1011 menuitem = gtk_menu_item_new_with_label(_("Resample ...")); 1012 gtk_menu_append(GTK_MENU(submenu), menuitem); 1013 g_signal_connect (G_OBJECT(menuitem), "activate", 1014 G_CALLBACK(samplerate_dialog_new_cb), view); 1015 gtk_widget_show(menuitem); 1016 1017 NOMODIFY(menuitem); 852 853 create_view_menu_item (submenu, _("Resample ..."), "<Sweep-View>/Sample/Resample ...", view, 854 samplerate_dialog_new_cb, TRUE, 855 0, 0, view); 1018 856 #endif 1019 857 … … 1021 859 gtk_menu_append(GTK_MENU(submenu), menuitem); 1022 860 gtk_widget_show(menuitem); 1023 1024 menuitem = gtk_menu_item_new_with_label(_("Duplicate")); 1025 gtk_menu_append(GTK_MENU(submenu), menuitem); 1026 g_signal_connect (G_OBJECT(menuitem), "activate", 1027 G_CALLBACK(sample_new_copy_cb), s); 1028 gtk_widget_show(menuitem); 1029 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1030 GDK_d, GDK_CONTROL_MASK, 1031 GTK_ACCEL_VISIBLE); 1032 NOMODIFY(menuitem); 861 862 create_view_menu_item (submenu, _("Duplicate"), "<Sweep-View>/Sample/Duplicate", view, 863 sample_new_copy_cb, TRUE, 864 GDK_d, GDK_CONTROL_MASK, s); 1033 865 1034 866 /* Filters */ … … 1046 878 gtk_widget_show(menuitem); 1047 879 submenu = gtk_menu_new(); 880 gtk_menu_set_accel_group (GTK_MENU (submenu), accel_group); 1048 881 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); 1049 882 1050 menuitem = gtk_menu_item_new_with_label(_("Configure audio device ..."));1051 gtk_menu_append(GTK_MENU(submenu), menuitem);1052 g_signal_connect (G_OBJECT(menuitem), "activate",1053 G_CALLBACK(device_config_cb), view); 1054 gtk_widget_show(menuitem);883 create_view_menu_item (submenu, _("Configure audio device ..."), 884 "<Sweep-View>/Playback/Configure audio device ...", 885 view, 886 device_config_cb, FALSE, 887 0, 0, view); 1055 888 1056 889 menuitem = gtk_menu_item_new(); /* Separator */ … … 1062 895 gtk_widget_show(menuitem); 1063 896 subsubmenu = gtk_menu_new(); 897 gtk_menu_set_accel_group (GTK_MENU (subsubmenu), accel_group); 1064 898 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), subsubmenu); 1065 899 1066 900 NOALLOC(menuitem); 1067 901 1068 menuitem = gtk_menu_item_new_with_label(_("Go to start of file")); 1069 gtk_menu_append(GTK_MENU(subsubmenu), menuitem); 1070 g_signal_connect (G_OBJECT(menuitem), "activate", 1071 G_CALLBACK(goto_start_cb), view); 1072 gtk_widget_show(menuitem); 1073 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1074 GDK_Home, GDK_CONTROL_MASK, 1075 GTK_ACCEL_VISIBLE); 1076 1077 menuitem = gtk_menu_item_new_with_label(_("Go to start of window")); 1078 gtk_menu_append(GTK_MENU(subsubmenu), menuitem); 1079 g_signal_connect (G_OBJECT(menuitem), "activate", 1080 G_CALLBACK(goto_start_of_view_cb), view); 1081 gtk_widget_show(menuitem); 1082 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1083 GDK_Home, GDK_BUTTON1_MASK, 1084 GTK_ACCEL_VISIBLE); 1085 1086 1087 menuitem = gtk_menu_item_new_with_label(_("Skip back")); 1088 gtk_menu_append(GTK_MENU(subsubmenu), menuitem); 1089 g_signal_connect (G_OBJECT(menuitem), "activate", 1090 G_CALLBACK(page_back_cb), view); 1091 gtk_widget_show(menuitem); 1092 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1093 GDK_Page_Up, GDK_BUTTON1_MASK, 1094 GTK_ACCEL_VISIBLE); 1095 1096 1097 menuitem = gtk_menu_item_new_with_label(_("Skip forward")); 1098 gtk_menu_append(GTK_MENU(subsubmenu), menuitem); 1099 g_signal_connect (G_OBJECT(menuitem), "activate", 1100 G_CALLBACK(page_fwd_cb), view); 1101 gtk_widget_show(menuitem); 1102 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1103 GDK_Page_Down, GDK_BUTTON1_MASK, 1104 GTK_ACCEL_VISIBLE); 1105 1106 menuitem = gtk_menu_item_new_with_label(_("Go to end of window")); 1107 gtk_menu_append(GTK_MENU(subsubmenu), menuitem); 1108 g_signal_connect (G_OBJECT(menuitem), "activate", 1109 G_CALLBACK(goto_end_of_view_cb), view); 1110 gtk_widget_show(menuitem); 1111 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1112 GDK_End, GDK_BUTTON1_MASK, 1113 GTK_ACCEL_VISIBLE); 1114 1115 menuitem = gtk_menu_item_new_with_label(_("Go to end of file")); 1116 gtk_menu_append(GTK_MENU(subsubmenu), menuitem); 1117 g_signal_connect (G_OBJECT(menuitem), "activate", 1118 G_CALLBACK(goto_end_cb), view); 1119 gtk_widget_show(menuitem); 1120 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1121 GDK_End, GDK_CONTROL_MASK, 1122 GTK_ACCEL_VISIBLE); 902 create_view_menu_item (subsubmenu, _("Go to start of file"), 903 "<Sweep-View>/Playback/Transport/Go to start of file", 904 view, 905 goto_start_cb, FALSE, 906 GDK_Home, GDK_CONTROL_MASK, view); 907 908 create_view_menu_item (subsubmenu, _("Go to start of window"), "<Sweep-View>/Playback/Transport/Go to start of window", 909 view, 910 goto_start_of_view_cb, FALSE, 911 GDK_Home, GDK_BUTTON1_MASK, view); 912 913 create_view_menu_item (subsubmenu, _("Skip back"), "<Sweep-View>/Playback/Transport/Skip back", 914 view, 915 page_back_cb, FALSE, 916 GDK_Page_Up, GDK_BUTTON1_MASK, view); 917 918 create_view_menu_item (subsubmenu, _("Skip forward"), "<Sweep-View>/Playback/Transport/Skip forward", 919 view, 920 page_fwd_cb, FALSE, 921 GDK_Page_Down, GDK_BUTTON1_MASK, view); 922 923 create_view_menu_item (subsubmenu, _("Go to end of window"), "<Sweep-View>/Playback/Transport/Go to end of window", 924 view, 925 goto_end_of_view_cb, FALSE, 926 GDK_End, GDK_BUTTON1_MASK, view); 927 928 create_view_menu_item (subsubmenu, _("Go to end of file"), "<Sweep-View>/Playback/Transport/Go to end of file", 929 view, 930 goto_end_cb, FALSE, 931 GDK_End, GDK_CONTROL_MASK, view); 1123 932 1124 933 menuitem = gtk_menu_item_new(); /* Separator */ … … 1126 935 gtk_widget_show(menuitem); 1127 936 1128 menuitem = gtk_menu_item_new_with_label(_("Play selection")); 1129 gtk_menu_append(GTK_MENU(submenu), menuitem); 1130 g_signal_connect (G_OBJECT(menuitem), "activate", 1131 G_CALLBACK(play_view_sel_cb), view); 1132 gtk_widget_show(menuitem); 1133 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1134 GDK_space, GDK_BUTTON1_MASK, 1135 GTK_ACCEL_VISIBLE); 1136 937 menuitem = create_view_menu_item (submenu, _("Play selection"), "<Sweep-View>/Playback/Transport/Play selection", 938 view, 939 play_view_sel_cb, FALSE, 940 GDK_space, GDK_BUTTON1_MASK, view); 1137 941 NOALLOC(menuitem); 1138 1139 menuitem = gtk_menu_item_new_with_label(_("Play sample")); 1140 gtk_menu_append(GTK_MENU(submenu), menuitem); 1141 g_signal_connect (G_OBJECT(menuitem), "activate", 1142 G_CALLBACK(play_view_cb), view); 1143 gtk_widget_show(menuitem); 1144 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1145 GDK_space, GDK_CONTROL_MASK, 1146 GTK_ACCEL_VISIBLE); 942 943 menuitem = create_view_menu_item (submenu, _("Play sample"), "<Sweep-View>/Playback/Transport/Play sample", 944 view, 945 play_view_cb, FALSE, 946 GDK_space, GDK_CONTROL_MASK, view); 1147 947 NOALLOC(menuitem); 1148 948 1149 949 menuitem = gtk_menu_item_new_with_label(_("Play note")); 1150 950 gtk_menu_append(GTK_MENU(submenu), menuitem); … … 1172 972 g_signal_connect (G_OBJECT(menuitem), "activate", 1173 973 G_CALLBACK(monitor_toggle_cb), view); 974 975 gtk_menu_item_set_accel_path (GTK_MENU_ITEM(menuitem), 976 "<Sweep-View>/Playback/Transport/Toggle monitoring"); 977 1174 978 gtk_widget_show(menuitem); 1175 979 view->monitor_checkmenu = menuitem; … … 1181 985 g_signal_connect (G_OBJECT(menuitem), "activate", 1182 986 G_CALLBACK(loop_toggle_cb), view); 987 988 gtk_menu_item_set_accel_path (GTK_MENU_ITEM(menuitem), 989 "<Sweep-View>/Playback/Transport/Toggle looping"); 1183 990 gtk_widget_show(menuitem); 1184 991 view->loop_checkmenu = menuitem; … … 1190 997 g_signal_connect (G_OBJECT(menuitem), "activate", 1191 998 G_CALLBACK(mute_toggle_cb), view); 999 gtk_menu_item_set_accel_path (GTK_MENU_ITEM(menuitem), 1000 "<Sweep-View>/Playback/Transport/Toggle muting"); 1192 1001 gtk_widget_show(menuitem); 1193 1002 view->mute_checkmenu = menuitem; … … 1200 1009 G_CALLBACK(playrev_toggle_cb), view); 1201 1010 gtk_widget_show(menuitem); 1202 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1203 GDK_quoteleft, GDK_BUTTON1_MASK, 1204 GTK_ACCEL_VISIBLE); 1011 gtk_menu_item_set_accel_path (GTK_MENU_ITEM(menuitem), 1012 "<Sweep-View>/Playback/Transport/Toggle reverse playback"); 1013 gtk_accel_map_add_entry ("<Sweep-View>/Playback/Transport/Toggle reverse playback", 1014 GDK_quoteleft, GDK_BUTTON1_MASK); 1015 1205 1016 view->playrev_checkmenu = menuitem; 1206 1017 … … 1209 1020 gtk_widget_show(menuitem); 1210 1021 1211 1212 menuitem = gtk_menu_item_new_with_label(_("Pause")); 1213 gtk_menu_append(GTK_MENU(submenu), menuitem); 1214 g_signal_connect (G_OBJECT(menuitem), "activate", 1215 G_CALLBACK(pause_playback_cb), view); 1216 gtk_widget_show(menuitem); 1022 menuitem = create_view_menu_item (submenu, _("Pause"), "<Sweep-View>/Playback/Pause", view, 1023 pause_playback_cb, FALSE, 1024 0, 0, view); 1217 1025 NOALLOC(menuitem); 1218 1026 1219 menuitem = gtk_menu_item_new_with_label(_("Stop")); 1220 gtk_menu_append(GTK_MENU(submenu), menuitem); 1221 g_signal_connect (G_OBJECT(menuitem), "activate", 1222 G_CALLBACK(stop_playback_cb), view); 1223 gtk_widget_add_accelerator (menuitem, "activate", accel_group, 1224 GDK_Return, GDK_BUTTON1_MASK, 1225 GTK_ACCEL_VISIBLE); 1226 gtk_widget_show(menuitem); 1227 1027 menuitem = create_view_menu_item (submenu, _("Stop"), "<Sweep-View>/Playback/Stop", view, 1028 stop_playback_cb, FALSE, 1029 GDK_Return, GDK_BUTTON1_MASK, view); 1228 1030 NOALLOC(menuitem); 1229 1031 1230 1032 menuitem = gtk_menu_item_new_with_label (_("Help")); 1231 1033 MENU_APPEND(m, menuitem); … … 1507 1309 sample_display_stop_marching_ants (SAMPLE_DISPLAY(view->display)); 1508 1310 1311 if (view->sample->op_progress_tag != -1) 1312 gtk_timeout_remove(view->sample->op_progress_tag); 1313 cancel_active_op (view->sample); 1509 1314 sample_remove_view(view->sample, view); 1510 1315 gtk_widget_destroy (GTK_WIDGET (view->display)); … … 2074 1879 view->tool_buttons = NULL; 2075 1880 1881 button = create_pixmap_button (window, hand_xpm, _("Hand tool"), 1882 style_light_grey, VIEW_TOOLBAR_TOGGLE_BUTTON, 1883 G_CALLBACK (view_set_tool_cb), NULL, NULL, view); 1884 g_object_set_data (G_OBJECT(button), "default", GINT_TO_POINTER(TOOL_HAND)); 1885 gtk_box_pack_start (GTK_BOX (tool_hbox), button, FALSE, FALSE, 0); 1886 gtk_widget_show (button); 1887 view->tool_buttons = g_list_append (view->tool_buttons, button); 1888 2076 1889 button = create_pixmap_button (window, select_xpm, _("Selector tool"), 2077 1890 style_light_grey, VIEW_TOOLBAR_TOGGLE_BUTTON, … … 2561 2374 = create_pixmap_button (window, playpaus_xpm, 2562 2375 /* _("Play all / Pause [Ctrl+Space / Enter]"),*/ 2563 _("Play all / Pause [Ctrl+Space]"),2376 _("Play all / Pause"), 2564 2377 style_green_grey, VIEW_TOOLBAR_TOGGLE_BUTTON, 2565 2378 G_CALLBACK (play_view_button_cb), 2566 2379 NULL, NULL, view); 2567 2380 2568 //@ gtk_widget_set_size_request (button,2569 //@ 65,2570 //@ 50);2571 2381 gtk_box_pack_start (GTK_BOX (tool_hbox), button, FALSE, TRUE, 0); 2572 2382 gtk_widget_show (button); … … 2581 2391 = create_pixmap_button (window, playpsel_xpm, 2582 2392 /*_("Play selection / Pause [Space / Enter]"),*/ 2583 _("Play selection / Pause [Space]"),2393 _("Play selection / Pause"), 2584 2394 style_green_grey, VIEW_TOOLBAR_TOGGLE_BUTTON, 2585 2395 G_CALLBACK (play_view_sel_button_cb), … … 2597 2407 = create_pixmap_button (window, stop_xpm, 2598 2408 /*_("Stop playback [Space]"),*/ 2599 _("Stop playback [Enter]"),2409 _("Stop playback"), 2600 2410 style_green_grey, VIEW_TOOLBAR_BUTTON, 2601 2411 G_CALLBACK (stop_playback_cb), … … 2614 2424 button 2615 2425 = create_pixmap_button (window, prevtrk_xpm, 2616 _("Go to beginning [Ctrl+Home]"),2426 _("Go to beginning"), 2617 2427 style_green_grey, VIEW_TOOLBAR_BUTTON, 2618 2428 G_CALLBACK (goto_start_cb), NULL, NULL, view); … … 2650 2460 button 2651 2461 = create_pixmap_button (window, nexttrk_xpm, 2652 _("Go to the end [Ctrl+End]"),2462 _("Go to the end"), 2653 2463 style_green_grey, VIEW_TOOLBAR_BUTTON, 2654 2464 G_CALLBACK (goto_end_cb), NULL, NULL, view); … … 3597 3407 s->pathname ? g_basename (s->pathname) : _("Untitled"), 3598 3408 #endif 3599 100 * (view->end - view->start) / s->sounddata->nr_frames);3409 s->progress_percent); 3600 3410 } else { 3601 3411 snprintf(buf, BUF_LEN, sweep/branches/sweep-jack-testing/src/view_pixmaps.h
r124 r505 53 53 #include "../pixmaps/scrub.xpm" 54 54 #include "../pixmaps/select.xpm" 55 #include "../pixmaps/hand.xpm" 55 56 #ifdef DEVEL_CODE 56 57 #include "../pixmaps/pencil.xpm"
