(WIP) Create Adjascency and Incidence matrix
Boa noite, meu nome é Levi e essa daqui é a branch GCES-UnB-Levi-gerarMatrizAdjInc que fiz para poder resolver a issue "Criar Matriz de Adjacência e Incidência.
Para o próximo que for pegar esse projeto e essa issue, primeira mente tem que estar com as configurações certas. Primeiramente esse daqui é o canal para o grupo do telegram do KDE Brasil: https://t.me/joinchat/R9bHaMqVkPnNpTgv.
Por exemplo para realizar o build, eu e mais alguns colegas fizemos a partir desse tutorial: https://invent.kde.org/sdk/kdesrc-build Porém, em alguns casos deu muito problema em relação as dependências, e varia de cada máquina. As maquinas recomendadas são essas: OpenSUSE Tumbleweed, Fedora, Ubuntu 22.04. Eu consegui pelo ubuntu seguindo as recomendasções.
O Rocs tem uma documentação que é fraca, mas ainda assim tem: https://docs.kde.org/trunk5/en/rocs/rocs/index.html.
Certo, se seu build deu certo, normalmente toda vez que você for codar, logo quando você liga sua máquina, vai ter que seguir os seguintes passos no terminal: source kde/build/rocs/prefix.sh rocs // para ver se o comando bash tá funcionando Para rebuildar o projeto sem precisar ficar puxando o git da education, rode o seguinte comando na pasta kdesrc-build: ./kdesrc-build rocs --no-include-dependecies --no-src
LEMBRANDO QUE OQUE ESTÁ SENDO ESCRITO É SOMENTE DEPOIS DO BUILD TER DADO CERTO PELO TUTORIAL DA INVENT.KDE.ORG
Certo, o que está feito até agora vão ser os seguintes arquivos com suas escritas (Me perdoem por colocar o código direto, não sei o que ocorreu mais não consigo consertar meu git para subir os código para o kde, dá remote rejected por falha de autenticação por nome):
No rocs, na pasta src/ui/ é para criar os seguintes arquivos: matrixwidget.cpp matrixwidget.h matrixwidget.ui
No arquivo matrixwidget.cpp, insere o seguinte código:
/*
- SPDX-FileCopyrightText: 2012-2014 Andreas Cord-Landwehr cordlandwehr@kde.org
- SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */
#include "matrixwidget.h"
#include "project/project.h"
#include
#include
#include
#include
#include
#include
#include <KTextEditor/Document>
MatrixWidget::MatrixWidget(QWidget* parent)
: QWidget(parent)
, m_currentProject(nullptr)
{
ui = new Ui::MatrixWidget;
ui->setupUi(this);
ui->matrix->setRowCount(8);
ui->matrix->setColumnCount(4);
for (int i=1; i<=4; i++){
for(int j=1; j<=8; j++) {
QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg((j+1)*(i+1)));
ui->matrix->setItem(j, i, newItem);
}
}
qDebug() << "PlaceHorder Matrix";
}
void MatrixWidget::openMatrix(Project *project) { m_currentProject = project;
if (!project) {
qCritical() << "No project specified! Cannot set journal widget.";
return;
}
qDebug() << "Chamei OpenMatrix";
// explicitly set journal to be unmodified, since setting of text to editor caused modifed
// value to be true
}
Uma observação é que nesse arquivo, a matriz de adjacência está sendo populada
No arquivo matrixwidget.h, insere o seguinte código:
/*
- SPDX-FileCopyrightText: 2012-2014 Andreas Cord-Landwehr cordlandwehr@kde.org
- SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */
#ifndef MATRIXWIDGET_H
#define MATRIXWIDGET_H
#include
#include "ui_matrixwidget.h"
class Project;
/**
- \class JournalEditorWidget
- This class contains a UI to edit a project's journal file. The journal is presented as
- a rich text editor window and saved as HTML. */
class MatrixWidget : public QWidget { Q_OBJECT
public: /** * Default constructor. */
explicit MatrixWidget(QWidget* parent);
void openMatrix(Project* project);
private:
Project *m_currentProject;
Ui::MatrixWidget *ui;
};
#endif
No arquivo matrixwidget.ui, insere o seguinte código:
MatrixWidget
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Adjacency Matrix and Incidence Matrix</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QTableWidget" name="matrix">
</widget>
</item>
</layout>
</widget>
KRichTextEdit
KTextEdit
krichtextedit.hKTextEdit
QTextEdit
ktextedit.hKRichTextWidget
KRichTextEdit
krichtextwidget.hCerto, esses são os arquivos criados, agora vamos inserir a Widget da matriz no arquivo mainwindow.cpp, que esta na pasta src/ui/ também:
Na linha 54:
#include "ui/matrixwidget.h"
A partir da linha 229:
MatrixWidget* m_matrixWidget = new MatrixWidget(this); sideDock->addDock(m_matrixWidget, i18nc("@title", "Matrix"), QIcon::fromTheme("x-office-spreadsheet"));
Agora, voltando uma página, na src/, vamos inserir a Widget para ser buildada junto com o projeto, no arquivo CMakeLists.txt, adiciona os seguintes códigos:
Na linha 30, dentro do target_sources:
ui/matrixwidget.cpp
Na linha 53, dentro do ki18n_wrap_ui:
ui/matrixwidget.ui
Certo, isso é o que tem de pronto nessa issue. Para os próximos passos, é preciso fazer mais uma interface para a matriz de incidência; em vez de popular a matriz de adjacência, ler os dados vindos tantos dos grafos criados a mão como dos arquivos testes de javascript para popular as matrizes.
Obrigado pela atenção!! Precisando de algo, @levi_queiroz27 é meu usuário do telegram.