diff options
| author | Rider Linden <rider@lindenlab.com> | 2019-01-16 14:05:02 -0800 | 
|---|---|---|
| committer | Rider Linden <rider@lindenlab.com> | 2019-01-16 14:05:02 -0800 | 
| commit | 042454bda9506185ebf82e3bbdf4305214d6af84 (patch) | |
| tree | 11d7b083db9d36c4d95470c53aada48b4be46bde | |
| parent | 82a8bcb24402978330ea184285fd498b9e50c0a0 (diff) | |
Add Copy/Load/Clear track buttons.  Clear track functionality.
| -rw-r--r-- | indra/newview/llfloatereditextdaycycle.cpp | 92 | ||||
| -rw-r--r-- | indra/newview/llfloatereditextdaycycle.h | 18 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml | 345 | 
3 files changed, 300 insertions, 155 deletions
| diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp index 048090aea6..9583f9f792 100644 --- a/indra/newview/llfloatereditextdaycycle.cpp +++ b/indra/newview/llfloatereditextdaycycle.cpp @@ -85,6 +85,9 @@ namespace {      const std::string BTN_DELFRAME("delete_frame");      const std::string BTN_IMPORT("btn_import");      const std::string BTN_LOADFRAME("btn_load_frame"); +    const std::string BTN_CLONETRACK("copy_track"); +    const std::string BTN_LOADTRACK("load_track"); +    const std::string BTN_CLEARTRACK("clear_track");      const std::string SLDR_TIME("WLTimeSlider");      const std::string SLDR_KEYFRAMES("WLDayCycleFrames");      const std::string VIEW_SKY_SETTINGS("frame_settings_sky"); @@ -116,6 +119,8 @@ namespace {      const std::string STR_COMMIT_PARCEL("commit_parcel");      const std::string STR_COMMIT_REGION("commit_region"); +    //--------------------------------------------------------------------- +  }  //========================================================================= @@ -175,7 +180,10 @@ LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key) :      mIsDirty(false),      mCanCopy(false),      mCanMod(false), -    mMakeNoTrans(false) +    mMakeNoTrans(false), +    mCloneTrack(nullptr), +    mLoadTrack(nullptr), +    mClearTrack(nullptr)  {      mCommitCallbackRegistrar.add(EVNT_DAYTRACK, [this](LLUICtrl *ctrl, const LLSD &data) { onTrackSelectionCallback(data); }); @@ -209,17 +217,25 @@ BOOL LLFloaterEditExtDayCycle::postBuild()      mCurrentTimeLabel = getChild<LLTextBox>(LBL_CURRENT_TIME, true);      mImportButton = getChild<LLButton>(BTN_IMPORT, true);      mLoadFrame = getChild<LLButton>(BTN_LOADFRAME, true); +    mCloneTrack = getChild<LLButton>(BTN_CLONETRACK, true); +    mLoadTrack = getChild<LLButton>(BTN_LOADTRACK, true); +    mClearTrack = getChild<LLButton>(BTN_CLEARTRACK, true);      mFlyoutControl = new LLFlyoutComboBtnCtrl(this, BTN_SAVE, BTN_FLYOUT, XML_FLYOUTMENU_FILE, false);      mFlyoutControl->setAction([this](LLUICtrl *ctrl, const LLSD &data) { onButtonApply(ctrl, data); });      getChild<LLButton>(BTN_CANCEL, true)->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onClickCloseBtn(); });      mTimeSlider->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onTimeSliderCallback(); }); -    mAddFrameButton->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onAddTrack(); }); -    mDeleteFrameButton->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onRemoveTrack(); }); +    mAddFrameButton->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onAddFrame(); }); +    mDeleteFrameButton->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onRemoveFrame(); });      mImportButton->setCommitCallback([this](LLUICtrl *, const LLSD &){ onButtonImport(); });      mLoadFrame->setCommitCallback([this](LLUICtrl *, const LLSD &){ onButtonLoadFrame(); }); +    mCloneTrack->setCommitCallback([this](LLUICtrl *, const LLSD&){ onCloneTrack(); }); +    mLoadTrack->setCommitCallback([this](LLUICtrl *, const LLSD&){  onLoadTrack();}); +    mClearTrack->setCommitCallback([this](LLUICtrl *, const LLSD&){ onClearTrack(); }); + +      mFramesSlider->setCommitCallback([this](LLUICtrl *, const LLSD &data) { onFrameSliderCallback(data); });      mFramesSlider->setDoubleClickCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask){ onFrameSliderDoubleClick(x, y, mask); });      mFramesSlider->setMouseDownCallback([this](LLUICtrl*, S32 x, S32 y, MASK mask){ onFrameSliderMouseDown(x, y, mask); }); @@ -566,7 +582,6 @@ BOOL LLFloaterEditExtDayCycle::handleKeyUp(KEY key, MASK mask, BOOL called_from_      return LLFloater::handleKeyUp(key, mask, called_from_parent);  } -  void LLFloaterEditExtDayCycle::onButtonApply(LLUICtrl *ctrl, const LLSD &data)  {      std::string ctrl_action = ctrl->getName(); @@ -740,7 +755,7 @@ void LLFloaterEditExtDayCycle::onButtonLoadFrame()      doOpenInventoryFloater((mCurrentTrack == LLSettingsDay::TRACK_WATER) ? LLSettingsType::ST_WATER : LLSettingsType::ST_SKY, curitemId);  } -void LLFloaterEditExtDayCycle::onAddTrack() +void LLFloaterEditExtDayCycle::onAddFrame()  {      LLSettingsBase::Seconds frame(mTimeSlider->getCurSliderValue());      LLSettingsBase::ptr_t setting; @@ -775,7 +790,7 @@ void LLFloaterEditExtDayCycle::onAddTrack()      updateTabs();  } -void LLFloaterEditExtDayCycle::onRemoveTrack() +void LLFloaterEditExtDayCycle::onRemoveFrame()  {      std::string sldr_key = mFramesSlider->getCurSlider();      if (sldr_key.empty()) @@ -786,6 +801,41 @@ void LLFloaterEditExtDayCycle::onRemoveTrack()      updateTabs();  } + +void LLFloaterEditExtDayCycle::onCloneTrack() +{ + +} + + +void LLFloaterEditExtDayCycle::onLoadTrack() +{ + +} + + +void LLFloaterEditExtDayCycle::onClearTrack() +{ +    if (mCurrentTrack > 1) +        mEditDay->getCycleTrack(mCurrentTrack).clear(); +    else +    { +        LLSettingsDay::CycleTrack_t &track(mEditDay->getCycleTrack(mCurrentTrack)); + +        auto first = track.begin(); +        auto last = track.end(); +        ++first; +        track.erase(first, last); +    } + +    updateEditEnvironment(); +    LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT, LLEnvironment::TRANSITION_INSTANT); +    LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_INSTANT); +    synchronizeTabs(); +    updateTabs(); +    refresh(); +} +  void LLFloaterEditExtDayCycle::onCommitName(class LLLineEditor* caller, void* user_data)  {      mEditDay->setName(caller->getText()); @@ -900,7 +950,7 @@ void LLFloaterEditExtDayCycle::onFrameSliderCallback(const LLSD &data)  void LLFloaterEditExtDayCycle::onFrameSliderDoubleClick(S32 x, S32 y, MASK mask)  {      stopPlay(); -    onAddTrack(); +    onAddFrame();  }  void LLFloaterEditExtDayCycle::onFrameSliderMouseDown(S32 x, S32 y, MASK mask) @@ -994,7 +1044,6 @@ void LLFloaterEditExtDayCycle::selectTrack(U32 track_index, bool force )      std::string iconname = (show_water) ? "Inv_SettingsWater" : "Inv_SettingsSky";      mFramesSlider->setSliderThumbImage(iconname); -      updateSlider();      updateLabels();  } @@ -1126,6 +1175,33 @@ void LLFloaterEditExtDayCycle::updateButtons()      mAddFrameButton->setEnabled(!mIsPlaying && isAddingFrameAllowed() && mCanMod);      mDeleteFrameButton->setEnabled(!mIsPlaying && isRemovingFrameAllowed() && mCanMod);      mLoadFrame->setEnabled(!mIsPlaying && mCanMod); + +    bool can_clone(false); +    bool can_load(true); +    bool can_clear(true); + +    can_clear = (mCurrentTrack > 1) ? (!mEditDay->getCycleTrack(mCurrentTrack).empty()) : (mEditDay->getCycleTrack(mCurrentTrack).size() > 1); + +    if (mCurrentTrack == 0) +    { +        can_clone = false; +    } +    else +    { +        for (S32 track = 1; track < LLSettingsDay::TRACK_MAX; ++track) +        { +            if (track == mCurrentTrack) +                continue; +            can_clone |= !mEditDay->getCycleTrack(track).empty(); +        } +    } + +    mCloneTrack->setEnabled(can_clone && false); +    mCloneTrack->setVisible(false); +    mLoadTrack->setEnabled(can_load && false); +    mLoadTrack->setVisible(false); +    mClearTrack->setEnabled(can_clear); +  }  void LLFloaterEditExtDayCycle::updateSlider() diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h index 1967f5a470..67a6f1e0e9 100644 --- a/indra/newview/llfloatereditextdaycycle.h +++ b/indra/newview/llfloatereditextdaycycle.h @@ -111,8 +111,11 @@ private:      virtual void                onClickCloseBtn(bool app_quitting = false) override;      void                        onButtonImport();      void                        onButtonLoadFrame(); -    void                        onAddTrack(); -	void                        onRemoveTrack(); +    void                        onAddFrame(); +	void                        onRemoveFrame(); +    void                        onCloneTrack(); +    void                        onLoadTrack(); +    void                        onClearTrack();  	void                        onCommitName(class LLLineEditor* caller, void* user_data);  	void                        onTrackSelectionCallback(const LLSD& user_data);  	void                        onPlayActionCallback(const LLSD& user_data); @@ -147,10 +150,10 @@ private:      void                        doImportFromDisk();      void                        loadSettingFromFile(const std::vector<std::string>& filenames); -    void doApplyCreateNewInventory(const LLSettingsDay::ptr_t &day, std::string settings_name); -    void doApplyUpdateInventory(const LLSettingsDay::ptr_t &day); -    void doApplyEnvironment(const std::string &where, const LLSettingsDay::ptr_t &day); -    void doApplyCommit(LLSettingsDay::ptr_t day); +    void                        doApplyCreateNewInventory(const LLSettingsDay::ptr_t &day, std::string settings_name); +    void                        doApplyUpdateInventory(const LLSettingsDay::ptr_t &day); +    void                        doApplyEnvironment(const std::string &where, const LLSettingsDay::ptr_t &day); +    void                        doApplyCommit(LLSettingsDay::ptr_t day);      void                        onInventoryCreated(LLUUID asset_id, LLUUID inventory_id);      void                        onInventoryCreated(LLUUID asset_id, LLUUID inventory_id, LLSD results);      void                        onInventoryUpdated(LLUUID asset_id, LLUUID inventory_id, LLSD results); @@ -194,6 +197,9 @@ private:      LLButton*                   mDeleteFrameButton;      LLButton*                   mImportButton;      LLButton*                   mLoadFrame; +    LLButton *                  mCloneTrack; +    LLButton *                  mLoadTrack; +    LLButton *                  mClearTrack;      LLMultiSliderCtrl*	        mTimeSlider;      LLMultiSliderCtrl*          mFramesSlider;      LLView*                     mSkyTabLayoutContainer; diff --git a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml index 1aea1391d8..284b30da6c 100644 --- a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml @@ -26,7 +26,7 @@      <string name="commit_parcel">Apply To Parcel</string>      <string name="commit_region">Apply To Region</string> -     +      <!-- Layout -->      <layout_stack name="outer_stack"              width="705" @@ -270,162 +270,225 @@                                  width="70" />                          <layout_stack -                                name="progress_control" -                                follows="top|left" -                                height="25" -                                width="83" -                                layout="topleft" +                                follows="all" +                                height="200"                                  animate="false" -                                left="225" -                                top_pad="40" +                                top_pad="5" +                                left="0"                                  orientation="horizontal"> -                              <layout_panel -                                    name="skip_back" -                                    mouse_opaque="false" +                                    border="false" +                                    bevel_style="in"                                      auto_resize="false" -                                    layout="topleft" -                                    top="0" -                                    height="25" -                                    min_width="25" -                                    width="25"> +                                    user_resize="false" +                                    height="150" +                                    width="200" +                                    min_height="0" +                                    visible="true">                                  <button -                                        name="skip_back_btn" -                                        follows="top" -                                        image_overlay="SkipBackward_Off" -                                        image_disabled="PushButton_Disabled" -                                        image_disabled_selected="PushButton_Disabled" -                                        image_selected="PushButton_Selected" -                                        image_unselected="PushButton_Off" -                                        hover_glow_amount="0.15" -                                        auto_resize="false" -                                        width="25" -                                        height="25" -                                        layout="topleft" -                                        tool_tip="Step back" -                                        top="0" -                                        left="0"> -                                    <button.commit_callback -                                            function="DayCycle.PlayActions" -                                            parameter="back" /> -                                </button> +                                        follows="top|left" +                                        height="23" +                                        width="90" +                                        label="Clone From" +                                        left="10" +                                        top_pad="10" +                                        name="copy_track" /> +                                <button +                                        follows="top|left" +                                        height="23" +                                        width="90" +                                        label="Load From" +                                        top_pad="0" +                                        left_delta="0" +                                        name="load_track" /> +                                <button +                                        follows="top|left" +                                        height="23" +                                        width="90" +                                        label="Clear" +                                        top_pad="0" +                                        left_delta="0" +                                        name="clear_track" /> +                                                                  </layout_panel> -                              <layout_panel -                                    name="play_layout" -                                    mouse_opaque="false" +                                    border="false" +                                    bevel_style="in"                                      auto_resize="false" -                                    layout="topleft" -                                    top="0" -                                    height="25" -                                    min_width="25" -                                    width="25"> -                                <button -                                        name="play_btn" -                                        follows="top" -                                        image_overlay="Play_Off" -                                        image_disabled="PushButton_Disabled" -                                        image_disabled_selected="PushButton_Disabled" -                                        image_selected="PushButton_Selected" -                                        image_unselected="PushButton_Off" -                                        hover_glow_amount="0.15" -                                        auto_resize="false" -                                        layout="topleft" +                                    user_resize="false" +                                    height="150" +                                    width="200" +                                    min_height="0" +                                    visible="true"> +                                <layout_stack +                                        name="progress_control" +                                        follows="top|left"                                          height="25" -                                        width="25" -                                        left="0" -                                        top="0"> -                                    <button.commit_callback -                                            function="DayCycle.PlayActions" -                                            parameter="play" /> -                                </button> -                            </layout_panel> +                                        width="83" +                                        layout="topleft" +                                        animate="false" +                                        left="31" +                                        top="40" +                                        orientation="horizontal"> + +                                    <layout_panel +                                            name="skip_back" +                                            mouse_opaque="false" +                                            auto_resize="false" +                                            layout="topleft" +                                            top="0" +                                            height="25" +                                            min_width="25" +                                            width="25"> +                                        <button +                                                name="skip_back_btn" +                                                follows="top" +                                                image_overlay="SkipBackward_Off" +                                                image_disabled="PushButton_Disabled" +                                                image_disabled_selected="PushButton_Disabled" +                                                image_selected="PushButton_Selected" +                                                image_unselected="PushButton_Off" +                                                hover_glow_amount="0.15" +                                                auto_resize="false" +                                                width="25" +                                                height="25" +                                                layout="topleft" +                                                tool_tip="Step back" +                                                top="0" +                                                left="0"> +                                            <button.commit_callback +                                                    function="DayCycle.PlayActions" +                                                    parameter="back" /> +                                        </button> +                                    </layout_panel> + +                                    <layout_panel +                                            name="play_layout" +                                            mouse_opaque="false" +                                            auto_resize="false" +                                            layout="topleft" +                                            top="0" +                                            height="25" +                                            min_width="25" +                                            width="25"> +                                        <button +                                                name="play_btn" +                                                follows="top" +                                                image_overlay="Play_Off" +                                                image_disabled="PushButton_Disabled" +                                                image_disabled_selected="PushButton_Disabled" +                                                image_selected="PushButton_Selected" +                                                image_unselected="PushButton_Off" +                                                hover_glow_amount="0.15" +                                                auto_resize="false" +                                                layout="topleft" +                                                height="25" +                                                width="25" +                                                left="0" +                                                top="0"> +                                            <button.commit_callback +                                                    function="DayCycle.PlayActions" +                                                    parameter="play" /> +                                        </button> +                                    </layout_panel> +                                    <layout_panel +                                            name="pause_layout" +                                            mouse_opaque="false" +                                            auto_resize="false" +                                            layout="topleft" +                                            top="0" +                                            height="25" +                                            min_width="25" +                                            width="25" +                                            visible="false"> +                                        <button +                                                name="pause_btn" +                                                follows="top" +                                                image_overlay="Pause_Off" +                                                image_disabled="PushButton_Disabled" +                                                image_disabled_selected="PushButton_Disabled" +                                                image_selected="PushButton_Selected" +                                                image_unselected="PushButton_Off" +                                                hover_glow_amount="0.15" +                                                auto_resize="false" +                                                layout="topleft" +                                                height="25" +                                                width="25" +                                                left="0" +                                                top="0"> +                                            <button.commit_callback +                                                    function="DayCycle.PlayActions" +                                                    parameter="pause" /> +                                        </button> +                                    </layout_panel> + +                                    <layout_panel +                                            name="skip_forward" +                                            mouse_opaque="false" +                                            auto_resize="false" +                                            layout="topleft" +                                            top="0" +                                            height="25" +                                            min_width="25" +                                            width="25"> +                                        <button +                                                name="skip_forward_btn" +                                                follows="top" +                                                image_overlay="SkipForward_Off" +                                                image_disabled="PushButton_Disabled" +                                                image_disabled_selected="PushButton_Disabled" +                                                image_selected="PushButton_Selected" +                                                image_unselected="PushButton_Off" +                                                hover_glow_amount="0.15" +                                                width="25" +                                                height="25" +                                                layout="topleft" +                                                tool_tip="Step forward" +                                                top="0"> +                                            <button.commit_callback +                                                    function="DayCycle.PlayActions" +                                                    parameter="forward" /> +                                        </button> +                                    </layout_panel> +                                </layout_stack> +                            </layout_panel>                              <layout_panel -                                    name="pause_layout" -                                    mouse_opaque="false" +                                    border="false" +                                    bevel_style="in"                                      auto_resize="false" -                                    layout="topleft" -                                    top="0" -                                    height="25" -                                    min_width="25" -                                    width="25" -                                    visible="false"> +                                    user_resize="false" +                                    width="190" +                                    height="150" +                                    min_height="0" +                                    visible="true">                                  <button -                                        name="pause_btn" -                                        follows="top" -                                        image_overlay="Pause_Off" -                                        image_disabled="PushButton_Disabled" -                                        image_disabled_selected="PushButton_Disabled" -                                        image_selected="PushButton_Selected" -                                        image_unselected="PushButton_Off" -                                        hover_glow_amount="0.15" -                                        auto_resize="false" -                                        layout="topleft" -                                        height="25" -                                        width="25" -                                        left="0" -                                        top="0"> -                                    <button.commit_callback -                                            function="DayCycle.PlayActions" -                                            parameter="pause" /> -                                </button> -                            </layout_panel> -                            <layout_panel -                                    name="skip_forward" -                                    mouse_opaque="false" -                                    auto_resize="false" -                                    layout="topleft" -                                    top="0" -                                    height="25" -                                    min_width="25" -                                    width="25"> +                                        follows="top|right" +                                        height="23" +                                        width="90" +                                        right="-10" +                                        top_pad="10" +                                        label="Add [FRAME]" +                                        name="add_frame" />                                  <button -                                        name="skip_forward_btn" -                                        follows="top" -                                        image_overlay="SkipForward_Off" -                                        image_disabled="PushButton_Disabled" -                                        image_disabled_selected="PushButton_Disabled" -                                        image_selected="PushButton_Selected" -                                        image_unselected="PushButton_Off" -                                        hover_glow_amount="0.15" -                                        width="25" -                                        height="25" -                                        layout="topleft" -                                        tool_tip="Step forward" -                                        top="0"> -                                    <button.commit_callback -                                            function="DayCycle.PlayActions" -                                            parameter="forward" /> -                                </button> +                                        follows="top|left" +                                        height="23" +                                        width="90" +                                        label="Load [FRAME]" +                                        top_pad="0" +                                        left_delta="0" +                                        name="btn_load_frame" /> +                                <button +                                        follows="left|top" +                                        height="23" +                                        width="90" +                                        label="Delete [FRAME]" +                                        top_pad="0" +                                        left_delta="0" +                                        name="delete_frame" />                              </layout_panel>                          </layout_stack> - -                        <button -                                follows="top|left" -                                height="23" -                                width="90" -                                label="Add [FRAME]" -                                left_pad="175" -                                top_delta="-20" -                                name="add_frame" /> -                        <button -                                follows="top|left" -                                height="23" -                                width="90" -                                label="Load [FRAME]" -                                top_pad="0" -                                left_delta="0" -                                name="btn_load_frame" /> -                        <button -                                follows="left|top" -                                height="23" -                                width="90" -                                label="Delete [FRAME]" -                                top_pad="0" -                                left_delta="0" -                                name="delete_frame" />                      </panel>                  </layout_panel>                  <layout_panel name="frame_edit_controls" @@ -447,7 +510,7 @@                              font="SansSerif"                              text_color="Yellow"                              width="500"> -Select a key frame from the timeline above to edit settings. +                        Select a key frame from the timeline above to edit settings.                      </text>                  </layout_panel>                  <layout_panel name="frame_settings_water" | 
