rework histogram_bezier, init wm icon set_icon(gg), update de.po+msg/txt
[goodguy/history.git] / cinelerra-5.1 / cinelerra / performanceprefs.C
index 148670a07b33ef6292b1c16afa5577548f5f2f0b..5c35553f1d9f5c93e7aaadf690ee822cde8920da 100644 (file)
@@ -28,6 +28,7 @@
 #include "mwindow.h"
 #include "performanceprefs.h"
 #include "preferences.h"
+#include <ctype.h>
 #include <string.h>
 #include "theme.h"
 
@@ -69,16 +70,7 @@ void PerformancePrefs::create_objects()
        xmargin1 = x = mwindow->theme->preferencesoptions_x;
        y = mwindow->theme->preferencesoptions_y;
 
-//     add_subwindow(new BC_Title(x,
-//             y,
-//             _("Time Format"),
-//             LARGEFONT,
-//             resources->text_default));
-//
-//     y += get_text_height(LARGEFONT) + 5;
-
        int y0 = y;
-
        win = add_subwindow(new BC_Title(x, y + 5, _("Cache size (MB):"), MEDIUMFONT, resources->text_default));
        maxw = win->get_w();
 
@@ -120,31 +112,23 @@ void PerformancePrefs::create_objects()
        y += win->get_h() + 10;
        win = add_subwindow(new BC_Title(x, y, _("Frames per background rendering job:")));
        y += win->get_h() + 5;
-       PrefsBRenderFragment *brender_fragment = new PrefsBRenderFragment(pwindow,
-               this,
-               x + xmargin3,
-               y);
+       PrefsBRenderFragment *brender_fragment = new PrefsBRenderFragment(pwindow, this,
+               x + xmargin3, y);
        brender_fragment->create_objects();
        y += brender_fragment->get_h() + 5;
        win = add_subwindow(new BC_Title(x, y, _("Frames to preroll background:")));
        y += win->get_h() + 5;
-       PrefsBRenderPreroll *bpreroll = new PrefsBRenderPreroll(pwindow,
-               this,
-               x + xmargin3,
-               y + 5);
+       PrefsBRenderPreroll *bpreroll = new PrefsBRenderPreroll(pwindow, this,
+               x + xmargin3, y + 5);
        bpreroll->create_objects();
        y += bpreroll->get_h() + 20;
 
-
        x += xmargin4;
        add_subwindow(new BC_Title(x, y1, _("Output for background rendering:")));
        y1 += 20;
