bd tweaks, add png browse to titler, ladspa path fix, colorpicker tweaks
[goodguy/history.git] / cinelerra-5.1 / plugins / titler / titlerwindow.C
index 2c92d8f35b3ffc9d3cb27bfd55fdb8db1ce5747c..9e577a9a3eb79372bb20f8a9a9e53d6d01c7fa5e 100644 (file)
@@ -20,6 +20,7 @@
  */
 
 #include "bcdisplayinfo.h"
+#include "bcdialog.h"
 #include "bcsignals.h"
 #include "browsebutton.h"
 #include "clip.h"
@@ -116,7 +117,8 @@ TitleWindow::TitleWindow(TitleMain *client)
 TitleWindow::~TitleWindow()
 {
        ungrab(client->server->mwindow->cwindow->gui);
-       delete fonts_popup;
+       delete color_popup;
+       delete png_popup;
        for( int i=0; i<fonts.size(); ++i )
                delete fonts[i]->get_icon();
 
@@ -367,7 +369,7 @@ void TitleWindow::create_objects()
        x += background_path->get_w() + margin;
        add_tool(background_browse = new BrowseButton(
                client->server->mwindow->theme, this, background_path,
-               x, y, 0, _("background media"), _("Select background media path")));
+               x, y, "", _("background media"), _("Select background media path")));
        x += background_browse->get_w() + 3*margin;
        add_tool(loop_playback = new TitleLoopPlayback(client, x, y));
        y += loop_playback->get_h() + 10;
@@ -382,6 +384,8 @@ void TitleWindow::create_objects()
        add_tool(cur_popup = new TitleCurPopup(client, this));
        cur_popup->create_objects();
        add_tool(fonts_popup = new TitleFontsPopup(client, this));
+       color_popup = new TitleColorPopup(client, this);
+       png_popup = new TitlePngPopup(client, this);
 
        show_window(1);
        update();
@@ -1221,7 +1225,7 @@ int TitleBottom::handle_event()
 
 
 TitleColorThread::TitleColorThread(TitleMain *client, TitleWindow *window, int is_outline)
- : ColorThread(1)
+ : ColorThread(1, _("Text Color"))
 {
        this->client = client;
        this->window = window;
@@ -1329,6 +1333,7 @@ void TitleCurPopup::create_objects()
        add_item(cur_item = new TitleCurItem(this, _("color")));
        cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item));
        sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("color #")));
+       sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("color ")));
        sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/color")));
        add_item(cur_item = new TitleCurItem(this, _("alpha")));
        cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item));
@@ -1340,6 +1345,7 @@ void TitleCurPopup::create_objects()
        add_item(cur_item = new TitleCurItem(this, _("font")));
        cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item));
        sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("font name")));
+       sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("font ")));
        sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/font")));
        add_item(cur_item = new TitleCurItem(this, _("size")));
        cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item));
@@ -1424,13 +1430,18 @@ int TitleCurSubMenuItem::handle_event()
        TitleCurPopup *popup = submenu->cur_item->popup;
        TitleWindow *window = popup->window;
        const char *item_text = get_text();
-       if( !strcmp(item_text, _("font")) ) {
-               int w = 300, h = 200;
-               int x = window->get_abs_cursor_x(0) - w + 10;
-               int y = window->get_abs_cursor_y(0) - 20;
-               if( x < 2 ) x = 2;
-               if( y < 2 ) y = 2;
-               window->fonts_popup->activate(x, y, w,h);
+       if( !strcmp(item_text, _("font name")) ) {
+               int px, py;
+               window->get_pop_cursor_xy(px ,py);
+               window->fonts_popup->activate(px, py, 300,200);
+               return 1;
+       }
+       if( !strcmp(item_text, _("color #")) ) {
+               window->color_popup->activate();
+               return 1;
+       }
+       if( !strcmp(item_text, _("png file")) ) {
+               window->png_popup->activate();
                return 1;
        }
        char txt[BCSTRLEN];
@@ -1458,10 +1469,73 @@ int TitleFontsPopup::handle_event()
        BC_ListBoxItem *item = get_selection(0, 0);
        if( !item ) return 1;
        const char *item_text = item->get_text();
-       char txt[BCTEXTLEN];
-       sprintf(txt, "<font %s>",item_text);
-       int adv = strlen(txt);
-       int ret = window->insert_ibeam(txt, adv);
-       return ret;
+       char txt[BCTEXTLEN];  sprintf(txt, "<font %s>",item_text);
+       return window->insert_ibeam(txt, strlen(txt));
+}
+
+TitleColorPopup::TitleColorPopup(TitleMain *client, TitleWindow *window)
+ : ColorThread(0, _("Text Color"))
+{
+       this->client = client;
+       this->window = window;
+       this->color_value = client->config.color;
+}
+TitleColorPopup::~TitleColorPopup()
+{
+}
+int TitleColorPopup::handle_new_color(int output, int alpha)
+{
+       color_value = output;
+       return 1;
+}
+int TitleColorPopup::activate()
+{
+       start_window(client->config.color, 255, 1);
+       return 1;
+}
+void TitleColorPopup::handle_done_event(int result)
+{
+       if( result ) return;
+       char txt[BCSTRLEN];  sprintf(txt, "<color #%06x>",color_value);
+       window->insert_ibeam(txt, strlen(txt));
+}
+
+TitlePngPopup::TitlePngPopup(TitleMain *client, TitleWindow *window)
+ : BC_DialogThread()
+{
+       this->client = client;
+       this->window = window;
+}
+
+TitlePngPopup::~TitlePngPopup()
+{
+       close_window();
+}
+
+void TitlePngPopup::handle_done_event(int result)
+{
+       if( result ) return;
+       BrowseButtonWindow *gui = (BrowseButtonWindow *)get_gui();
+       const char *path = gui->get_submitted_path();
+       char txt[BCSTRLEN];  sprintf(txt, "<png %s>",path);
+       window->insert_ibeam(txt, strlen(txt));
+}
+
+BC_Window *TitlePngPopup::new_gui()
+{
+        BC_DisplayInfo display_info;
+        int x = display_info.get_abs_cursor_x();
+        int y = display_info.get_abs_cursor_y();
+
+       BC_Window *gui = new BrowseButtonWindow(client->server->mwindow->theme,
+               x-25, y-100, window, "", _("Png file"), _("Png path"), 0);
+        gui->create_objects();
+       return gui;
+}
+
+int TitlePngPopup::activate()
+{
+       BC_DialogThread::start();
+       return 1;
 }