initial commit

This commit is contained in:
2026-02-08 11:04:35 +05:30
parent a1287b696a
commit e1be0429bd
24 changed files with 1041 additions and 2 deletions

24
lib/widgets/drawer.dart Normal file
View File

@@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
import 'package:prod/widgets/simpleListTile.dart';
class ProdDrawer extends StatelessWidget {
const ProdDrawer({super.key});
@override
Widget build(BuildContext context) {
return Drawer(
child: ListView(
children: [
ListTile(
leading: Icon(Icons.arrow_back),
title: Text("Back"),
onTap: () => Navigator.pop(context),
),
Divider(),
SListTile(Icons.backup_table, "Editors", "/editors"),
SListTile(Icons.settings, "Settings", "/settings"),
],
),
);
}
}

View File

@@ -0,0 +1,31 @@
import "package:flutter/material.dart";
import "package:prod/models/editor.dart";
import "package:prod/models/globalModel.dart";
import "package:prod/models/project.dart";
import "package:provider/provider.dart";
import "package:yaru/yaru.dart";
import "package:process_run/shell.dart";
class EditorCard extends StatelessWidget {
const EditorCard(this.id, {super.key});
final int id;
@override
Widget build(BuildContext context) {
GlobalModel gm = Provider.of<GlobalModel>(context);
final Editor edt = gm.nthEdt(id);
return YaruBanner(
onTap: () {},
child: Center(
child: Column(
mainAxisAlignment: .start,
crossAxisAlignment: .start,
children: [
Text("${edt.name}", style: TextStyle(fontSize: 30)),
Text("${edt.commandTemplate}"),
],
),
),
);
}
}

24
lib/widgets/edtFAB.dart Normal file
View File

@@ -0,0 +1,24 @@
import "package:flutter/material.dart";
import "package:prod/models/editor.dart";
class EditorFAB extends StatelessWidget {
const EditorFAB({super.key});
@override
Widget build(BuildContext context) {
return FloatingActionButton(
onPressed: () {
// gm.add(
// Project.validated(
// "Kimi",
// "Rust",
// "/home/arrow/Gitted/cowin",
// [],
// true,
// ),
// );
},
child: Icon(Icons.add),
);
}
}

26
lib/widgets/prjFAB.dart Normal file
View File

@@ -0,0 +1,26 @@
import "package:flutter/material.dart";
import "package:prod/models/globalModel.dart";
import "package:prod/models/project.dart";
import "package:provider/provider.dart";
class ProjFAB extends StatelessWidget {
const ProjFAB({super.key});
@override
Widget build(BuildContext context) {
return FloatingActionButton(
onPressed: () {
Provider.of<GlobalModel>(context, listen: false).addPrj(
Project.validated(
"Kimi",
"Rust",
"/home/arrow/Gitted/cowin",
[],
true,
),
);
},
child: Icon(Icons.add),
);
}
}

View File

@@ -0,0 +1,58 @@
import "package:flutter/material.dart";
import "package:prod/models/globalModel.dart";
import "package:prod/models/project.dart";
import "package:provider/provider.dart";
import "package:yaru/yaru.dart";
import "package:process_run/shell.dart";
class ProjectCard extends StatelessWidget {
const ProjectCard(this.id, {super.key});
final int id;
@override
Widget build(BuildContext context) {
GlobalModel gm = Provider.of<GlobalModel>(context);
final Project prj = gm.nthPrj(id);
return YaruBanner(
padding: .only(
left: kYaruPagePadding,
top: kYaruPagePadding,
bottom: kYaruPagePadding,
right: kYaruPagePadding,
),
onHover: (st) => gm.setHoverShow(id, st),
onTap: () {
var shell = Shell();
shell.run("konsole -e nvim ${prj.path.path}");
},
child: Center(
child: Column(
mainAxisAlignment: .start,
crossAxisAlignment: .start,
children: [
Row(
mainAxisAlignment: .spaceBetween,
children: [
Text("${prj.name}", style: TextStyle(fontSize: 30)),
gm.getHoverShow(id)
? ElevatedButton(
child: Icon(Icons.close),
onPressed: () => print("pressed delete"),
)
: Container(),
],
),
Row(
spacing: 10,
children: [
Text("${prj.language}"),
prj.isGit ? Icon(Icons.commit) : Container(),
],
),
gm.getHoverShow(id) ? Text("${prj.path.path}") : Container(),
],
),
),
);
}
}

View File

@@ -0,0 +1,21 @@
//ignore_for_file: file_names
import "package:flutter/material.dart";
class SListTile extends StatelessWidget {
const SListTile(this.icon, this.title, this.route, {super.key});
final IconData icon;
final String title;
final String route;
@override
Widget build(BuildContext context) {
return ListTile(
leading: Icon(icon),
title: Text(title),
onTap: () {
Navigator.pushNamed(context, route);
},
);
}
}