-       brender_tools =
-               new FormatTools(mwindow,
-                       this,
+       brender_tools = new FormatTools(mwindow, this,
                        pwindow->thread->preferences->brender_asset);
-       brender_tools->create_objects(x,
-               y1,
+       brender_tools->create_objects(x, y1,
                0,  // Include tools for audio
                1,  // Include tools for video
                0,  // Include checkbox for audio
@@ -153,7 +137,7 @@ void PerformancePrefs::create_objects()
                1,
                0,  // Select compressors to be offered
                0,  // Prompt for recording options
-               0,  // If nonzero, prompt for insertion strategy
+               0,  // prompt for use labels
                1); // Supply file formats for background rendering
        x = xmargin1;
 
@@ -162,84 +146,42 @@ void PerformancePrefs::create_objects()
        add_subwindow(new BC_Bar(5, y, get_w() - 10));
        y += 5;
        add_subwindow(new BC_Title(x, y, _("Render Farm"), LARGEFONT, resources->text_default));
+       x1 = get_w() - BC_GenericButton::calculate_w(this, _("Reset rates")) - x;
+       add_subwindow(new PrefsRenderFarmReset(pwindow, this, x1, y));
        x1 = x + xmargin4;
        BC_Title *node_title = new BC_Title(x1, y, _("Nodes:"));
        add_subwindow(node_title);
-       x1 += node_title->get_w() + 25;
+       x1 += node_title->get_w() + 15;
        sprintf(string, _(MASTER_NODE_FRAMERATE_TEXT),
                pwindow->thread->preferences->local_rate);
        add_subwindow(master_rate = new BC_Title(x1, y, string));
-       y += 25;
-       add_subwindow(node_list = new PrefsRenderFarmNodes(pwindow,
-               this,
-               x + xmargin4,
-               y));
-       y += 5;
-       add_subwindow(new PrefsRenderFarm(pwindow, x, y));
-       y += 30;
-       add_subwindow(new BC_Title(x, y, _("Hostname:")));
+       add_subwindow(node_list = new PrefsRenderFarmNodes(pwindow, this, x + xmargin4, y+=25));
+       add_subwindow(new PrefsRenderFarm(pwindow, x, y+=5));
+       add_subwindow(new BC_Title(x, y+=30, _("Hostname:")));
        add_subwindow(new BC_Title(x + xmargin3, y, _("Port:")));
-
-       y += 25;
-       add_subwindow(edit_node = new PrefsRenderFarmEditNode(pwindow,
-               this,
-               x,
-               y));
-       edit_port = new PrefsRenderFarmPort(pwindow,
-               this,
-               x + xmargin3,
-               y);
+       add_subwindow(edit_node = new PrefsRenderFarmEditNode(pwindow, this, x, y+=25));
+       edit_port = new PrefsRenderFarmPort(pwindow, this, x+xmargin3, y);
        edit_port->create_objects();
 
-       y += 30;
-
-
-       add_subwindow(new PrefsRenderFarmReplaceNode(pwindow,
-               this,
-               x,
-               y));
-       add_subwindow(new PrefsRenderFarmNewNode(pwindow,
-               this,
-               x + xmargin2,
-               y));
-       y += 30;
-       add_subwindow(new PrefsRenderFarmDelNode(pwindow,
-               this,
-               x + xmargin2,
-               y));
-       add_subwindow(new PrefsRenderFarmSortNodes(pwindow,
-               this,
-               x,
-               y));
-       y += 30;
-       add_subwindow(new PrefsRenderFarmReset(pwindow,
-               this,
-               x,
-               y));
-       y += 35;
-       add_subwindow(new BC_Title(x,
-               y,
-               _("Total jobs to create:")));
-       add_subwindow(new BC_Title(x,
-               y + 30,
-               _("(overridden if new file at each label is checked)")));
-       PrefsRenderFarmJobs *jobs = new PrefsRenderFarmJobs(pwindow,
-               this,
-               x + xmargin3,
-               y);
+       add_subwindow(new PrefsRenderFarmReplaceNode(pwindow, this, x, y+=30));
+       add_subwindow(new PrefsRenderFarmNewNode(pwindow, this, x+xmargin2, y));
+       add_subwindow(new PrefsRenderFarmSortNodes(pwindow, this, x, y+=30));
+       add_subwindow(new PrefsRenderFarmDelNode(pwindow, this, x+xmargin2, y));
+       add_subwindow(new BC_Title(x, y+=35, _("Client Watchdog Timeout:")));
+       renderfarm_watchdog = new PrefsRenderFarmWatchdog(pwindow, this, x+xmargin3, y-5);
+       renderfarm_watchdog->create_objects();
+       add_subwindow(new BC_Title(x, y+=35, _("Total jobs to create:")));
+       PrefsRenderFarmJobs *jobs = new PrefsRenderFarmJobs(pwindow, this,
+               x + xmargin3, y-5);
        jobs->create_objects();
-       y += 55;
-//     add_subwindow(new PrefsRenderFarmVFS(pwindow,
-//             this,
-//             x,
-//             y));
-//     add_subwindow(new BC_Title(x,
-//             y,
+       y += jobs->get_h() + 5;
+       win = add_subwindow(new BC_Title(x, y,
+               _("(overridden if new file at each label is checked)")));
+//     y += win->get_h() + 5;
+//     add_subwindow(new PrefsRenderFarmVFS(pwindow, this, x, y));
+//     add_subwindow(new BC_Title(x, y,
 //             _("Filesystem prefix on remote nodes:")));
-//     add_subwindow(new PrefsRenderFarmMountpoint(pwindow,
-//             this,
-//             x + xmargin3,
-//             y));
+//     add_subwindow(new PrefsRenderFarmMountpoint(pwindow, this, x + xmargin3, y));
 //     y += 30;
 }
 
@@ -274,32 +216,25 @@ void PerformancePrefs::generate_node_list()
        }
 }
 
