コード例 #1
0
ファイル: worksheet.cpp プロジェクト: tfussell/xlnt
bool worksheet::has_active_cell() const
{
    if (!has_view()) return false;
    auto &primary_view = d_->views_.front();
    if (!primary_view.has_selections()) return false;
    auto primary_selection = primary_view.selection(0);

    return primary_selection.has_active_cell();
}
コード例 #2
0
ファイル: worksheet.cpp プロジェクト: tfussell/xlnt
void worksheet::unfreeze_panes()
{
    if (!has_view()) return;

    auto &primary_view = d_->views_.front();

    primary_view.clear_selections();
    primary_view.clear_pane();
}
コード例 #3
0
ファイル: ArpInlineTextView.cpp プロジェクト: dtbinh/Sequitur
static bool has_view(BWindow* win, BView* who)
{
    BView* c;
    for (int32 i=0; (c=win->ChildAt(i)) != NULL; i++) {
        if (c == who)
            return true;
        bool has = has_view(c, who);
        if (has)
            return true;
    }
    return false;
}
コード例 #4
0
ファイル: ArpInlineTextView.cpp プロジェクト: dtbinh/Sequitur
 virtual void DetachedFromWindow()
 {
     if( IsFocus() ) {
         BMessage msg(INLINE_ENDFOCUS_MSG);
         mOwner.SendMessage(&msg);
     }
     if( !Window()->DefaultButton() && mDefButton ) {
         if (has_view(Window(), mDefButton)) {
             Window()->SetDefaultButton(mDefButton);
         }
     }
     mDefButton = NULL;
 }
コード例 #5
0
ファイル: worksheet.cpp プロジェクト: tfussell/xlnt
cell_reference worksheet::active_cell() const
{
    if (!has_view())
    {
        throw xlnt::exception("Worksheet has no view.");
    }

    auto &primary_view = d_->views_.front();

    if (!primary_view.has_selections())
    {
        throw xlnt::exception("Default worksheet view has no selections.");
    }

    return primary_view.selection(0).active_cell();
}
コード例 #6
0
ファイル: worksheet.cpp プロジェクト: tfussell/xlnt
void worksheet::active_cell(const cell_reference &ref)
{
    if (!has_view())
    {
        d_->views_.push_back(sheet_view());
    }

    auto &primary_view = d_->views_.front();

    if (!primary_view.has_selections())
    {
        primary_view.add_selection(selection(pane_corner::bottom_right, ref));
    }
    else
    {
        primary_view.selection(0).active_cell(ref);
    }
}
コード例 #7
0
ファイル: worksheet.cpp プロジェクト: tfussell/xlnt
void worksheet::freeze_panes(const cell_reference &ref)
{
    if (ref == "A1")
    {
        unfreeze_panes();
        return;
    }
    if (!has_view())
    {
        d_->views_.push_back(sheet_view());
    }

    auto &primary_view = d_->views_.front();
    if (!primary_view.has_pane())
    {
        primary_view.pane(pane());
    }

    primary_view.pane().top_left_cell = ref;
    primary_view.pane().state = pane_state::frozen;

    primary_view.clear_selections();
    if (ref.column() == "A") // no column is frozen
    {
        primary_view.add_selection(selection(pane_corner::bottom_left, ref));
        primary_view.pane().active_pane = pane_corner::bottom_left;
        primary_view.pane().y_split = ref.row() - 1;
    }
    else if (ref.row() == 1) // no row is frozen
    {
        primary_view.add_selection(selection(pane_corner::top_right, ref));
        primary_view.pane().active_pane = pane_corner::top_right;
        primary_view.pane().x_split = ref.column_index() - 1;
    }
    else // column and row is frozen
    {
        primary_view.add_selection(selection(pane_corner::top_right, cell_reference(ref.column(), 1)));
        primary_view.add_selection(selection(pane_corner::bottom_left, cell_reference(1, ref.row())));
        primary_view.add_selection(selection(pane_corner::bottom_right, ref));
        primary_view.pane().active_pane = pane_corner::bottom_right;
        primary_view.pane().x_split = ref.column_index() - 1;
        primary_view.pane().y_split = ref.row() - 1;
    }
}