10 #include <Application.h> 13 #include <InterfaceKit.h> 14 #include <StorageKit.h> 15 #include <SupportKit.h> 21 #include <add-ons/tracker/TrackerAddOn.h> 28 #define B_TRANSLATION_CONTEXT "TrackGit" 31 void populate_menu (BMessage* msg, BMenu* menu, BHandler* handler);
44 BString buffer(
"TrackGit: A Tracker Addon for Git Version Control System");
45 BAlert *alert =
new BAlert(
"", buffer.String(),
"Cancel",
46 0, 0, B_WIDTH_AS_USUAL, B_WARNING_ALERT);
62 BString buffer(
"Null menu");
63 BAlert *alert =
new BAlert(
"", buffer.String(),
"Cancel",
64 0, 0, B_WIDTH_AS_USUAL, B_WARNING_ALERT);
72 menu->RemoveItem(item);
76 vector<char*> selected;
81 git_buf buf = GIT_BUF_INIT_CONST(NULL, 0);
84 if (git_repository_discover(&buf, dirPath.String(), 0, NULL) == 0) {
86 git_repository* repo = NULL;
89 git_repository_open_ext(&repo, dirPath.String(), 0, NULL);
91 git_repository_index(&index, repo);
92 if (git_index_has_conflicts(index)) {
94 BMessage* showConflictsMsg =
new BMessage(*msg);
96 BMenuItem* showConflictsItem =
new BMenuItem(
97 B_TRANSLATE(
"Show conflicts" B_UTF8_ELLIPSIS),
99 submenu->AddItem(showConflictsItem);
103 BMessage* statusMsg =
new BMessage(*msg);
104 statusMsg->AddInt32(
"addon_item_id",
kStatus);
105 BMenuItem* statusItem =
new BMenuItem(
106 B_TRANSLATE(
"Status" B_UTF8_ELLIPSIS), statusMsg);
107 submenu->AddItem(statusItem);
110 BMessage* commitMsg =
new BMessage(*msg);
111 commitMsg->AddInt32(
"addon_item_id",
kCommit);
112 BMenuItem* commitItem =
new BMenuItem(
113 B_TRANSLATE(
"Commit" B_UTF8_ELLIPSIS), commitMsg);
114 submenu->AddItem(commitItem);
117 BMessage* pullMsg =
new BMessage(*msg);
118 pullMsg->AddInt32(
"addon_item_id",
kPull);
119 BMenuItem* pullItem =
new BMenuItem(
120 B_TRANSLATE(
"Pull" B_UTF8_ELLIPSIS), pullMsg);
121 submenu->AddItem(pullItem);
124 BMessage* pushMsg =
new BMessage(*msg);
125 pushMsg->AddInt32(
"addon_item_id",
kPush);
126 BMenuItem* pushItem =
new BMenuItem(
127 B_TRANSLATE(
"Push" B_UTF8_ELLIPSIS), pushMsg);
128 submenu->AddItem(pushItem);
131 BMessage* createBranchMsg =
new BMessage(*msg);
133 BMenuItem* createBranchItem =
new BMenuItem(
134 B_TRANSLATE(
"Create branch" B_UTF8_ELLIPSIS), createBranchMsg);
135 submenu->AddItem(createBranchItem);
138 BMessage* switchBranchMsg =
new BMessage(*msg);
140 BMenuItem* switchBranchItem =
new BMenuItem(
141 B_TRANSLATE(
"Switch branch" B_UTF8_ELLIPSIS), switchBranchMsg);
142 submenu->AddItem(switchBranchItem);
145 BMessage* logMsg =
new BMessage(*msg);
146 logMsg->AddInt32(
"addon_item_id",
kLog);
147 BMenuItem* logItem =
new BMenuItem(
148 B_TRANSLATE(
"Log" B_UTF8_ELLIPSIS), logMsg);
149 submenu->AddItem(logItem);
151 if (selected.size() > 0) {
153 BMessage* addMsg =
new BMessage(*msg);
154 addMsg->AddInt32(
"addon_item_id",
kAdd);
155 BMenuItem* addItem =
new BMenuItem(
156 B_TRANSLATE(
"Add files"), addMsg);
157 submenu->AddItem(addItem);
160 BMessage* addMsg =
new BMessage(*msg);
161 addMsg->AddInt32(
"addon_item_id",
kAddAll);
162 BMenuItem* addItem =
new BMenuItem(
163 B_TRANSLATE(
"Add all files"), addMsg);
164 submenu->AddItem(addItem);
169 BMessage* cloneMsg =
new BMessage(*msg);
170 cloneMsg->AddInt32(
"addon_item_id",
kClone);
171 BMenuItem* cloneItem =
new BMenuItem(
172 B_TRANSLATE(
"Clone" B_UTF8_ELLIPSIS), cloneMsg);
173 submenu->AddItem(cloneItem);
176 if (selected.size() == 0) {
178 BMessage* initMsg =
new BMessage(*msg);
179 initMsg->AddInt32(
"addon_item_id",
kInitHere);
180 BMenuItem* initItem =
new BMenuItem(B_TRANSLATE(
"Init Here"),
182 submenu->AddItem(initItem);
186 menu->AddItem(submenu);
187 submenu->SetTargetForItems(handler);
190 git_libgit2_shutdown();
203 if (msg->FindInt32(
"addon_item_id", &itemId) != B_OK)
208 if (!messenger.IsValid()) {
212 messenger.SendMessage(msg);
#define APP_SIGN
The Application signature.
void process_refs(entry_ref dir_ref, BMessage *msg, void *)
process_ref definition for addon.
void populate_menu(BMessage *msg, BMenu *menu, BHandler *handler)
Populates menu for this addon.
void extract_selected_paths(const BMessage *msg, vector< char *> &selected)
Get selected files.
void message_received(BMessage *msg)
Handler for received messages.
#define ADDON_NAME
The addon name.
int main()
The main function of TrackGit.
BString extract_current_directory(const BMessage *msg)
Get current directory.
The TrackGit Application class.
Header file of TrackGit App.