titler font fixups, debian i386 build
[goodguy/history.git] / cinelerra-5.1 / plugins / titler / titlerwindow.C
index 394d82dee327bfd197be6c07aeca29d78cba6a00..a97974aaee5530ab97ee9ee84c4d86656a91ee26 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;
@@ -383,6 +385,7 @@ void TitleWindow::create_objects()
        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();
@@ -596,6 +599,7 @@ void TitleWindow::previous_font()
 
        font->update(fonts.values[current_font]->get_text());
        strcpy(client->config.font, fonts.values[current_font]->get_text());
+       check_style(client->config.font);
        client->send_configure_change();
 }
 
@@ -613,6 +617,7 @@ void  TitleWindow::next_font()
 
        font->update(fonts.values[current_font]->get_text());
        strcpy(client->config.font, fonts.values[current_font]->get_text());
+       check_style(client->config.font);
        client->send_configure_change();
 }
 
@@ -667,6 +672,7 @@ void TitleWindow::update()
        fade_in->update((float)client->config.fade_in);
        fade_out->update((float)client->config.fade_out);
        font->update(client->config.font);
+       check_style(client->config.font);
        text->update(&client->config.wtext[0]);
        speed->update(client->config.pixels_per_second);
        outline->update((int64_t)client->config.outline_size);
@@ -799,13 +805,7 @@ int TitleItalic::handle_event()
 
 
 TitleSize::TitleSize(TitleMain *client, TitleWindow *window, int x, int y, char *text)
- : BC_PopupTextBox(window,
-               &window->sizes,
-               text,
-               x,
-               y,
-               64,
-               300)
+ : BC_PopupTextBox(window, &window->sizes, text, x, y, 64, 300)
 {
        this->client = client;
        this->window = window;
@@ -964,9 +964,18 @@ int TitleFade::handle_event()
        return 1;
 }
 
+void TitleWindow::check_style(const char *font_name)
+{
+       BC_FontEntry *font;
+       font = TitleMain::get_font(font_name, BC_FONT_ITALIC);
+       strcmp(font_name, font->displayname) ? italic->disable() : italic->enable();
+       font = TitleMain::get_font(font_name, BC_FONT_BOLD);
+       strcmp(font_name, font->displayname) ? bold->disable() : bold->enable();
+}
+
 TitleFont::TitleFont(TitleMain *client, TitleWindow *window, int x, int y)
  : BC_PopupTextBox(window, &window->fonts, client->config.font,
-               x, y, 200, 500, LISTBOX_ICON_LIST)
+               x, y, 240, 300, LISTBOX_ICON_LIST)
 {
        this->client = client;
        this->window = window;
@@ -974,6 +983,7 @@ TitleFont::TitleFont(TitleMain *client, TitleWindow *window, int x, int y)
 int TitleFont::handle_event()
 {
        strcpy(client->config.font, get_text());
+       window->check_style(client->config.font);
        client->send_configure_change();
        return 1;
 }
@@ -1437,6 +1447,10 @@ int TitleCurSubMenuItem::handle_event()
                window->color_popup->activate();
                return 1;
        }
+       if( !strcmp(item_text, _("png file")) ) {
+               window->png_popup->activate();
+               return 1;
+       }
        char txt[BCSTRLEN];
        sprintf(txt, "<%s>", item_text);
        int adv = strlen(txt);
@@ -1493,3 +1507,42 @@ void TitleColorPopup::handle_done_event(int result)
        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;
+}
+