-static const char *titles[] =
-{
-       N_("On"),
-       N_("Hostname"),
-       N_("Port"),
-       N_("Framerate")
+
+static const char *default_titles[] = {
+       N_("On"), N_("Hostname"), N_("Port"), N_("Framerate")
 };
 
-static int widths[] =
-{
-       30,
-       150,
-       50,
-       50
+static int default_widths[] = {
+       30, 150, 50, 50
 };
 
 
 void PerformancePrefs::update_node_list()
 {
-       node_list->update(nodes,
-                                               titles,
-                                               widths,
-                                               TOTAL_COLUMNS,
-                                               node_list->get_xposition(),
-                                               node_list->get_yposition(),
-                                               node_list->get_selection_number(0, 0));
+       node_list->update_list();
+}
+
+void PrefsRenderFarmNodes::update_list()
+{
+       update(subwindow->nodes, titles, widths, PerformancePrefs::TOTAL_COLUMNS,
+               get_xposition(), get_yposition(), get_selection_number(0, 0));
 }
 
 
@@ -346,21 +281,11 @@ int PrefsUseBRender::handle_event()
 }
 
 
-
-
-
-
 PrefsBRenderFragment::PrefsBRenderFragment(PreferencesWindow *pwindow,
-       PerformancePrefs *subwindow,
-       int x,
-       int y)
+       PerformancePrefs *subwindow, int x, int y)
  : BC_TumbleTextBox(subwindow,
        (int64_t)pwindow->thread->preferences->brender_fragment,
-       (int64_t)1,
-       (int64_t)65535,
-       x,
-       y,
-       100)
+       (int64_t)1, (int64_t)65535, x, y, 100)
 {
        this->pwindow = pwindow;
 }
@@ -370,27 +295,13 @@ int PrefsBRenderFragment::handle_event()
        return 1;
 }
 
-
-
-
-
-
-
-
-
-
-
-CICacheSize::CICacheSize(int x,
-       int y,
-       PreferencesWindow *pwindow,
-       PerformancePrefs *subwindow)
+CICacheSize::CICacheSize(int x, int y,
+       PreferencesWindow *pwindow, PerformancePrefs *subwindow)
  : BC_TumbleTextBox(subwindow,
        (int64_t)pwindow->thread->preferences->cache_size / 0x100000,
        (int64_t)MIN_CACHE_SIZE / 0x100000,
        (int64_t)MAX_CACHE_SIZE / 0x100000,
-       x,
-       y,
-       100)
+       x, y, 100)
 {
        this->pwindow = pwindow;
        set_increment(1);
@@ -452,15 +363,6 @@ int PrefsBRenderPreroll::handle_event()
 }
 
 
-
-
-
-
-
-
-
-
-
 PrefsRenderFarm::PrefsRenderFarm(PreferencesWindow *pwindow, int x, int y)
  : BC_CheckBox(x,
        y,
@@ -479,8 +381,6 @@ int PrefsRenderFarm::handle_event()
 }
 
 
-
-
 PrefsForceUniprocessor::PrefsForceUniprocessor(PreferencesWindow *pwindow, int x, int y)
  : BC_CheckBox(x,
        y,
@@ -546,19 +446,15 @@ int PrefsRenderFarmPort::handle_event()
 
 
 PrefsRenderFarmNodes::PrefsRenderFarmNodes(PreferencesWindow *pwindow,
-       PerformancePrefs *subwindow,
-       int x,
-       int y)
- : BC_ListBox(x,
-               y,
-               340,
-               230,
-               LISTBOX_TEXT,                         // Display text list or icons
-               subwindow->nodes,
-               titles,
-               widths,
-               4)
+       PerformancePrefs *subwindow, int x, int y)
+ : BC_ListBox(x, y, 340, 230, LISTBOX_TEXT, 0,0,0,1, 0,0, LISTBOX_MULTIPLE)
 {
+       for( int i=0; i<PerformancePrefs::TOTAL_COLUMNS; ++i ) {
+               titles[i] = _(default_titles[i]);
+               widths[i] = default_widths[i];
+       }
+       update(subwindow->nodes, titles, widths, PerformancePrefs::TOTAL_COLUMNS,
+               0, 0, -1, 0, 0);
        this->subwindow = subwindow;
        this->pwindow = pwindow;
 }
