rework histogram_bezier, init wm icon set_icon(gg), update de.po+msg/txt
[goodguy/history.git] / cinelerra-5.1 / cinelerra / resizetrackthread.C
index 57dab4c8f571f0dc557738b62a0a32d34f046942..f8e3de367561a23568d7089204a981b54cfd1d6b 100644 (file)
@@ -2,21 +2,21 @@
 /*
  * CINELERRA
  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
+ *
  */
 
 #include "asset.h"
@@ -60,6 +60,12 @@ ResizeVTrackThread::~ResizeVTrackThread()
 
 void ResizeVTrackThread::start_window(int w, int h, int w1, int h1)
 {
+       if( window && running() ) {
+               window->lock_window();
+               window->raise_window();
+               window->unlock_window();
+               return;
+       }
        this->w = w;    this->h = h;
        this->w1 = w1;  this->h1 = h1;
        w_scale = h_scale = 1;
@@ -69,24 +75,18 @@ void ResizeVTrackThread::start_window(int w, int h, int w1, int h1)
 
 void ResizeVTrackThread::run()
 {
-       ResizeVTrackWindow *window = this->window = 
-               new ResizeVTrackWindow(mwindow, 
-                       this,
+       window = new ResizeVTrackWindow(mwindow, this,
                        mwindow->gui->get_abs_cursor_x(1),
                        mwindow->gui->get_abs_cursor_y(1));
        window->create_objects();
        int result = window->run_window();
-       this->window = 0;
-       delete window;
 
-
-       if(!result)
-       {
+       delete window;  window = 0;
+       if(!result) {
                update();
        }
 
-       if(((w % 4) || 
-               (h % 4)) && 
+       if(((w % 4) || (h % 4)) &&
                mwindow->edl->session->playback_config->vconfig->driver == PLAYBACK_X11_GL)
        {
                MainError::show_error(
@@ -98,11 +98,11 @@ void ResizeVTrackThread::run()
 
 
 
-ResizeVTrackWindow::ResizeVTrackWindow(MWindow *mwindow, 
+ResizeVTrackWindow::ResizeVTrackWindow(MWindow *mwindow,
        ResizeVTrackThread *thread,
        int x,
        int y)
- : BC_Window(_(PROGRAM_NAME ": Resize Track"), 
+ : BC_Window(_(PROGRAM_NAME ": Resize Track"),
                                x - 320 / 2, y - get_resources()->ok_images[0]->get_h() + 100 / 2,
                                400, get_resources()->ok_images[0]->get_h() + 100,
                                400, get_resources()->ok_images[0]->get_h() + 100,
@@ -118,9 +118,8 @@ ResizeVTrackWindow::~ResizeVTrackWindow()
 
 void ResizeVTrackWindow::create_objects()
 {
-       int x = 10, y = 10;
-
        lock_window("ResizeVTrackWindow::create_objects");
+       int x = 10, y = 10;
        BC_Title *size_title = new BC_Title(x, y, _("Size:"));
        add_subwindow(size_title);
        int x1 = x + size_title->get_w();
@@ -154,8 +153,8 @@ void ResizeVTrackWindow::create_objects()
        unlock_window();
 }
 
-void ResizeVTrackWindow::update(int changed_scale, 
-       int changed_size, 
+void ResizeVTrackWindow::update(int changed_scale,
+       int changed_size,
        int changed_all)
 {
 //printf("ResizeVTrackWindow::update %d %d %d\n", changed_scale, changed_size, changed_all);
@@ -181,9 +180,9 @@ void ResizeVTrackWindow::update(int changed_scale,
 
 
 
-ResizeVTrackSwap::ResizeVTrackSwap(ResizeVTrackWindow *gui, 
-       ResizeVTrackThread *thread, 
-       int x, 
+ResizeVTrackSwap::ResizeVTrackSwap(ResizeVTrackWindow *gui,
+       ResizeVTrackThread *thread,
+       int x,
        int y)
  : BC_Button(x, y, thread->mwindow->theme->get_image_set("swap_extents"))
 {
@@ -209,7 +208,7 @@ int ResizeVTrackSwap::handle_event()
 
 
 
-ResizeVTrackWidth::ResizeVTrackWidth(ResizeVTrackWindow *gui, 
+ResizeVTrackWidth::ResizeVTrackWidth(ResizeVTrackWindow *gui,
        ResizeVTrackThread *thread,
        int x,
        int y)
@@ -225,7 +224,7 @@ int ResizeVTrackWidth::handle_event()
        return 1;
 }
 
-ResizeVTrackHeight::ResizeVTrackHeight(ResizeVTrackWindow *gui, 
+ResizeVTrackHeight::ResizeVTrackHeight(ResizeVTrackWindow *gui,
        ResizeVTrackThread *thread,
        int x,
        int y)
@@ -242,7 +241,7 @@ int ResizeVTrackHeight::handle_event()
 }
 
 
-ResizeVTrackScaleW::ResizeVTrackScaleW(ResizeVTrackWindow *gui, 
+ResizeVTrackScaleW::ResizeVTrackScaleW(ResizeVTrackWindow *gui,
        ResizeVTrackThread *thread,
        int x,
        int y)
@@ -258,7 +257,7 @@ int ResizeVTrackScaleW::handle_event()
        return 1;
 }
 
-ResizeVTrackScaleH::ResizeVTrackScaleH(ResizeVTrackWindow *gui, 
+ResizeVTrackScaleH::ResizeVTrackScaleH(ResizeVTrackWindow *gui,
        ResizeVTrackThread *thread,
        int x,
        int y)
@@ -299,7 +298,8 @@ void ResizeTrackThread::start_window(Track *track)
 
 void ResizeTrackThread::update()
 {
-       mwindow->resize_track(track, w, h);
+       if( mwindow->edl->tracks->track_exists(track) )
+               mwindow->resize_track(track, w, h);
 }
 
 
@@ -340,7 +340,6 @@ ResizeAssetButton::ResizeAssetButton(AssetEditWindow *fwindow, int x, int y)
 {
        resize_asset_thread = 0;
         this->fwindow = fwindow;
-        set_underline(0);
 }
 
 ResizeAssetButton::~ResizeAssetButton()
@@ -350,7 +349,8 @@ ResizeAssetButton::~ResizeAssetButton()
 
 int ResizeAssetButton::handle_event()
 {
-       resize_asset_thread = new ResizeAssetThread(fwindow);
+       if( !resize_asset_thread )
+               resize_asset_thread = new ResizeAssetThread(fwindow);
        resize_asset_thread->start_window(fwindow->asset_edit->changed_params);
         return 1;
 }