#ifndef PROGRESS_BAR_PYTHON_H
#define PROGRESS_BAR_PYTHON_H

#ifdef PYTHON_BINDING

#include "python_progress_wrapper.h"
#include "../src/progress_bar.h"

// Python友好的进度条类
class PythonProgressBar : public ProgressBar {
private:
    std::string description_;
    unsigned long total_count_;
    bool use_python_callback_;
    
public:
    PythonProgressBar() : ProgressBar(), total_count_(0), use_python_callback_(false) {}
    
    PythonProgressBar(unsigned long n_, const char* description_="", std::ostream& out_=std::cerr) 
        : ProgressBar(n_, description_, out_), description_(description_), total_count_(n_), use_python_callback_(false) {
        // 检查是否有Python回调
        if (ProgressCallbackManager::has_callback()) {
            use_python_callback_ = true;
            auto* callback = ProgressCallbackManager::get_callback();
            if (callback) {
                callback->set_description(description_);
                callback->set_total(n_);
            }
        }
    }
    
    void SetFrequencyUpdate(unsigned long frequency_update_) {
        if (!use_python_callback_) {
            ProgressBar::SetFrequencyUpdate(frequency_update_);
        }
        // Python模式下使用固定更新频率
    }
    
    void SetStyle(const char* unit_bar_, const char* unit_space_) {
        if (!use_python_callback_) {
            ProgressBar::SetStyle(unit_bar_, unit_space_);
        }
        // Python模式下忽略样式设置
    }
    
    void Progressed(unsigned long idx_) {
        if (use_python_callback_) {
            auto* callback = ProgressCallbackManager::get_callback();
            if (callback) {
                callback->update_progress(idx_);
                // 完成时调用finish
                if (idx_ >= total_count_ - 1) {
                    callback->finish();
                }
                return;
            }
        }
        
        // 回退到原有的进度条实现
        ProgressBar::Progressed(idx_);
    }
    
    // 设置是否使用Python回调
    void set_use_python_callback(bool use) {
        use_python_callback_ = use;
    }
};

// 替换原有的ProgressBar定义
#define ProgressBar PythonProgressBar

#endif // PYTHON_BINDING

#endif // PROGRESS_BAR_PYTHON_H