@@ -568,7 +464,7 @@ PrefsRenderFarmNodes::~PrefsRenderFarmNodes()
 
 int PrefsRenderFarmNodes::column_resize_event()
 {
-       for(int i = 0; i < 3; i++)
+       for( int i=0; i<PerformancePrefs::TOTAL_COLUMNS; ++i )
                widths[i] = get_column_width(i);
        return 1;
 }
@@ -580,7 +476,9 @@ SET_TRACE
        {
                subwindow->hot_node = get_selection_number(1, 0);
                subwindow->edit_node->update(get_selection(1, 0)->get_text());
-               subwindow->edit_port->update(get_selection(2, 0)->get_text());
+               const char *text = get_selection(2, 0)->get_text();
+               subwindow->edit_port->update(text);
+               pwindow->thread->preferences->renderfarm_port = atol(text);
                if(get_cursor_x() < widths[0])
                {
                        pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node] =
@@ -604,11 +502,6 @@ int PrefsRenderFarmNodes::selection_changed()
 }
 
 
-
-
-
-
-
 PrefsRenderFarmEditNode::PrefsRenderFarmEditNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
  : BC_TextBox(x, y, 240, 1, "")
 {
@@ -626,12 +519,8 @@ int PrefsRenderFarmEditNode::handle_event()
 }
 
 
-
-
-
-
 PrefsRenderFarmNewNode::PrefsRenderFarmNewNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
- : BC_GenericButton(x, y, _("Add Node"))
+ : BC_GenericButton(x, y, _("Add Nodes"))
 {
        this->pwindow = pwindow;
        this->subwindow = subwindow;
@@ -641,10 +530,17 @@ PrefsRenderFarmNewNode::~PrefsRenderFarmNewNode()
 }
 int PrefsRenderFarmNewNode::handle_event()
 {
-       pwindow->thread->preferences->add_node(subwindow->edit_node->get_text(),
-               pwindow->thread->preferences->renderfarm_port,
-               1,
-               0.0);
+       const char *name = subwindow->edit_node->get_text();
+       char *cp = (char*)subwindow->edit_port->get_text();
+       int64_t start_port = strtol(cp, &cp, 0), end_port = start_port;
+       while( isspace(*cp) ) ++cp;
+       if( *cp++ == '-' )
+               end_port = strtol(cp, &cp, 0);
+       for( int port=start_port; port<=end_port; ++port ) {
+               pwindow->thread->preferences->add_node(name, port, 1, 0.0);
+       }
+       pwindow->thread->preferences->renderfarm_port = end_port;
+       subwindow->edit_port->update(end_port);
        pwindow->thread->preferences->reset_rates();
        subwindow->generate_node_list();
        subwindow->update_node_list();
@@ -653,11 +549,6 @@ int PrefsRenderFarmNewNode::handle_event()
 }
 
 
-
-
-
-
-
 PrefsRenderFarmReplaceNode::PrefsRenderFarmReplaceNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
  : BC_GenericButton(x, y, _("Apply Changes"))
 {
@@ -682,11 +573,8 @@ int PrefsRenderFarmReplaceNode::handle_event()
 }
 
 
-
-
-
 PrefsRenderFarmDelNode::PrefsRenderFarmDelNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
