color coded keyframe curves, keyframe popups, cwin scrollbar fixes
[goodguy/history.git] / cinelerra-5.1 / cinelerra / awindowgui.C
index a6a1c1ce9ed9f82a964c34fd1bbef5ca4e06cecd..bee6da43413f3ff4d3b8ca9e155472ac0d802330 100644 (file)
@@ -397,16 +397,10 @@ void AssetPicon::create_objects()
 
 
 AWindowGUI::AWindowGUI(MWindow *mwindow, AWindow *awindow)
- : BC_Window(PROGRAM_NAME ": Resources",
-       mwindow->session->awindow_x,
-    mwindow->session->awindow_y,
-    mwindow->session->awindow_w,
-    mwindow->session->awindow_h,
-    100,
-    100,
-    1,
-    1,
-    1)
+ : BC_Window(_(PROGRAM_NAME ": Resources"),
+       mwindow->session->awindow_x, mwindow->session->awindow_y,
+       mwindow->session->awindow_w, mwindow->session->awindow_h,
+       100, 100, 1, 1, 1)
 {
 // printf("AWindowGUI::AWindowGUI %d %d %d %d\n",
 // mwindow->session->awindow_x,
@@ -542,25 +536,19 @@ SET_TRACE
 SET_TRACE
 
 // Mandatory folders
-       folders.append(picon = new AssetPicon(mwindow,
-               this,
-               AEFFECT_FOLDER));
+       folders.append(picon = new AssetPicon(mwindow, this, _(AEFFECT_FOLDER)));
        picon->persistent = 1;
-       folders.append(picon = new AssetPicon(mwindow,
-               this,
-               VEFFECT_FOLDER));
+       folders.append(picon = new AssetPicon(mwindow, this, _(VEFFECT_FOLDER)));
        picon->persistent = 1;
-       folders.append(picon = new AssetPicon(mwindow,
-               this,
-               ATRANSITION_FOLDER));
+       folders.append(picon = new AssetPicon(mwindow, this, _(ATRANSITION_FOLDER)));
        picon->persistent = 1;
-       folders.append(picon = new AssetPicon(mwindow,
-               this,
-               VTRANSITION_FOLDER));
+       folders.append(picon = new AssetPicon(mwindow, this, _(VTRANSITION_FOLDER)));
        picon->persistent = 1;
-       folders.append(picon = new AssetPicon(mwindow,
-               this,
-               LABEL_FOLDER));
+       folders.append(picon = new AssetPicon(mwindow, this, _(LABEL_FOLDER)));
+       picon->persistent = 1;
+       folders.append(picon = new AssetPicon(mwindow, this, _(CLIP_FOLDER)));
+       picon->persistent = 1;
+       folders.append(picon = new AssetPicon(mwindow, this, _(MEDIA_FOLDER)));
        picon->persistent = 1;
 
        create_label_folder();
@@ -597,7 +585,7 @@ SET_TRACE
        VFrame **images = mwindow->theme->get_image_set("playpatch_data");
        AVIconDrawing::calculate_geometry(this, images, &avicon_w, &avicon_h);
        add_subwindow(avicon_drawing = new AVIconDrawing(this, fw-avicon_w, fy, images));
-       add_subwindow(add_tools = new AddTools(mwindow, this, fx, fy, "Visibility"));
+       add_subwindow(add_tools = new AddTools(mwindow, this, fx, fy, _("Visibility")));
        add_tools->create_objects();
        fy += add_tools->get_h();  fh -= add_tools->get_h();
 SET_TRACE
@@ -684,9 +672,6 @@ int AWindowGUI::translation_event()
 
 void AWindowGUI::reposition_objects()
 {
-       divider->reposition_window(
-               mwindow->theme->adivider_x, mwindow->theme->adivider_y,
-               mwindow->theme->adivider_w, mwindow->theme->adivider_h);
        asset_list->reposition_window(
                mwindow->theme->alist_x, mwindow->theme->alist_y,
                mwindow->theme->alist_w, mwindow->theme->alist_h);
@@ -747,7 +732,7 @@ void AWindowGUI::stop_vicon_drawing()
 AWindowRemovePluginGUI::
 AWindowRemovePluginGUI(AWindow *awindow, AWindowRemovePlugin *thread,
        int x, int y, PluginServer *plugin)
- : BC_Window(PROGRAM_NAME ": Remove plugin", x,y, 500,200, 50, 50, 1, 0, 1, -1, "", 1)
+ : BC_Window(_(PROGRAM_NAME ": Remove plugin"), x,y, 500,200, 50, 50, 1, 0, 1, -1, "", 1)
 {
        this->awindow = awindow;
        this->thread = thread;
@@ -800,7 +785,7 @@ int AWindowRemovePlugin::remove_plugin(PluginServer *plugin, ArrayList<BC_ListBo
 void AWindowRemovePlugin::handle_close_event(int result)
 {
        if( !result ) {
-               printf("remove %s\n", plugin->path);
+               printf(_("remove %s\n"), plugin->path);
                ArrayList<BC_ListBoxItem*> *folder =
                        plugin->audio ? plugin->transition ?
                                &awindow->gui->atransitions :
@@ -1496,6 +1481,12 @@ int AWindowFolders::selection_changed()
        {
                gui->stop_vicon_drawing();
 
+               if(get_button_down() && get_buttonpress() == 3)
+               {
+                       gui->folderlist_menu->update_titles();
+                       gui->folderlist_menu->activate_menu();
+               }
+
                strcpy(mwindow->edl->session->current_folder, picon->get_text());
 //printf("AWindowFolders::selection_changed 1\n");
                gui->asset_list->draw_background();
@@ -1507,23 +1498,22 @@ int AWindowFolders::selection_changed()
 }
 
 int AWindowFolders::button_press_event()
-{
-       if( get_buttonpress() == 3 && is_event_win() && cursor_inside() )
-               return 0;
-       return BC_ListBox::button_press_event();
-}
-
-int AWindowFolders::button_release_event()
 {
        int result = 0;
-       if(get_buttonpress() == 3 && is_event_win() && cursor_inside())
+
+       result = BC_ListBox::button_press_event();
+
+       if(!result)
        {
-               gui->folderlist_menu->update_titles();
-               gui->folderlist_menu->activate_menu();
-               result = 1;
+               if(get_buttonpress() == 3 && is_event_win() && cursor_inside())
+               {
+                       gui->folderlist_menu->update_titles();
+                       gui->folderlist_menu->activate_menu();
+                       result = 1;
+               }
        }
-       else
-               result = BC_ListBox::button_release_event();
+
+
        return result;
 }
 
@@ -1532,6 +1522,7 @@ int AWindowFolders::button_release_event()
 
 
 
+
 AWindowAssets::AWindowAssets(MWindow *mwindow, AWindowGUI *gui, int x, int y, int w, int h)
  : BC_ListBox(x,
                y,
@@ -1559,36 +1550,20 @@ AWindowAssets::~AWindowAssets()
 }
 
 int AWindowAssets::button_press_event()
-{
-       if( get_buttonpress() == 3 && is_event_win() && cursor_inside() )
-               return 0;
-       return BC_ListBox::button_press_event();
-}
-
-int AWindowAssets::button_release_event()
 {
        int result = 0;
-       if(get_buttonpress() == 3 && is_event_win() && cursor_inside()) {
-               if( !strcasecmp(mwindow->edl->session->current_folder, AEFFECT_FOLDER) ||
-                   !strcasecmp(mwindow->edl->session->current_folder, VEFFECT_FOLDER) ||
-                   !strcasecmp(mwindow->edl->session->current_folder, ATRANSITION_FOLDER) ||
-                   !strcasecmp(mwindow->edl->session->current_folder, VTRANSITION_FOLDER)) {
-                       BC_ListBox::deactivate_selection();
-                       gui->assetlist_menu->update_titles();
-                       gui->assetlist_menu->activate_menu();
-               }
-                else if (!strcasecmp(mwindow->edl->session->current_folder, LABEL_FOLDER)) {
-                       gui->label_menu->update();
-                       gui->label_menu->activate_menu();
-               }
-               else {
-                       gui->asset_menu->update();
-                       gui->asset_menu->activate_menu();
-               }
+
+       result = BC_ListBox::button_press_event();
+
+       if(!result && get_buttonpress() == 3 && is_event_win() && cursor_inside())
+       {
+               BC_ListBox::deactivate_selection();
+               gui->assetlist_menu->update_titles();
+               gui->assetlist_menu->activate_menu();
                result = 1;
        }
-       else
-               result = BC_ListBox::button_release_event();
+
+
        return result;
 }
 
@@ -1596,28 +1571,25 @@ int AWindowAssets::button_release_event()
 int AWindowAssets::handle_event()
 {
 //printf("AWindowAssets::handle_event 1 %d %d\n", get_buttonpress(), get_selection(0, 0));
-       if(get_selection(0, 0))
-       {
-               if(!strcasecmp(mwindow->edl->session->current_folder, AEFFECT_FOLDER)) {}
-               else if(!strcasecmp(mwindow->edl->session->current_folder, VEFFECT_FOLDER)) {}
-               else if(!strcasecmp(mwindow->edl->session->current_folder, ATRANSITION_FOLDER)) {}
-               else if(!strcasecmp(mwindow->edl->session->current_folder, VTRANSITION_FOLDER)) {}
-               else if(mwindow->vwindows.size()) {
+       AssetPicon *asset_picon = (AssetPicon *)get_selection(0, 0);
+       if( !asset_picon ) return 0;
+       const char *folder = mwindow->edl->session->current_folder;
+       if( !strcasecmp(folder, AEFFECT_FOLDER) ) return 1;
+       if( !strcasecmp(folder, VEFFECT_FOLDER) ) return 1;
+       if( !strcasecmp(folder, ATRANSITION_FOLDER) ) return 1;
+       if( !strcasecmp(folder, VTRANSITION_FOLDER) ) return 1;
+       VWindow *vwindow = mwindow->vwindows.size() > DEFAULT_VWINDOW ?
+               mwindow->vwindows.get(DEFAULT_VWINDOW) : 0;
+       if( !vwindow || !vwindow->is_running() ) return 1;
 //printf("AWindowAssets::handle_event 2 %d %d\n", get_buttonpress(), get_selection(0, 0));
-                       mwindow->vwindows.get(DEFAULT_VWINDOW)->gui->lock_window("AWindowAssets::handle_event");
-
-                       if(((AssetPicon*)get_selection(0, 0))->indexable)
-                               mwindow->vwindows.get(DEFAULT_VWINDOW)->change_source(((AssetPicon*)get_selection(0, 0))->indexable);
-                       else
-                       if(((AssetPicon*)get_selection(0, 0))->edl)
-                               mwindow->vwindows.get(DEFAULT_VWINDOW)->change_source(((AssetPicon*)get_selection(0, 0))->edl);
 
-                       mwindow->vwindows.get(DEFAULT_VWINDOW)->gui->unlock_window();
-               }
-               return 1;
-       }
-
-       return 0;
+       vwindow->gui->lock_window("AWindowAssets::handle_event");
+       if( asset_picon->indexable )
+               vwindow->change_source(asset_picon->indexable);
+       else if( asset_picon->edl )
+               vwindow->change_source(asset_picon->edl);
+       vwindow->gui->unlock_window();
+       return 1;
 }
 
 int AWindowAssets::selection_changed()
@@ -1639,6 +1611,18 @@ int AWindowAssets::selection_changed()
                        if(((AssetPicon*)get_selection(0, 0))->label)
                                gui->label_menu->activate_menu();
                }
+               else
+               {
+                       if(((AssetPicon*)get_selection(0, 0))->indexable)
+                               gui->asset_menu->update();
+                       else
+                       if(((AssetPicon*)get_selection(0, 0))->edl)
+                               gui->asset_menu->update();
+
+
+
+                       gui->asset_menu->activate_menu();
+               }
 
                BC_ListBox::deactivate_selection();
                return 1;
@@ -1745,6 +1729,7 @@ int AWindowAssets::drag_motion_event()
        for(int i = 0; i < mwindow->vwindows.size(); i++)
        {
                VWindow *vwindow = mwindow->vwindows.get(i);
+               if( !vwindow->is_running() ) continue;
                vwindow->gui->lock_window("AWindowAssets::drag_motion_event");
                vwindow->gui->drag_motion();
                vwindow->gui->unlock_window();
@@ -1778,6 +1763,7 @@ int AWindowAssets::drag_stop_event()
                for(int i = 0; i < mwindow->vwindows.size(); i++)
                {
                        VWindow *vwindow = mwindow->vwindows.get(i);
+                       if( !vwindow->is_running() ) continue;
                        vwindow->gui->lock_window("AWindowAssets::drag_stop_event");
                        result = vwindow->gui->drag_stop();
                        vwindow->gui->unlock_window();