From: Patrick S. <ko...@fi...> - 2001-04-28 13:13:25
|
--- Conrad Parker <co...@ve...> > wrote: >that sounds right on track :) or at least, use view_set_ends () to do the >update > ----- /*** sample auto scrolls while playing ***/ if (x >= s->view->end) { s->view->start = s->view->start + 1; s->view->end = s->view->end + 1; view_set_ends (sw_view * view, sw_framecount_t start, sw_framecount_t end); } ----- This is what I have so far. It is in the sample-display.c file under the playmarker area.. Is that the correct place? I'm still working on it but if anyone feels in the mood then you might save me some time. Patrick. _____________________________________________________________ Want a new web-based email account ? ---> http://www.firstlinux.net |
From: Patrick S. <psh...@bo...> - 2001-05-09 09:22:24
|
A few questions on your ideas. >Because we align the samples to the pixels accurately, we have > playpos_at_left_pixel_edge = playposition - playposition % zoomratio; > // what happens if playposition is negative? shouldn't that be: playpos_at_left_pixel_edge = playposition - ((playposition % zoomratio)/2); to rephrase: > view_length = waveformdisplay_width * zoomratio; s->view = area->width * zoomratio; >centerpixel = waveformdisplay_width/2; // truncated to integer centerpixel = area->width/2; > view_startsample = playpos_at_left_pixel_edge-(centerpixel-0)*zoomratio; > // assuming first pixel is 0 s->view ->start = playpos_at_left_pixel_edge-(centerpixel-0)*zoomratio; > view_endsample = view_startsample + view_length - 1; s->view->end = s->view->start + s->view - 1; So the unwritten stuff would be: zoomratio centerpixel playpos_at_left_pixel_edge and playposition may need to be changed. >The player should have a variable telling when the player is playing > or not playing. That variable is then used in the scrolling code. This is already defined in driver.c right at the start of the file. My knowledge of c is such that I don't know how to use it from sample-display.c >By the way, how the play marker code is called? It is defined in view.c, line 981. and also in the driver.c file. -------- view.c: /* * view_set_ends (v, start, end) * * set the endpoints shown by this view. */ void view_set_ends (sw_view * view, sw_framecount_t start, sw_framecount_t end) { GtkAdjustment * adj = GTK_ADJUSTMENT(view->adj); /* if(start < 0) start = 0; if(end > view->sample->sounddata->nr_frames) end = view->sample->sounddata->nr_frames; */ adj->value = (gfloat)start; adj->page_increment = (gfloat)(end - start); adj->page_size = (gfloat)(end - start); gtk_adjustment_changed(adj); gtk_ruler_set_range (GTK_RULER(view->time_ruler), start, end, start, end); sample_display_set_window(SAMPLE_DISPLAY(view->display), start, end); view_refresh_title(view); view_refresh_display(view); } void view_set_playmarker (sw_view * view, int offset) { SampleDisplay * sd = SAMPLE_DISPLAY(view->display); sample_display_set_playmarker(sd, offset); } --------- driver.c: #define PLAYBACK_SCALE (32768 / SW_AUDIO_T_MAX) #define PBUF_SIZE 256 static int dev_dsp = -1; static sw_sample * playing = NULL; static pthread_t player_thread; static int playoffset = -1; /* * update_playmarker () * * Update the position of the playback marker line for the sample * being played. * * gtk_idle will keep calling this function as long as this sample is * playing, unless otherwise stopped. */ static gint update_playmarker (gpointer data) { sw_sample * s = (sw_sample *)data; if (s == playing) { sample_set_playmarker (s, playoffset); return TRUE; } else { sample_set_playmarker (s, -1); return FALSE; } } static void start_playmarker (sw_sample * s) { s->playmarker_tag = gtk_idle_add ((GtkFunction)update_playmarker, s); } static void stop_playmarker (void) { if (playing->playmarker_tag > 0) gtk_idle_remove (playing->playmarker_tag); playing->playmarker_tag = 0; sample_set_playmarker (playing, -1); } ------------- Patrick. -- Boost Hardware. Importing Korean Computer Hardware to New Zealand. Http://www.boosthardware.com for latest stock and prices. |
From: Juhana S. <ko...@ni...> - 2001-05-11 17:00:41
|
>From: Patrick Shirkey <psh...@bo...> > >>Because we align the samples to the pixels accurately, we have >> playpos_at_left_pixel_edge = playposition - playposition % zoomratio; >> // what happens if playposition is negative? > >shouldn't that be: >playpos_at_left_pixel_edge = playposition - ((playposition % >zoomratio)/2); No. playposition % zoomratio gives the amount of samples in a block of zoomratio pixels. >s->view ->start = playpos_at_left_pixel_edge-(centerpixel-0)*zoomratio; >s->view->end = s->view->start + s->view - 1; I suggest to not update those directly if they are the variables which are actually used to set the view in the GUI. Temporary data structure should be used because the view may be scheduled in a different place. A wrap function view_set(view,start, end) would be good in any case besides view_update(). >This is already defined in driver.c right at the start of the file. > >My knowledge of c is such that I don't know how to use it from >sample-display.c I will check the code. Regards, Juhana |
From: Patrick S. <psh...@bo...> - 2001-05-14 09:02:48
|
Juhana Sadeharju wrote: > > >s->view ->start = playpos_at_left_pixel_edge-(centerpixel-0)*zoomratio; > >s->view->end = s->view->start + s->view - 1; > > I suggest to not update those directly if they are the variables > which are actually used to set the view in the GUI. Temporary > data structure should be used because the view may be scheduled > in a different place. A wrap function view_set(view,start, end) > would be good in any case besides view_update(). > I'm attempting to force my brain into understanding this concept. Can you tell me if I have the right idea. - The centerpixel tests itself against the playpostion. If the playpostion is equal to the centerpixel then the centerpixel follows the playposition. This will keep happening until the playposition is equal to the end - half of the view (or depending on direction) the start + half of the view. - The playmarker and the view will both get position from the center pixel. - If the centerpixel is moved in the direction the music is playing, this forces a redraw. - The left and right of the view are defined around the centerpixel much the same way that the playmarker is, except they are equidistant from the centerpixel depending on the size of the gui. - If the centerpixel is not equal to the playposition then the ends do not upate but the playmarker still follows the playposition. - To make the auto scroll look nice you have suggested updating the playposition 10 - 20 times/second. - zoomratio is the amount of pixels that can be seen inside the view. - The amount of samples displayed is defined by playposition % zoomratio. Is this some of what you are thinking? >So, the waveform moves pixel by pixel. If the start and end values > doesn't change, there is no need to update the waveform. How about making the need to update based on whether or not the playmarker will go past the end or start of the view. If it won't then just update the playmarker, if it will then start scrolling the screen immediately. I think this can be done by querying which kind of playfunction/routine is being used and also if the selection end/start is off screen. If we do this then it may not be a good idea to intergrate sweep into the aes engine but instead let LAAGA do the work of intergrating. From here I think I will work on the last idea for now and let you go for the idea that you are cooking. It shouldn't be too hard to combine them once we have some valid code. Ka Kite. -- Patrick Shirkey - Manager Boost Hardware. Http://www.boosthardware.com for latest stock and prices. Importing Korean Computer Hardware to New Zealand. |
From: Patrick S. <psh...@bo...> - 2001-07-13 08:43:58
|
Hi. Does anyone know where to find this file so that I can try to get sweep going on my new machine? --------- Making install in src make[1]: Entering directory `/usr/local/sweep-0.1.1/src' gcc -DHAVE_CONFIG_H -I. -I. -I../include/sweep -I../intl -I../include -I/usr/local/include/gtk-1.2 -I/usr/local/include/glib-1.2 -I/usr/local/lib/glib/include -D_REENTRANT -I/usr/X11R6/include -g -O2 -I/usr/local/include/gtk-1.2 -I/usr/local/include/glib-1.2 -I/usr/local/lib/glib/include -D_REENTRANT -I/usr/X11R6/include -Wall -c file_ops.c file_ops.c:30:23: audiofile.h: No such file or directory make[1]: *** [file_ops.o] Error 1 make[1]: Leaving directory `/usr/local/sweep-0.1.1/src' make: *** [install-recursive] Error 1 ---------- |
From: Steve H. <S.W...@ec...> - 2001-07-13 08:59:56
|
On Fri, Jul 13, 2001 at 05:51:48PM +0900, Patrick Shirkey wrote: > Hi. > > Does anyone know where to find this file so that I can try to get sweep > going on my new machine? Do you have audiofile-devel installed (if its an RPM system). - Steve > --------- > Making install in src > make[1]: Entering directory `/usr/local/sweep-0.1.1/src' > gcc -DHAVE_CONFIG_H -I. -I. -I../include/sweep -I../intl -I../include > -I/usr/local/include/gtk-1.2 -I/usr/local/include/glib-1.2 > -I/usr/local/lib/glib/include -D_REENTRANT -I/usr/X11R6/include -g > -O2 -I/usr/local/include/gtk-1.2 -I/usr/local/include/glib-1.2 > -I/usr/local/lib/glib/include -D_REENTRANT -I/usr/X11R6/include -Wall -c > file_ops.c > file_ops.c:30:23: audiofile.h: No such file or directory > make[1]: *** [file_ops.o] Error 1 > make[1]: Leaving directory `/usr/local/sweep-0.1.1/src' > make: *** [install-recursive] Error 1 > ---------- > > _______________________________________________ > sweep-devel mailing list > swe...@li... > http://lists.sourceforge.net/lists/listinfo/sweep-devel |
From: Patrick S. <psh...@bo...> - 2001-07-13 09:17:07
|
Steve Harris wrote: > > > > Does anyone know where to find this file so that I can try to get sweep > > going on my new machine? > > Do you have audiofile-devel installed (if its an RPM system). > Ta. I had the mandrake version but the tarball seems to have fixed things. Now I will have to get onto Radoslavs' patch. -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Patrick S. <psh...@bo...> - 2001-07-13 09:21:29
|
Well Sweep starts but it won't open any files. Has anyone encountered that problem before? -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Steve H. <S.W...@ec...> - 2001-07-13 09:28:04
|
On Fri, Jul 13, 2001 at 06:29:39PM +0900, Patrick Shirkey wrote: > Well Sweep starts but it won't open any files. > > Has anyone encountered that problem before? Nope, works fine for me (current CVS), both with command line args and file->open. I haven't tried the patches though, have they been rolled into the cvs version? - Steve |
From: Patrick S. <psh...@bo...> - 2001-07-13 16:25:00
|
Steve Harris wrote: > Nope, works fine for me (current CVS), both with command line args and > file->open. > I'll try cvs but I have a funny feeling that your system is running a lot cleaner than mine ;-] > I haven't tried the patches though, have they been rolled into the cvs > version? > No AFAIK. I think they need a bit of testing and Conrad seems to have found bigger and better things to do with his knowledge. Good eh? -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Conrad P. <co...@ve...> - 2001-07-16 00:28:26
|
On Sat, Jul 14, 2001 at 01:33:09AM +0900, Patrick Shirkey wrote: > Steve Harris wrote: > > I haven't tried the patches though, have they been rolled into the cvs > > version? > > > > No AFAIK. I think they need a bit of testing and Conrad seems to have > found bigger and better things to do with his knowledge. Good eh? bah, not quite true. I've been redesigning craploads of stuff. I ran into a bit of a wall getting cuts and reinserts working with multiple layers, so now I'm working on a new backend. I've tested Rad's "large file" patches but they don't seem to solve the right problem; they implement some userspace paging but the real problem is getting rid of excessive memory accesses when rendering. That patch is excellent code, but seems to degrade performance if anything. His other patches rock, and are in CVS. K. |
From: Patrick S. <psh...@bo...> - 2001-07-19 13:47:39
|
Conrad Parker wrote: > > I've been redesigning craploads of stuff. I ran into > a bit of a wall getting cuts and reinserts working with multiple layers, > so now I'm working on a new backend. Do you have any idea when you will feel like releasing some patches? It would be interesting to test them out. -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Patrick S. <psh...@bo...> - 2001-07-20 20:50:03
|
Steve mentioned this a few months ago. Since then there doesn't seem to have been any progress. Pretty much the only ones I can use sucessfully seem to be the ones that adjust volumes. Looking through ladspameta.c everything seems to look right at first glance. After trying to use the ladspa plugins for hours I have noticed max and min settings need to be provided. We have the suggested values button but they don't seem to exist for the ladspa plugins. An example to illustrate the response I get: In the plugin gui the parameters can be set at an unlimited amount if the user doesn't know what s/he is doing. There should be a max limit imposed on the plugins parameters on the gui side. Is there anyway to find out the max and min settings of the ladpsa plugins without doing it manually for every single one? -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Patrick S. <psh...@bo...> - 2001-07-21 07:32:27
|
Patrick Shirkey wrote: > > Is there anyway to find out the max and min settings of the ladpsa > plugins without doing it manually for every single one? Ok I found that. What I have decided is the best approach is to get a popup dialog when the mouse is over the suggest button that informs the user of the realistic minimum and maximium settings for each filter. I have seen this idea used in gnoise so I will copy from there. It would also be good to have a description of how the filters increment. ie: LADSPA_HINT_BOUNDED_BELOW LADSPA_HINT_BOUNDED_ABOVE LADSPA_HINT_TOGGLED LADSPA_HINT_SAMPLE_RATE LADSPA_HINT_LOGARITHMIC LADSPA_HINT_INTEGER If anyone objects to this approach then please let me know. Another thing I think could be changed is the menu for the ladspa filters. The problem is that there are so many they don't fit on the screen. Ardour solves this by providing a scroll menu for the plugins. Sweep should have this for the ladspa plugins but the native plugins should work in the same way that the gimp does. If anyone objects to this approach then please let me know. So, I'll see what kind of dent I can make in these two ideas over the next couple of weeks. -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Conrad P. <co...@ve...> - 2001-07-23 03:06:13
|
On Sat, Jul 21, 2001 at 04:40:47PM +0900, Patrick Shirkey wrote: > Patrick Shirkey wrote: > > > > Is there anyway to find out the max and min settings of the ladpsa > > plugins without doing it manually for every single one? > > Ok I found that. > > What I have decided is the best approach is to get a popup dialog when > the mouse is over the suggest button that informs the user of the > realistic minimum and maximium settings for each filter. > > I have seen this idea used in gnoise so I will copy from there. It would > also be good to have a description of how the filters increment. ie: > > LADSPA_HINT_BOUNDED_BELOW > LADSPA_HINT_BOUNDED_ABOVE > LADSPA_HINT_TOGGLED > LADSPA_HINT_SAMPLE_RATE > LADSPA_HINT_LOGARITHMIC > LADSPA_HINT_INTEGER > > If anyone objects to this approach then please let me know. LADSPA_HINT_BOUNDED_BELOW, LADSPA_HINT_BOUNDED_ABOVE, LADSPA_HINT_TOGGLED, and LADSPA_HINT_INTEGER are translated into sweep constraints and types, ie. the bound hints are translated into corresponding hard bounds, the toggled hint is translated to a sweep boolean, and the integer hint is converted to an integer type. Sweep then creates appropriate gui elements, eg. toggle buttons for toggles, sliders for bounded values and spinbuttons for unbounded values. LADSPA_HINT_SAMPLE_RATE and LADSPA_HINT_LOGARITHMIC are currently not used by sweep. "suggest" is handled at the sweep plugin level, ie. non-gui. It should return distinct useful default values for the plugin parameters. As these aren't provided by ladspa, the best behaviour is to retrofit known values to known plugins, through some kind of config file. Conrad. |
From: Patrick S. <psh...@bo...> - 2001-07-23 06:03:50
|
Conrad Parker wrote: > > LADSPA_HINT_BOUNDED_BELOW, LADSPA_HINT_BOUNDED_ABOVE, LADSPA_HINT_TOGGLED, > and LADSPA_HINT_INTEGER are translated into sweep constraints and types, > ie. the bound hints are translated into corresponding hard bounds, the > toggled hint is translated to a sweep boolean, and the integer hint is > converted to an integer type. Sweep then creates appropriate gui elements, > eg. toggle buttons for toggles, sliders for bounded values and spinbuttons > for unbounded values. > > LADSPA_HINT_SAMPLE_RATE and LADSPA_HINT_LOGARITHMIC are currently not > used by sweep. > > "suggest" is handled at the sweep plugin level, ie. non-gui. It should > return distinct useful default values for the plugin parameters. Ahh. Having a more in depth look at the source for Sweep revealed that these parameters were already being called. > As these > aren't provided by ladspa, the best behaviour is to retrofit known values > to known plugins, through some kind of config file. > I was hoping there would be an easier way to do that. My idea now is to use the suggest button in the plugin gui to provide a short sentance explaining the upper and lower bounds of the filter and how it increments. Looking at the ladspa.h file there does seem to be some references to the sane upper and lower parameters for each filter. Perhaps we could make a program that iterates through every plugin and writes the relevant information for each one to a file. Is that what you are suggesting or are you suggesting that someone reads every filter and manually writes the config file? Perhaps this program could even be added to the ladspa libs (if it isn't already). -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Steve H. <S.W...@ec...> - 2001-07-23 10:50:12
|
On Mon, Jul 23, 2001 at 03:12:00PM +0900, Patrick Shirkey wrote: > use the suggest button in the plugin gui to provide a short sentance > explaining the upper and lower bounds of the filter and how it > increments. but that is how the constraints work anyway, so it doesn;t seem to be useful. I argued for a LADSPA_HINT_DEFAULT* to be added, but paul and richard wern't very keen, so it didn't go in. > Looking at the ladspa.h file there does seem to be some references to > the sane upper and lower parameters for each filter. Thats the range hints. There is no other mechanism. > Perhaps this program could even be added to the ladspa libs (if it isn't > already). There is no library for ladspa, just the header file, thats all you need. - Steve |
From: Patrick S. <psh...@bo...> - 2001-07-23 12:40:40
|
Steve Harris wrote: > > On Mon, Jul 23, 2001 at 03:12:00PM +0900, Patrick Shirkey wrote: > > use the suggest button in the plugin gui to provide a short sentance > > explaining the upper and lower bounds of the filter and how it > > increments. > > but that is how the constraints work anyway, so it doesn;t seem to be > useful. > Not really. I would like the suggest button to pop up a dialog on mouse over that provides the relevant information. > I argued for a LADSPA_HINT_DEFAULT* to be added, but paul and richard > wern't very keen, so it didn't go in. > My suggestion is not so much a default setting but a human readable description of the boundaries. It can't be that hard to add a small check function to either sweep or ladspa that provides this sentence: " Name of parameter: Min = , Max = , increments by factor of " Of course this is only a suggestion to remind people of the sane limits. If they want to set the parameters higher and lower than the logical bounds then no one would stop them. Remember that it is the suggest button and not the do what we tell you button ;-] > > Perhaps this program could even be added to the ladspa libs (if it isn't > > already). > > There is no library for ladspa, just the header file, thats all you need. > I didn't think that was the correct word but it was the first that came to mind. I still think there is scope for this but not until I/we figure out what it should say, how it should be presented. The only reason for it is to save people the time of finding out the limits of a setting. Does the filter gui already save the previous settings? Perhaps we could even allow the user to save multiple versions of the same filter with different names even? -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Patrick S. <psh...@bo...> - 2001-07-23 13:49:02
|
Adding to the gui is the easy part. Now I'm trying to figure out how to get the save dialog to save the filter settings. I'm adding to file_dialogs.c as it seems to be the place to store these functions. I've made a few psuedo code changes to the sample_save_as_ok_cb. Can anyone tell me how I could get the parameter settings in the filter gui to be read by this function? ----------- static void filter_save_as_ok_cb(GtkWidget * widget, gpointer data) { FilterParam * f = Filter_Param(data); sw_filter * filter; GtkWidget * filesel; gchar *dn, * fn; filter = s->view->sample; ****change this to s->gui->filter or something??? filesel = gtk_widget_get_toplevel (widget); dn = gtk_file_selection_get_filename(GTK_FILE_SELECTION(filesel)); save_current_file = g_strdup(dn); /* remove filename from dir */ fn = strrchr (dn, '/'); if (fn) { *fn++ = '\0'; } else { fn = dn; dn = NULL; } filter_set_pathname (filter, dn, fn); g_free(save_current_file); filter_save(filter); gtk_widget_destroy(GTK_WIDGET(filesel)); } static void filter_save_as_cancel_cb(GtkWidget * widget, gpointer data) { gtk_widget_destroy(GTK_WIDGET(data)); } ------------- -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Patrick S. <psh...@bo...> - 2001-07-23 15:22:03
|
Now I have come across two options. It's related to how the gui dispalys the presets once we have some to use. Do we provide a menu option in the Filters menu which would look exactly like the ladspa submenu (which I want to change to a scrollbar window) or ... do we provide the option once the user has opened up the relevant filter as a Preset button? We could do both in the end as they are conceptually easy to integrate. -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Patrick S. <psh...@bo...> - 2001-09-16 14:50:52
|
I finally cracked it. Now the autoscroll mechanism works properly and no need to press esc when it stops playing. :) Here's the patch against 0.1.1 not cvs. ------ --- sweep-0.1.1/src/sample-display.c Sat Oct 7 21:12:03 2000 +++ /usr/local/src/sweep/sweep-0.1.1/src/sample-display.c Sun Sep 16 23:46:17 2001 /* Values for s->selecting */ @@ -840,8 +871,20 @@ sample_display_do_marker_line(s->backing_pixmap, s->mixerpos_gc, s, 0, s->mixerpos, x_min, x_max); + } + + /*** sample auto scrolls while playing ***/ + + int m = (s->view->end - s->view->start)/2; + int p = s->mixerpos; + + if(p >= s->view->start + m && p < s->view->sample->sounddata->nr_frames - m) { + + view_set_ends (s->view, + (p + 1) - m, + (p + 1) + m); + } - } gdk_draw_pixmap(widget->window, s->fg_gc, s->backing_pixmap, area->x, area->y, ------ -- Patrick Shirkey - Manager Boost Hardware Limited. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - For the discerning hardware connoisseur. http://www.boosthardware.com/LAU/Linux_Audio_Users_Guide/ ======================================================================= |
From: Patrick S. <psh...@bo...> - 2001-09-17 11:31:14
|
The patch I sent in last night is good but it is kind of hard to look at. I have got it working much better now but before I send in another is it worth making the view always be based around the mixerpos while playing. ie. If the the start of the slection is off the screen when playing starts should the view automatically go there or should that be left to the user to manually scroll to that position before starting playback? In the former it would save a lot of hassle if the selection is large but it would also mean the place you are looking at on the screen suddenly gets changed which could be annoying if you are trying to spot a click/pop or annoying noise. -- Patrick Shirkey - Manager Boost Hardware Limited. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - For the discerning hardware connoisseur. http://www.boosthardware.com/LAU/Linux_Audio_Users_Guide/ ======================================================================= |
From: Patrick S. <psh...@bo...> - 2001-07-23 06:06:00
|
I have found that saving a file is often a hit and miss affair. Does anyone else have inconsistent results? If not then I have probably broken something somewhere. -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Patrick S. <psh...@bo...> - 2001-07-23 09:10:19
|
Conrad Parker wrote: > > the best behaviour is to retrofit known values > to known plugins, through some kind of config file. > Another option based on this is to allow the user to save the settings of each filter gui. Do you think that would be easy to implement? Then again we could combine this idea with the previous one and provide even more user friendlyness. -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |
From: Patrick S. <psh...@bo...> - 2001-07-23 09:28:47
|
Here's the start of what I'm talking about: ---------- --- ../sweep/src/param.c Thu Feb 1 16:35:59 2001 +++ src/param.c Mon Jul 23 18:33:14 2001 @@ -471,7 +471,7 @@ if (valid & SW_RANGE_STEP_VALID) { \ step_inc = (gfloat) pspec->constraint.range->step.##T##; \ } else { \ - step_inc = (gfloat) 0.01; \ + step_inc = (gfloat) 1.0; \ } \ page_inc = step_inc; \ page_size = step_inc; \ @@ -546,6 +546,9 @@ GtkWidget * hbox; GtkWidget * frame; GtkWidget * button; + GtkTooltips *tooltips; + + tooltips = gtk_tooltips_new (); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW(window), proc->name); @@ -568,6 +571,8 @@ gtk_widget_show (button); gtk_signal_connect (GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC (param_set_suggest_cb), ps); + gtk_tooltips_set_tip (tooltips, button, "Min = , Max = , filter increments by factor of ", NULL); + frame = gtk_frame_new (NULL); gtk_box_pack_start (GTK_BOX(main_vbox), frame, FALSE, FALSE, 0); @@ -589,6 +594,13 @@ gtk_widget_show (button); gtk_signal_connect (GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC (param_set_apply_cb), ps); + + button = gtk_button_new_with_label (_("Save")); + gtk_box_pack_start (GTK_BOX(hbox), button, TRUE, FALSE, 0); + gtk_widget_show (button); + gtk_signal_connect (GTK_OBJECT(button), "clicked", + GTK_SIGNAL_FUNC (param_set_apply_cb), ps); + button = gtk_button_new_with_label (_("Cancel")); gtk_box_pack_start (GTK_BOX(hbox), button, TRUE, FALSE, 0); ---------- -- Patrick Shirkey - Manager Boost Hardware. Importing Korean Computer Products to New Zealand. Http://www.boosthardware.com - Cool toys to fufill every geeks fantasy. |