- : BC_GenericButton(x, y, _("Delete Node"))
+ : BC_GenericButton(x, y, _("Delete Nodes"))
 {
        this->pwindow = pwindow;
        this->subwindow = subwindow;
@@ -696,20 +584,18 @@ PrefsRenderFarmDelNode::~PrefsRenderFarmDelNode()
 }
 int PrefsRenderFarmDelNode::handle_event()
 {
-       if( subwindow->hot_node >= 0 ) {
-               pwindow->thread->preferences->delete_node(subwindow->hot_node);
-
-               subwindow->generate_node_list();
-               subwindow->update_node_list();
-               subwindow->hot_node = -1;
+       ArrayList<BC_ListBoxItem *> &item_list = subwindow->nodes[0];
+       for( int i=item_list.size(); --i>=0; ) {
+               if( !item_list[i]->get_selected() ) continue;
+               pwindow->thread->preferences->delete_node(i);
        }
+       subwindow->generate_node_list();
+       subwindow->update_node_list();
+       subwindow->hot_node = -1;
        return 1;
 }
 
 
-
-
-
 PrefsRenderFarmSortNodes::PrefsRenderFarmSortNodes(PreferencesWindow *pwindow,
        PerformancePrefs *subwindow,
        int x,
@@ -734,13 +620,8 @@ int PrefsRenderFarmSortNodes::handle_event()
 }
 
 
-
-
-
 PrefsRenderFarmReset::PrefsRenderFarmReset(PreferencesWindow *pwindow,
-       PerformancePrefs *subwindow,
-       int x,
-       int y)
+       PerformancePrefs *subwindow, int x, int y)
  : BC_GenericButton(x, y, _("Reset rates"))
 {
        this->pwindow = pwindow;
@@ -755,7 +636,7 @@ int PrefsRenderFarmReset::handle_event()
 
        char string[BCTEXTLEN];
        sprintf(string,
-               MASTER_NODE_FRAMERATE_TEXT,
+               _(MASTER_NODE_FRAMERATE_TEXT),
                pwindow->thread->preferences->local_rate);
        subwindow->master_rate->update(string);
        subwindow->hot_node = -1;
@@ -763,9 +644,6 @@ int PrefsRenderFarmReset::handle_event()
 }
 
 
-
-
-
 PrefsProjectSMP::PrefsProjectSMP(PreferencesWindow *pwindow,
                PerformancePrefs *subwindow, int x, int y)
  : BC_TumbleTextBox(subwindow,
@@ -784,20 +662,13 @@ int PrefsProjectSMP::handle_event()
 }
 
 
-
-
-
 PrefsRenderFarmJobs::PrefsRenderFarmJobs(PreferencesWindow *pwindow,
                PerformancePrefs *subwindow,
                int x,
                int y)
  : BC_TumbleTextBox(subwindow,
        (int64_t)pwindow->thread->preferences->renderfarm_job_count,
-       (int64_t)1,
-       (int64_t)100,
-       x,
-       y,
-       100)
+       (int64_t)1, (int64_t)100, x, y, 100)
 {
        this->pwindow = pwindow;
 }
@@ -811,15 +682,9 @@ int PrefsRenderFarmJobs::handle_event()
 }
 
 
-
 PrefsRenderFarmMountpoint::PrefsRenderFarmMountpoint(PreferencesWindow *pwindow,
-               PerformancePrefs *subwindow,
-               int x,
-               int y)
- : BC_TextBox(x,
-       y,
-       100,
-       1,
+               PerformancePrefs *subwindow, int x, int y)
+ : BC_TextBox(x, y, 100, 1,
        pwindow->thread->preferences->renderfarm_mountpoint)
 {
        this->pwindow = pwindow;
@@ -835,8 +700,6 @@ int PrefsRenderFarmMountpoint::handle_event()
 }
 
 
-
-
 PrefsRenderFarmVFS::PrefsRenderFarmVFS(PreferencesWindow *pwindow,
        PerformancePrefs *subwindow, int x, int y)
  : BC_CheckBox(x, y, pwindow->thread->preferences->renderfarm_vfs,
@@ -852,3 +715,21 @@ int PrefsRenderFarmVFS::handle_event()
        return 1;
 }
 
+
+PrefsRenderFarmWatchdog::PrefsRenderFarmWatchdog(PreferencesWindow *pwindow,
+               PerformancePrefs *subwindow, int x, int y)
+ : BC_TumbleTextBox(subwindow,
+       (int64_t)pwindow->thread->preferences->renderfarm_watchdog_timeout,
+       (int64_t)0, (int64_t)1000, x, y, 100)
+{
+       this->pwindow = pwindow;
+       set_increment(15);
+}
+
+int PrefsRenderFarmWatchdog::handle_event()
+{
+       pwindow->thread->preferences->renderfarm_watchdog_timeout = atol(get_text());
+       return 1;
+}
+
+