X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Ftitler%2Ftitlerwindow.C;h=a97974aaee5530ab97ee9ee84c4d86656a91ee26;hp=bdf11eda3852bb9653106db0437bf0d24c96ab0a;hb=331564c0ebb30688da917fc1c89058e12771e348;hpb=25bafacda1fe9d8a9520cad451547a75d934c1bb diff --git a/cinelerra-5.1/plugins/titler/titlerwindow.C b/cinelerra-5.1/plugins/titler/titlerwindow.C index bdf11eda..a97974aa 100644 --- a/cinelerra-5.1/plugins/titler/titlerwindow.C +++ b/cinelerra-5.1/plugins/titler/titlerwindow.C @@ -20,7 +20,9 @@ */ #include "bcdisplayinfo.h" +#include "bcdialog.h" #include "bcsignals.h" +#include "browsebutton.h" #include "clip.h" #include "cstrdup.h" #include "automation.h" @@ -115,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; iget_icon(); @@ -363,7 +366,11 @@ void TitleWindow::create_objects() add_tool(background = new TitleBackground(client, this, x, y)); x += background->get_w() + margin; add_tool(background_path = new TitleBackgroundPath(client, this, x, y)); - x += background_path->get_w() + 2*margin; + x += background_path->get_w() + margin; + add_tool(background_browse = new BrowseButton( + client->server->mwindow->theme, this, background_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; @@ -377,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(); @@ -590,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(); } @@ -607,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(); } @@ -661,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); @@ -793,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; @@ -958,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; @@ -968,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; } @@ -1216,7 +1232,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; @@ -1319,55 +1335,75 @@ void TitleCurPopup::create_objects() TitleCurSubMenu *sub_menu; add_item(cur_item = new TitleCurItem(this, _("nudge"))); cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("nudge"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("nudge dx,dy"))); sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/nudge"))); 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 "))); 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)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("alpha"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("alpha "))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("alpha 0."))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("alpha .5"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("alpha 1."))); sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/alpha"))); 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"))); + 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)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("size"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("size +"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("size -"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("size "))); sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/size"))); add_item(cur_item = new TitleCurItem(this, _("bold"))); cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("bold"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("bold 1"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("bold 0"))); sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/bold"))); add_item(cur_item = new TitleCurItem(this, _("italic"))); cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("italic"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("italic 1"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("italic 0"))); sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/italic"))); add_item(cur_item = new TitleCurItem(this, _("caps"))); cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("caps"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("caps 1"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("caps 0"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("caps -1"))); sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/caps"))); add_item(cur_item = new TitleCurItem(this, _("ul"))); cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("ul"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("ul 1"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("ul 0"))); sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/ul"))); add_item(cur_item = new TitleCurItem(this, _("blink"))); cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("blink"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("blink 1"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("blink -1"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("blink "))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("blink 0"))); sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/blink"))); add_item(cur_item = new TitleCurItem(this, _("fixed"))); cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("fixed"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("fixed "))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("fixed 20"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("fixed 10"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("fixed 0"))); sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/fixed"))); add_item(cur_item = new TitleCurItem(this, _("sup"))); cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("sup"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("sup 1"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("sup 0"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("sup -1"))); sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("/sup"))); add_item(cur_item = new TitleCurItem(this, _("png"))); cur_item->add_submenu(sub_menu = new TitleCurSubMenu(cur_item)); - sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("png"))); + sub_menu->add_submenuitem(new TitleCurSubMenuItem(sub_menu,_("png file"))); } TitleCurItem::TitleCurItem(TitleCurPopup *popup, const char *text) @@ -1401,13 +1437,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]; @@ -1435,10 +1476,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, "",item_text); - int adv = strlen(txt); - int ret = window->insert_ibeam(txt, adv); - return ret; + char txt[BCTEXTLEN]; sprintf(txt, "",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_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, "",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; }